LINUX.ORG.RU

Как быстро удалить уйму привязанных пакетов?

 


2

1

Типичная ситуация: устанавливаю в консольном Debian всего один пакет mplayer -

apt --no-install-recommends install   mplayer 
а попутно устанавливается туча сопутствующих пакетов - аж 84 штуки:

Выбор ранее не выбранного пакета mplayer.                                             
Подготовка к распаковке …/83-mplayer_2%3a1.3.0-8+b4_amd64.deb …                       
Распаковывается mplayer (2:1.3.0-8+b4) …                                              
Настраивается пакет libgme0:amd64 (0.6.2-1) …                                         
Настраивается пакет libssh-gcrypt-4:amd64 (0.8.7-1+deb10u1) …                         
Настраивается пакет libpython2.7:amd64 (2.7.16-2+deb10u1) …                           
Настраивается пакет libmpg123-0:amd64 (1.25.10-2) …                                   
Настраивается пакет libspeex1:amd64 (1.2~rc1.2-1+b2) …                                
Настраивается пакет libshine3:amd64 (3.1.1-2) …                                       
Настраивается пакет libcaca0:amd64 (0.99.beta19-2.1) …                                
Настраивается пакет libtwolame0:amd64 (0.3.13-4) …                                    
Настраивается пакет libx264-155:amd64 (2:0.155.2917+git0a84d98-2) …                   
Настраивается пакет libsoxr0:amd64 (0.1.2-3) …                                        
Настраивается пакет libvorbisidec1 (1.2.1+git20180316-3) …                            
Настраивается пакет libenca0:amd64 (1.19-1+b1) …                                      
Настраивается пакет libtdb1:amd64 (1.3.16-2+b1) …                                     
Настраивается пакет libaom0:amd64 (1.0.0-3) …                                         
Настраивается пакет libgdk-pixbuf2.0-common (2.38.1+dfsg-1) …                         
Настраивается пакет libcodec2-0.8.1:amd64 (0.8.1-2) …                                 
Настраивается пакет libdvdread4:amd64 (6.0.1-1) …                                     
Настраивается пакет libxxf86dga1:amd64 (2:1.1.4-1+b3) …                               
Настраивается пакет libcdio18:amd64 (2.0.0-2) …                                       
Настраивается пакет libcrystalhd3:amd64 (1:0.0~git20110715.fdd2f19-13) …              
Настраивается пакет libmpeg2-4:amd64 (0.5.1-8) …                                      
Настраивается пакет libxvidcore4:amd64 (2:1.3.5-1) …                                  
Настраивается пакет libwbclient0:amd64 (2:4.9.5+dfsg-5+deb10u1) …                     
Настраивается пакет libjansson4:amd64 (2.12-1) …                                      
Настраивается пакет libsnappy1v5:amd64 (1.1.7-1) …                                    
Настраивается пакет libtalloc2:amd64 (2.1.14-2) …                                     
Настраивается пакет liba52-0.7.4:amd64 (0.7.4-19) …                                   
Настраивается пакет libgles2:amd64 (1.1.0-1) …                                        
Настраивается пакет libass9:amd64 (1:0.14.0-2) …                                      
Настраивается пакет libtevent0:amd64 (0.9.37-1) …                                     
Настраивается пакет libva2:amd64 (2.4.0-1) …                                          
Настраивается пакет liblirc-client0:amd64 (0.10.1-6.2~deb10u1) …                      
Настраивается пакет shared-mime-info (1.10-1) …                                       
Настраивается пакет libfaad2:amd64 (2.8.8-3) …                                        
Настраивается пакет libxinerama1:amd64 (2:1.1.4-2) …                                  
Настраивается пакет libsdl1.2debian:amd64 (1.2.15+dfsg2-4) … 
..............................................................................................
Настраивается пакет libdvdnav4:amd64 (6.0.0-1) …                                      
Настраивается пакет libaa1:amd64 (1.4p5-46) …                                         
Настраивается пакет libzvbi0:amd64 (0.2.35-16) …                                      
Настраивается пакет libldb1:amd64 (2:1.5.1+really1.4.6-3) …                           
Настраивается пакет libcdio-cdda2:amd64 (10.2+0.94+2-4) …                             
Настраивается пакет libx265-165:amd64 (2.9-4) …                                       
Настраивается пакет libcdio-paranoia2:amd64 (10.2+0.94+2-4) …                         
Настраивается пакет samba-libs:amd64 (2:4.9.5+dfsg-5+deb10u1) …                       
Настраивается пакет libopenal1:amd64 (1:1.19.1-1) …                                   
Настраивается пакет libxvmc1:amd64 (2:1.0.10-1) …                                     
Настраивается пакет libavutil56:amd64 (7:4.1.6-1~deb10u1) …                           
Настраивается пакет libgdk-pixbuf2.0-0:amd64 (2.38.1+dfsg-1) …                        
Настраивается пакет libpostproc55:amd64 (7:4.1.6-1~deb10u1) …                         
Настраивается пакет libsmbclient:amd64 (2:4.9.5+dfsg-5+deb10u1) …                     
Настраивается пакет libswscale5:amd64 (7:4.1.6-1~deb10u1) …                           
Настраивается пакет libswresample3:amd64 (7:4.1.6-1~deb10u1) …                        
Настраивается пакет librsvg2-2:amd64 (2.44.10-2.1) …                                  
Настраивается пакет libavcodec58:amd64 (7:4.1.6-1~deb10u1) …                          
Настраивается пакет libchromaprint1:amd64 (1.4.3-3) …                                 
Настраивается пакет libavformat58:amd64 (7:4.1.6-1~deb10u1) …                         
Настраивается пакет mplayer (2:1.3.0-8+b4) …  


