Як можна повністю вийняти пакет?


188

Я намагаюся зробити чисту установку octave3.2пакету.

Для цього я її зняв, а потім спробував її знову встановити.

Під час перевстановлення сталася помилка. Це може бути помилка в пакеті, але я хочу переконатися, що у мене все вилучено, щоб я міг зробити чисту установку.

Чи достатньо це зробити?

sudo apt-get --purge remove octave3.2

Чи можна перевстановити пакет і звернути увагу на список залежностей від пакета АБО?
user309924

Рекомендуємо відвідати це
Пандія

Відповіді:


185

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

Видалення пакетів з або видалить їх та всі їхні глобальні (тобто загальносистемні) файли конфігурації. Це зазвичай мають на увазі люди, коли говорять про повне видалення пакета.sudo apt purge ...sudo apt --purge remove ...

Але це не означає, що ваша система така ж, як була до встановлення пакета. Зокрема:

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

  • Це не видаляє несистемні файли конфігурації. Зокрема, це не видаляє конфігурацію, орієнтовану на користувача:

    • Він не видаляє файли конфігурації та каталоги, розміщені в домашніх каталогах користувачів (або в .configпідкаталозі їх домашніх каталогів), створених програмним забезпеченням, яке надається пакетом.

      • Якщо ці файли / папки не зберігаються .config, вони зазвичай починаються із .себе. Так чи інакше, ви можете їх побачити ls, використовуючи -aабо -Aпрапор, і ви можете побачити їх у Nautilus та більшості інших браузерних файлів / менеджерів файлів, натиснувши Ctrl+ Hабо перейдіть до Перегляду > Показати приховані файли .
    • Він не скасовує зміни, внесені до існуючих файлів конфігурації, визначених для користувача.

    • Він не видаляє нові gconfабо dconfключі, не змінює будь-яких змін gconfабо dconfконфігурації.

  • Використання purgeабо --purge removeзамість removeцього не скасовує зміни до існуючих системних файлів конфігурації, наданих іншими пакетами або створених користувачем вручну. Однак іноді такі зміни скасовуються, видаляючи пакунок (чи не є, purgeа чи ні remove).


61

Використовуйте команду:

sudo apt-get purge --auto-remove packagename

Він очистить необхідні пакети разом із залежностями, які встановлені разом із цими пакетами. --auto-removeОпція працює аналогічно sudo apt-get autoremove.


1
це вирішило мою проблему, особливо з certbot
Т.Тодуа

7

Спочатку ви знайдете назву пакета, який потрібно видалити:

dpkg --list

Потім видаліть даний пакет

sudo apt-get remove package_name

Очистіть будь-який пов'язаний код

sudo apt-get purge package_name

Тоді Autoremove

sudo apt-get autoremove

Нарешті, чистіть, щоб переконатися, що все правильно видалено

sudo apt-get clean

Ви хочете перевірити у списку пакунків, чи той, який ви хотіли видалити, більше не вказаний, але він є необов’язковим.

Гарного дня,


4

Краще відслідковуйте додаткові пакети залежностей, встановлені під час встановлення.

The following extra packages will be installed: 
    libgssglue1 libnfsidmap2 libtirpc1 nfs-common rpcbind

Якщо ви видалите лише оригінальний пакет, пакет залежності може залишитися.

Таким чином, ви повинні вручну видалити кожен із них

apt-get purge package_name

1
Як я можу отримати список цих пакунків, якщо моя консоль не прокручується досить вгору
Люк Тейлор

@LukeTaylor apt-get install package_name > output Потім, less output щоб побачити весь вихід із прокруткою.
Харікришнан

2

Замість того, щоб видаляти автоматично встановлені залежні пакети вручну, використовуйте наступне:

 zanfilip @ zanfilip-VPCEB3L0E: ~ / jp / eclipse $ sudo apt-get --purge autoremove
    Читання списків пакунків ... Готово
    Побудова дерева залежності       
    Читання інформації про стан ... Готово
    Наступні пакети будуть ВІДНОВЛЕНІ
      libupstart1 * linux-headers-3.16.0-30 * linux-headers-3.16.0-30-generic *
      linux-image-3.16.0-30-generic * linux-image-extra-3.16.0-30-generic *
    0 для оновлення, 0 для нової інсталяції, 5 для видалення та 23 для оновлення.
    Після цієї операції звільниться дисковий простір 279 Мб.
    Ви хочете продовжити? [Y / n]


2

Якщо ви хочете видалити деякі специфічні пакети, ви можете скористатися цими командами:

dpkg --get-selections | grep PACKAGE_NAME | awk '{ print $1}'| xargs apt-get -y --purge autoremove

не забувайте перемикач "-y", оскільки в іншому випадку apt-get постійно запитає про видалення окремих пакетів і нічого не видалить.


2
Це може бути корисним, але також може бути руйнівним: воно може легко співставити пакет, який ви насправді не хотіли видалити, та видалити його конфігурацію без підтвердження! До щастя , так як імена пакетів не містить пробіл, можна повернути його й опускати -y: apt-get --purge autoremove $(dpkg --get-selections | grep PACKAGE_NAME | awk '{ print $1}'). Це було б дещо безпечніше.
joeytwiddle

Можливо, було б безпечніше запустити команду у вигляді: dpkg --get-select | grep PACKAGE_NAME | awk '{print $ 1}' Спочатку, а потім запустити його з xargs - це краща практика, щоб користувач побачив, що буде видалено в результаті команди.
Керем Ерсой

0

Ще один варіант у вас є використання debfosterпакету. Це інтерактивно знайде та запропонує пакети для видалення (та очищення) разом із залежними пакетами.

sudo apt install debfoster
sudo debfoster
# and optionally remove debfoster too
sudo purge debfoster
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.