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

评论

这已经在这里回答了。

如何通过这样的文本文件在新系统上进行批量安装?

unix.stackexchange.com上的类似问题“按安装日期列出软件包”

#1 楼

Ubuntu 14.04及更高版本
Ubuntu 14.04及更高版本上的apt工具使此操作非常容易。
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或任何其他变体)

评论


然后,在安装到新计算机时,执行cat〜/ Desktop / packages> sudo dpkg --set-selections && sudo apt-get dselect升级源

–koanhead
2010-12-17 5:51



自2006年以来,dpkg的语法可能已略有更改,因为该命令对我@@ ananhead无效。 sudo dpkg --set-selections <〜/ Desktop / packages && sudo apt-get -u dselect-upgrade可以解决问题。

–詹姆斯
2011-2-17在20:44

请注意,这不会跟踪用户明确安装了哪些软件包以及哪些软件包作为依赖项安装。这意味着,如果使用此方法在另一台计算机上重新创建安装程序,则在删除给定程序包时,apt将无法删除不需要的依赖项。

–直觉
2012年8月28日在21:03

社区无法更好地理解@intuited的评论,这是令人遗憾和惊奇的。在给出建议仅在新的ubuntu版本上重新加载旧软件包不是一个好主意之前,更具“高评价”的贡献者会停下来思考更多吗?使用所有的dpkg选项,我仍然看不到一个能拉出用户“明示”安装的软件包以便可以重新加载THAT列表并允许安装其依赖项的软件包。我很想知道-请分享该信息。同时,列出您真正需要重新安装的软件包并运行

– Ricalsin
13年7月17日在17:42

我们都知道linux可以区分没有照片内存的人,但是说真的,安装apt list会出什么问题。有一天,我们应该停止系统地失败“保持简单易行”的原则。

–user77164
13年11月19日在20:31



#2 楼

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

aptitude search '~i!~M'


,这还将包括您可能需要的简短描述。如果不是,还添加karthick87提到的选项-F '%p'


但是,另一个选择似乎是复制文件/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表示该软件包已明确安装,而不仅仅是依赖关系。

评论


这应该是正确的答案。为什么列出依赖项?

– Stavros Korokithakis
2012年12月8日在1:44

这应该是答案,但是不幸的是,由于当前使用Multiarch(正在修复),使用aptitude有点不可靠。仍然为+1指出仅列出显式安装的软件包以及执行此操作的方法(尽管目前在11.10+上不起作用)。

– Gertvdijk
2013年1月11日15:31

@精确的“修复已发布”(前一段时间)。 :)

– Gertvdijk
13年6月20日在20:10

这列出了所有软件包,而不仅仅是在Ubuntu 13.10上手动安装的软件包。

–Eamon Nerbonne
13年10月31日14:33

有没有办法用apt-get达到相同的结果?

–哈维尔·阿里亚斯(Javier Arias)
17年7月10日在13:27

#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
...


评论


或(使用zgrep并删除更新消息):zgrep -hE'^(开始日期:|命令行:)'$(ls -tr /var/log/apt/history.log*.gz)| egrep -v'aptdaemon |升级'| egrep -B1'^命令行:'

– Belacqua
13年5月17日在16:16



这种方法会丢失与dpkg一起安装的软件包吗?

– drevicko
13年6月13日在23:27

上面的简单答案对一般用户来说是好的。到目前为止,此方法最适合回溯到计算机的所有自定义设置,因为它还显示了从基本映像中删除或添加的内容,并按执行顺序列出了它们,并帮助您记住哪个是正确的顺序将它们添加回另一个系统。

– AllGamer
2014年7月24日在16:27



@drevicko您是正确的,它没有列出与dpkg一起安装的软件包

–史蒂夫·布佐纳斯(Steve Buzonas)
15年4月14日在10:39

这对于保持井井有条非常方便-无论出于何种原因,我的大脑都喜欢这种方式。

– JeremyFelix
16年4月8日在15:36

#4 楼

创建当前安装的软件包的备份:

dpkg --get-selections > list.txt


,然后(在另一个系统上)从该列表还原安装:

dpkg --clear-selections
sudo dpkg --set-selections < list.txt


摆脱陈旧的软件包:

sudo apt-get autoremove


要像在备份时一样进行安装(即安装dpkg --set-selections设置的软件包):

sudo apt-get dselect-upgrade


评论


有关在另一台计算机上还原的重要提示。 +1。

–德鲁·诺克斯(Drew Noakes)
13年1月17日,0:28