Тут все понятно, вопросов нет.

Следующее действие - а как теперь тоже одим махом снести все эти пакеты?

Понятно, что если удалить оснвной пакет mplayer, то удалится лишь он один, а сопутствующие пакеты останутся.

Конечно, можно скопировать список этих пакетов и подставить их в командную строку или скрипт -

apt remove  mplayer  libgme0 libssh-gcrypt  libpython2.7 libmpg123-0 ... libavformat58
но перед этим предстоит нудная работа по очистке имен пакетов от суффксов типа :amd64 (0.8.7-1+deb10u1) и т.п.

В-общем, косячное решение.

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


Ответ на: комментарий от Kolya95

А ведь действительно! Надо сначала удалить «основной» mplayer, а потом выполнить autoremove ?

Как-то не задумывался о логике работы этого autoremove, тупо его использовал и всё :)

Хорошо, а если я после «основного» пакета mplayer установил еще несколько «основных» пакетов с тучей сопутствующих пакетов, то наверное, целесообразно начинать процедуру удаления пакетов начиная с последнего, имхо?

Только не помню, в какой последовательности их ставил - это можно как-то узнать?

Red7 ()
Ответ на: комментарий от Red7

У тебя будут проблемы, только если какие-то пакеты из сопутствующих отметились как manually installed (например, если ты сделал apt install some-dependency). Иначе можно удалить нужные «основные» пакеты в любой последовательности и потом сделать apt autoremove.

Если интересна последовательность установки, смотри /var/log/dpkg.log*.

lu4nik ★★★ ()
Ответ на: комментарий от Vsevolod-linuxoid

Хорошо, а зачем эти две команды -

apt install -f
apt autoremove

Из них нужно выполнить только какую-то одну, или обе вместе в указанном порядке?

И для чего нужна первая команда?

Red7 ()
Ответ на: комментарий от Red7

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

Вторая — удаляет лишние пакеты, что нашла первая.

Vsevolod-linuxoid ★★★★★ ()

Парни, все огромное спасибо! Чтобы я без вас делал!

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

А теперь уже с чувством, толком, расстановкой! :)

Red7 ()
Ответ на: комментарий от Vsevolod-linuxoid

-f means –fix-broken

Всегда мысленно спотыкаюсь об это. Чаще всего -f обозначает –file или –force у многих команд.

wandrien ()

autoremove, как рекомендовали выше; есть, правда одно но — не всегда все пакеты будут вычещены (почему так — неизвестно, читал как-то философские измышления, что дело, мол, в том, что люди ставят пакеты aptitude, а удаляют apt-ом, или что какие-то пакеты у каких-то других в рекомендованных, но это все слухи и неправда, ибо debian и магия).

