Відповіді:
remove
видаляє пакети з ім'ям.autoremove
видаляє всі автоматично встановлені пакети, які більше не потрібні. Невірно перераховувати назви пакетів після autoremove
; вони будуть ігноровані (і всі придатні пакети будуть видалені), що, мабуть, не те, що ви маєте намір.--purge
також призводить до видалення файлів конфігурації, пов’язаних із загальною системою, пов'язаних із видаленням пакунків Він повинен супроводжуватися командою, такою як remove
або autoremove
. --purge
Прапор змінює дію команди; воно не діє самостійно.purge
означає те саме, що --purge remove
(що те саме remove --purge
). Невірно сказати purge
двічі; другий purge
трактується як назва пакету, який буде purge
d, що, мабуть, не те, що ви маєте намір.Щоб зрозуміти, що ці команди виконують і чим вони відрізняються, це допомагає (і, мабуть, навіть важливо) зрозуміти два поняття:
Встановлений пакет встановлюється вручну або автоматично .
Коли ви вказуєте пакет для встановлення, і він встановлений, він встановлюється вручну .
Але можуть бути встановлені й інші пакети. Більшість пакетів мають залежності - інші пакети, які необхідно встановити, щоб цей пакет працював за призначенням. При встановленні пакета встановлюються його залежності (тобто інші пакети, від яких це залежить), за винятком тих, які були встановлені раніше.
Якщо пакет не вказаний вами для встановлення, а натомість встановлений як залежність від пакета, який ви вказали для встановлення, він автоматично встановлюється.
Зверніть увагу, що якщо у вас встановлено два пакети, і один з них є залежністю іншого, це не означає, що залежність встановлюється автоматично. Можливо також, що залежність була встановлена вручну (тобто вказана вами, наприклад, встановлена до або одночасно з пакетом, який від неї залежить).
Нарешті:
apt-mark
команди), незалежно від того, як і за яких обставин вони були фактично встановлені.Як правило, для кожного автоматично встановленого пакета у вас буде принаймні один пакунок, встановлений вручну, який залежить від нього (і який призвів до його автоматичного встановлення). Однак якщо потім видалити всі встановлені вручну пакети, які залежать від автоматично встановленого пакету, автоматично встановлений пакет більше не буде необхідним, але все одно буде встановлений.
apt-get autoremove
видаляє автоматично встановлені пакети, у яких більше немає встановлених вручну пакетів залежно від них.
Пакет надає файли, які повинні бути і залишатись однаковими для кожної системи, де встановлена версія цього пакета. Такі файли надають виконувані файли, ресурси, документацію та інші "активи" для встановлених програм. Ми зазвичай просто називали ці "файли", які надає пакет.
Але пакет містить і інші файли, які призначені (можливо) змінити. Вони називаються глобальними (або загальносистемними) файлами конфігурації. Вони майже завжди встановлюються в /etc
каталозі, і їх можна автоматично та вручну змінювати, щоб змінити поведінку встановлених програм. Наприклад, sudo
є файл конфігурації /etc/sudoers
та каталог для додаткових файлів конфігурації /etc/sudoers.d
. Цей файл та будь-які файли, додані до цього каталогу, вказують, кому дозволено використовувати sudo
якими способами.
Як правило, бажано, щоб видалення пакета та його встановлення назад не змінювали його поведінку (якщо, звичайно, не були пошкоджені файли пакунків , і, звичайно, ви його встановили). Тому, як правило, коли пакет видалено, файли його пакетів видаляються, але його конфігураційні файли, що зберігаються в цілому, залишаються недоторканими.
Коли ви видаляєте пакет, не вказуючи, що його файли конфігурації для загальної системи також повинні бути видалені, це називається "видалення" пакета.
Якщо ви також хочете видалити загальносистемні файли конфігурації пакета під час видалення пакета, це називається "очищення" пакета.
apt-get remove
вилучить пакет; тобто він видалить пакет, але залишить його файли конфігурації для всієї системи.
apt-get purge
очистить пакет; тобто він видалить пакет, а також обов’язково видалить його конфігураційні файли для всієї системи.
Ще один спосіб очищення пакетів - використання --purge
прапора. Це не говорить про apt-get
те, що робити; натомість він модифікує те, що терміни (або "команди") remove
наказують виконувати. --purge
Прапор викликає ніяких видалення пакета повинні супроводжуватися видаленням загальносистемних конфігураційних файлів для пакету (ів) бути невстановленим. Іншими словами, --purge
прапор перетворює видалення в чистки.
Чому у нас --purge
прапор, коли ми маємо purge
команду? Зрештою, це не sudo apt-get --purge remove packagename
рівнозначно sudo apt-get purge packagename
. Вони рівноцінні. Де --purge
пригождается, коли ви хочете змінити поведінку команд інших ніж remove
.
Наприклад, припустимо, ви хочете видалити автоматично встановлені пакети, які більше не потрібні (оскільки залежно від них більше немає встановлених вручну пакетів), але ви не хочете видаляти ці автоматично встановлені пакети, ви також хочете видалити файли їх конфігурації. Тоді ви можете запустити:
sudo apt-get --purge autoremove
Розглянемо ще одне використання --purge
. Є прапор --reinstall
, який називається , який перетворює установки на перевстановлення. Це означає, що зазвичай, коли ви намагаєтесь встановити вже встановлений пакет, нічого не відбудеться, або (якщо пакет позначено автоматично встановленим), пакет буде позначений встановленим вручну. Але якщо встановити --reinstall
прапор, встановлення вже встановленого пакету призводить до його видалення та встановлення назад :
sudo apt-get --reinstall install packagename
Але припустимо, ви хочете видалити загальносистемні файли конфігурації з пакету, який ви перевстановлюєте. Це дещо поширене; коли пакет не працює, і ви не знаєте чому, ви можете спробувати перевстановити його, а також видалити його конфігураційні файли, щоб його конфігурація була скинута до стандартної. Для цього можна виконати:
sudo apt-get --purge --reinstall install packagename
--reinstall
Установка перетворюється в переустановку (тобто видалення з подальшою установкою), і --purge
перетворює частину видалення повторної установки в продування.
Тепер має бути зрозуміло, що саме робить кожна з ваших прикладних apt-get
команд:
sudo apt-get autoremove --purge packagenames
Це очищає автоматично встановлені пакети, у яких більше немає встановлених вручну пакетів, які залежать від них. Тобто, він видаляє ці пакети (що тягне за собою видалення їх пакетних файлів), а також видаляє їхні файли конфігурації для всієї системи.
Тут packagenames
нічого не робить. Зокрема, якщо ви мали намір просто видалити пакунки, імена яких вказані там, то це буде не так, як ви планували.
sudo apt-get remove --purge packagenames
Це очищення packagenames
; якщо припустити packagenames
, що розділений пробілом список назв пакетів, він очистить їх усі. Тобто він видалить їх (що тягне за собою видалення їх пакетних файлів), а також видалить їхні файли конфігурації для всієї системи.
Якщо будь-який з перерахованих пакетів packagenames
не встановлений, його присутність у списку не матиме ефекту (крім того, що вам повідомлять, що він не встановлений). Якщо ви перелічите назви пакетів, які не є іменем жодного фактичного пакета, команда не вдасться з помилкою.unable to locate packagename
sudo apt-get purge purge packagenmaes
Якщо ви видалили одне із випадків purge
в цій команді, воно було б еквівалентно попередньому. На даний момент він намагається очистити пакет, який називається purge
, а також очистити пакунки, перелічені в packagenames
. Оскільки purge
це не ім'я жодного пакету, він не вдасться отримати повідомлення про помилку.
sudo apt-get remove packagenames
Це видаляє пакунки, перелічені в packagenames
, що тягне за собою видалення їх пакетних файлів. Це не видаляє їхні файли конфігурації для всієї системи (адже це просто видалення, а не очищення).
sudo apt-get autoremove
Це видаляє автоматично встановлені пакети, у яких більше немає встановлених вручну пакетів, які залежать від них. Це тягне за собою видалення їх пакетних файлів, але не їхні файли конфігурації для всієї системи (тобто це видалення, але не очищення).
Для отримання додаткової інформації про використання apt-get
я рекомендую його сторінку керівництва . Для отримання більш загальної інформації дивіться це керівництво .