如何列出Ubuntu,Debian或Linux Mint存储库中的所有软件包 [APT]

本文介绍了如何列出Ubuntu,Linux Mint或Debian存储库(已安装和可安装)中的所有可用软件包,包括官方存储库或第三方资源(如PPA)。
这是从存储库列出软件包的两种方法。使用GUI或命令行。
来自同一系列:

  • 如何防止软件包在Ubuntu,Debian或Linux Mint上更新 [APT]
  • 如何在Debian,Ubuntu或Linux Mint中从命令行搜索可用软件包 [APT]

使用GUI列出Debian,Ubuntu或Linux Mint存储库中的所有软件包

要列出桌面系统信息库中的所有软件包,可以使用Synaptic软件包管理器。
Synaptic是用于APT的图形化软件包管理应用程序(APT是Debian及其衍生产品的主要命令行软件包管理器)。
如果未安装Synaptic,则可以使用以下命令将其安装在Debian,Ubuntu和Debian或基于Ubuntu的Linux发行版上,例如基本OS和Linux Mint。

sudo apt install synaptic

要使用Synaptic列出特定软件存储库中的所有软件包,请启动应用程序并单击 Origin 位于窗口的左下方。然后,从Synaptic软件包管理器左侧显示的列表中,选择一个列出所有可用软件包(已安装和可安装)的存储库。
例如,Synaptic列出了Google存储库中所有可用的软件包,并列出了Google Chrome浏览器以及Google Earth Pro和EC的稳定,测试版和不稳定版本。

如您所见,此处列出了所有软件资源,包括官方资源库。
还支持Launchpad PPA存储库。名称以LP-PPA开头,然后是实际的PPA名称。 Synaptic列出每个PPA的两个条目-选择以PPA结尾的PPA条目 /ubuntu-codename,例如 /bionic/cosmic等等以结尾的条目 /now 不列出PPA中可用的所有软件包。
此屏幕快照显示了可用于Ubuntu图形驱动程序PPA的所有软件包(我将其用于Ubuntu 18.10 Cosmic Cuttlefish),还显示了系统上已安装的软件包。
存储库中所有软件包的Synapse列表

我不知道为什么,但是针对PPA源(仅PPA存储库)列出了一些软件包多次。这仅是显示,并不影响功能。

从命令行列出Ubuntu,Debian或Linux Mint存储库中的所有软件包

从Ubuntu,Debian或Linux Mint命令行列出存储库中的所有软件包都有些困难,但仍然非常容易。
该命令有多种方法可以执行此操作,但是仅列出了一种。命令列出所有可用于命令的软件包 repository-name 下一个。

grep ^Package /var/lib/apt/lists/repository-name*_Packages | awk '{print $2}' | sort -u

稍后我将解释如何查找存储库名称 /var/list/apt/lists 以及如何使用它。在此之前,让我们看一下该命令的作用。

  • grep ^Package ... 查找以以下内容开头的行 ^Package/var/lib/apt/lists/*_Packages 档案
  • awk '{print $2}' 打印每一行的第二列(因此排除了软件包名称之外的所有内容)
  • sort -u 对行进行排序,仅输出唯一的行(删除重复项)

您需要做的第一件事是找到存储库的名称 *_Packages 来自的文件 /var/lib/apt/lists/。列出所有资料库 _Packages 可用文件 /var/lib/apt/lists/ 简单的 ls

ls /var/lib/apt/lists/*_Packages

结果可能会很长,因此您可以运行以下命令输出: more 为了提高可读性:

ls /var/lib/apt/lists/*_Packages | more

如果您知道存储库名称的一部分(我正在使用 KEYWORD 可以过滤) ls 使用结果 grep,例如:

ls /var/lib/apt/lists/*_Packages | grep KEYWORD

例如,如果要列出正式的Tor存储库中的所有软件包,则存储库名称 tor。在这种情况下,请使用此命令 _Packages 来自的文件名 /var/lib/apt/lists/

ls /var/lib/apt/lists/*_Packages | grep tor

对于简短查询,您可能会看到不相关的存储库,但是更容易看到正在使用的存储库 grep 比列出所有存储库 _Packages 文件
现在你知道 _Packages 您可以通过发出以下命令列出该存储库中所有可用的软件包:

grep ^Package /var/lib/apt/lists/some-repository-amd64_Packages | awk '{print $2}' | sort -u

使用包含架构的文件,该架构列出该存储库中可用的所有软件包。上面的例子是64位(amd64),但您可以使用 i386 对于32位等
无需完整的存储库 _Packages 文件名回到Tor储存库示例, _Packages Tor的文件名为 deb.torproject.org_torproject.org_dists_cosmic_main_binary-amd64_Packages。在这种情况下,您可以使用 deb.torproject 跟随 *_Packages 简化如下:

grep ^Package /var/lib/apt/lists/deb.torproject*_Packages | awk '{print $2}' | sort -u

输出如下:

deb.torproject.org-keyring
tor
tor-geoipdb

另一个例子。假设您要显示可用于Linux Uprising Oracle Java 11 PPA的所有软件包(ppa:linuxuprising/java)。您可以使用以下方式列出:

grep ^Package /var/lib/apt/lists/ppa.launchpad.net_linuxuprising_java*_Packages | awk '{print $2}' | sort -u

这输出:

oracle-java11-installer
oracle-java11-set-default

要将其与其他PPA存储库一起使用,请替换 linuxuprising PPA名称的第一部分,以及 java 如果您指定PPA名称的第二部分,该命令将列出该PPA中的所有软件包(已安装和未安装)。
您还可以使用以下命令列出添加到系统中的所有PPA存储库中可用的所有软件包:

grep ^Package /var/lib/apt/lists/ppa.launchpad.net*_Packages | awk '{print $2}' | sort -u

为了方便访问,您可以使用“标记命令书签管理器”将此命令添加为书签(HSTR也可以在主要用于搜索时将命令添加为书签)。

Sidebar