AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1286433
Accepted
bamm
bamm
Asked: 2020-10-24 18:38:02 +0800 CST2020-10-24 18:38:02 +0800 CST 2020-10-24 18:38:02 +0800 CST

如何递归列出需要安装的包的依赖项?

  • 772

执行此操作时apt install,我会在以下行下获得需要安装的软件包列表:

The following NEW packages will be installed:

如果没有,它将继续没有提示。我试图检索此列表,但如果没有,则会失败,因为安装将继续进行。我想在不安装的情况下获取此列表。

我试过这样的事情:

apt-cache depends --recurse packagename | grep -v " " | sort -u

但它提供了完整列表,包括已安装的列表。我想把它限制在那些需要安装的地方。

我知道我可以将上面的输出与结果进行比较

dpkg --get-selections

查看哪些已安装,哪些未安装,但它会涉及循环内的循环,并且两个列表都很长。肯定有更优雅的方式来做到这一点。

感谢您的任何建议。(这是我第一次在这里提问)

编辑:我检查了使用rdepends此问题中给出的方法: 递归依赖项

这将是我正在寻找的,除了它会产生与apt install给出的不同的列表。它甚至列出了可卸载的依赖项(不可能,因为包本身安装成功)。我正在寻找的是在apt给定包之前安装的包列表。无论如何,我不明白为什么列表不同。结果应该是一样的吧?但既然不是,那么它不是我要找的。但是,如果有人可以向我解释为什么他们给出不同的结果,我将不胜感激。

package-management command-line apt
  • 3 3 个回答
  • 1752 Views

3 个回答

  • Voted
  1. Best Answer
    Eliah Kagan
    2020-10-24T19:01:49+08:002020-10-24T19:01:49+08:00

    利用:apt -s install ...

    -s将选项传递给apt它会使其模拟安装,但不会实际安装或修改任何东西。这显示了您在安装软件包时可以看到apt的内容,包括哪些软件包被拉入以满足其(直接和间接)依赖关系。

    例如,要了解安装apache2软件包时会发生什么,您可以运行:

    apt -s install apache2
    

    这显示您将采取哪些步骤sudo apt install apache2。

    该-s选项也可以拼写为--simulate, --just-print, --dry-run, --recon,中的任何一个--no-act。因此,如果您看到(或写下)其中任何一个,他们正在做同样的事情。

    该-s选项记录在man apt-get而不是man apt(后者没有记录大多数功能和选项),但两者apt-get -s install ...和apt -s install ...都受支持。

    您同样可以使用 模拟其他动作-s,例如remove动作。

    与apt实际更改系统的命令不同,apt -s以 root 身份运行是可选的,因此您可以省略sudo.

    • 8
  2. xiota
    2020-10-25T04:23:23+08:002020-10-25T04:23:23+08:00

    似乎apt -s install(从另一个答案)可以满足您的需求。您可以考虑的其他工具是apt-rdepends和apt-cache。但是,它们列出了来自 的不同包apt -s install,因此使用哪个包取决于您的需要。

    • apt可能包括标记为“建议”和“推荐”的软件包,具体取决于您的配置。

    • apt-rdepends不排除其他人已经提供的包。假设您安装了软件包xyz-ng,并且它提供了xyz. apt-rdepends列出xyz,因为它是一个未安装的依赖项,但apt不需要安装,xyz因为它是由xyz-ng已安装的 提供的。

      • 在上面的例子中,xyz-ng和xyz会发生冲突。所以xyz不卸载就无法安装xyz-ng。
    • apt-cache可能出于其他原因包含不必要的包,例如其他架构 ( i386)。

    以下是使用apt-rdepends管道输出到其他实用程序以清理包列表的示例用法:

    package="whatever"
    apt-rdepends \
            --state-follow=NotInstalled --state-show=NotInstalled \
            -f Depends -s Depends "$package" 2> /dev/null | 
        grep Depends\:\ | 
        sed -E 's@\ \(.*\)$@@ ; s@^\s+Depends\:\ @@' |
        sort -u
    

    这是一个使用aptitude管道输出清理包列表的示例:

    package="whatever"
    aptitude -s -y install "$package" |
        sed -E -e '1h;2,$H;$!d;g' \
               -e 's@(.*\n)+.*NEW\ packages\ will\ be\ installed:\n(.*\n).*RECOMMENDED but will NOT be installed:(\n.*)+@\2@' \
               -e 's@(\{[a-z]\})?\ @\n@g' |
        sort -u
    
    • 6
  3. user986805
    2020-10-24T22:13:43+08:002020-10-24T22:13:43+08:00

    您可以使用 aptitude 完成此操作:

    $ aptitude \
      --safe-resolver --no-new-installs install <package>
    
    • 0

相关问题

  • 有没有办法重置所有包/源并从头开始?

  • 文件权限如何工作?文件权限用户和组

  • 如何回滚到 PHP 5.2?

  • 包管理器之间有什么区别?

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve