Вы здесь

Как полностью удалить пакет с зависимостями в Linux, использующим пакетный менеджер apt.


При установке программ, при помощи пакетного менеджера apt, у многих часто возникаем вопрос как их удалять. Для этого есть команды:

sudo apt-get autoremove имя_программы

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

sudo apt-get remove имя_программы

Команда удаляет пакет не затрагивая зависимости.

sudo apt-get purge имя_программы

Команда удаляет конфигурационные файлы пакета.

Казалось бы, на этом все, но не тут-то было, apt-get autoremove не всегда удаляет всё что было установлено вместе с пакетом.

Что бы наверняка удалить все что было установлено вместе с пакетом, можно посмотреть лог apt:

cat /var/log/apt/history.log | more

Пример вывода этой команды:

Start-Date: 2016-08-03  07:46:19
Commandline: apt-get install samba
Install: python-tdb:amd64 (1.3.8-2, automatic), python-samba:amd64 (2:4.3.9+dfsg
-0ubuntu0.16.04.2, automatic), python-dnspython:amd64 (1.12.0-1, automatic), sam
ba:amd64 (2:4.3.9+dfsg-0ubuntu0.16.04.2), samba-dsdb-modules:amd64 (2:4.3.9+dfsg
-0ubuntu0.16.04.2, automatic), libaio1:amd64 (0.3.110-2, automatic), tdb-tools:a
md64 (1.3.8-2, automatic), attr:amd64 (1:2.4.47-2, automatic), samba-common:amd6
4 (2:4.3.9+dfsg-0ubuntu0.16.04.2, automatic), samba-vfs-modules:amd64 (2:4.3.9+d
fsg-0ubuntu0.16.04.2, automatic), samba-common-bin:amd64 (2:4.3.9+dfsg-0ubuntu0.
16.04.2, automatic), python-ldb:amd64 (2:1.1.24-1ubuntu3, automatic)
End-Date: 2016-08-03  07:47:23

Здесь видно что при установке samba, так же были установлены python-tdb, python-samba и т.д. Соответственно для полного удаления установленного пакета можно набрать команду:

sudo apt-get autoremove --purge python-tdb python-samba python-dnspython samba samba-dsdb-modules libaio1 tdb-tools attr samba-common samba-vfs-modules samba-common-bin python-ldb

Для того что бы не искать и не выбирать эти программы из лога вручную можно спарсить лог:

sudo sed -n '/Commandline: apt-get install имя_пакета/,/End-Date:.*/p' /var/log/apt/history.log | sed -n '/Install.*/p' | sed -e s'/Install: //g' | sed -e s'/:amd64 //g' | sed -e s'/(.[^)]*),\{0,1\}//g' | tr '\n' ' '

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

Что бы отображались программы только при последней установке нужно в конце строки заменить "tr '\n' ' '" на "tail -1", т.е. команда должна быть:

sudo sed -n '/Commandline: apt-get install имя_пакета/,/End-Date:.*/p' /var/log/apt/history.log | sed -n '/Install.*/p' | sed -e s'/Install: //g' | sed -e s'/:amd64 //g' | sed -e s'/(.[^)]*),\{0,1\}//g' | tail -1

На экран выведутся программы, которые были установлены при установке пакета.

Что бы их удалить можно ввести:

sudo sed -n '/Commandline: apt-get install имя_пакета/,/End-Date:.*/p' /var/log/apt/history.log | sed -n '/Install.*/p' | sed -e s'/Install: //g' | sed -e s'/:amd64 //g' | sed -e s'/(.[^)]*),\{0,1\}//g' | tr '\n' ' ' | sudo xargs apt-get autoremove --purge -y

Все что устанавливалось при установке вашего пакета, будет удалено.

Видео по теме:

Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.


Если вам помогла статья, вы можете >>отблагодарить автора<<


Комментарии

На экран выведутся программы, которые были установлены при установке пакета.Что бы их удалить можно ввести:1sudo sed -n '/Commandline: apt-get install имя_пакета/,Не майтесь ерундой. aptitude -D purge имя_пакета удалит пакет со всеми пакетами которые были устанаовлены как зависимотси для него.

А чем эта команда отличается от apt-get autoremove --purge? Попробуйте установить, например, в Ubuntu, lubuntu-desktop, и потом попробуйте удалить обычной командой, этот самый lubuntu-desktop... Хлама останется вагон и тележка.

Оставить комментарий