如何仅安装包的依赖项?

Nat*_*man 53 package-management dependencies

运行sudo apt-get install <PACKAGE>将安装包、它的依赖项和任何其他推荐的包。

但是,似乎没有一种方法可以安装包的依赖项并排除包本身。

怎么做呢?

hto*_*que 24

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

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

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

一个问题是依赖关系,如

Depends: pulseaudio
  pulseaudio:i386
Run Code Online (Sandbox Code Playgroud)

或虚拟包,如

Depends: <java6-runtime-headless>
  default-jre-headless
  openjdk-6-jre-headless
Run Code Online (Sandbox Code Playgroud)

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

  • 有很多情况这不能处理,例如它会在虚拟包(打印在尖括号中)上完全中断。有关示例,请参见此处:http://askubuntu.com/questions/25361/in-apt-cache-depends-output-what-is-the-meaning-of-suggests-recommends (2认同)
  • 如果可以,我想建议使用 AWK 的更简单的解决方案:`sudo apt-get install $(apt-cache depends PACKAGE-NAME-HERE | awk '$1~/Depends/{printf $2" "}') ` (2认同)
  • 我遇到了你上面提到的虚拟包问题;将管道中的 `sed` 更新为以下对我有用的内容:`sed -e "s/.*ends:\ //" -e 's/&lt;[^&gt;]*&gt;//'`。就我而言,`&lt; &gt;` 中的虚拟包位于满足它的包之前,因此删除 `&lt; &gt;` 中的项目工作正常。 (2认同)

bks*_*day 8

如果您不介意复制/过去,只需使用-s. 这样您将看到将安装和/或升级哪些其他软件包,然后您只需从该列表中删除您不想安装的软件包名称,瞧。

sudo apt-get install -s <package>


小智 5

apt-get build-dep <package> 会做的伎俩。

  • 这是行不通的,因为该软件包具有不会与 apt-get build-dep 一起安装的运行时依赖项。 (15认同)

A.B*_*.B. 5

要列出未安装的给定软件包的所有依赖项,您可以使用 aptitude

aptitude search '!~i?reverse-depends("^PACKAGE_NAME$")'
Run Code Online (Sandbox Code Playgroud)

安装依赖项

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

例子

  • 列出依赖项

    % aptitude search '!~i?reverse-depends("^mc$")'
    p    mc-data         - Midnight Commander - a powerful file manager -- data files
    
    Run Code Online (Sandbox Code Playgroud)
  • 只显示包名

    % aptitude search '!~i?reverse-depends("^mc$")' -F "%p"
    mc-data                            
    
    Run Code Online (Sandbox Code Playgroud)
  • 安装依赖项,例如 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) ...
    
    Run Code Online (Sandbox Code Playgroud)