![如何检查软件包是否随 Ubuntu 预装或是否由我自己安装?](https://linux22.com/image/1169378/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E8%BD%AF%E4%BB%B6%E5%8C%85%E6%98%AF%E5%90%A6%E9%9A%8F%20Ubuntu%20%E9%A2%84%E8%A3%85%E6%88%96%E6%98%AF%E5%90%A6%E7%94%B1%E6%88%91%E8%87%AA%E5%B7%B1%E5%AE%89%E8%A3%85%EF%BC%9F.png)
我正在为其他人编写说明,我想知道是否需要在我的代码片段中包含几个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
)。我们通过将 更改为 来实现这一点remove
。autoremove
另外,让我们使用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”上,但不在已安装版本上。我见过一些这样的问题。