如何找到手动安装的包?

如何找到手动安装的包?

我在计算机上安装了普通的 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

相关内容