Коли ви використовуєте apt-get remove над apt-get autoremove?


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з іншою метою?

Відповіді:


11

Це залежить від того, наскільки ви довіряєте трекеру залежності. Хоча майже завжди правильно, бувають випадки, коли ви хочете, щоб залежність залишалася, особливо, коли ви розробник або користувач, який встановлює потужність, встановлює програмне забезпечення, яке не знаходиться в сховищі.

Якщо ви завжди встановлюєте програмне забезпечення через apt-get, без винятку, і довіряєте правильності всіх залежностей (якими вони зазвичай є), то ви можете використовувати apt-get autoremoveта отримати невелику кількість місця на диску та зменшити вплив потенційних дірок у безпеці, маючи він видаляє пакунки, у яких більше немає пакунків, які їм потрібні.

Але якщо ви встановлюєте програмне забезпечення вручну, або розробляєте програмне забезпечення, або не хочете мати справу з можливою помилкою залежності, то, можливо, безпечнішим вибором не буде використання авторемонта для очищення потенційно невикористаних пакетів. Незалежно від того, використовуєте ви apt-get autoremoveчас від часу чи ні, ви завжди видаляєте програмне забезпечення, використовуючиapt-get remove Package

Наприклад, якщо я встановлю AwesomePackage, це може залежати від цього AwesomeLibraryі, таким чином AwesomeLibrary, автоматично встановлюється як залежність . Коли я AwesomePackageвидаляю, використовуючи функцію autooremove, до тих пір, поки жоден інший пакет не має AwesomeLibraryзалежність, він також буде видалений. Але якщо це SuperPackageтакож вимагає AwesomeLibrary, або якби я встановив це AwesomeLibraryявно, а не ввійшов автоматично, як залежність ( apt-get install AwesomeLibrary), то авторемон не позбувся б цього.

Причина, через яку він не є типовим, полягає в тому, що наявність AwesomeLibraryу системі невикористаної системи є дуже незначною проблемою. Це майже ніколи не спричинить проблем, і більшість залежних груп не займають багато місця. Винятки є, але моменти, коли усунення залежних ситуацій спричинить проблеми, перевищують час, коли це вирішить чи запобіжить проблемі.


Вибачте, Мірддін Емріс. Ти там мене загубив. Тож дозвольте мені спробувати зрозуміти, що ви сказали. Так, наприклад, якщо я встановив libreoffice за допомогою apt-get, він встановив би цілу купу залежностей, припускаючи, що я їх ще не встановив. Тепер, якщо я тоді вирішу позбутися вільновідступництва, я припускаю, що біжуapt-get remove libreoffice
PeanutsMonkey

Якби я хотів, щоб залежність, яку він встановив, залишалася, це правильно? Якби я хотів позбутися себе і вільної лінійки, і пов'язаних з нею залежностей, припускаючи, що інша програма не використовується, я вважаю, я би запустив команду apt-get autoremovelibreoffice? Це правильно?
PeanutsMonkey

Це абсолютно правильно @PeanutsMonkey. Autoremove також видалить інші пакунки , від яких залежав іменований пакет, якщо вони більше нічого не вимагають і не були встановлені окремо спеціально.
Мірддін Емріс

Власне, це не зовсім правильно; У моїй відповіді був неправильний синтаксис (як зазначав @cooper). Я виправив це у відповіді вище. apt-get autoremoveце окрема команда від apt-get remove Package, вибачаюсь за початкову дезінформацію.
Мірддін Емріс

Дякую Мірддіну Емрісу. Вибачте, якщо я є n00b. Коли ти це кажеш There are exceptions, but the times when removing a dependancy will cause problems outnumber the times when it will solve or prevent a problem. Що саме ви маєте на увазі?
АрахісМонкі

12

Ви можете знайти опис Витягніть , autoremove , чищення , чистою і AUTOCLEAN , а також синтаксис в сторінках керівництва для APT-отримати: man apt-get.

Якщо ви все ще не впевнені, прочитавши це, хоча (я був) найкращий спосіб уточнити це спробувати його.

Нижче наведено приклад дерева повної залежності від vim :

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 використання 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

Це видаляє кеш-здатність у / var / cache / apt / архівах


Вибачте за те, що я такий n00b, але я не дуже дотримуюся цього. Тож якщо я запускаю команду apt-get remove libreoffice, я вважаю, що вона просто видалить лібріофіс. Це так? Однак якщо я запускаю команду apt-get autoremove libreoffice, це не тільки видалить libreoffice, але і його залежності?
АрахісМонкі

Це правильно. Тож скажімо, що я встановлюю neverballі neverballзалежить від пакета, який називається libisfun. Якщо я apt-get remove neverballтоді, він видалить лише neverballпакет. Якщо я, apt-get autoremove neverballто він видалить, neverballі libisfunякщо libisfunвін не залежить від будь-якої іншої програми.
кобальц
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.