web-dev-qa-db-ja.com

Sudoアクセスなしでパッケージをインストールする

スーパーユーザーアクセス権がない場合、大きな依存関係ツリーを持つパッケージをインストールする簡単な方法はありますか?たとえば、Firefoxをインストールしたいとします。 Firefoxにはたくさんの依存関係があり、それぞれに独自の依存関係などがあります。これらの「./configure; make; makeinstall」の方法でインストールするのは永遠にかかります。

個人ディレクトリにインストールするためにapt-getを与えることができるオプションはありますか?それとも、私のためにすべての重労働を行うためにそれをハックする方法はありますか?

11
whitman

次のコマンドを使用して、ホームディレクトリに個々の.debファイルをインストールできます。

dpkg-deb -x /path/to/some.deb $HOME

しかし、これはaptitudeやapt-getのように依存関係を処理しません。

4

チェックアウト NixOs[〜#〜] lwn [〜#〜] )。パッケージは分離されており(ディストリビューションにパッチを適用する必要がある場合もあります)、複数回、異なるバージョンで、または異なるユーザーがインストールできます。

jhbuild 大きなcmmiプロセスを自動化できます。しかし、誰かがモジュールセット(依存関係グラフ)を書く必要があります。

手動でconfigure/make all installプロセスを使用する場合は、 stow を使用して、家へのインストールを簡素化することができます。 Stowは、複数のプレフィックスでインストールするのに役立ちますが、依存関係の解決には1つのプレフィックスのみを使用します。

dpkgは、instdir/admindir/rootを使用して別のプレフィックスでインストールするように強制できますが、これはchroot環境でのみ役立ちます。

2
Tobu

答えはほとんど「ノー」だと思います。まず第一に、パッケージデータベースはrootによってのみアクセス可能であり、第二に、いくつか/多くのパッケージには、それらを再配置することを不可能にするハードコードされたパスがあります。 chrootを使用することも考えられますが、そのためのroot、または少なくともrootを持つ誰かが制限付きの権利を付与する必要があります。

0

私はあなたがchrootをしなければならないと信じています、そしてあなたはそこにあなたのパッケージをインストールすることができます。

参照: https://help.ubuntu.com/6.10/ubuntu/packagingguide/C/appendix-chroot.htmlhttps://wiki.ubuntu.com/DebootstrapChroot

0
rogerdpack

Firefoxをソースからコンパイルするのではなく、バイナリパッケージをホームディレクトリにインストールするだけです。

This Mozilla KnowledgeBaseの記事では、その方法について説明しています。基本的には、 tarball を抽出し、その中でfirefoxファイルを実行する必要があります。すべての依存関係はすでに含まれているため、aptを使用して何もインストールする必要はありません。

EDIT:いいえ、一般的なメソッドは存在しません。少なくとも、ほとんどのアプリケーション(特にGUIアプリケーション)では、関連するデータの多くを配置する必要があるためです。/usr/shareのようなよく知られた場所で、その中にハードコードされています(まあ、コンパイル時に構成できますが、あなたが言ったようにすべてを再コンパイルしたくはありません問題)。したがって、システムリソースではなく、起動ディレクトリ内のリソースを検索するプリコンパイル済みバイナリパッケージを確認できます。

0
whitequark