web-dev-qa-db-ja.com

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

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

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

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

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

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

/usr/localなどにルートがある場合、~/local/gitと同じようにソースをダウンロードします。

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

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

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

もちろん、ソースからインストールする際の問題は、依存関係の自動解決が行われないことです。依存関係をインストールする必要がある場合は、上記のようにコンパイルしてインストールします。次に、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'
17
drs

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

rpm2cpio whatever.rpm > whatever.cpio

あなたが自分で見ることができるman cpioがありますが、今したいことは、「コピーイン」モードでcpioにアーカイブをフィードすることです。

cat whatever.cpio | cpio -i

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

rpm2cpio whatever.rpm | cpio -i -d

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

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

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

13
goldilocks

これは代替(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/*

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

0
Kalpesh Patel