Ser*_*ndt 13 package-management synaptic command-line
在 Synaptic 中,可以按部分列出软件包。例如,在下图中列出了“业余无线电(宇宙)”部分的所有包。
如何在命令行中获得这样的列表(编辑:带有包描述)?
我需要一个原始清单;像这样的终端应用程序是aptitude
行不通的。
Mic*_*ler 11
确保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 Radio”。
有关所有选项和一些示例的完整说明,请参阅grep-aptavail的手册页。
好吧,虽然你说你不想使用 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)