Ubuntu 14.04 及以上版本

Ubuntu 14.04 及以上版本

我想将所有已安装软件包的列表输出到文本文件中,以便我可以查看它并在另一个系统上批量安装。我该怎么做?

答案1

Ubuntu 14.04 及以上版本

aptUbuntu 14.04 及以上版本上的工具使这变得非常容易。

apt list --installed

旧版本

要获取本地安装的软件包列表,请在终端中执行以下操作:

dpkg --get-selections | grep -v deinstall

-v标签“反转” grep 以返回不匹配的行)

要获取已安装的特定包的列表:

dpkg --get-selections | grep postgres

要将该列表保存到桌面上的文本文件中,packages请在终端中执行以下操作:

dpkg --get-selections | grep -v deinstall > ~/Desktop/packages

或者,只需使用

dpkg -l

(您不需要以超级用户身份运行任何这些命令,因此sudo这里不需要任何其他变体)

答案2

要获取明确安装的软件包(不仅仅是作为依赖项安装的软件包),您可以运行

aptitude search '~i!~M'

这还将包括您可能需要的简短描述。如果没有,还请添加选项-F '%p',如 karthick87 所述。


另一个选择似乎是复制文件/var/lib/apt/extended_states,它是这种格式的文本文件数据库:

Package: grub-common
Architecture: amd64
Auto-Installed: 0

Package: linux-headers-2.6.35-22-generic
Architecture: amd64
Auto-Installed: 1

Auto-Installed: 0表示该包是明确安装的,而不仅仅是一个依赖项。

答案3

列出所有包故意安装(不是作为依赖项)通过 apt 命令运行以下命令:

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep '^Commandline:'

这提供了基于反向时间的视图,其中较旧的命令首先列出:

Commandline: apt-get install k3b
Commandline: apt-get install jhead
...

安装数据也显示突触使用情况,但没有详细信息(与安装日期相同):

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep -B1 '^Commandline:'

提供以下信息:

Start-Date: 2012-09-23  14:02:14
Commandline: apt-get install gparted
Start-Date: 2012-09-23  15:02:51
Commandline: apt-get install sysstat
...

答案4

apt-mark showmanual

手册页指出:

将打印手动安装的软件包列表

因此,它应该只提供明确安装的软件包的列表(尽管这包括默认初始安装的一部分的软件包),而不包含由于安装这些软件包而包含的所有依赖项。

将结果输出到文本文件:

apt-mark showmanual > list-manually-installed.txt

相关内容