Есть более изощренный метод:

sudo aptitude install --add-user-tag keyword-tag package.
sudo aptitude purge '?user-tag(keyword-tag)'

Где keyword-tag - ключевое слово, назначаемое группе устанавливаемых пакетов.

Тогда точно все, что установилось, вычистится вместе с конфигурационными файлами (не теми, что в хомяке, понятное дело).

Ну, и, если ты все же сделал aptitude purge package, то конфиги связанных пакетов у тебя не вычистятся.

Вычистить их помогает колдунство (работает в bash):

aptitude purge ~c

Говорят, что последняя команда вообще максимально волшебная и вычищает не только старые конфиги, но и все «пакеты-сироты», но это не точно, ибо тоже магия и Кашпировский. Хотя ядра старые она, ЕМНИП, чистит.

gill_beits ★★★★ ()
Ответ на: комментарий от gill_beits

«неполноценные» пакеты показываются командой

dpkg --list | grep -vp "^ii"

пример

$ dpkg --list | grep -v "^ii"
Желаемый=неизвестно[u]/установить[i]/удалить[r]/вычистить[p]/зафиксировать[h]
| Состояние=не[n]/установлен[i]/настроен[c]/распакован[U]/частично настроен[F]/
            частично установлен[H]/trig-aWait/Trig-pend
|/ Ошибка?=(нет)/требуется переустановка[R] (верхний регистр
в полях состояния и ошибки указывает на ненормальную ситуацию)
||/ Имя                                           Версия                              Архитектура  Описание
========================================================
rc  linux-modules-5.4.0-37-generic                5.4.0-37.41                         amd64        Linux kernel extra modules for version 5.4.0

пакет linux-modules-5.4.0-37-generic удален но остались какие-то ошметки.

pfg ★★★★ ()
Последнее исправление: pfg (всего исправлений: 1)

apt не знаю, пользуюсь только aptitude TUI. там если нажать - на mplayer, то удалится и mplayer и всё, что он понаставил

buratino ★★★★★ ()
Ответ на: комментарий от Vsevolod-linuxoid

Первая команда ищет неполадки в пакетной системе, типа пакетов, которые не нужны, криво уставновленных, неспособных обновиться…

Вторая — удаляет лишние пакеты, что нашла первая.

Эм, что?

Первая команда не ищет лишние пакеты – она пытается исправить сломанное состояние, которого в штатных случаях вообще быть не должно. Наличие установленных пакетов, от которых никто не зависит, неполадкой не является.

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

Не вводите людей в заблуждение.

Rootlexx ★★ ()
Ответ на: комментарий от gill_beits

Ну, и, если ты все же сделал aptitude purge package, то конфиги связанных пакетов у тебя не вычистятся.

--purge-unused.

Говорят, что последняя команда вообще максимально волшебная и вычищает не только старые конфиги, но и все «пакеты-сироты», но это не точно, ибо тоже магия и Кашпировский

aptitude делает то, что вы ей сказали: полностью удаляет пакеты в состоянии config-files. Пакеты-сироты же в таком состоянии находиться, понятное дело, не могут, так что их удаление происходит лишь по причине того, что aptitude по умолчанию автоматически удаляет такие пакеты.

Rootlexx ★★ ()
Ответ на: комментарий от amd_amd

я всегда удаляю командой

apt autopurge имя_пакета.

Кроме того, если всегда используете purge, то, возможно, имеет смысл поместить в /etc/apt/apt.conf.d/99always_purge.conf:

APT::Get::Purge "true";
Rootlexx ★★ ()

Отлично, отлично! Сколько нового узнал благодаря вам! :)

Парни, а не будете ли вы так же добры, и не подскажете, как можно избавится от постоянного употребления этого ключа -

--no-install-recommends
Длиннющий, зараза, часто забываю.
Может, в конфиге apt что-то подкрутить?

Попадался такой совет:

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

/etc/apt/apt.conf.d/

и прописать там

Apt::Install-Recommends «false»;


но что-то он у меня не срабатывает...

Red7 ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей