在Synaptic中,可以按部分列出软件包。例如,在下面的图像中,列出了“Amateur Radio(universe)”部分的所有软件包。
如何在命令行中获取这样的列表(编辑:带有软件包描述)?
我需要一个原始列表;类似于
如何在命令行中获取这样的列表(编辑:带有软件包描述)?
我需要一个原始列表;类似于
aptitude
的终端应用程序不适用。
aptitude
的终端应用程序不适用。
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 在其图形界面中显示的“可读性强”的名称。例如,上述搜索使用部分名称 hamradio
,而不是 Synaptic 中显示的字符串“Amateur Radio”。
有关所有选项的完整描述和一些示例,请参阅 grep-aptavail 的 man 手册。
aptitude -F'|%p|%d|' search '?section(hamradio)'
关键是在修改输出格式的-F
开关中。 %p
表示软件包。当软件包具有不同的架构(如amd64 vs i386)时,也会输出此信息,%d
则输出描述。您甚至可以更加个性化地调整搜索模式,例如排除已安装的软件包:
aptitude -F'|%p|%d|' search '?section(hamradio) !~i'
~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|'
。不过,是否有可能通过在search
字符串中添加一个!
表达式来避免列出:i386
软件包? - Serge Stroobandt~r native
添加到搜索条件中。~r
表示 ?architecture
,用于匹配软件包的架构;native
表示仅列出与系统相同架构的软件包,相当于 dpkg --print-architecture
命令。顺便问一下,您需要包含软件包描述的列表吗? - Braiammorse
的i386
软件包,尚未移植到amd64
平台。因此,我的解决方案有74行,而你的只有73行! - Serge Stroobandtaptitude -F'|%p|%d|' search '~s hamradio ~r native'
更加酷炫简洁。感谢您的投票评论。 - Serge Stroobandtaptitude-doc
包,并且使用浏览器导航到 /usr/share/doc/aptitude/html/en/index.html
,你将在 file:///usr/share/doc/aptitude/html/en/ch02s04s05.html
找到所有不好的附带条件。 - Braiam下面的一行代码将打印出存储库部分的所有唯一包名称,每个包名称都与其描述一起显示在单独的一行上。 所有字段都由竖线字符分隔,即可转换为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