apt 使用通配符的问题

Par*_*avi 21 apt

当我运行此命令时:

apt install libkf5*
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Unable to locate package libkf5*
Run Code Online (Sandbox Code Playgroud)


我确定名称以开头的包libkf5存在 (tab-completion 这样说)。所以问题不在于缺少这些包。(注意错误消息末尾的星号,通配符根本不起作用)
我使用aptv.1.9。
提前致谢。

Ste*_*itt 24

最近的版本apt 改变了模式指定的方式apt不再直接支持正则表达式或通配符,除了在 2.1.0*恢复支持并向后移植到 2.0.3

你现在应该使用

apt install '~nlibkf5.*'
Run Code Online (Sandbox Code Playgroud)

apt 介于 1.9.9 和 2.0.2 之间,或长格式

apt install '?name(libkf5.*)'
Run Code Online (Sandbox Code Playgroud)

稍早可用。

请参见apt-patterns手册页man apt-patterns详情)。


N0r*_*ert 6

人们仍然可以将普通apt-get用于这种目的。

对于 OP 的示例,它看起来像

sudo apt-get install "libkf5*"

  • 请注意,如果要执行此操作,仍应引用该模式,以便 shell 不会扩展它。否则,如果当前目录中的任何文件(在此处给出的示例中)命名为以 `libkf5` 开头,就会出现奇怪和不希望的结果。代替`libkf5*`,`'libkf5*'`、`"libkf5*"` 或`libkf5\*` 中的任何一个都将阻止shell 进行自己的扩展(并且shell 在传递参数之前执行引号删除到`apt-get`,所以`apt-get` 本身会看到`libkf5*`)。 (2认同)