如何选择以“mate-”开头但不以“-dev”结尾的软件包?

Xiè*_*léi 5 debian apt

我想安装所有 MATE 包,

$ sudo apt-get install '^mate'
Run Code Online (Sandbox Code Playgroud)

但是,它选择了太多的包,并且一些包与一些已安装的包冲突。

现在,我想排除它们。任何的想法?

毫不奇怪,这行不通:

$ sudo apt-get install '^mate && !-dev'
Run Code Online (Sandbox Code Playgroud)

或者,我可以简单地让 apt-get 忽略那些冲突的包吗?

Gil*_*il' 5

您只能将正则表达式作为参数传递给apt-get install.

您可以制作一个符合您要求的正则表达式,但这很乏味。正则表达式的否定可以用正则表达式来表示,但补正正则表达式的大小通常随着原始正则表达式的大小呈指数增长。

apt-get install '^mate(.?.?.?|.*([^v]|[^e]v|[^d]ev|[^-]dev))$'
Run Code Online (Sandbox Code Playgroud)

您可以使用 Aptitude 的搜索模式生成具有半体面语法的软件包列表,并将结果列表传递给apt-get installaptitude install

aptitude search '^mate !-dev$'
Run Code Online (Sandbox Code Playgroud)


Tim*_*edy 1

你可以尝试这样的事情:

list="" ; for pkg in $(apt-cache search ^mate | grep -v -- '-dev'); list="$list $pkg" ; done ; sudo apt-get install $list
Run Code Online (Sandbox Code Playgroud)