Как удалить все пакеты из определенного хранилища?

Для плавного обновления с 10.04 до 10.10 я хотел бы удалить все пакеты, которых нет в репозиториях по умолчанию (например, chromium PPA и сторонние репозитории). Как проще всего (желательно CLI) найти и удалить эти пакеты?

Редактировать: этот вопрос не ограничивается PPA, у меня также есть репозиторий x2go, поэтому я ищу общую команду для удалить пакеты, принадлежащие определенному хранилищу. Для PPA на вопрос , как можно удалить PPA , есть отличные ответы.

30
задан 13 April 2017 в 15:23

6 ответов

Этот сценарий может перечислить все пакеты с конкретного сервера/ответвления (изменяющий две заявленных переменные):

#!/bin/bash

server="http://it.archive.ubuntu.com/ubuntu/"
branch="maverick-updates/main"

apt-cache policy $(dpkg -l | awk 'NR >= 6 { print $2 }') |
  awk -v server="$server" -v branch="$branch" \
    '/^[^ ]/      { split($1, a, ":"); pkg = a[1] }
    nextline == 1 { nextline = 0; if ($2 == server && $3 == branch) print pkg }
    /\*\*\*/      { nextline = 1 }'

если необходимо перечислить все пакеты, не прибывающие из конкретного сервера, независимо из ответвления, замените предпоследнюю строку:

nextline == 1 { nextline = 0; if ($2 != server) print pkg }
12
ответ дан 13 April 2017 в 15:23

Проверьте PPA-продувки Install ppa-purge .

Использование:

ppa-purge -purge <nameofppa> [-s hostserver]

Hostserver по умолчанию принимает значение ppa.launchpad.net.

Вот ссылка на справочную страницу для команды ppa-purge Manpage icon для справки.

0
ответ дан 13 April 2017 в 15:23

Чтобы хотя бы найти их, начните с отключения PPA и запустите apt-get update. Затем установите apt-show-versions. Запуск apt-show-versions | grep 'No available' даст вам список всех установленных пакетов, которые не могут быть найдены в ваших настроенных репозиториях. С некоторой магией командной строки вы, вероятно, можете вырезать только имена пакетов и передать их в apt-get remove:

 for i in `apt-show-versions | grep 'No available' | cut -d' ' -f 1` ; do  sudo apt-get remove -y $i ; done

Обратите внимание, что это пройдет список, возвращенный из apt-show-versions, и удалит их по одному один. В зависимости от того, что он находит, это может привести к удалению чего-то непреднамеренного из-за зависимостей, поэтому сначала проверьте это.

0
ответ дан 13 April 2017 в 15:23

Я нашел применение ppa-продувки трудным.

Откройте диспетчер пакетов Synaptic в разделе «Система», затем выберите «Настройки», «Хранилища».

Удалите ненужные.

Готово!

0
ответ дан 13 April 2017 в 15:23

Вот GUI способы сделать это. Надеюсь, это поможет тем, кто не предпочитает CLI. Шаги просты и легко следовать.

  1. Открыть менеджер синаптических пакетов . Если он не установлен, установите его:

    sudo apt-get install synaptic
    
  2. При открытии нажмите кнопку Origin внизу слева. В нем будут перечислены все хранилища в верхней левой части. Выберите конкретный репозиторий, для которого нужно удалить пакеты. В нем будут перечислены все пакеты в этом хранилище. Щелкните по первому полю i, e S или Установленная версия , чтобы сначала показать установленные пакеты.

  3. Теперь выберите все пакеты для удаления.

    Подсказки для удаления:

    1. Выберите первый пакет, затем удерживайте клавишу Shift и снова выберите последний пакет, чтобы выбрать все. Затем щелкните правой кнопкой мыши поле квадрат и выберите метку для удаления или метку для полного удаления .

    2. или Выберите любые пакеты и нажмите Ctrl + A , чтобы выбрать все. Затем щелкните правой кнопкой мыши поле квадрат и выберите метку для удаления или метку для полного удаления.

