我想将所有已安装软件包的列表输出到文本文件中,以便我可以查看它并在另一个系统上批量安装。 我该怎么做?
Ubuntu14.04及以上
该 apt
Ubuntu14.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
或这里所需的任何其他变体)
要获取明确安装的软件包(而不仅仅是作为依赖项安装),您可以运行
aptitude search '~i!~M'
这也将包括一个简短的描述,你可能想要。 如果没有,还要添加选项 -F '%p'
,如karthick87所述。
另一种选择似乎是复制文件 /var/lib/apt/extended_states
,这是这种格式的文本文件数据库:
Package: grub-commonArchitecture: amd64Auto-Installed: 0Package: linux-headers-2.6.35-22-genericArchitecture: amd64Auto-Installed: 1
Auto-Installed: 0
表示该包已明确安装,而不仅仅是依赖项。
列出所有软件包 有意安装 (不是依赖项)通过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 k3bCommandline: 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:14Commandline: apt-get install gpartedStart-Date: 2012-09-23 15:02:51Commandline: apt-get install sysstat...
创建当前安装的软件包的备份:
dpkg --get-selections > list.txt
然后(在另一个系统上)从该列表恢复安装:
dpkg --clear-selectionssudo dpkg --set-selections < list.txt
摆脱陈旧的包装:
sudo apt-get autoremove
像在备份时一样安装(即安装由 dpkg --set-selections
):
sudo apt-get dselect-upgrade
apt-mark showmanual
曼页状态:
将打印手动安装的软件包列表
因此,它应该只给出一个明确安装的软件包列表(尽管这包括默认初始安装的软件包),而不包括由于这些软件包被安装而包含的所有依赖项。
将结果输出到文本文件中:
apt-mark showmanual > list-manually-installed.txt
dpkg-query
(而不是 dpkg --get-selections
,其中列出了一些未安装的软件包)如下:
dpkg-query -W -f='${PackageSpec} ${Status}\n' | grep installed | sort -u | cut -f1 -d \ > installed-pkgs
或:
dpkg -l | grep ^ii | sed 's_ _\t_g' | cut -f 2 > installed-pkgs
列出所有已安装的软件包,
dpkg -l |awk '/^[hi]i/{print $2}' > 1.txt
或
aptitude search -F '%p' '~i' > 1.txt
或
dpkg --get-selections > 1.txt
注意事项:
你会得到结果1。您的主文件夹中的txt文件,或者您可以指定自己的路径。
您可以使用Synaptic保存已安装软件包的当前状态。 在Synaptic中,选择"文件/保存状态",输入要将状态保存到的文件的名称,并确保选中"保存完整状态,而不仅仅是更改"框。
从中保存的文件可以使用Synaptic中的"文件/读取标记"加载到新机器中。
你想在12.04上重新安装软件包,对吧?
如果是这样,这很容易。 你需要一个"Ubuntu单点登录帐户。"(在重新安装之前创建它,以便您的系统同步。)
转到软件中心并查找"计算机之间的同步"。.."文件菜单下的选项。
当你点击它,你会看到你的电脑注册和您的计算机上的所有应用程序的列表。
当您将安装fresh时,该计算机将被视为新计算机。
你只需要登录到你的Ubuntu帐户,你以前的电脑就会显示出来。
点击它;你会得到所有应用程序的列表。 在要安装的应用程序上选择"安装"。