(这个问题与6338。有人建议将其从中分离出来,因为 Fedora 和 Ubuntu/Debian 有很大不同,需要不同的答案。)
当我使用任何 Fedora 设置时,我会逐渐安装一些超出基线安装的软件包。如果我重新安装,或者需要安装一台新机器,我通常会重新安装这些具体的软件包,我想快速完成,以便以最少的麻烦重新开始工作。据我所知,所有软件包管理器(yum
和pirut
)都可以告诉我安装了哪些软件包,并且它们都有日志(尽管每个工具的日志都不同,这很麻烦)。但它们都不能告诉我哪些软件包我有安装,而不是依赖项或系统更新。即使是日志也很棘手,因为我不完全确定我应该从中提取什么,或者如何集成它们(对于各种 apt 系列工具而言)。这意味着每次我重新安装,甚至只是备份,我都不确定如何重新创建该列表。
我并不期望任何工具能帮我完成这些工作,但如果它们不能,我就会寻找解决方法。即使是 grep 的模式、好的经验法则或对记录内容的清晰认识也会很有用。这里可能没有“最佳答案”,但好的答案会非常有帮助。
答案1
yum list installed
并yum.log
会显示已安装的内容,但我认为系统上没有任何内容区分你选择安装的软件包和作为依赖项安装的软件包
答案2
尝试使用
sudo yum history packages-list \*
它将显示明确安装的内容以及作为依赖项安装的内容:
ID | Action(s) | Package
-------------------------------------------------------------------------------
47 | Dep-Install | cairomm-1.8.0-2.1.el6.x86_64
47 | Dep-Install | glibmm24-2.22.1-1.el6.x86_64
47 | Install | gnome-system-monitor-2.28.0-11.el6.x86_64
答案3
假设你仍然有/root/install.log
原始安装的文件,你可以创建这些文件原始文件 和当前转速因此:
cd /root
rpm -qa --qf '%{NAME}\n' | sort -u > rpm.curr
awk '($1=="Installing"){print $2}' install.log | sort -u > rpm.orig
然后,查看添加的包:
comm -13 rpm.orig rpm.curr
删除的内容如下:
comm -23 rpm.orig rpm.curr
请注意,如果您有x86_64安装时,它不会区分 32 位和 64 位软件包。
答案4
文件 /root/install.log 将告诉您初始安装中包含哪些软件包。这里有一个快速脚本,它将比较此文件的内容与 的输出rpm -qa
:
rpm -qa | sort > /root/postinstall.list
for P in `sed -n 's/Installing \(.*\)/\1/p' </root/install.log`
do
sed -ie "/$P/d" /root/postinstall.list
done
文件 /root/postinstall.list 包含您想要的内容。请注意,文件中会出现原始安装包的升级版本。如果这不是您想要的,您需要在 sed 语句中使用更复杂的模式。