Вот и все. Удалит без проблем. Я также приложил изображение, чтобы сделать его более четким. Надеюсь, это поможет. :)

image

0
ответ дан 13 April 2017 в 15:23

Преодоление aptitudeошибка мультидуги для ppa-purge

Обычно, как Vadim Rutkovsky и Takkat объяснили, работая ppa-purge с синтаксисом по умолчанию эффективный способ удалить все пакеты, обеспеченные PPA, правильно понижая их до версий, обеспеченных в других настроенных источниках программного обеспечения, когда это возможно.

Однако как Takkat указал, ошибка 831768 предотвращает ppa-purge от работы правильно для удаления пакетов мультидуги (как 32-разрядные пакеты, установленные в 64-разрядных системах). Это вызвано тем, что aptitude не может обработать конфликтующие зависимости в пакетах мультидуги (это - то, что ошибка о), и поведение по умолчанию ppa-purge должен использовать aptitude понизить пакеты.

К счастью, ppa-purge принимает -i флаг, который заставляет это предпочитать apt-get кому: aptitude как его бэкенд. Как зарегистрировано в отчет об ошибках, с помощью apt-get эффективная альтернатива ручному вызову aptitude, так выполнение ppa-purge с -i флаг должен быть эффективным обходным решением для удаления/понижения всех пакетов, обеспеченных PPA, включая пакеты мультидуги.

Как сделать это

Вот синтаксис:

sudo ppa-purge -i ppa:ppaowner/ppaname

Как обычно (то же как тогда, когда -i флаг не используется):

  • ppaowner заменяется владельцем PPA.
  • /ppaname является дополнительным. Если существующий, ppaname заменяется названием PPA. В противном случае это принимает значение по умолчанию к ppa.

Например, предположите, что у меня был PPA для нестабильных сборок qBittorrent, установленного, и я хотел удалить его полностью, автоматически понижение qBittorrent к любой версии доступно посредством моего другого исходного использования программного обеспечения apt-get негласно вместо aptitude. Затем я работал бы:

sudo ppa-purge -i ppa:hydr0g3n/qbittorrent-unstable

Где это документируется

По некоторым причинам, несколько полезных опций для ppa-purge не документируются в его страницу руководства, включая -i. Но можно получить информацию о них путем выполнения ppa-purge -h (или просто ppa-purge без аргументов):

ek@Del:~$ ppa-purge -h
Usage: sudo ppa-purge [options] <ppa:ppaowner>[/ppaname]

ppa-purge will reset all packages from a PPA to the standard
versions released for your distribution.

Options:
    -p [ppaname]        PPA name to be disabled (default: ppa)
    -s [host]       Repository server (default: ppa.launchpad.net)
    -d [distribution]   Override the default distribution choice.
    -y          Pass -y --force-yes to apt-get or -y to aptitude
    -i          Reverse preference of apt-get upon aptitude.
    -h          Display this help text

Example usage commands:
    sudo ppa-purge xorg-edgers
    will remove https://launchpad.net/~xorg-edgers/+archive/ppa

    sudo ppa-purge -p xorg-testing sarvatt
    will remove https://launchpad.net/~sarvatt/+archive/xorg-testing

    sudo ppa-purge ppa:ubuntu-x-swat/x-updates
    will remove https://launchpad.net/~ubuntu-x-swat/+archive/x-updates

Notice: If ppa-purge fails for some reason and you wish to try again,
(For example: you left synaptic open while attempting to run it) simply
uncomment the PPA from your sources, run apt-get update and try again.

"Обратное предпочтение Кв. - добирается на способность", является немного загадочным. Путем рассмотрения соответствующей части исходного кода (ppa-purge просто сценарий оболочки, в конце концов), мы видим, что это означает, что поведение по умолчанию состоит в том, чтобы предпочесть aptitude кому: apt-get, и -i отметьте инвертирует это предпочтение.

18
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: