Apt-get(または他のdpkgのフロントエンド)を使用してパッケージを直接インストールし、すぐに削除して依存関係を除外する代わりに、パッケージの必要な依存関係のみをインストールするより良い方法はありますか?
apt-cache depends pkgname
はパッケージの依存関係を表示します。
すべてを1つのコマンドで実行したい場合は、次のことよりも悪い結果をもたらす可能性があります。
apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`
apt-getはまさにそのためのコマンドを提供します...
apt-get build-dep <package name>
あなたが得るmanページから
build-depを使用すると、apt-getはソースパッケージのビルド依存関係を満たすためにパッケージをインストール/削除します。デフォルトでは、パッケージをネイティブにビルドするために依存関係が満たされています。必要に応じて、代わりに--Host-architectureオプションを使用してホストアーキテクチャを指定できます。
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 HOWTO のequivs
に関する情報を参照してください
ソースからpkgnameをビルドする場合
apt-get build-dep pkgname