当我使用“apt-get install”和包名后的连字符时,包被删除

nas*_*ass 15 command-line apt

为了安装cuda,我复制粘贴了一些apt-get install软件包。由于未知原因,我最终运行的线路如下:

sudo apt-get install libgtk2.0-
Run Code Online (Sandbox Code Playgroud)

结果是许多包被删除了。随便挑几个:

libreoffice-*
python-*
xfce4-* 
Run Code Online (Sandbox Code Playgroud)

名单很大。卸载了相当多的系统部件。现在,这似乎与我运行时的预期严重偏离apt-get install

到底是怎么回事?

ter*_*don 21

问题如下(来自man apt-get):

安装

install 后跟一个或多个需要安装或升级的包。每个包都是一个包名,而不是完全限定的文件名(例如,在 Debian 系统中,apt-utils 将是提供的参数,而不是 apt-utils_0.9.12.1_amd64.deb)。指定用于安装的包所需的所有包也将被检索和安装。/etc/apt/sources.list 文件用于定位所需的包。如果将连字符附加到包名称(中间没有空格),则如果安装了已识别的包,则将删除该包. 同样,加号可用于指定要安装的软件包。后面的这些功能可用于覆盖 apt-get 的冲突解决系统做出的决定。

因此,在包名称末尾添加连字符表示“删除该包”。具体来说,在您的情况下,它将删除这些:

Note, selecting 'libgtk2.0-doc' for regex 'libgtk2.0'
Note, selecting 'libgtk2.0-cil' for regex 'libgtk2.0'
Note, selecting 'libgtk2.0-bin' for regex 'libgtk2.0'
Note, selecting 'libgtk2.0-common' for regex 'libgtk2.0'
Note, selecting 'libgtk2.0-0' for regex 'libgtk2.0'
Note, selecting 'libgtk2.0-cil-dev' for regex 'libgtk2.0'
Note, selecting 'libgtk2.0-0-dbg' for regex 'libgtk2.0'
Note, selecting 'libgtk2.0-dev' for regex 'libgtk2.0'
Run Code Online (Sandbox Code Playgroud)

换句话说,您删除了整个 gtk2 库集,并且很多程序都依赖于 gtk2。结果,许多程序被删除。

所以,不,这不是一个错误。诚然,如果您不知道它是令人惊讶的行为,但它已记录在案且有意为之。

  • 人们,你在这里吠错了树。我没有写东西,我只是阅读了手册页。请向 `apt` 开发人员提交您的错误。:P (3认同)

Jos*_*Jos 6

查看 /var/log/apt/history.log 以查看究竟删除了什么。然后,只需重新安装这些软件包。

  • 不完全是答案,它是一种补救措施! (2认同)