如何检查软件包是否随 Ubuntu 预装或是否由我自己安装?

如何检查软件包是否随 Ubuntu 预装或是否由我自己安装?

我正在为其他人编写说明,我想知道是否需要在我的代码片段中包含几个apt install命令,以便使其在全新 Ubuntu 安装上完全可复制/粘贴。

如何查看某个程序是否包含在我的 Ubuntu 安装中或者是否是我稍后自行安装的?

他们运行的是与我相同的 Ubuntu 版本,所以我不需要知道该程序是否仅在某个 Ubuntu 版本中开始预安装。

答案1

apt-mark showmanual ... 接近您想要的,但它也列出了预安装内容的更新。将以下命令字符串放入文件中,并将其作为脚本运行:

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

答案2

确定某个软件包是否由 Ubuntu 桌面安装程序安装的简单方法是检查它是否包含在ubuntu-desktop元包中。元包定义了安装程序将安装的内容:

您可以使用以下命令查看直接依赖项列表:apt depends ubuntu-desktop

但是如果你的软件包没有列在直接依赖项中怎么办?你可以通过使用 apt 测试软件包来轻松找出答案。

例如,让我们模拟删除nautilus(Gnome 文件管理器)。当然,我们将使用标志--simulate;无需破坏我们的系统即可回答这个简单的问题。您可以在下面看到,删除nautilus也会导致删除。这是由桌面 Ubuntu 安装程序安装的ubuntu-desktop确凿证据:nautilus

$ apt remove nautilus --simulate
NOTE: This is only a simulation!
      [...]
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  gnome-shell-extension-desktop-icons nautilus nautilus-share ubuntu-desktop
  ubuntu-desktop-minimal
0 upgraded, 0 newly installed, 5 to remove and 0 not upgraded.
Remv ubuntu-desktop [1.440]
Remv ubuntu-desktop-minimal [1.440]
Remv gnome-shell-extension-desktop-icons [19.10.2-1]
Remv nautilus-share [0.7.3-2ubuntu3]
Remv nautilus [1:3.34.1-1ubuntu1]

让我们以两种方式扩展该示例。让我们向下移动依赖关系树并尝试删除子依赖关系(nautilus-data)。我们通过将 更改为 来实现这一点removeautoremove另外,让我们使用grep来减少输出。您可以在下面看到,这是一种测试任何(子)依赖关系的有效方法ubuntu-desktop 任何地方在依赖关系链中。该nautilus-data软件包由 Ubuntu 桌面安装程序安装:

$ apt autoremove nautilus-data --simulate | grep ubuntu-desktop
  session-shortcuts tree ubuntu-desktop ubuntu-desktop-minimal
Remv ubuntu-desktop [1.440]
Remv ubuntu-desktop-minimal [1.440]

让我们看看结果相反的情况。chrome不是 的依赖项ubuntu-desktop。 它是在稍后安装的。 删除它不会删除ubuntu-desktop

$ apt autoremove chrome --simulate | grep ubuntu-desktop
(No output)

答案3

我认为没有任何脚本或程序可以满足您的要求。唯一的办法就是运行 Ubuntu Live USB,看看是否有任何程序未安装在该 USB 上。一些程序没有安装,例如 gparted,它位于“Live”上,但不在已安装版本上。我见过一些这样的问题。

相关内容