为什么这个命令会删除所有包?

为什么这个命令会删除所有包?

我试图让一个 Windows 程序在 PlayOnLinux 上运行,但它不起作用后,我用以下命令删除了 Wine: sudo apt-get remove --purge wine*

我不假思索地同意移除机器上的所有包裹。有人能告诉我为什么它选择每个包而不是所有以字符串“wine”开头的包吗?

我正在运行 Linux Mint 16

答案1

如果当前目录中至少有一个名称以 开头的文件wine,则wine*命令中将展开到名称以 开头的文件列表wine。如果没有这个文件,那么

sudo apt-get remove --purge wine*

被执行。apt-get install和 的参数apt-get remove扩展正则表达式,而不是 shell 通配符;wine*表示win后跟任意数量的e,并且由于这可以匹配包名称的任何部分,因此这意味着名称包含win子字符串的任何包。当然,还有任何依赖于这些包的包。

如果您使用的是 KDE,那么您就会丢失该kde-window-manager软件包。如果没有,您一定丢失了其他一些重要的包裹。也许libmate-window-settings1哪个是哪个需要mate-control-center哪个是哪个需要mate-desktop-environment-core哪个丢失将使大多数 MATE 包变得多余。我检查了 Debian wheezy 包名称,Mint 可能有不同的集合,但你明白了。

要仅删除名称以 开头的包wine,请使用

sudo apt-get purge '^wine'

确认前请仔细检查包裹清单。

你可能会更舒服资质,它有一个文本模式全屏前端。

相关内容