16

Я понимаю, что 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 ответа4

11

Это зависит от того, насколько вы доверяете трекеру зависимости. Хотя это почти всегда правильно, бывают ситуации, когда вы хотите, чтобы зависимость оставалась, особенно когда вы разработчик или опытный пользователь, устанавливающий программное обеспечение, отсутствующее в хранилище.

Если вы всегда устанавливаете программное обеспечение с помощью 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 , неиспользуемой, является очень незначительной проблемой. Это почти никогда не вызовет проблем, и большинство зависимостей не занимают много места. Существуют исключения, но время удаления зависимости вызовет проблемы, превосходящие количество раз, когда это решит или предотвратит проблему.

10

Вы можете найти описание 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.

4

В соответствии с этим: http://ubuntuforums.org/showthread.php?t=996053 autoremove удалит все пакеты, которые не нужны другим программам. Вы должны сделать «apt-get autoremove», а не «apt-get autoremove libreoffice». Кроме того, удаление ненужных пакетов не только освобождает немного места на диске, но и уменьшает «поверхность атаки» вашей системы.

3

remove удалит указанную программу, в то время как autoremove будет включать зависимости, иначе больше не будет использоваться.

Кроме того, если вы хотите освободить место на диске, полезная и безопасная команда ...

sudo apt-get clean

Это удаляет кэш aptitude в /var /cache /apt /archives

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .