Iva*_*van 2323 package-management apt
我想将所有已安装软件包的列表输出到一个文本文件中,以便我可以查看它并在另一个系统上批量安装。我该怎么做?
Sab*_*con 2656
apt
Ubuntu 14.04 及更高版本上的工具使这变得非常容易。
apt list --installed
Run Code Online (Sandbox Code Playgroud)
要获取本地安装的软件包列表,请在终端中执行以下操作:
apt list --installed
Run Code Online (Sandbox Code Playgroud)
(-v
标签“反转”grep 以返回不匹配的行)
要获取已安装的特定软件包的列表:
dpkg --get-selections | grep -v deinstall
Run Code Online (Sandbox Code Playgroud)
要将该列表保存到packages
桌面上调用的文本文件,请在终端中执行以下操作:
dpkg --get-selections | grep postgres
Run Code Online (Sandbox Code Playgroud)
或者,只需使用
dpkg --get-selections | grep -v deinstall > ~/Desktop/packages
Run Code Online (Sandbox Code Playgroud)
(您不需要以超级用户身份运行这些命令中的任何一个,因此sudo
这里不需要或任何其他变体)
int*_*ted 472
要仅获取明确安装的软件包(不仅仅是作为依赖项安装),您可以运行
aptitude search '~i!~M'
Run Code Online (Sandbox Code Playgroud)
这还将包括您可能需要的简要说明。如果没有,也添加选项-F '%p'
,如 karthick87 所述。
另一种选择似乎是复制 file /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
Run Code Online (Sandbox Code Playgroud)
Auto-Installed: 0
表示该软件包是明确安装的,而不仅仅是依赖项。
小智 238
要列出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:'
Run Code Online (Sandbox Code Playgroud)
这提供了基于反向时间的视图,首先列出较旧的命令:
Commandline: apt-get install k3b
Commandline: apt-get install jhead
...
Run Code Online (Sandbox Code Playgroud)
安装数据也显示突触使用情况,但没有详细信息(与安装日期相同):
(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:'
Run Code Online (Sandbox Code Playgroud)
提供以下内容:
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
...
Run Code Online (Sandbox Code Playgroud)
小智 205
创建当前安装的软件包的备份:
dpkg --get-selections > list.txt
Run Code Online (Sandbox Code Playgroud)
然后(在另一个系统上)从该列表中恢复安装:
dpkg --clear-selections
sudo dpkg --set-selections < list.txt
Run Code Online (Sandbox Code Playgroud)
要摆脱陈旧的包:
sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)
要像在备份时一样安装(即安装由 设置的软件包dpkg --set-selections
):
sudo apt-get dselect-upgrade
Run Code Online (Sandbox Code Playgroud)
Tim*_*all 91
apt-mark showmanual
Run Code Online (Sandbox Code Playgroud)
手册页状态:
将打印手动安装的软件包列表
因此,它应该只给出一个明确安装的软件包列表(尽管这包括默认初始安装的一部分),而不包括由于安装了这些软件包而包含的所有依赖项。
要将结果输出到文本文件中:
apt-mark showmanual > list-manually-installed.txt
Run Code Online (Sandbox Code Playgroud)
kyl*_*leN 43
dpkg-query
(而不是dpkg --get-selections
,它列出了一些未安装的软件包)如下:
dpkg-query -W -f='${PackageSpec} ${Status}\n' | grep installed | sort -u | cut -f1 -d \ > installed-pkgs
Run Code Online (Sandbox Code Playgroud)
或者:
dpkg -l | grep ^ii | sed 's_ _\t_g' | cut -f 2 > installed-pkgs
Run Code Online (Sandbox Code Playgroud)
kar*_*k87 41
要列出所有已安装的软件包,
dpkg -l |awk '/^[hi]i/{print $2}' > 1.txt
Run Code Online (Sandbox Code Playgroud)
或者
aptitude search -F '%p' '~i' > 1.txt
Run Code Online (Sandbox Code Playgroud)
或者
dpkg --get-selections > 1.txt
Run Code Online (Sandbox Code Playgroud)
注意:
您将在您的主文件夹中获得结果 1.txt 文件,或者您可以指定自己的路径。
Ner*_*est 37
您可以使用 Synaptic 来保存已安装的打包文件的当前状态。在 Synaptic 中,选择“文件/保存标记”,输入要将状态保存到的文件名,并确保选中“保存完整状态,不仅更改”框。
可以使用 Synaptic 中的“文件/读取标记”将由此保存的文件加载到新机器中。
Nir*_*mik 34
您想在 12.04 上重新安装软件包,对吗?
如果是这样,那非常容易。您需要一个“Ubuntu 单点登录帐户”。(在重新安装之前创建它,以便您的系统同步。)
转到软件中心并在文件菜单下查找“计算机之间同步...”选项。
当您单击它时,您将看到您的计算机已注册以及计算机上所有应用程序的列表。
当您全新安装时,该计算机将被视为新计算机。
您只需要登录您的 Ubuntu 帐户,就会显示您之前使用的计算机。
点击它; 您将获得所有应用程序的列表。在要安装的应用程序上选择“安装”。
Sad*_*adi 34
还有一个名为Aptik的工具(目前是专有的,包括命令行和 GUI),它可以帮助您查看所有已安装软件包的列表,并提供选择/取消选择其中一些软件包的选项,制作备份列表,然后恢复相同的集合另一个系统中的软件包。
安装:
sudo add-apt-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install aptik
Run Code Online (Sandbox Code Playgroud)
更多信息:https : //teejeetech.in/aptik/
从截图中可以看出,Aptik还允许您备份和恢复 PPA,这对于安装一些已安装的软件包来说肯定是必要的。
use*_*.dz 34
这个包可用于在基于 apt 的系统上克隆/恢复包。
- 它将保存/恢复包、sources.list、密钥环和自动安装状态。
- 它还可以使用 dpkg-repack 保存/恢复不再可下载的包。
来源:
man apt-clone
APT-Clone 由ubiquity
(Ubuntu 安装程序)用于升级过程。它比dpkg --get-selections
解决方案好得多,因为:
安装
sudo apt-get install apt-clone
Run Code Online (Sandbox Code Playgroud)
进行备份
sudo apt-clone clone path-to/apt-clone-state-ubuntu-$(lsb_release -sr)-$(date +%F).tar.gz
Run Code Online (Sandbox Code Playgroud)
恢复备份
sudo apt-clone restore path-to/apt-clone-state-ubuntu.tar.gz
Run Code Online (Sandbox Code Playgroud)
恢复到较新的版本:
sudo apt-clone restore-new-distro path-to/apt-clone-state-ubuntu.tar.gz $(lsb_release -sc)
Run Code Online (Sandbox Code Playgroud)
它制作了一个简单的 gzipped tar 文件,可以在其他机器上恢复之前轻松编辑和查看。这是它的结构示例:
/
??? etc
? ??? apt
? ??? preferences.d
? ??? sources.list
? ??? sources.list.d
? ? ??? anton_-ubuntu-dnscrypt-vivid.list
? ? ??? maarten-baert-ubuntu-simplescreenrecorder-vivid.list
? ? ??? megasync.list
? ??? trusted.gpg
? ??? trusted.gpg.d
? ??? anton__ubuntu_dnscrypt.gpg
? ??? anton__ubuntu_dnscrypt.gpg~
? ??? maarten-baert_ubuntu_simplescreenrecorder.gpg
? ??? maarten-baert_ubuntu_simplescreenrecorder.gpg~
??? var
??? lib
??? apt-clone
??? extended_states
??? installed.pkgs
??? uname
Run Code Online (Sandbox Code Playgroud)
May*_*hux 29
你可以看看下面的apt
日志/var/log/apt/
和下面的dpkg
日志/var/log/
只需一个命令,您就可以获取已安装软件包的列表:
dpkg -l | grep '^ii '
Run Code Online (Sandbox Code Playgroud)
thi*_*ive 28
Unix StackExchange 上有一个很好的解释,它描述了如何使用 aptitude 列出未作为依赖项安装的软件包,以及如何将该列表与 Ubuntu 版本的默认软件包列表进行比较。
要获取 12.04 及更高版本桌面版本的清单文件,请访问此站点,选择您的版本,然后向下滚动 CD 图像下方的文件部分。您会找到与您的架构相匹配的类似“ubuntu-12.04.4-desktop-amd64+mac.manifest”的内容。
对于服务器版本,您需要从用于安装原始系统的 ISO 中获取清单文件。对于 VPS 或云服务器,您的提供商可能会提供图像,或者您可能需要联系他们。
这是使用引用帖子中的代码的示例,以及在新服务器上安装的修改。
旧服务器(来自其他帖子的代码,输出保存到文件):
aptitude search '~i !~M' -F '%p' --disable-columns | sort -u > currently-installed.list
wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest \
| cut -f1 | sort -u > default-installed.list
comm -23 currently-installed.list default-installed.list > user-installed.list
Run Code Online (Sandbox Code Playgroud)
在新服务器上,使用 scp 复制文件,然后使用 sed 将“安装”附加到每一行(-i 执行内联替换)。然后您可以使用该列表作为 'dpkg --set-selections' 的输入并使用 apt-get 安装软件包:
scp user@oldserver:user-installed.list .
sed -i 's/$/\tinstall/' user-installed.list
sudo dpkg --set-selections < user-installed.list
sudo apt-get dselect-upgrade
Run Code Online (Sandbox Code Playgroud)
在开始此任务之前,我建议阅读并理解开头提到的帖子的所有部分,然后查阅aptitude 参考指南以获取有关搜索模式和自定义包的显示方式的详细信息,以根据需要使用该-F
选项。
ost*_*ach 27
我很惊讶上面没有提到apt-cache
专门为此目的设计的命令......
apt-cache pkgnames
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请运行apt-cache --help
:
**apt-cache 是一个用于查询信息的底层工具 来自 APT 的二进制缓存文件 命令: gencaches - 构建包和源缓存 showpkg - 显示单个包的一些一般信息 showsrc - 显示源记录 stats - 显示一些基本统计数据 dump - 以简洁的形式显示整个文件 dumpavail - 将可用文件打印到标准输出 unmet - 显示未满足的依赖项 search - 在包列表中搜索正则表达式模式 show - 显示包的可读记录 依赖 - 显示包的原始依赖信息 rdepends - 显示包的反向依赖信息 pkgnames - 列出系统中所有包的名称 dotty - 为 GraphViz 生成包图 xvcg - 为 xvcg 生成包图 policy - 显示策略设置 选项: -h 此帮助文本。 -p=? 包缓存。 -s=? 源缓存。 -q 禁用进度指示器。 -i 仅显示 unmet 命令的重要 deps。 -c=? 读取这个配置文件 -o=? 设置任意配置选项,例如 -o dir::cache=/tmp 有关更多信息,请参阅 apt-cache(8) 和 apt.conf(5) 手册页。 **
Dav*_*end 20
帮助这个社区维基 - 添加最新的解决方案。
此命令应完成创建包含已安装软件包的文本文件:
dpkg -l | awk '{print $2}' > package_list.txt
Run Code Online (Sandbox Code Playgroud)
要完成所列软件包的批量安装,您需要编辑“package_list.txt”。使用文本编辑器删除文件顶部的奇怪行。然后,您可以使用此命令从创建的文件中安装软件包:
xargs < package_list.txt apt-get install -y
Run Code Online (Sandbox Code Playgroud)
仅当您希望使用列表(包括自动安装等)安装所有当前软件包时才使用此方法。
将“apt-cache pkgnames”的响应输出到我们将简单命名为“package_list.txt”的文件中。您可以通过以下方式完成此操作:
apt-cache pkgnames > package_list.txt
Run Code Online (Sandbox Code Playgroud)
然后当你想从“package_list.txt”安装包时,你可以使用这个命令:
xargs < package_list.txt apt-get install -y
Run Code Online (Sandbox Code Playgroud)
我们可以使用该命令apt-mark showmanual
给出手动或最初随 Ubuntu 安装的软件包列表。我们想把它输出到一个我们称之为“package-list.txt”的文件中。使用此命令来完成:
apt-mark showmanual > package-list.txt
Run Code Online (Sandbox Code Playgroud)
我们用来从文件“package_list.txt”安装包的命令如下。
xargs < package_list.txt apt-get install -y
Run Code Online (Sandbox Code Playgroud)
用于在升级/重新安装基于 Ubuntu 的发行版后简化重新安装软件包的实用程序。
[启动板 | Aptik ]
有关 Aptik 的信息,请尝试访问其官方页面,并单击此处或查看本节末尾的屏幕截图。
安装 Aptik很简单。按着这些次序:
添加PPA:
sudo add-apt-repository -y ppa:teejee2008/ppa
使用以下命令更新apt。
sudo apt-get update
使用以下命令安装Aptik:
sudo apt-get install aptik
Avi*_*Raj 18
下面的命令还将列出所有已安装的软件包,
grep ' installed ' /var/log/dpkg.log /var/log/dpkg.log.1 | awk '{print $5}' | sort -u
Run Code Online (Sandbox Code Playgroud)
wb9*_*688 16
要将已安装的软件包列表保存到名为 的文件中installed_packages.txt
,只需运行:
dpkg-query --list >> installed_packages.txt
Run Code Online (Sandbox Code Playgroud)
https://www.rosehosting.com/blog/list-all-installed-packages-with-apt-on-ubuntu/:
1.列出Ubuntu上已安装的软件包
要列出计算机上已安装的软件包,可以使用以下命令:
Run Code Online (Sandbox Code Playgroud)sudo apt list --installed
该命令的输出将与以下输出非常相似,具体取决于当前安装的软件包:
Run Code Online (Sandbox Code Playgroud)Listing... acl/xenial,now 2.2.52-3 amd64 [installed] adduser/xenial,xenial,now 3.113+nmu3ubuntu4 all [installed] apache2/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] apache2-bin/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed,automatic] apache2-data/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed,automatic] apache2-doc/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed] apache2-utils/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] apparmor/xenial-updates,now 2.10.95-0ubuntu2.5 amd64 [installed,automatic] apt/xenial-updates,now 1.2.19 amd64 [installed] apt-utils/xenial-updates,now 1.2.19 amd64 [installed] ...
2.使用LESS程序
要轻松读取整个输出,您可以使用该
less
程序。Run Code Online (Sandbox Code Playgroud)sudo apt list --installed | less
3.使用GREP命令
您可以使用该程序通过输出查找特定的包
grep
。Run Code Online (Sandbox Code Playgroud)sudo apt list --installed | grep -i apache
4.列出所有包含Apache的包
上述命令的输出将列出
apache
其名称中包含的所有包。Run Code Online (Sandbox Code Playgroud)apache2/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] apache2-bin/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed,automatic] apache2-data/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed,automatic] apache2-doc/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed] apache2-utils/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] libapache2-mod-php/xenial,xenial,now 1:7.0+35ubuntu6 all [installed,automatic] libapache2-mod-php7.0/xenial-updates,now 7.0.13-0ubuntu0.16.04.1 amd64 [installed,automatic] libapache2-mod-security2/xenial,now 2.9.0-1 amd64 [installed] libapache2-modsecurity/xenial,xenial,now 2.9.0-1 all [installed]
Apt 支持匹配包名称的模式和列出已安装
(--installed)
包、可升级(--upgradeable)
包或所有可用(--all-versions)
包版本的选项。5.使用DPKG程序
另一种可用于列出Ubuntu VPS上已安装软件包的替代方法是
dpkg
命令。Run Code Online (Sandbox Code Playgroud)sudo dpkg -l
该命令的输出将为您提供包名称、版本、体系结构和有关包的简短描述等信息。当然,您可以
grep
再次使用该程序来搜索特定的包。Run Code Online (Sandbox Code Playgroud)sudo dpkg -l | grep -i apache
输出应如下所示:
Run Code Online (Sandbox Code Playgroud)ii apache2 2.4.18-2ubuntu3.1 amd64 Apache HTTP Server ii apache2-bin 2.4.18-2ubuntu3.1 amd64 Apache HTTP Server (modules and other binary files) ii apache2-data 2.4.18-2ubuntu3.1 all Apache HTTP Server (common files) ii apache2-doc 2.4.18-2ubuntu3.1 all Apache HTTP Server (on-site documentation) ii apache2-utils 2.4.18-2ubuntu3.1 amd64 Apache HTTP Server (utility programs for web servers) rc apache2.2-common 2.2.22-6ubuntu5.1 amd64 Apache HTTP Server common files ii libapache2-mod-php 1:7.0+35ubuntu6 all server-side, HTML-embedded scripting language (Apache 2 module) (default) rc libapache2-mod-php5 5.5.9+dfsg-1ubuntu4.16 amd64 server-side, HTML-embedded scripting language (Apache 2 module) ii libapache2-mod-php7.0 7.0.13-0ubuntu0.16.04.1 amd64 server-side, HTML-embedded scripting language (Apache 2 module) ii libapache2-mod-security2 2.9.0-1 amd64 Tighten web applications security for Apache ii libapache2-modsecurity 2.9.0-1 all Dummy transitional package ii libapr1:amd64 1.5.2-3 amd64 Apache Portable Runtime Library ii libaprutil1:amd64 1.5.4-1build1 amd64 Apache Portable Runtime Utility Library ii libaprutil1-dbd-sqlite3:amd64 1.5.4-1build1 amd64 Apache Portable Runtime Utility Library - SQLite3 Driver ii libaprutil1-ldap:amd64 1.5.4-1build1 amd64 Apache Portable Runtime Utility Library - LDAP Driver .
通过本教程的竞赛,您已经成功学会了如何在 Ubuntu 中列出已安装的软件包。
除了APT软件包之外,现在许多 GUI 软件包都以snap 的形式分发。
\n\n如果在 中找不到您的包apt list --installed
,请尝试snap list
:
$ snap list\n\nName Version Rev Tracking Publisher Notes\ngimp 2.10.10 165 stable snapcrafters -\ngnome-calculator 3.32.1 406 stable/\xe2\x80\xa6 canonical\xe2\x9c\x93 -\nkeepassxc 2.4.1 267 stable keepassxreboot -\n...\n
Run Code Online (Sandbox Code Playgroud)\n\n添加也是一个好主意/snap/bin
,这样您就可以从终端启动它们(对于非 root 用户自动完成)。
归档时间: |
|
查看次数: |
4307704 次 |
最近记录: |