如何将包分类为apt-mark showauto / showmanual?

我比较的输出

$ dpkg --get-selections | grep -v deinstall | awk ' { print $1 } ' > dpkg.txt $ apt-mark showmanual > manual.txt $ apt-mark showauto > auto.txt 

我觉得

  • dpkg.txt将是所有
  • manual.txt将是“主要”包
  • auto.txt将是manual.txt中包的依赖项

我检查了,dpkg.txt是auto.txt和manual.txt的“总和”,正如我所料,但我看到“主要”软件包,如apport,locate,unzip,zip in auto.txt和许多lib文件(依赖项) ?)在manual.txt中。

这是为什么?

我看过man apt-mark但这并没有解释我的问题:

        showauto
            showauto用于在新行上打印每个包的自动安装包列表。 全部自动安装
           如果没有给出包裹,将列出包裹。 如果给出包,则仅显示自动安装的包。

        showmanual
            showmanual可以像showauto一样使用,除了它将打印一个手动安装的包列表。

我还指出,我没有使用apt-mark autoapt-mark manual标记包。

请注意,我的系统没有任何问题。 这只是为了我的理解。

我们不能只说apt-mark showmanual只显示自动安装的dependecies。

通常会自动安装的某些软件包会另外标记,因为它们或它们的依赖项位于特殊部分。

所以如果你这样做是正常的:

 $ apt-get install foo NEW: foo 

你手动安装它

另一方面,如果是:

 $ apt-get install foo NEW: foo foo-data 

foo-data将显示为自动安装。

Morover

如果foo是自动安装的,你可以:

 $ apt-get install foo 

在操作结束时,foo将被标记为手动安装。

我们要求机器很聪明,但机器是白痴。 我们可能没有安装Xserver ,它是手动安装的(你必须像我什么时候手动安装Xserver),但安装程序确实是因为它认为我们需要它并且不希望它被删除。 同样适用于安装gnome并将gnome依赖的所有内容都标记为manual因为用户认为仅删除(metapackage) gnome也不会自动删除他们习惯使用的所有gnome应用程序。

然后我们按照教程或者我们使用其中一种疾病,比如来自可疑来源的糟糕的安装程序脚本,只需apt-get install everything

这与您了解安装哪些软件包而不是某些自动化过程的用法不同。 它有时可能会重叠,但并非总是如此。 您必须面对的一个大问题是,很难确定您或软件是否订购了安装。 很多时候它都是。

示例 :安装软件包(为您)启用硬件支持(为您)的应用程序。 [你看到我在这里做了什么?]这是auto manually installed还是manually installed

第一 :自动安装的软件包设置了“自动安装:1”标志。

第二 :如果你没有数据,默认为安全选项,这是“自动安装:0”(=手动安装),因为它没有删除任何东西。

所以你不能只说一个包含完全手动安装而另一个完全自动安装。

(这也有历史原因,因为这种跟踪从一开始就没有实施,有一段时间人们非常关心升级)。