何时应使用 apt-get remove 而不是 apt-get autoremove?

何时应使用 apt-get remove 而不是 apt-get autoremove?

我理解apt-get remove删除软件包和apt-get autoremove删除已安装的任何软件包以满足给定软件包的依赖关系。例如,如果我安装了 LibreOffice,并且它依赖于 Java,并且在运行命令时将其作为安装的一部分安装apt-get libreoffice,那么为什么我要运行命令apt-get remove libreoffice后跟apt-get autoremove?我不能简单地运行命令吗?或者和apt-get autoremove libreoffice的组合是否用于其他目的?apt-get removeapt-get autoremove

答案1

这取决于您对依赖项跟踪器的信任程度。虽然依赖项几乎总是正确的,但有时您希望保留依赖项,特别是当您是开发人员或高级用户安装不在存储库中的软件时。

如果你总是通过 apt-get 安装软件,毫无例外,并且相信所有的依赖关系都是正确的(通常都是正确的),那么你可以使用apt-get autoremove通过删除不再需要的软件包,可以获得少量的驱动器空间,并减少潜在安全漏洞的暴露。

但是如果你手动安装软件,或者开发软件,或者不想处理可能的依赖性错误,那么不使用 autoremove 来清除可能未使用的包可能是更安全的选择。无论你是否apt-get autoremove时不时地使用,你总是会使用apt-get remove Package

例如,如果我安装AwesomePackage,它可能依赖于AwesomeLibrary,因此AwesomeLibrary将自动安装为依赖。当我AwesomePackage使用 autoremove 删除时,只要没有其他包AwesomeLibrary作为依赖项,它也将被卸载。但如果SuperPackage也需要AwesomeLibrary,或者如果我自己明确安装了,AwesomeLibrary而不是让它自动作为依赖项出现(apt-get install AwesomeLibrary),那么 autoremove 就不会删除它。

它不是默认的原因是,AwesomeLibrary在系统中未使用时,这是一个非常小的问题。它几乎永远不会引起问题,并且大多数依赖项不会占用太多空间。也有例外,但删除依赖项导致问题的次数多于它解决或预防问题的次数。

答案2

您可以找到消除自动移除清除干净的自动清洁,以及 apt-get 手册页中的语法:man apt-get

如果您在阅读之后仍然不确定(我就是这样的),那么最好的澄清方法就是尝试一下。

下面是一个完整的依赖关系树的示例vim

vim 依赖树

您可以通过以下方式获取:

apt-rdepends -d vim > vim.dot
dotty vim.dot

您还可以使用以下方法获取直接依赖项列表apt-cache depends(请参阅声明包之间的关系了解更多信息):

$ apt-cache depends vim
vim
  Depends: vim-common
  Depends: vim-runtime
  Depends: libacl1
  Depends: libc6
  Depends: libgpm2
  Depends: libselinux1
  Depends: libtinfo5
  Suggests: <ctags>
    exuberant-ctags
  Suggests: vim-doc
  Suggests: vim-scripts

看起来就像vim依赖于许多软件包,让我们尝试安装它apt-get install并看看会发生什么:

$ sudo apt-get install vim
...
The following extra packages will be installed:
  vim-common vim-runtime
Suggested packages:
  ctags vim-doc vim-scripts
The following NEW packages will be installed:
  vim vim-common vim-runtime
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
After this operation, 25.1 MB of additional disk space will be used.
Do you want to continue [Y/n]? n

为了得到vim为了工作我们需要vim 常用vim 运行时软件包,apt-get我们会处理它。我们可以通过以下方式验证它dpkg -s pkg...man dpkg有关状态的更多信息,请参阅):

$ sudo dpkg -s libc6
Package: libc6
Status: install ok installed        // we already have it, no need to install

$ sudo dpkg -s vim-common
Package: vim-common
Status: deinstall ok config-files   // we don't have it, have to install

正如我们检查的那样vim依赖于,我们还可以检查其他哪些东西依赖于相同的包vim使用apt-cache rdepends。我们应该看到vim除(可能)其他事项外:

$ apt-cache rdepends vim-common
vim-common
Reverse Depends:
  vim-latexsuite
  vim-addon-manager
  vim-tiny
  vim-nox
  vim-gtk
  vim-gnome
 |vim-dbg
  vim-athena
  vim                               // there it is

让我们继续安装。安装完成后vim我们可以体验到消除自动移除. 让我们尝试消除第一的:

$ sudo apt-get remove vim
...
The following packages will be REMOVED:
  vim
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 1,922 kB disk space will be freed.
Do you want to continue [Y/n]? n

apt-get remove然后删除vim而不是它的依赖关系把它们抛在后面。现在让我们尝试删除其中一个vim的依赖项:

$ sudo apt-get remove vim-runtime
...
The following packages will be REMOVED:
  vim vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 24.8 MB disk space will be freed.
Do you want to continue [Y/n]? n

这将消除依赖性vim 运行时 以及依赖它的包,即vim出于好奇,让我们看看如果我们删除一个较低的依赖项会发生什么vim的依赖树:

$ sudo apt-get remove libgpm2
...
The following packages were automatically installed and are no longer required:
  libgtkglext1 libqtassistantclient4 libtiff-tools libtiff5 python-qt4
  python-sip python-sqlalchemy python-sqlalchemy-ext
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  anki cheese gimp gimp-gmic gimp-plugin-registry gnome-control-center      // !
  gnome-media gnome-video-effects gstreamer0.10-plugins-good libaa1         // !
  libcheese-gtk21 libcheese3 libgpm2 mplayer quodlibet vim vlc w3m          // !
0 upgraded, 0 newly installed, 18 to remove and 0 not upgraded.
After this operation, 63.1 MB disk space will be freed.
Do you want to continue [Y/n]? n

它会删除 vim 和许多好东西!

让我们继续apt-get remove vim。一旦我们完成了,我们应该会剩下一些。如果我们现在尝试自动移除我们可以看到:

$ sudo apt-get autoremove
...
The following packages will be REMOVED:
  vim-common vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 23.2 MB disk space will be freed.
Do you want to continue [Y/n]? y

apt-get remove尽管没有其他东西需要这两个包裹,但它们还是被遗留下来。

尝试使用 apt-get 0.9.7.9。

答案3

根据这个:http://ubuntuforums.org/showthread.php?t=996053autoremove 将删除其他程序不需要的所有软件包。您应该执行“apt-get autoremove”,而不是“apt-get autoremove libreoffice”。此外,删除不需要的软件包不仅可以释放一点磁盘空间,还可以减少系统的“攻击面”。

答案4

remove将删除指定的程序,但autoremove将包含不再使用的依赖项。

此外,如果您想释放驱动器空间,一个有用且安全的命令是......

sudo apt-get clean

这将删除 /var/cache/apt/archives 中的 aptitude 缓存

相关内容