パッケージの依存関係のみをインストールする方法は?


45

実行sudo apt-get install <PACKAGE>すると、パッケージ、その依存関係、およびその他の推奨パッケージがインストールされます。

ただし、パッケージの依存関係のみをインストールし、パッケージ自体を除外する方法はないようです。

これをどのように行うのでしょうか?


好奇心が強い、なぜあなたはこれをしたいのですか?
クリスハーパー

@ root45:まあ、それはちょっとユニークな状況です:リポジトリにPythonパッケージのソースコードがあります。そして、それは始まっていません。パッケージ自体をインストールせずに、パッケージの依存関係をインストールする必要があります(コードが既にあるため)。
ネイサンオスマン

1
apt-get installの予行演習を行い、インストールされる内容を確認してから、コンパイルしているアプリ以外のすべてをインストールできませんでしたか?
ダフィーダック

2
または、単にインストールしてからアプリケーションを削除します(ただし、依存関係は削除しません)。および/またはビルド後に更新/修正されたパッケージをインストールします。
-JanC

アーキテクチャ用にまだビルドされていないソースパッケージをビルドしてインストールできるように、これを行う機能が必要です。apt-get build-depビルド依存関係をインストールするのでapt-get -b source動作しますが、ランタイム依存関係はインストールされないため、dpkg -i *.deb失敗します。
トレバーロビンソン

回答:


24

これにより、パッケージのDependsおよびPreDependsフィールドにすべてのパッケージがインストールされます。

sudo apt-get install $(apt-cache depends <PACKAGE> | grep Depends | sed "s/.*ends:\ //" | tr '\n' ' ')

基本的に、すべての依存関係を要求し、(Pre)Dependsを除外して、その出力をapt-get用にフォーマットします。

1つの問題は、次のような依存関係です。

Depends: pulseaudio
  pulseaudio:i386

または次のような仮想パッケージ

Depends: <java6-runtime-headless>
  default-jre-headless
  openjdk-6-jre-headless

そのため、注意して使用してください-すべての場合に機能するわけではありません!


1
これが処理しない場合が多くあります。例えば、仮想パッケージ(山括弧で印刷されている)で完全に壊れます。例については、こちらを参照してください:askubuntu.com/questions/25361/...
トレバー・ロビンソン

ヒントに感謝しますが、これらの問題をどのように処理するのか本当にわかりません。:-(
htorque

2
私は可能性がある場合、私はAWKとの簡単な解決策を提案したいと思います:sudo apt-get install $(apt-cache depends PACKAGE-NAME-HERE | awk '$1~/Depends/{printf $2" "}')
Sergiy Kolodyazhnyy

1
上記の仮想パッケージの問題に遭遇しました。sedパイプラインで次のように更新することでうまくいきましたsed -e "s/.*ends:\ //" -e 's/<[^>]*>//'。私の場合、仮想パッケージの< >前にそれを満足させるパッケージがあったので、アイテムを削除し< >てもうまくいきました。
バート

5

apt-get build-dep <package> トリックを行います。


13
パッケージには、と共にインストールされないランタイム依存関係があるため、機能しませんapt-get build-dep
ネイサンオスマン

5

コピー/ペーストを気にしない場合は、を使用してapt-getインストールをシミュレートするだけ-sです。そうすれば、どの他のパッケージがインストールおよび/またはアップグレードされるかを確認し、インストールしたくないパッケージ名をそのリストから削除するだけです。

sudo apt-get install -s <package>


4

インストールされていない特定のパッケージのすべての依存関係をリストするには、次を使用できます。 aptitude

aptitude search '!~i?reverse-depends("^PACKAGE_NAME$")'

依存関係をインストールするには

aptitude search '!~i?reverse-depends("^PACKAGE_NAME$")' -F "%p" | xargs sudo apt-get install

  • 依存関係をリストする

    % aptitude search '!~i?reverse-depends("^mc$")'
    p    mc-data         - Midnight Commander - a powerful file manager -- data files
    
  • パッケージ名のみを表示

    % aptitude search '!~i?reverse-depends("^mc$")' -F "%p"
    mc-data                            
    
  • たとえば、依存関係をインストールします mc

    % aptitude search '!~i?reverse-depends("^mc$")' -F "%p" | xargs sudo apt-get install     
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following NEW packages will be installed:
      mc-data
    0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
    Need to get 1.166 kB of archives.
    After this operation, 5.550 kB of additional disk space will be used.
    Get:1 http://archive.ubuntu.com/ubuntu/ wily/universe mc-data all 3:4.8.13-3 [1.166 kB]
    Fetched 1.166 kB in 0s (1.250 kB/s)
    Selecting previously unselected package mc-data.
    (Reading database ... 606748 files and directories currently installed.)
    Preparing to unpack .../mc-data_3%3a4.8.13-3_all.deb ...
    Unpacking mc-data (3:4.8.13-3) ...
    Processing triggers for doc-base (0.10.6) ...
    Processing 1 added doc-base file...
    Registering documents with scrollkeeper...
    Processing triggers for man-db (2.7.4-1) ...
    Processing triggers for hicolor-icon-theme (0.15-0ubuntu1) ...
    Setting up mc-data (3:4.8.13-3) ...
    

1

これを行うには、aptインストールシミュレーションの出力を解析できます。これを行うbash関数を次に示します。

apt-install-depends() {
    local pkg="$1"
    apt-get install -s "$pkg" \
      | sed -n \
        -e "/^Inst $pkg /d" \
        -e 's/^Inst \([^ ]\+\) .*$/\1/p' \
      | xargs apt-get install
}

使用法:

apt-install-depends mopidy

0

依存関係のみをインストールするには、を使用できますapt-cache show package | grep Depends。これにより、依存関係のリストが表示されます。

apt-cache show apache2 | grep Depends
Depends: apache2-mpm-worker (= 2.2.22-6ubuntu5.1) | apache2-mpm-prefork (= 2.2.22-6ubuntu5.1) | apache2-mpm-event (= 2.2.22-6ubuntu5.1) | apache2-mpm-itk (= 2.2.22-6ubuntu5.1), apache2.2-common (= 2.2.22-6ubuntu5.1)

次に、apt-getでインストールするパッケージを決定できます。aptitudeインタラクティブモードにもあります。パッケージを探して選択し、依存関係をインストールします。

ここに画像の説明を入力してください

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