RHELサーバー上のユーザーにローカルにGitをインストールしたい(ルートアクセス権がない)ローカルユーザーアカウントにソフトウェアをインストールする最もクリーンで最も組織的な方法は何ですか?
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'
.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)階層をナビゲートし、アーカイブのように個々のファイルをコピーできます。解凍されました(アーカイブの内容を参照するための一時ファイルシステムが作成されます)。
これは代替(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/*
次に、適切な場所をパスに追加します。