在Synaptic中,可以按部分列出软件包。例如,在下面的图像中列出了“业余无线电(宇宙)”部分的所有程序包。
如何在命令行中获得这样的列表(编辑:带有软件包描述)?
我需要一份原始清单。像这样的终端应用程序aptitude
不会这样做。
在Synaptic中,可以按部分列出软件包。例如,在下面的图像中列出了“业余无线电(宇宙)”部分的所有程序包。
如何在命令行中获得这样的列表(编辑:带有软件包描述)?
我需要一份原始清单。像这样的终端应用程序aptitude
不会这样做。
Answers:
好吧,尽管您说由于输出而不想使用智能性,但是您需要知道可以对其进行修改以获得所需的内容:
aptitude -F'|%p|%d|' search '?section(hamradio)'
诀窍在-F
修改输出格式的开关中。%p
表示包装。当程序包具有各种体系结构(即amd64与i386)时,也会输出%d
该输出,并输出描述。您甚至可以针对未安装的软件包对搜索模式进行个性化设置:
aptitude -F'|%p|%d|' search '?section(hamradio) !~i'
where ~i
表示已安装,而!
not则表示未安装,因此其读作为“ not(!)installed(〜i)”,或者如果您只希望对体系结构可用的内容:
aptitude -F'|%p|%d|' search '?section(hamradio) ~r native'
~r
是?architecture()
与软件包的体系结构匹配的,并且native
仅列出与系统具有相同体系结构的软件包,等效于dpkg --print-architecture
。
因此,前一行可以更简洁地写为:
aptitude -F'|%p|%d|' search '~s hamradio ~r native'
-F'|%p|%d|'
。但是,是否可能不:i386
通过!
在search
字符串中添加-expression来列出软件包?
~r native
搜索词。~r
是?architecture
与软件包的体系结构匹配的,并且native
仅列出与系统具有相同体系结构的软件包,等效于dpkg --print-architecture
。顺便说一句,您想要带有包装说明的列表吗?
aptitude-doc
软件包并/usr/share/doc/aptitude/html/en/index.html
使用浏览器导航到,则会在file:///usr/share/doc/aptitude/html/en/ch02s04s05.html
所有讨厌的特权中找到。
确保已安装dctrl-tools软件包。它提供了有用的命令来搜索apt和dpkg软件包列表。要获取可使用apt安装的特定部分中所有软件包的完整描述,请运行
grep-aptavail -F Section hamradio
这将显示此hamradio
部分中每个软件包的完整软件包元数据。如果您只想查看软件包名称,请运行
grep-aptavail -n -F Section -s Package hamradio
如果您的系统是针对多体系结构设置的,并且同一软件包是针对多个体系结构构建的,则该软件包可能在此清单中多次显示。因此,要进一步完善此方法,请使用
grep-aptavail -n -F Section -s Package hamradio | sort | uniq
要么
grep-aptavail -n -F Section -s Package hamradio | sort -u
对软件包列表进行排序并删除相同名称的重复软件包。
请注意,您将必须使用该部分的实际名称,该名称与Synaptic在其GUI中显示的“人类可读”名称不同。例如,上面的搜索使用部分名称hamradio
而不是Synaptic中显示的字符串“ Amateur Radio”。
有关所有选项和一些示例的完整说明,请参见手册页中的grep-aptavail。
以下单行代码将在一行中打印存储库部分的所有唯一软件包名称及其描述。所有字段均由竖线字符分隔,即可以转换为Markdown管道表。该结果表可以在我的网站上找到。
grep-aptavail -n -s Package,Description -F Section hamradio |paste -sd '||\n' |sed 's:^:|:' |sort -u
您可以使用以下命令来获取属于给定节的软件包列表:
$ dpkg-query -W -f='${binary:Package} ${Section}\n' | awk '{if ($2 == "shells") {print $1}}'
bash
bash-completion
busybox-initramfs
busybox-static
dash
zsh
zsh-common