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

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

RHELサーバーにユーザーとしてGitをローカルにインストールしたいです(rootアクセス権がありません)。ローカルユーザーアカウントにソフトウェアをインストールする最もクリーンで体系的な方法は何ですか?

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

答え1

rpmを使用してユーザーディレクトリにインストールする方法がありますが、rpm単純ではないようです。私は方法があると信じていませんyum

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

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

/usr/localたとえば、rootアクセス権があるかのようにソースコードをダウンロードします~/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

cpio.rpmファイルは、実際にはより単純な形式の.rpmと非常によく似たアーカイブ形式ですtar。このrpm2cpioユーティリティはシステムにすでにインストールされている可能性があり、標準出力に書き込むためのアクセス許可は必要ありません。

rpm2cpio whatever.rpm > whatever.cpio

自分で確認できますが、man cpio今やるべきことは、「コピー」モードでアーカイブをcpioに供給することです。

cat whatever.cpio | cpio -i

これらのコンテンツは、ファイルが適切な場所(binなど)に入るようにディレクトリツリーで構成される可能性が高くなります。パスワードにファイルがない場合はエラーメッセージが表示されますが、これはアーカイブ内のファイルを一覧表示します(-t/--listスイッチを使用すると同じ結果が得られます)。ディレクトリを自動的に作成するには、-drpmを解凍する簡単な方法は次のとおりです。

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/*

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

関連情報