如何列出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),还显示了系统上已安装的软件包。
我不知道为什么,但是针对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也可以在主要用于搜索时将命令添加为书签)。