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

ken*_*ken 4 command-line apt linux-mint

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

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

我正在运行 Linux Mint 16

Gil*_*il' 5

如果有至少一个文件在当前目录名称以wine,则wine*在该命令将扩展到文件的名字开始与列表wine。如果没有这样的文件,那么

sudo apt-get remove --purge wine*
Run Code Online (Sandbox Code Playgroud)

被执行。参数apt-get installapt-get remove扩展正则表达式,而不是外壳通配符; 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'
Run Code Online (Sandbox Code Playgroud)

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

您可能更喜欢Aptitude,它具有文本模式全屏前端。