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


18

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

回答:


22

apt-cache depends pkgname パッケージの依存関係が表示されます。

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

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

16

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

apt-get build-dep <package name>

あなたが得るマニュアルページから

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


9
との間に違いはbuild dependenciesありdependenciesませんか?同様に、通常プログラムをインストールすると、実際に実行する必要のある依存関係が得られます。ビルド依存関係では、ライブラリ、コンパイラーなどについてもっと考えます。だから私は確信していませんが(この答えには賛成票があります)、ビルド依存関係を取得することはパッケージが持っている(実行する)依存関係を取得することと同じことは簡単ではないようです?
ナネ14

1
あなたは正しいです。これに答える時点で、かなり前に、ビルドの依存関係(ビルド時間)と依存関係(実行時間)の違いを完全に理解していませんでした。Nanneを明確にしてくれてありがとう!
ネイサンクロック

4

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

aptitude install '?reverse-depends(foo)'

または

aptitude install '~Rfoo'

パッケージをインストールしてから削除する際の問題は、依存関係としてインストールされるすべてのパッケージが「自動インストール」としてマークされ、aptitudeによるインストール/削除/アップグレードアクションまたは実行しapt-get autocleanない限り削除されることです。aptitude markまたはapt-markコマンドを使用して手動でインストールされたものとしてマークします。

しかし、これはなぜあなたがこれをしたいのかという疑問を請います。あなたが手作業でコンパイルしようとしているいくつかのソフトウェアの依存関係をインストールしようとしているということです。その場合、最初にビルド依存関係をインストールしますがapt-get build-dep packagenameequivパッケージを使用して適切な依存関係を持つダミーパッケージをビルドすることにより、ランタイム依存関係(通常はビルド依存関係とは異なる)を持つダミーパッケージを作成する必要があります手動でコンパイルされたプログラム。情報を参照してくださいequivsAPT HOWTO


3

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

apt-get build-dep pkgname

1
ビルドの依存関係は実行時の依存関係ではありません
16

>>ソースからpkgnameを構築する場合
eri

それが保証されている/文書化されている場所がわかりません。また、どのような目的でも同じようにしません。私は常に build-depを使用しますが、現在の質問に対するより良い答えが本当に欲しいです。私もそれが必要です。
-sehe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.