在2台不同的ubuntu 12.04机器之间迁移时,这种方法破坏了我的系统。过了一段时间,直到我意识到以某种方式卸载了ubuntu-desktop-可能是由于dpkg命令之一。小心,花了我几个小时才能修复损坏!

–卡尔·弗里斯克(Karl Frisk)
13年8月19日在16:02

有时系统会更新您特别希望系统永远不要触摸的应用程序,请在命令末尾执行sudo apt-mark hold name-your-package。这将防止apt-get升级到当前版本,这是更新过程的默认版本。

–法伦
16 Mar 1 '16 at 0:29



#5 楼

apt-mark showmanual


手册页状态:


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


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

将结果输出到文本文件中:

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


评论


在Debian上,“ apt-mark showmanual”不适用于“ squeeze”,但适用于“ wheezy”

– Wadih M.
2015年10月5日,0:07

与大多数其他答案一样,apt-mark showmanual并非如此。它还列出了大量自动安装的软件包,可能是基本安装的一部分。

– mivk
15年11月29日在22:05

很好的问题是已安装的软件包,这使所有已安装的软件包减去自动安装的依赖项。它确实包括初始软件包作为初始安装的一部分。我想您可以在全新安装上运行此命令以获得默认安装的列表,然后从中减去该值以查看差异。

– Tim Tisdall
15年11月29日在23:54

没有人提到这种列出手动安装软件包的方法:apt list --manual-installed。

–巴勃罗·比安奇(Pablo Bianchi)
19年1月18日在1:59



#6 楼

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


评论


在`cat installed-pkgs`中为pkg输入#;做apt-get install -y $ pkg;在第二个系统中完成,我这样做是为了安装软件包。

–user9869932
2015年3月11日19:46



@julianromera:apt-get install -y $(
–贾马达格尼
2015年11月10日在8:29

@julianromera ...更正我,如果我记错了,但是在安装之前构建具有依赖项的应用程序通常是sudo apt-get build-dep name-package; sudo apt-get install name-package; ?

–法伦
16 Mar 1 '16 at 0:39

#7 楼

要列出所有已安装的软件包,请

dpkg -l |awk '/^[hi]i/{print }' > 1.txt




aptitude search -F '%p' '~i' > 1.txt




dpkg --get-selections > 1.txt


注意:
您将在主文件夹中得到结果1.txt文件,或者您可以指定自己的路径。

#8 楼

您可以使用Synaptic来保存已安装软件包的当前状态。在Synaptic中,选择“文件/保存标记”,输入要将状态保存到的文件名,并确保选中“保存完整状态,不仅更改”框。

使用Synaptic中的“文件/读取标记”,可以将由此保存的文件加载到新计算机中。

#9 楼

我建议使用蓝图。即使它是为服务器设计的,也可以在台式机上使用。它将创建一个shell脚本/ chef / puppet,您可以使用该脚本来重新安装所有软件包。

评论


我没有尝试使用完整的镜像,但是只有考虑配置文件的事实真棒。我一直在寻找这样的工具已有一段时间了,非常感谢!

– tbolender
2014年9月5日在9:58

#10 楼

您想立即在12.04上重新安装软件包吗?

如果这样,这很容易。您需要一个“ Ubuntu单点登录帐户”。 (在重新安装之前创建它,以使系统同步。)


转到软件中心,然后在“文件”菜单下查找“在计算机之间同步...”选项。
单击它会看到您的计算机已注册,并列出了计算机中所有应用程序的列表。
重新安装时,该计算机将被视为新计算机。
您只需登录到您的Ubuntu帐户,将显示您以前的计算机。
单击它;您将获得所有应用程序的列表。在要安装的应用上选择“安装”。


评论


我在全新安装中为计算机设置了相同的名称,以防止每次都从Ubuntu One服务器大量下载。您认为这对我有用吗?

– AliN
13年8月17日在20:29

#11 楼

还有一个名为Aptik的工具(当前是专有的,命令行和GUI),可以帮助您查看所有已安装软件包的列表,并可以选择/取消选择其中一些软件包,创建备份列表,然后还原相同的软件包。安装在另一个系统中的软件包。
要安装:
sudo add-apt-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install aptik

其他信息:https://teejeetech.in/aptik/

屏幕快照中,Aptik还允许您备份和还原PPA,这对于安装某些已安装的软件包当然是必需的。

评论


如果需要GUI,则还必须安装apt-get install aptik-gtk

– Maduka Jayalath
18年5月24日在6:14

#12 楼

APT-Clone

此软件包可用于在基于apt的系统上克隆/恢复该软件包。

它将保存/恢复该软件包,sources.list,keyring和
自动安装的状态。
它还可以使用dpkg-repack保存/恢复不再下载的软件包。

来源:man apt-clone

APT克隆由ubiquity(Ubuntu安装程序)用于升级过程。它比dpkg --get-selections解决方案好得多,因为:

它保留所有存储库信息。
它跟踪自动安装了哪些软件包。
它可以重新打包本地安装的DEB文件。 。

如何使用


安装
 sudo apt-get install apt-clone



进行备份
 sudo apt-clone clone path-to/apt-clone-state-ubuntu-$(lsb_release -sr)-$(date +%F).tar.gz



还原备份
 sudo apt-clone restore path-to/apt-clone-state-ubuntu.tar.gz

还原到较新版本:
 sudo apt-clone restore-new-distro path-to/apt-clone-state-ubuntu.tar.gz $(lsb_release -sc)



结果结构
它制作了一个简单的gzip压缩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


#13 楼

您可以查看apt下的/var/log/apt/日志和dpkg下的/var/log/日志

,只需一个命令即可获得已安装软件包的列表:

dpkg -l | grep '^ii '


#14 楼

令我惊讶的是上面没有提到专门为此目的设计的apt-cache命令...

apt-cache pkgnames


有关更多信息,请运行apt-cache --help

**apt-cache is a low-level tool used to query information
from APT's binary cache files

Commands:
   gencaches - Build both the package and source cache
   showpkg - Show some general information for a single package
   showsrc - Show source records
   stats - Show some basic statistics
   dump - Show the entire file in a terse form
   dumpavail - Print an available file to stdout
   unmet - Show unmet dependencies
   search - Search the package list for a regex pattern
   show - Show a readable record for the package
   depends - Show raw dependency information for a package
   rdepends - Show reverse dependency information for a package
   pkgnames - List the names of all packages in the system
   dotty - Generate package graphs for GraphViz
   xvcg - Generate package graphs for xvcg
   policy - Show policy settings

Options:
  -h   This help text.
  -p=? The package cache.
  -s=? The source cache.
  -q   Disable progress indicator.
  -i   Show only important deps for the unmet command.
  -c=? Read this configuration file
  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp
See the apt-cache(8) and apt.conf(5) manual pages for more information.
**


评论


TLDR;最终,我发现apt --installed列表可以达到最佳效果(如上面的最佳答案所示。尽管乍看之下apt-cache pkgnames似乎可以解决问题,但它列出了“系统中的所有软件包”(根据上面的帮助文本),其中也包含一些易于了解但实际上并未安装的软件包,其中有一个--installed选项,但似乎不适用于pkgnames。

–sxc731
16年1月1日在16:05



apt-cache pkgnames | wc -l提供了55909个软件包(系统知道),而aptitude搜索'〜i!〜M'| wc -l给出2160(显式安装的软件包,没有依赖项)。

–knb
17年4月11日在8:42

#15 楼

在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

在新服务器上,使用scp复制文件,然后使用sed将'install'附加到每一行(-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

开始此任务之前,建议您阅读并理解本文的所有部分请先参考aptitude参考指南,以获取有关搜索模式和“自定义如何显示软件包以根据需要使用-F”选项的详细信息。

#16 楼

有关完整的摘要,请参见:

https://help.ubuntu.com/community/SwitchingToUbuntu/FromLinux/RedHatEnterpriseLinuxAndFedora#Command_Line_Tools

整个页面的一半:


dpkg --list


#17 楼

帮助此社区Wiki-添加最新解决方案。


dpkg,xargs和apt-get

此命令应完成包含已安装软件包的文本文件的创建:

dpkg -l | awk  '{print }' > package_list.txt


要完成列出软件包的批量安装,您需要编辑'package_list.txt'。使用文本编辑器删除文件顶部的怪异行。然后,您可以使用以下命令从创建的文件中安装软件包:

xargs < package_list.txt apt-get install -y



apt-cache,xargs和apt-get

仅当要使用列表安装所有当前软件包(包括自动安装的软件包等)时,才使用此方法。

将“ apt-cache pkgnames”的响应输出到文件中我们将简单地命名为“ package_list.txt”。您可以使用以下命令完成此操作:

apt-cache pkgnames > package_list.txt


然后,如果要从“ package_list.txt”安装软件包,则可以使用以下命令:

xargs < package_list.txt apt-get install -y



apt-mark,xargs和apt-get

我们可以使用命令apt-mark showmanual给出手动或初始安装的软件包列表。 Ubuntu的。我们希望将其输出到一个文件,我们将其称为“ package-list.txt”。使用此命令可完成以下操作:

apt-mark showmanual > package-list.txt


下面是用于从文件“ package_list.txt”安装软件包的命令。

xargs < package_list.txt apt-get install -y



Aptik迁移实用程序


该实用程序可简化升级/重新安装基于Ubuntu的发行版后的软件包重新安装。 br /> [Launchpad | Aptik]


有关Aptik的信息,请尝试访问其官方页面,有关屏幕截图的信息,请单击此处或查看本节的结尾。

安装Aptik很简单。请执行以下步骤:


使用以下命令添加PPA:sudo add-apt-repository -y ppa:teejee2008/ppa
使用以下命令更新apt。 sudo apt-get update
使用以下命令安装Aptik:sudo apt-get install aptik





评论


apt-mark showmanual的输出包括Bash,Unity和Xorg等。他们应该在那里吗?

– wjandrea
16年8月16日在22:55

@wjandrea'apt-mark showmanual'的输出也在我生成的列表中包括了Bash&Unity。这应该是正常的,因为该命令列出了手动安装和最初使用Ubuntu安装的安装程序。

–大卫你的朋友
16年8月16日在22:59



第一个解决方案是最好的。其他所有带有dpkg和selections的选项在新的Ubuntu上不起作用,因为版本很少。

– QkiZ
19年11月22日在1:03

#18 楼

以下命令还将列出所有已安装的软件包,

grep ' installed ' /var/log/dpkg.log /var/log/dpkg.log.1 | awk '{print }' | sort -u


评论


那里的.1表示日志已轮换,如果是这种情况,那么最好grep /var/log/dpkg.log*获取所有轮换的日志。

–史蒂夫·布佐纳斯(Steve Buzonas)
15年4月14日在11:55

#19 楼

要将已安装软件包的列表保存到名为installed_packages.txt的文件中,只需运行:

dpkg-query --list >> installed_packages.txt


#20 楼

除了APT软件包以外,现在还分发许多GUI软件包作为快照。

如果在apt list --installed中找不到您的软件包,请尝试snap list

$ snap list

Name                  Version                     Rev   Tracking  Publisher       Notes
gimp                  2.10.10                     165   stable    snapcrafters    -
gnome-calculator      3.32.1                      406   stable/…  canonical✓      -
keepassxc             2.4.1                       267   stable    keepassxreboot  -
...


/snap/bin添加到PATH也是一个好主意,这样您就可以从终端启动它们(非root用户自动完成)。

#21 楼

我认为有趣的是注意到apt list --installeddpkg-query --list实际上在后面使用了名为/var/lib/dpkg/status的文件,其中有关程序包的所有信息都是胡须。

因此,如果您想处理程序包的超扩展列表,只是cat /var/lib/dpkg/status

注意:请勿更改/var/lib/dpkg/status文件。

#22 楼

https://www.rosehosting.com/blog/list-all-installed-packages-with-apt-on-ubuntu/:


1.列出Ubuntu上已安装的软件包

要列出计算机上已安装的软件包,可以使用以下命令:

sudo apt list --installed


命令的输出将与以下内容非常相似,
,具体取决于当前安装的软件包:

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程序。

sudo apt list --installed | less


3.使用GREP命令

您可以查找使用
grep程序通过输出输出特定的软件包。

sudo apt list --installed | grep -i apache


4.列出所有包含Apache的软件包

输出以上命令中的列表将列出名称中包含
apache的所有软件包。

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支持pa匹配软件包名称和选项的方法
列出已安装的(--installed)软件包,可升级的(--upgradeable)(--all-versions)软件包版本。

5.使用DPKG程序

可以用来列出Ubuntu VPS上已安装的软件的另一种替代方法是dpkg命令。

sudo dpkg -l


命令的输出将为您提供信息,例如
软件包的名称,版本,体系结构和有关软件包的简短描述
。当然,您可以再次使用grep程序
搜索特定的软件包。

sudo dpkg -l | grep -i apache


输出结果应类似于以下内容:

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中已安装的软件包。


#23 楼

软件包dctrl-tools提供了grep-status工具来获取标记为已安装在系统上的软件包的列表:
sudo apt install dctrl-tools

用法:
grep-status -FStatus -sPackage -n   "install ok installed"

请参阅:man dctrl-tools