web-dev-qa-db-ja.com

管理者以外のユーザーのホームにyumをインストール

大規模なコンピューターシステムの非管理者ユーザーです。システムにインストールされていない最新のパッケージが必要です。 yumを使用してインストールしたいと思います。 Sudo、admin、またはrootアクセス権がないユーザーとして、パッケージ管理を使用してホームディレクトリにパッケージをインストールできますか?ソースからは常にmakeを使用できますが、yumを使用できるようにすると、作業が楽になります。

57
highBandWidth

ほとんどのバイナリは、/の下の特定の場所にインストールされるようにコンパイルされています。

Gentoo PrefixRootless GoboLinuxinstall などの非ルートパッケージマネージャーがあります。

あなたが言ったようにあなた自身をコンパイルすることはその問題を軽減するか、chrootを使うでしょう。ただし、chrootの最大のハードルは、前提条件とカーネル共有オブジェクトへのリンクです。

8
h3rrmiller

yumを使用するのではなく、必要なrpmを見つけてダウンロードしてください。 rootでなければ直接インストールすることはできませんが、RPMパッケージは実際には豪華な.cpioファイルであり、それらのコンテンツを解凍できます。これを行う最も簡単な方法は、おそらくmc( "midnight commander")ファイルブラウザ(これまでで最高のソフトウェアの1つ)を使用して、.rpmおよびそれから直接ファイルをコピーします。

それ以外の場合は、rpm2cpioを使用して.cpioに変換し、次にcpioを使用して内部のファイルを抽出して適切な場所に配置できます。これらはどちらもすでにRedhatまたはFedoraシステムにインストールされています。以下は "xsnow"をインストールする例です(おそらく空のディレクトリでこれを実行したいでしょう):

»rpm2cpio xsnow-1.42-17.fc17.x86_64.rpm > xsnow.cpio

私のシステムfc17 x86_64に適切な.rpmを見つけたことに注意してください。これらは、他のコンポーネントに対してリンクされたコンパイル済みのバイナリであるため、これは重要です。次に.cpioを抽出します。

»cpio -idv < xsnow.cpio 
./usr/bin/xsnow
./usr/share/doc/xsnow-1.42
./usr/share/doc/xsnow-1.42/README
./usr/share/man/man6/xsnow.6.gz
212 blocks
Press any key to continue...

このディレクトリツリーを参照すると、依存関係の解決に役立つメタ情報の一部を除いて、必要なものはすべてそこにあります。これはrpm -q -p [package] --[query]を使用して見つけることができます:

»rpm -q -p xsnow-1.42-17.fc17.x86_64.rpm --requires
warning: xsnow-1.42-17.fc17.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID d2382b83: NOKEY
libX11.so.6()(64bit)  
libXext.so.6()(64bit)  
libXpm.so.4()(64bit)  
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)  
rpmlib(PayloadIsXz) <= 5.2-1

私はすでにこのすべてのものを持っていることを確認してください。だから今私がしなければならないすべては私のホームディレクトリにすでにビンを含んでいる私の$ PATHにxsnow実行ファイルを置くことです:

»cp ./usr/bin/xsnow ~/bin

ビオラ!これでxsnowと入力して何も見ることができなくなりました。これは、xsnowがKDEでうまく機能しないことがわかったためです(ただし、プロセスの要旨は明確であることを願っています。ホームディレクトリの外で何もする必要はありませんでした。

ライブラリをインストールする必要がある場合は、それらのライブラリもホームに作成し、~/.bashrcに追加する必要があります。

export LD_LIBRARY_PATH=/home/you/lib
41
goldilocks