带有排除功能的 Apt 通配符

带有排除功能的 Apt 通配符

我正在尝试安装fonts除 之外的所有软件包fonts-mathematica。最好的方法是什么?

我从下面的命令开始:

apt-get -y install *fonts*

问候,j

答案1

我们可以使用apt新模式。使用man apt-patterns以获取更多信息。

列出所有名称包含“字体”的包并进行计数:

$ apt list '~n.*fonts.*' 2> /dev/null | wc -l

573

grep使用以下查找来过滤输出fonts-mathematica

$ apt list '~n.*fonts.*' 2> /dev/null | grep -i mathematica

fonts-mathematica/focal 21 all
mathematica-fonts/focal 21 all

要排除它:

$ apt list '~n.*fonts.* !?exact-name(fonts-mathematica)' 2> /dev/null | 
grep mathematica

mathematica-fonts/focal 21 all

甚至排除它们两个:

$ apt list \
'~n.*fonts.* !?exact-name(fonts-mathematica) !?exact-name(mathematica-fonts)' |
 grep mathematica

因此,这就是您要寻找的内容:

$ sudo apt install \
'~n.*fonts.* !?exact-name(fonts-mathematica) !?exact-name(mathematica-fonts)'

这肯定会导致很多冲突。

我们可以做的是生成所有这些包的列表:

$ apt list \
'~n.*fonts.* !?exact-name(fonts-mathematica) !?exact-name(mathematica-fonts)' | 
cut -f1 -d/ > 2>/dev/null fonts_lists

或者用更干净的方式:

$ apt-cache search --names-only fonts | grep -v -e fonts-mathematica -e mathematica-fonts | cut -f1 -d' ' > fonts_list

然后使用如下指南:“当 apt-get 安装遇到无法找到软件包的问题时继续出错“逐一进行安装。

相关内容