使用 apt 通配符时出现问题

使用 apt 通配符时出现问题

当我运行此命令时:

apt install libkf5*

我收到以下错误:

Unable to locate package libkf5*


我确信名称以 开头的软件包是libkf5存在的(制表符补全功能显示如此)。因此问题不在于缺少这些软件包。(请注意该错误消息末尾的星号,通配符根本不起作用)
我使用的是aptv.1.9。
提前致谢。

答案1

最新版本apt 改变了模式的指定方式,并且apt不再直接支持正则表达式或通配符,除了之前*支持的其他内容在 2.1.0 中恢复已移植至 2.0.3

你现在应该使用

apt install '~nlibkf5.*'

使用 1.9.9 和 2.0.2 之间的 apt,或长格式

apt install '?name(libkf5.*)'

稍早一点就可以使用了。

手册apt-patternsman apt-patterns)了解详情。

答案2

人们仍然可以使用平apt-get原来达到这样的目的。

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

sudo apt-get install "libkf5*"

答案3

根据 apt 的更新日志,版本 2.1.0

* Reinstate * wildcards (Closes: #953531) (LP: #1872200)

(链接:启动板#1872200

所有子命令都已恢复星号(且只有星号)apt,包括apt install

虽然 2.1.0 太新,无法交付给 Focal,但它已被移植到2.0.3可在focal-proposed存储库中找到。您可以参考Ubuntu 维基启用建议的存储库,然后您可以安装已反向移植此功能的 apt 2.0.3。

你自己看:

图像

笔记:你可能想读“建议的”存储库是什么?在继续使用建议的存储库之前。

答案4

apt我找到了一个使用通配符的小技巧。我们只需要使用apt来作为别名apt-get,但这种方法不起作用,因为别名不会传递给sudo。为了解决这个问题,您可以在文件sudo中添加第二个别名.bashrc

alias sudo='sudo ' # whitespace is important 
alias apt='apt-get'

致谢:

相关内容