Как вы можете полностью удалить пакет?

188

Я пытаюсь сделать чистую установку octave3.2пакета.

Для этого я удалил его, затем попытался переустановить.

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

Достаточно ли этого для этого?

sudo apt-get --purge remove octave3.2
user1012451
источник
Можно ли переустановить пакет и обратить внимание на пакет ИЛИ список зависимостей?
user309924
Рекомендуем посетить это
Pandya

Ответы:

186

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

Удаление пакетов с или удалит их и все их глобальные (то есть общесистемные) файлы конфигурации. Обычно это подразумевают люди, когда говорят о полном удалении пакета.sudo apt purge ...sudo apt --purge remove ...

Но это не значит, что ваша система такая же, какой была до установки пакета. В частности:

  • Это не удаляет пакеты, которые были установлены как зависимости, при установке пакета, который вы сейчас удаляете. Предполагая, что эти пакеты не являются зависимостями от каких-либо других пакетов, и что вы не пометили их как установленные вручную, вы можете удалить зависимости с помощью sudo apt autoremoveили (если вы также хотите удалить их общесистемные файлы конфигурации) sudo apt --purge autoremove.

  • Это не удаляет несистемные файлы конфигурации. В частности, он не удаляет пользовательскую конфигурацию:

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

      • Если эти файлы / папки не хранятся .config, они обычно начинаются с .себя. В любом случае, вы можете увидеть их с lsпомощью флага -aили -A, и вы можете увидеть их в Nautilus и большинстве других файловых браузеров / менеджеров, нажав Ctrl+ Hили перейдя в View > Show Hidden Files .
    • Он не отменяет изменения, внесенные в существующие пользовательские файлы конфигурации.

    • Он не удаляет новые gconfили dconfключи, и не отменяет какие- gconfлибо dconfизменения конфигурации.

  • Использование purgeили --purge removeвместо этого removeне отменяет изменения в существующих общесистемных файлах конфигурации, предоставленных другими пакетами или созданных пользователем вручную. Тем не менее, иногда такие изменения отменяются путем удаления пакета ( является ли это , purgeа не remove).

Элия ​​Каган
источник
61

Используйте команду:

sudo apt-get purge --auto-remove packagename

Он удалит необходимые пакеты вместе с зависимостями, установленными с этими пакетами. --auto-removeОпция работает аналогично sudo apt-get autoremove.

pl_rock
источник
1
это решило мою проблему, особенно с certbot
T.Todua
7

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

dpkg --list

Затем удалите данный пакет

sudo apt-get remove package_name

Очистить любой связанный код

sudo apt-get purge package_name

Потом автоудаление

sudo apt-get autoremove

Наконец, сделайте чистку, чтобы проверить, все ли правильно удалено

sudo apt-get clean

Вы хотели бы проверить в списке пакетов, нет ли того, который вы хотите удалить, больше нет в списке, но это необязательно.

Хорошего дня,

user2777677
источник
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]

zanfilip
источник
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-selections | grep PACKAGE_NAME | awk '{print $ 1}' Сначала рекомендуется запустить его с xargs, чтобы пользователь мог видеть, что будет удалено в результате выполнения команды.
Керем Эрсой
0

Другой вариант, у вас есть, это использование debfosterпакета. Это будет интерактивно находить и предлагать пакеты для удаления (и очистки) вместе с зависимыми пакетами.

sudo apt install debfoster
sudo debfoster
# and optionally remove debfoster too
sudo purge debfoster
MacRoman
источник