パッケージをユーザーにローカルにインストールする-ベストプラクティス?


18

RHELサーバー上のユーザーにGitをローカルにインストールしたい(ルートアクセス権がない)ローカルユーザーアカウントにソフトウェアをインストールする最もクリーンで整理された方法は何ですか?

  • そのユーザーのホームディレクトリにすべてをインストールしますか?
  • ディレクトリレイアウトはどのようになりますか?
  • ソースまたはRPMからインストールしますか?
  • RPMからYUMまたはRPMを使用しますか?

回答:


17

を使用してユーザーディレクトリにrpmをインストールする方法はありますrpmが、簡単ではないと思います。に方法があるとは思わないyum

私の標準的なプラクティスは、ソースからlocal自宅のディレクトリにコンパイルすることです

$ mkdir ~/local
$ mkdir ~/local/bin
$ mkdir ~/local/lib
$ mkdir ~/local/include

/usr/localrootを持っているときなどにソースをダウンロードします(例:)~/local/git

コンパイル時に、localディレクトリにプレフィックスを設定します

$ configure --prefix=/home/user_name/local
$ make
$ make install

次に~/local/bin、の$ PATHに追加し.bash_profileます。

もちろん、ソースからインストールする際の苦痛は、依存関係の自動解決が得られないことです。依存関係をインストールする必要がある場合は、上記のようにコンパイルしてインストールします。次に、コンパイル時gitに、依存関係のライブラリとインクルードファイルの正しい場所を検索するように、コンパイルフラグを更新する必要があります。

./configure --prefix=/home/user_name/local LDFLAG='-L/home/user_name/local/lib' CFLAGS='-I/home/user_name/local/include' CPPFLAGS='-I/home/user_name/local/include' CXXFLAGS='-I/home/user_name/local/include'

これは完璧に機能しました。アドバイスをありがとう!
有線

13

.rpmファイルは実際にはcpioアーカイブの形式であり、単純な形式のtar。このrpm2cpioユーティリティはおそらくシステムにインストールされており、使用するのに権限は必要ありません。標準出力に書き込むため、変換するには:

rpm2cpio whatever.rpm > whatever.cpio

ありますman cpioあなたが自分で見ることができますが、あなたは今、モード「でコピー」でのcpioアーカイブを養うれやりたいです。

cat whatever.cpio | cpio -i

ファイルが適切な場所(ビンなど)に移動するように、ものがディレクトリツリーに編成されている可能性が非常に高いです。それらがpwdに存在しない場合、エラーが発生しますが、アーカイブ内のファイルがリストされます(-t/ --listスイッチで同じことを取得できます)。ディレクトリを自動的に作成する場合は、を使用します-d。したがって、rpmを解凍する簡単な方法:

rpm2cpio whatever.rpm | cpio -i -d

これを使用して、$ HOMEにインストールできます。唯一の問題は、プログラムがなどで何かを見つけることを期待している場合です/etc。なぜなら、多くの物は、コンパイルされるときにどんな目的でもインストール場所がハードコードされているためです。

ソースからの構築はおそらく正しいオプションです(正しい場所を提供できるため)が、どのような場合でもこれを機能させることができれば、迅速かつ簡単です。

また、真夜中の司令官ファイルブラウザー(mc)、およびおそらく他のファイルブラウザーを使用すると、rpmまたはcpio(または圧縮tar、zip)階層をナビゲートし、アーカイブが解凍されたかのように個々のファイルをコピーできます(アーカイブの内容を参照するための一時ファイルシステム)。


0

これは代替(yumを使用しない)であり、許可は奇抜になりますがchown、後でターゲットユーザーにできます:-また、ヒットまたはミスです:-(

#-## Download all dependency for the RPM -- 
#sudo yum install yum-utils
#sudo yumdownloader --resolve --destdir ~/download bash

#-## Install all downloaded to an alternate root 
#sudo rpm --initdb --root <user_home_dir>
#sudo rpm --root <user_home_dir> -Uvh --nodeps ~/download/*

次に、適切な場所をパスに追加します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.