如何从命令行获取存储库部分中所有包的列表?

Ser*_*ndt 13 package-management synaptic command-line

在 Synaptic 中,可以按部分列出软件包。例如,在下图中列出了“业余无线电(宇宙)”部分的所有包。

如何在命令行中获得这样的列表(编辑:带有包描述)?

我需要一个原始清单;像这样的终端应用程序是aptitude行不通的。

突触的

Mic*_*ler 11

确保dctrl-tools安装 dctrl-tools安装包。它提供了用于搜索 apt 和 dpkg 包列表的有用命令。要从可使用 apt 安装的特定部分获取所有软件包的完整描述,请运行

grep-aptavail -F Section hamradio
Run Code Online (Sandbox Code Playgroud)

这将显示该hamradio部分中每个包的完整包元数据。如果您只想查看包名称,请运行

grep-aptavail -n -F Section -s Package hamradio
Run Code Online (Sandbox Code Playgroud)

如果您的系统为 multiarch 设置,如果它是为多个架构构建的,则同一个包可能会在此列表中多次出现。因此,要进一步完善这一点,请使用

grep-aptavail -n -F Section -s Package hamradio | sort | uniq
Run Code Online (Sandbox Code Playgroud)

或者

grep-aptavail -n -F Section -s Package hamradio | sort -u
Run Code Online (Sandbox Code Playgroud)

对包列表进行排序并删除具有相同名称的重复包。

请注意,您必须使用该部分的实际名称,这与 Synaptic 在其 GUI 中显示的“人类可读”名称不同。例如,上面的搜索使用部分名称hamradio而不是 Synaptic 中显示的字符串“Amateur Ra​​dio”。

有关所有选项和一些示例的完整说明,请参阅grep-aptavail的手册页。


Bra*_*iam 5

好吧,虽然你说你不想使用 aptitude 因为输出,但你需要知道你可以修改它以获得你喜欢的:

aptitude -F'|%p|%d|' search '?section(hamradio)'
Run Code Online (Sandbox Code Playgroud)

诀窍-F在于修改输出格式的开关。%p意味着包。这也会在包具有各种架构(即 amd64 与 i386)时%d输出,并输出描述。您可以更加个性化搜索模式,例如未安装的软件包:

aptitude -F'|%p|%d|' search '?section(hamradio) !~i'
Run Code Online (Sandbox Code Playgroud)

where~i表示已安装,而!不是,所以它读作“未安装(!)安装(~i)”,或者如果您只想要那些对您的架构可用的:

aptitude -F'|%p|%d|' search '?section(hamradio) ~r native'
Run Code Online (Sandbox Code Playgroud)

~r存在?architecture()其中包和的结构相匹配native,其仅列出具有相同的架构的系统,所述等效的那些dpkg --print-architecture

因此,前一行可以更简洁地写为:

aptitude -F'|%p|%d|' search '~s hamradio ~r native'
Run Code Online (Sandbox Code Playgroud)