为什么带有尾随连字符的 apt-get install python3 会删除很多软件包?

为什么带有尾随连字符的 apt-get install python3 会删除很多软件包?

在使用sudo apt-get install命令安装某些东西时,我意外地接受了命令

sudo apt-get install python3-

(是的,我知道接受这一点很愚蠢,但我已经做了很多次了,我只是继续点击y)。

通过执行该命令,我删除了整个 Ubuntu 可视化桌面(我只有普通的 shell,但现在我已经恢复了可视化桌面)。我不知道我是不是太笨了,但无论如何,我想让你意识到你不应该使用该命令。

如果你能向我解释为什么会发生这件事,请随时向我解释。

答案1

这不是一个错误;这在页面中有记录man。来自man apt-getinstall1节(重点是我的):

如果在软件包名称后附加连字符(中间没有空格),则表示所安装的软件包将被删除。类似地,可以使用加号来指定要安装的包。

因此,当你这样做时:

sudo apt-get install python3-

您已删除该python3软件包及其所有依赖软件包(包括您提到的软件包)。


使固定:

首先,您可以安装ubuntu-desktop元包以恢复默认桌面环境:

sudo apt-get install ubuntu-desktop

现在,重新安装已删除的软件包,请转到/var/log/apt/history.log,选择软件包,然后运行sudo apt-get install它们。

您可能还想了解一下/var/log/dpkg.log


1如果你有less传呼机,你可以直接man转到以下install部分:man apt-get

LESS='+/^[[:blank:]]+install' man apt-get

答案2

不,你没有发现错误。来自man apt-get

如果在软件包名称后附加连字符(中间没有空格),则已安装的已识别软件包将被删除。同样,可以使用加号来指定要安装的软件包。后面这些功能可用于覆盖 apt-get 冲突解决系统做出的决定。

这是故意的。我不确定这是不是好的设计,但在继续操作之前,值得阅读一下 apt 提出的更改。

结合通配符可能有时会产生一些相当……惊人的结果。

相关内容