获取已安装软件包的列表?

我想要获得我服务器上安装的所有软件包的列表,但是命令
dpkg --get-selections > ~/Package.list

没有任何作用! 当我执行它时,在根文件夹中找不到名为"package.list"的文件。

1Unix和Linux都有区分大小写的文件系统。Package.listpackage.list不是同一个文件。 - Reinier Post
文件也不在根目录中,而是在您的主文件夹中。 - mook765
6个回答

你需要运行相同的命令(无需以root身份运行)
dpkg --get-selections > ~/InstalledPackages.list

然后你就可以了
cat ~/InstalledPackages.list

查看内容。

现在,如果你不确定处理得怎么样了,你可以

cd ~
pwd

就是这样。

嗯,如果我执行 cat InstalledPackages.list 我可以看到文件,但是用FileZilla却找不到 我想要导出到我的电脑上 - user180429
我不是有意冒犯,但也许你正在错误的目录中查找。尝试执行cd ~然后pwd,确保你正在正确的目录中工作。如果你已经将FileZilla指向正确的目录而文件仍不在那里,则必须检查文件及其父目录的权限。简单的方法是将它移动到/tmp/目录下。 - 0R10N
很高兴能帮助你 :) - 0R10N
编辑这个Package.list文件安全吗?原因是我需要在我的新的Ubuntu系统上恢复所有的软件包,但我怀疑其中一些软件包可能是导致系统出问题的原因。我能否以某种方式将它们删除或编辑掉? - Heisenberg
我不建议编辑这个列表。我只是说你可以运行一个命令来列出你的软件包并将其保存到一个文件中。编辑那个文件不会改变任何东西。 - 0R10N
1如何使用此清单在不同的机器上(但是相同型号)安装完全相同的软件包? - ubuplex

使用`dpkg-query`命令,这个命令恰好是你所需要的:请求软件包数据库上的数据。快速查看一下`man dpkg-query`会告诉你更多信息,不过你可以尝试使用`dpkg-query --list`或者`dpkg-query --show`。

这些回答是怎么回事,哈哈,这个问题只是在问一个简单的dpkg输出列表而已。
 dpkg --list | less

 dpkg -l | more 

 dpkg-query -l | tail

 dpkg-query --list | head

 diff <(ps aux| grep x) <(pgrep x)

 apt-file list "package"

你说你已经在根目录下查找过了,但是用“~”符号明显指向的是家目录。根目录应该是/Package.list或者-/Package.list。请在家目录下检查。
编辑:我现在看到,尽管我的回答是正确的,但对于一个新用户来说可能不够清晰。对于引入额外的困惑,我感到抱歉。@0R10N,谢谢你提供的好例子 :)

如果您想获取某些已安装软件包的版本信息,可以像这样使用管道命令:
dpkg --get-selections | awk '/php/{print $1}' | xargs dpkg-query --show $1

你的输出将如下所示:
libapache2-mod-php5     5.3.2-1ubuntu4.29
php5-cli        5.3.2-1ubuntu4.29
php5-common     5.3.2-1ubuntu4.29
php5-gd 5.3.2-1ubuntu4.29
php5-mcrypt     5.3.2-0ubuntu1
php5-mysql      5.3.2-1ubuntu4.29
php5-xsl        5.3.2-1ubuntu4.29
phpmyadmin      4:3.3.2-1ubuntu1

尝试这个,可能有效,对我来说有效。
dpkg -l