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 / 问题 / 1383951
Accepted
Albert
Albert
Asked: 2021-12-28 01:43:07 +0800 CST2021-12-28 01:43:07 +0800 CST 2021-12-28 01:43:07 +0800 CST

`apt-mark showmanual` 显示了几乎所有的包。弄乱?

  • 772

apt-mark showmanual为我列出了很多包:

root@hcompneu:~# apt-mark showmanual | wc -l
4013
root@hcompneu:~# apt-mark showmanual | head
a11y-profile-manager-indicator
abiword
abiword-common
abiword-plugin-grammar
account-plugin-facebook
account-plugin-flickr
account-plugin-google
account-plugin-identica
account-plugin-twitter
accountsservice
root@hcompneu:~# apt-mark showmanual | tail
yelp-xsl
zeitgeist
zeitgeist-core
zeitgeist-datahub
zenity
zenity-common
zip
zlib1g
zlib1g-dev
zlib1g:i386

据我了解,它应该只列出我手动安装的那些软件包。我不记得每种情况了,但我很确定我没有手动安装所有这些。实际上,我很少在这个系统上安装任何软件,尽管有 Chrome、OpenOffice 和其他一些非常基本的东西。所以我预计可能会有 10-100 个包的列表,但不会更多。也许它还包括来自基本 Ubuntu 安装的 ubuntu-desktop、grub 和 linux 左右。

也许在过去,虽然我编写了一些脚本来通过自动调用apt-get install XXX各种包来修复损坏的系统。或者也许我做了其他事情。我真的不记得了。

这里会是这样吗?所以我以某种方式搞砸了?如果是这样的话,你有什么建议?将所有标记为自动安装,然后手动添加一些选定的包,如 ubuntu-desktop?

或者这样的输出是否正确而我理解错误?我读了这个,我不确定。获取手动安装的软件包列表看起来要复杂得多?或者为什么答案如此复杂?

或者是apt-mark showmanual越野车?


root@hcompneu:~# ls -ld /var/log/installer/
drwxr-xr-x 2 root root 4096 Dez 27 11:27 /var/log/installer/
root@hcompneu:~# grep -r cdrom /etc/apt/ --include=*.list
root@hcompneu:~# dpkg -l | grep ^ii | wc -l
3812
apt
  • 4 4 个回答
  • 713 Views

