有没有办法区分 Linux 中的系统软件包和手动安装的软件包?

有没有办法区分 Linux 中的系统软件包和手动安装的软件包?

我正在尝试编写一个脚本,在其中可以判断该软件包是预安装的还是由用户安装的。

我们还可以有办法知道以下是包“X”的依赖关系吗

答案1

rpm在你无法真正知道的层面上。根据您使用的包管理器,可能会存储一些信息。

请注意,这仅在用户使用 运行安装命令时才有效sudo。如果他成为 root,你将永远不知道是谁干的。

百胜

yum history

为您提供事务列表以及哪个用户启动了该命令。

地下城

dnf history

为您提供交易列表,但默认情况下不列出用户。但是您可以运行:

dnf history info <ID>

然后你会看到启动命令的用户

齐普

没有办法知道这一点。

答案2

您的标签不清楚,我们不知道您使用哪个包管理器。但既然你使用了 arch-linux 标签,我就用 pacman 来回答。

嗯,第一个问题是一个难题,据我所知,这实际上是不可能的,并且在很大程度上取决于您的安装。没有一种标准的 Linux 安装,因为有许多不同的发行版、桌面环境、安装程序选项……但一种方法是查找随您的设置安装了哪些软件包组并获取其他软件包(可能是由用户安装)使用以下命令:comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base | sort)其中 base 是您预先安装的组之一。

对于问题的第二部分:您可以使用以下命令获取有关包的信息pacman -Si <yourpackage>,如果您想将输出减少为仅依赖项,请查看这个线程

答案3

安装时在发行版网站上检查相关发行版中包含的软件包。这些都是预先安装的;其他所有内容都是在 insta 后添加的;;/

相关内容