web-dev-qa-db-ja.com

DebianまたはUbuntu(apt)に特定のパッケージの依存関係のみをインストールする

Apt-get(または他のdpkgのフロントエンド)を使用してパッケージを直接インストールし、すぐに削除して依存関係を除外する代わりに、パッケージの必要な依存関係のみをインストールするより良い方法はありますか?

18

apt-cache depends pkgnameはパッケージの依存関係を表示します。

すべてを1つのコマンドで実行したい場合は、次のことよりも悪い結果をもたらす可能性があります。

apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`
22
smammy

apt-getはまさにそのためのコマンドを提供します...

apt-get build-dep <package name>

あなたが得るmanページから

build-depを使用すると、apt-getはソースパッケージのビルド依存関係を満たすためにパッケージをインストール/削除します。デフォルトでは、パッケージをネイティブにビルドするために依存関係が満たされています。必要に応じて、代わりに--Host-architectureオプションを使用してホストアーキテクチャを指定できます。

16
Nathan Crock

aptitudeでは、インストール時にパッケージ名の代わりにクエリを指定できます。 fooという名前のパッケージの依存関係をインストールする場合は、fooに逆の依存関係があるパッケージをインストールできます。

aptitude install '?reverse-depends(foo)'

または

aptitude install '~Rfoo'

パッケージをインストールしてから削除する場合の問題は、依存関係としてインストールされるすべてのパッケージが「自動的にインストールされる」としてマークされ、aptitudeによるinstall/remove/upgradeアクションによって、またはapt-get autocleanを実行したときに削除されます。 aptitude markまたはapt-markコマンドを使用して、手動でインストールされたものとしてマークします。

しかし、これはなぜこれを実行したいのかという疑問を引き起こします。私の推測では、手動でコンパイルするソフトウェアの依存関係をインストールしようとしているということです。その場合、最初にapt-get build-dep packagenameを使用してビルド依存関係をインストールしますが、次に、equivパッケージを使用してランタイム依存関係(通常はビルド依存関係とは異なります)を含むダミーパッケージを作成して、手動でコンパイルしたプログラムの正しい依存関係を持つダミーパッケージ。 The APT HOWTOequivsに関する情報を参照してください

4
stew

ソースからpkgnameをビルドする場合

apt-get build-dep pkgname
3
eri