到目前为止,我有一个使用 yum 安装的明确软件包列表。服务器有一些自己开发的软件,这些软件不会来自存储库,而是会被移动然后本地安装。有没有办法找出通过这种方式安装了哪些软件包/软件?
答案1
你可以使用
rpm -qa
列出所有已安装的软件包。这还将列出来自存储库的软件包。然后,您可以与存储库安装的软件包进行比较,消除重复项,并找到本地安装的软件包。
rpm -qi {package}
将显示有关已安装包的信息。
您还可以查阅rpm
手册页以了解更多选项。
答案2
使用 rpm 命令而不是通过 yum repo 安装的软件包将以“已安装”作为其来源列出。简单来说:
yum list installed |grep installed
应该列出这些。
未打包但通过复制二进制文件或从源代码编译安装的软件将不会列在 rpm 数据库中,只能通过检查文件系统才能找到。您唯一的希望是,如果您的同事这样做了;他们至少遵循一些惯例,将自定义软件安装在 /usr/local、/opt 或其他单个路径中,而不是 /bin 或 /usr/sbin 等中。
答案3
您说的“本地安装”是什么意思?类似于“rpm -ivh package.rpm”?
如果是,那么您可以通过以下方式找到非官方存储库中的所有软件包:
rpm -qa --qf'%{NAME}%{VENDOR} \n'|grep -v“ Red Hat”
还
yum 列表已安装 |awk '{if ($3=="installed") print $1}'
会帮助你。它不仅会显示本地安装的软件包,还会显示自第一次安装操作系统以来未更新的所有软件包...所以如果你有许多未更新的软件包,它就没什么用了。
答案4
据我所知,没有简单的方法可以做到这一点。显然你可以使用:
rpm -qa | grep package-name
要查找某个包或删除 grep 并通过 yum 列出所有已安装的包。但是,如果您从源代码安装(我假设您正在这样做 - 您没有指定),yum 将不会跟踪它们。如果它们是从源代码安装的,正常程序是将源文件下载到 /usr/src 并从那里运行 make 和 make install。因此,通常情况下,您会在 /usr/src 文件夹中找到所有源文件。但是,如果有人安装了软件而没有将源文件放在那里,或者他们在安装后删除了源,您将无法在那里找到它们。