如何在pacman中列出无版本后缀的可升级软件包?
只显示待升级Pacman软件包的包名(无版本后缀)
可以通过管道组合pacman和文本处理工具,过滤掉版本信息,只保留纯包名:
方法1:使用awk + sed
pacman -Qu | awk '{print $1}' | sed 's/-[0-9].*//'
pacman -Qu:列出所有待升级的软件包(带版本和仓库信息)awk '{print $1}':提取每行的第一列(即带版本后缀的包名字符串)sed 's/-[0-9].*//':删除从-后接数字开始的所有内容,只保留前面的包名
方法2:仅使用awk
pacman -Qu | awk -F'[ -]' '{n=split($1,a,"-"); for(i=1;i<n;i++) printf a[i] (i<n-1?"-":""); print ""}'
这个方法通过拆分带版本的包名字符串,排除最后一段版本部分,适合处理包含多个连字符的包名(如python-pip),确保不会误删包名里的合法连字符。
执行上述命令后,输出的内容就是纯包名(如acl、akonadi),可以直接复制后执行pacman -S <复制的包名>来升级指定软件。
内容的提问来源于stack exchange,提问作者Naji
相关产品推荐
相关产品推荐

