Когда бы вы использовали apt-get remove over 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 remove
а также apt-get autoremove
для другой цели?
4 ответа
Это зависит от того, насколько вы доверяете трекеру зависимости. Хотя это почти всегда правильно, бывают ситуации, когда вы хотите, чтобы зависимость оставалась, особенно если вы разработчик или опытный пользователь, устанавливающий программное обеспечение, отсутствующее в хранилище.
Если вы всегда устанавливаете программное обеспечение с помощью apt-get, без исключения, и доверяете всем зависимостям, чтобы они были правильными (какими они обычно являются), то вы можете использовать apt-get autoremove
и получить небольшой объем дискового пространства и уменьшенную подверженность потенциальным дырам в безопасности благодаря удалению пакетов, в которых больше нет пакетов, которые в них нуждаются.
Но если вы устанавливаете программное обеспечение вручную или разрабатываете программное обеспечение, или не хотите иметь дело с возможной ошибкой зависимости, то использование автоматического удаления для очистки потенциально неиспользуемых пакетов, вероятно, является более безопасным выбором. Независимо от того, используете ли вы apt-get autoremove
время от времени или нет, вы всегда будете удалять программное обеспечение, используя apt-get remove Package
Например, если я установлю AwesomePackage
, это может зависеть от AwesomeLibrary
, и поэтому AwesomeLibrary
будет автоматически установлен как зависимость. Когда я удаляю AwesomePackage
с помощью автоматического удаления, пока ни один другой пакет не имеет AwesomeLibrary
в качестве зависимости он также будет удален. Но если SuperPackage
также требует AwesomeLibrary
или если я установил AwesomeLibrary
Я сам, а не автоматически apt-get install AwesomeLibrary
), тогда автоудаление не избавится от этого.
Причина, по которой это не по умолчанию, состоит в том, что AwesomeLibrary
в системе, неиспользованный, является очень незначительной проблемой. Это почти никогда не вызовет проблем, и большинство зависимостей не занимают много места. Существуют исключения, но времена, когда удаление зависимости вызовет проблемы, будут превосходить количество раз, когда это решит или предотвратит проблему.
Вы можете найти описание remove, autoremove, purge, clean и autoclean, а также синтаксис в manpages для 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-common и vim-runtime и 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-runtime, а также пакет, который от нее зависит, а именно 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.
В соответствии с этим: http://ubuntuforums.org/showthread.php?t=996053 autoremove удалит все пакеты, которые не нужны другим программам. Вы должны сделать "apt-get autoremove", а не "apt-get autoremove libreoffice". Кроме того, удаление ненужных пакетов не только освобождает немного места на диске, но и уменьшает "поверхность атаки" вашей системы.
remove
удалит указанную программу, тогда как autoremove
будет включать зависимости, в противном случае больше не используется.
Кроме того, если вы хотите освободить место на диске, полезная и безопасная команда...
sudo apt-get clean
Это удаляет кэш aptitude в /var/cache/apt/archives