4 个回答

  • Voted
  1. Best Answer
    N0rbert
    2021-12-28T07:34:06+08:002021-12-28T07:34:06+08:00

    TL;DR不,您的系统没有搞砸。此外,您可以将所有事物保持原样,保持当前状态。

    让我们考虑三个系统:

    当前系统 安装介质 年龄 dpkg -l | grep ^ii | wc -l apt-mark showmanual | wc -l
    带有 MATE 桌面的 Ubuntu 18.04.6 LTS (*) Ubuntu 12.04.4 LTS 7岁 5680 3953
    带有 MATE 桌面的 Ubuntu 18.04.6 LTS (*) Ubuntu 10.04 LTS 11岁 6395 3947
    你的 Ubuntu 18.04 LTS (**) ~Ubuntu 8.04 LTS ~13 岁 3812 4013

    笔记:

    • (*) 我的系统最初是从 Ubuntu 桌面安装磁盘安装的,因此随 GNOME 和/或 Unity(不是一种风味)一起提供。然后我使用官方 PPA 为12.04 LTS、14.04 LTS及其元包安装了 MATE 桌面;然后当 16.04 LTS 发布时,我使用sudo apt-get install ubuntu-mate-desktop^. 任务包的这种安装会导致所有此类包被标记为手动安装,从而防止它们被删除。所有其他软件都是在两个系统的生命周期内手动安装的。
    • (**) 关于您系统的奇怪之处在于,您安装的软件包总数 3812 少于手动安装的软件包 4013。您必须使用 Synaptic 对此进行调查。

    我试图对新旧系统的全新安装进行一些研究。下表是关于普通 Ubuntu 桌面 ISO 的全新安装的表格。

    Ubuntu版本 dpkg -l | grep ^ii | wc -l aptitude search '~i!~M' | wc -l apt-mark showmanual Synaptic:状态 → 已安装(手动)
    6.06 LTS 1046 1046 不适用 不适用
    8.04 LTS 1102 1087 不适用 不适用
    10.04 LTS 1296 1286 不适用 1286
    12.04 LTS 1392 1367 1367 1342
    14.04 LTS 1722 1690 1690 1666
    16.04 LTS 1745 220 220 195
    18.04 LTS 1602 1557 1557 1529
    20.04 LTS 1607 49 49 49
    22.04 LTS(开发版) 1700 44 44 31

    我们可以在这里理解,Ubiquity 安装程序和 APT 本身的功能会随着时间的推移而发生变化。

    从上表中我们可以看到,旧系统从安装的第 0 天开始就有大量手动安装的软件包。
    较新的 Ubuntu 版本的数字较小,这简化了它们的维护。他们可能安装了更多元包,这些元包会因为依赖关系而阻止包删除。

    我做过的另一个实验:我将全新的 Ubuntu 安装从 8.04 LTS 升级到 10.04 LTS → 12.04 LTS → 14.04 LTS → 18.04 LTS → 20.04 LTS,在生成的 20.04.3 LTS 系统中,我有 1867 个手动安装的软件包,总共 2913 个软件包。

    包的“手动”安装状态阻止了它的删除,所以你不应该将包设置为自动安装。


    很好的阅读资源:

    • 第 2 章 Debian Reference 的 Debian 软件包管理。

    • man apt-mark本地或在线,以下报价是必不可少的:

      apt-mark- 显示、设置和取消设置包的各种设置
      [...]
      showmanual可以以与showauto打印手动安装包列表相同的方式使用。

    • 4
  2. ubfan1
    2021-12-30T14:29:20+08:002021-12-30T14:29:20+08:00

    showmaual 选项的输出包括任何有更新的包,所以不是你想要的。我从其他答案复制的以下命令(不记得在哪里或我将其归因于它),并将输出与初始安装列表进行比较,生成您自己安装的软件包。为方便起见,将其放入您的 bin 区域中的文件中。

    comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)  
    

    我第一次运行 apt-mark showmanual 时,我知道列表太大了,因为包含了诸如“tar”之类的东西,我知道我从未手动触摸过。然而,“tar”应用了更新,导致它被输出。由于“tar”包含在初始系统包中,它会被脚本删除,只留下初始系统安装后“显示”的内容。

    • 1
  3. Tom V
    2021-12-28T10:48:19+08:002021-12-28T10:48:19+08:00

    系统并没有“乱七八糟”,但基本上您对手动安装的含义的理解是不正确的。包实际上从未标记为手动或非手动。它只能被标记为自动或非自动。

    当一个包被自动安装以满足依赖关系时,它被标记为自动。这意味着当没有其他包不再依赖它时,它可以(并且暗示它应该)被自动删除。

    在普通桌面系统上,大多数软件包都是在安装程序首次安装操作系统时安装的。这些软件包必须不自动安装,否则它们将被删除,因为没有任何东西依赖它们。

    以列表顶部附近的“abiword”为例。这是一个文字处理器,安装在桌面系统上可能很正常。我假设您使用了多种桌面安装程序中的一种。它可能没有具体询问您是否需要 abiword。您可能没有按名称自己安装 abiword。您仍然选择通过选择您使用的安装介质来拥有它。

    由于您的系统上没有其他软件包依赖于您安装 abiword 才能工作,因此不能将其标记为自动,否则它将被删除。这意味着它没有标记为自动。 apt-mark showmanual列出未标记为 auto 的包。

    另请注意,许多安装程序会安装非自动的所有内容,即使他们可以将它们标记为自动,因为某些东西取决于它们。即使是数百种事物所依赖的重要核心包也被标记为非自动。从这个意义上说,也许安装程序“搞砸了”,但您的系统并没有什么特别之处。

    我最好的尝试获取我自己可能安装的东西的列表是:

    aptitude search -F '%p' --disable-columns '~i !~M !~E !~prequired !~pimportant !~pstandard !~tminimal !~tstandard'
    

    要排除依赖的包,请使用:

    aptitude search -F '%p' --disable-columns '~i !~M !~R~i !~E !~prequired !~pimportant !~pstandard !~tminimal !~tstandard'
    
    • 0
  4. hans-helmut
    2022-01-31T07:47:54+08:002022-01-31T07:47:54+08:00

    根据apt-mark元包的所有依赖项的手册页都标记为manual. 所以你可以运行:

    apt-mark minimize-manual
    

    将所有这些包标记为自动。在那之后,

    apt-mark showmanual
    

    显示较少的包。

    • 0

相关问题

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

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

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

  • 如何删除 PPA?

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

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