我理解apt-get remove
删除软件包和apt-get autoremove
删除已安装的任何软件包以满足给定软件包的依赖关系。例如,如果我安装了 LibreOffice,并且它依赖于 Java,并且在运行命令时将其作为安装的一部分安装apt-get libreoffice
,那么为什么我要运行命令apt-get remove libreoffice
后跟apt-get autoremove
?我不能简单地运行命令吗?或者和apt-get autoremove libreoffice
的组合是否用于其他目的?apt-get remove
apt-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:
您可以通过以下方式获取:
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 缓存