如何只安装包的依赖项?

运行sudo apt-get install 将安装包,其依赖项和任何其他推荐的包。

但是,似乎没有办法安装包的依赖项并排除包本身。

怎么会这样做呢?

这将在包的DependsPreDepends字段中安装所有包:

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

基本上你要求所有依赖项,过滤掉(Pre)Depends ,并为apt-get格式化输出。

一个问题是依赖性

 Depends: pulseaudio pulseaudio:i386 

或虚拟包

 Depends:  default-jre-headless openjdk-6-jre-headless 

所以: 小心使用 – 它并不适用于所有情况!

如果您不介意复制/过去,只需使用-s模拟apt-get安装。 通过这种方式,您将看到将安装和/或升级哪些其他软件包,然后您只需从该列表中删除您不想安装的软件包名称即可。

sudo apt-get install -s

apt-get build-dep 可以解决这个问题。

要列出未安装的给定包的所有依赖项,可以使用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) ... 

您可以解析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 

要仅安装依赖项,可以使用apt-cache show package | grep Depends 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 ,你查找包选择它然后安装它的依赖项:

在此处输入图像描述