RHEL サーバー上のユーザーに Git をローカルにインストールしたい (ルート アクセス権がありません)。ローカル ユーザー アカウントにソフトウェアをインストールする最もクリーンで組織的な方法は何でしょうか。
- そのユーザーのホームディレクトリにすべてをインストールしますか?
- ディレクトリのレイアウトはどのようになるでしょうか?
- ソースからインストールしますか、それとも RPM からインストールしますか?
- RPM の場合、YUM と RPM のどちらを使用しますか?
答え1
を使用してユーザー ディレクトリに 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
の $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'
答え2
.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
。これは、コンパイル時に何らかの目的でインストール場所がハードコードされているものが多いためです。
ソースからビルドする方がおそらくより良いオプションです (正しい場所を指定できるため)。ただし、どのような場合でもこれを機能させることができれば、迅速かつ簡単です。
また、midnight commander ファイル ブラウザー ( mc
) や、おそらく他のファイル ブラウザーでも、rpm または cpio (または圧縮された tar や zip) 階層をナビゲートし、アーカイブが解凍されたかのように個々のファイルをコピーすることができます (アーカイブの内容を参照するための一時ファイル システムを作成します)。
答え3
これは代替手段(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/*
次に、パスに適切な場所を追加します。