Когда бы вы использовали 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

Другие вопросы по тегам