Как я могу удалить все пакеты из одного источника Debian?


8

Ранее я добавил несколько внешних источников, /etc/apt/sources.list.dно теперь хочу удалить один из них. Я также хочу:

  • удалить все пакеты исключительно из этого источника
  • вернуть все пакеты к версиям в моем оригинальном источнике (ах)
  • в качестве альтернативы, составьте список всех пакетов из этого источника, чтобы я мог выполнить эту процедуру вручную

Как я могу это сделать?

Ответы:


11

В зависимости от конфигурации репозитория, который вы хотите удалить, apt list --installedможет предоставить достаточно информации для определения пакетов, которые необходимо удалить или откатить до более ранней версии. Другой вариант, если хранилище определяет уникальный «Источник», заключается в использовании aptitude search '~i ~Oorigin'( originпри необходимости замене ).

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


это выглядит многообещающе, могу ли я получить список происхождения как-нибудь?
Давид.Libremone

2
Да, apt-cache policyпокажет вам происхождение всех ваших настроенных репозиториев (ищите o=в выходных данных).
Стивен Китт

3

Или с помощью dpkg:

dpkg -l | awk '/^.i/ {print $2}' | xargs apt-cache policy | awk '/^[a-z0-9.\-]+:/ {pkg=$1}; /\*\*\*/ {OFS="\t"; ver=$2; getline; print pkg,ver,$2,$3}'|grep -v /var/lib/dpkg/status| sed -e 's/://'|awk '{printf "%-40s %-36s %-36s %-16s \n",$1,$2,$3, $4}' | grep -i yourkeyword

Например

dpkg -l | awk '/^.i/ {print $2}' | xargs apt-cache policy | awk '/^[a-z0-9.\-]+:/ {pkg=$1}; /\*\*\*/ {OFS="\t"; ver=$2; getline; print pkg,ver,$2,$3}'|grep -v /var/lib/dpkg/status| sed -e 's/://'|awk '{printf "%-40s %-36s %-36s %-16s \n",$1,$2,$3, $4}' | grep -i multimedia

возвращает:

audacious                                1:3.8.2-dmo1                         http://www.deb-multimedia.org        stretch/main     
audacious-plugins                        1:3.8.2-dmo1                         http://www.deb-multimedia.org        stretch/main     
audacious-plugins-data                   1:3.8.2-dmo1                         http://www.deb-multimedia.org        stretch/main    
snipp

Это показывает мне пакеты с deb-multimedia.org. Тот же результат сdpkg-query -W -f='${Section}\t\t${Package}\n' | awk '/^.i/ {print $2}' | xargs apt-cache policy | awk '/^[a-z0-9.\-]+:/ {pkg=$1}; /\*\*\*/ {OFS="\t"; ver=$2; getline; print pkg,ver,$2,$3}'|grep -v /var/lib/dpkg/status| sed -e 's/://'|awk '{printf "%-40s %-36s %-36s %-16s \n",$1,$2,$3, $4}' | egrep -i multimedia

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.