rootにならずにRPMをインストールするにはどうすればよいですか?


49

ルート権限がないマシンにRPMをインストールするにはどうすればよいですか?個人用の作業ディレクトリにのみ使用するパッケージをインストールしたい。SuSe SLES10を実行しています。

「このアイデアはとても馬鹿げています。すべてのリクエストは企業の根源神を経由しなければならないので、やめるべきではありません。彼は永遠に生きることができます。」

私はこれを根源の神に要求できることを知っていますが、私は撃ち落とされます(完全な、完璧な理由のために、私は確信しています...)。それに、たとえ彼がそれをやると言っても、彼はそれをインストールすることは決してないでしょう。


6
これはまったく重複していません。パスを上書きしても、必ずしも非特権ユーザーがrpmを使用できるとは限りません。
ジョンT

ありがとう、HarryMC。確認します。また、他のチケットへのリンクを追加することで、人々は私のチケットが複製だと思った。:たぶん、ブレッドクラムは他の誰かを助けるsuperuser.com/questions/160530/override-rpm-install-path
ロス・ロジャース

より良い未来のために、appimage.orgを見てください
ロスロジャース

回答:


56
cd my-dir;
rpm2cpio to-install.rpm | cpio -idv

RPMパッケージをインストールせずに抽出する方法(rpm extractコマンド)を参照してください。


2
私はこれを行いましたが、cpioは '1ブロック'の印刷以外は何もしません。私は何か間違ったことをしましたか?
ネイトパーソンズ

ありがとう。私はRPMパッケージを気にする必要はありませんので、私は、ソースからインストールすることができたが判明
ネイト・パーソンズ

10
これは、RPMの内容を展開し、現在の場所にダンプするだけです。結果が機能するという意味ではありません(その構成は
本来ある

私はあなたに慈善の評判の報酬を与えることができればいいのに。ありがとうございました!
macetw

3

rpmパッケージの内容を抽出する方法

export ins=foo-bar.rpm
rpm2cpio $ins | cpio -idv

tar.gzアーカイブを抽出する方法

gzip -dc foo-bar.tar.gz | tar xvf –
cd foo-bar-dir

tar.gzパッケージを現在のディレクトリに抽出する方法

export file=foo-bar.tar.gz
# Note that `xovf` switch order *matters*
gzip -dc $file | tar -xovf -

バイナリを非ルートとしてビルドする方法

./configure --prefix=$HOME && make && make install

1

別のオプションは、ソースからインストールすることです。通常は、--prefixスイッチを使用してインストールディレクトリを変更できます。


1
それは私が普段やっていることですが、もう少し自動化を期待していました。
ロスロジャーズ

2
私にとっては、/ var内の何かに対してファイルロックを取得しようとするため、これは機能しません(許可が拒否されます)。
ニルフリードマン

0

root権限なしでrpmを「インストールする」ことに対する「本当の」答えは、できない思います。しかし、実際にインストールプロセスを開始できると仮定すると...

RPMは、通常ファイルシステム階層に従う仕様ファイル(.spec)で提供される指示のリストを使用してインストールします。その階層上のほとんどのパスは、ほとんど常にオペレーティングシステムのパスであり、ユーザーのパスではありません。したがって、RPMがインストールされるすべてのパスにユーザー名がアクセスできない限り、確実に失敗します。すべてのパスの前に/home/me(または所有する他のパス)RPMを作成すると、機能します。これには、src.rpmを取得し、他の回答で説明されているように抽出してから再構築する必要があります。それまでに、rootアクセスを取得するか、ソフトウェアを最初から構築することを検討するだけです(通常、多くのマシンにソフトウェアを配布する予定がない場合は何をするか)。

手動ビルドプロセスを支援する巧妙なトリックがあります。:たとえば、あなたはあなたの依存関係のすべてを取得するために、既にRPMに記載されている依存関係を利用することができますhttps://stackoverflow.com/a/13877738/1236128を

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.