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