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 / 问题 / 26887
Accepted
A Student at a University
A Student at a University
Asked: 2011-02-18 12:33:46 +0800 CST2011-02-18 12:33:46 +0800 CST 2011-02-18 12:33:46 +0800 CST

查找当前安装的软件包的最小等效项

  • 772

我使用了一个工具来计算您可以安装的最小软件包集,以获取您拥有的当前软件包集。这不同于告诉您您的选择是什么。它确实找到了最短的包列表,这些包将通过依赖项为您提供当前拥有的内容。

我忘了在哪里可以找到这个工具。这叫什么?

apt
  • 3 3 个回答
  • 813 Views

3 个回答

  • Voted
  1. Best Answer
    Oli
    2011-02-18T15:30:11+08:002011-02-18T15:30:11+08:00

    aptitude可以通过其搜索功能为您提供大部分服务。以下是您如何找到不仅是自动依赖项的所有已安装内容:

    aptitude search -F "%p" "?installed ?not(?automatic)"
    

    这不是最佳的,其中一些可能可以被删除,但我不知道一个简单的方法来解决这个问题。或许答案就在于man aptitude。

    再想一想,使用该列表,您可以遍历它并找到每个包的依赖包(而不是依赖包)。如果其中一个在主列表中,请从列表中删除当前包......但只有在您解析了整个列表之后,否则您将错过 3 级以上的 dep 树中的中间包。

    您可以通过如下查询找到家属:

    aptitude search '~i~Dpackage'
    

    我会尝试编写脚本,但我是在一个小小的手机键盘上输入的。即使我有限制。

    编辑:尝试入睡五分钟后,我开始着手解决这个问题。像这样的东西应该可以完成这项工作:

    orig=$(aptitude search -F "%p" "?installed ?not(?automatic)")
    newlist="";
    for p in $orig; do
        depended=0;
        for dependant in `aptitude search -F "%p" "~i~D$p"`; do
            if [[ $orig == "* $dependant *" ]]; then
                depended=1;
            fi;
        done;
        if [[ $depended == 0 ]]; then
            newlist="$newlist $p";
        fi;
    done;
    echo $newlist
    

    请注意,这需要很长时间才能运行,并且可能过于敏感(例如,它会删除您手动安装的东西,您想要手动安装的东西,如果它们被 $orig 列表中的其他东西所依赖,您也许之后安装)。

    • 4
  2. Francois G
    2011-08-25T07:01:01+08:002011-08-25T07:01:01+08:00

    我已经编写了一个小的 python 脚本来做到这一点,作为要点发布在这里。

    你在命令行上给它一组包名,它应该给你一个更小,最小的包,暗示你作为参数给出的所有其他包。在这里,x11-proto-fixes-dev隐含(依赖于)libgtk2.0-dev:

    fuwaad:~$ python mindeps.py x11proto-fixes-dev libgtk2.0-dev
    libgtk2.0-dev
    
    • 4
  3. Dirk Bergstrom
    2012-04-20T08:43:32+08:002012-04-20T08:43:32+08:00

    我在一个运行多年的系统上尝试了这个问题和其他两个类似问题的答案,我能得到的最短列表是 1338 个包,其中大部分显然是依赖包或库存包。

    但是,在 Unix/Linux Stack Exchange 上,我找到了这个答案,它从 Ubuntu 镜像中提取了供您安装的库存包列表并将其过滤掉。这使我的清单减少到 404 个对我来说看起来很正常的包。

    • 2

相关问题

  • 如何编写 shell 脚本来安装应用程序列表?

  • 如何查看存档中可用的软件包的所有版本?

  • 是否可以说出我安装的哪些软件包不在原版安装中?

  • 如何删除 PPA?

  • 使用 apt-get upgrade 时如何强制安装内核更新?

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

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

    • 14 个回答
  • Marko Smith

    我需要什么命令来解压缩/提取 .tar.gz 文件?

    • 8 个回答
  • Marko Smith

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

    • 24 个回答
  • Marko Smith

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

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Martin Hope
    EmmyS 我需要什么命令来解压缩/提取 .tar.gz 文件? 2011-02-09 14:50:41 +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