我在计算机上安装了普通的 Ubuntu 10.10,并通过 apt-get 安装了一些软件。上周我搞砸了一切,只能从头开始,我需要重新安装软件。有没有办法创建一个包含我手动安装的所有软件包的列表?
这样它会给我一个类似的列表texlive, ...
,而不是texlive, texlive-dep1, textlive-dep2, ...
所有被删除的标准包?
如果我能以某种方式找出我已删除的常规安装中的哪些程序,那也太棒了!
更新 2015-05-23:我现在使用 Ansible 作为系统上的配置管理。我在那里指定要安装的软件包。这可以实现目标,在全新系统上安装所有程序,甚至更好。所以这个问题可能是进入一些轻量级配置管理的入口。
答案1
有了这个建议,我假设您的旧安装仍然能够启动!
要将一组软件包复制到另一台机器上:
在系统 A 上,运行:
dpkg --get-selections | grep -v deinstall > my-selections
将my-selections
文件移至系统 B。
在系统 B 上,运行:
dpkg --set-selections < my-selections
进而:
sudo apt-get dselect-upgrade
重要提示:如果您安装了来自非标准存储库和/或 PPA 的软件包,您还需要在运行升级之前/etc/apt/sources.list
将内容从系统 A 复制到系统 B。/etc/apt/sources.list.d/
你dpkg
也可以使用它来查看你删除了什么(注意:这还包括你手动安装的软件包和已删除):
dpkg --get-selections | grep deinstall
您可以在终端中查看结果,或者当然也可以重定向到文件。
答案2
这线来自 superuser.com 给出了以下解决方案:
aptitude search '?installed ?not(?automatic)'
答案3
如果你的 apt 日志在 /var/log/apt 中,则类似下面的操作应该有效:
gunzip -c /var/log/apt/history.log.*.gz | grep "apt-get install"
或者如果你想要摆脱输出中的一些重复的垃圾:
gunzip -c /var/log/apt/history.log.*.gz | grep "apt-get install" \
| cut -f4- -d" " | sort | uniq
答案4
comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)
提供所有手动安装的软件包(不是系统软件包,不是依赖项)。例如,它显示build-essential
但不显示gcc
。