Для плавного обновления с 10.04 до 10.10 я хотел бы удалить все пакеты, которых нет в репозиториях по умолчанию (например, chromium PPA и сторонние репозитории). Какой самый простой способ (желательно CLI) найти и удалить эти пакеты?
Изменить: этот вопрос не ограничивается PPA, у меня также есть хранилище x2go, поэтому я ищу универсальную команду для удаления пакетов, принадлежащих определенному хранилищу. Для PPA, вопрос, как можно удалить PPA, имеет отличные ответы.
package-management
Lekensteyn
источник
источник
Ответы:
Этот скрипт может перечислить все пакеты с определенного сервера / ветви (изменяя две объявленные переменные):
если вам нужно перечислить все пакеты, поступающие не с конкретного сервера, независимо от филиала, замените следующую за последней строку на:
источник
$2 == server && $3 == branch
на$2 != server
мой вопрос получен ответ. Пожалуйста, укажите это в своем ответе :) (branch=
строка может быть удалена). Примечание: предполагается, что все пакеты поступают с одного сервера репозитория.libvpx0
Пакет существует и в основном репозитории , как и в хромом ежедневно PPA. После удаления репозиториев с/etc/apt/sources.list.d
, у меня был еще пакет левого над:libvpx0
. Я «отремонтировали» это следующим образом : удалить библиотеку с DPKG, игнорируя зависимости:sudo dpkg --ignore-depends=libvpx0 --remove libvpx0
. Затем установите его снова из основного репозитория:sudo apt-get install libvpx0
.sudo apt-get install libvpx0=$version_string
, предположив, что два доступных пакета имеют разные строки версий.apt-cache policy $(dpkg -l | awk '/^ii/{print $2}') > policy.txt; awk '!/^ /{pkg=$1}check{print pkg, $2;check=0}/\*\*\*/{check=1} ' policy.txt | grep -v archive.ubuntu
- хорошее начало (добавьте еще,grep -v
чтобы исключить определенные PPA). Версии пакетов, которые не известны ни в одном репо, отображаются как/var/lib/dpkg/status
.Проверьте ppa-продувку .
Использование:
Hostserver по умолчанию
ppa.launchpad.net
.Вот ссылка на справочную страницу для
ppa-purge
команды для справки.источник
Преодоление
aptitude
ошибки Multiarch дляppa-purge
Обычно, как Вадим Рутковский и Takkat уже объяснили , работает
ppa-purge
с синтаксисом по умолчанию является эффективным способом , чтобы удалить все пакеты , предоставляемые PPA, надлежащим образом понижая их версии , представленных в других сконфигурированных источниках программного обеспечения , когда это возможно.Однако, как указал Таккат, ошибка 831768 не позволяет
ppa-purge
правильно работать для удаления многоархивных пакетов (например, 32-разрядных пакетов, установленных в 64-разрядных системах). Это связано с тем, чтоaptitude
не может обрабатывать конфликтующие зависимости в пакетах multiarch (именно в этом и заключается ошибка), а поведение по умолчаниюppa-purge
- использоватьaptitude
для понижения пакетов.К счастью,
ppa-purge
принимает-i
флаг, который заставляет его предпочитать егоapt-get
вaptitude
качестве своего бэкэнда. Как задокументировано в отчете об ошибках, использованиеapt-get
- эффективная альтернатива ручному вызовуaptitude
, поэтому запускppa-purge
с-i
флагом должен быть эффективным обходным путем для удаления / понижения всех пакетов, предоставляемых PPA, включая пакеты multiarch .Как это сделать
Вот синтаксис:
Как обычно (так же, как когда
-i
флаг не используется):ppaowner
заменен владельцем PPA./ppaname
необязательно. Если присутствует,ppaname
заменяется именем PPA. Если нет, то по умолчаниюppa
.Например , предположим, что у меня установлен PPA для нестабильных сборок qBittorrent , и я хотел полностью удалить его, автоматически понижая qBittorrent до любой версии, доступной через другие мои источники программного обеспечения, которые используют
apt-get
за кулисами вместоaptitude
. Тогда я бы побежал:Где это задокументировано
По некоторым причинам, несколько полезных опций
ppa-purge
не описаны на его странице руководства , в том числе-i
. Но вы можете получить информацию о них, запустивppa-purge -h
(или простоppa-purge
без аргументов):«Обратное предпочтение apt-get on aptitude» немного загадочно. Глядя на соответствующую часть исходного кода (
ppa-purge
это просто сценарий оболочки, в конце концов), мы можем видеть , что это означает , что поведение по умолчанию предпочитают ,aptitude
чтобыapt-get
и-i
флаг меняет это предпочтение.источник
ppa-purge
когда не удаляются и не понижаются пакеты, которые больше не предоставляются "очищаемой" системой PPA. Однако вы можете разместить отдельный вопрос по этому поводу, чтобы получить более авторитетный или хорошо документированный ответ.ppa:username/path
. Также PPA должен быть ВКЛЮЧЕН, прежде чем вы попытаетесь его очистить, даже если сценарий сразу отключается после обновления списка пакетов для удаления, он не "находит" уже отключенные PPA.aptitude search ~o
чтобы найти потерянные пакеты без источника установки, если вам нужно удалить что-то, что было удалено из PPA (или было установлено как одноразовое черезdpkg -i
).Вот GUI способы сделать это. Надеюсь, это поможет тем, кто не предпочитает CLI. Шаги просты и легко следовать.
Откройте менеджер синаптических пакетов . Если он не установлен, установите его:
При открытии нажмите на кнопку происхождения внизу слева. В нем будут перечислены все хранилища в верхней левой части. Выберите конкретный репозиторий, для которого нужно удалить пакеты. В нем будут перечислены все пакеты в этом хранилище. Щелкните первое поле i, e S или поле « Установленная версия», чтобы сначала показать установленные пакеты.
Теперь выберите все пакеты для удаления.
Советы, чтобы отметить для удаления:
Выберите первый пакет, затем удерживайте Shiftклавишу и снова выберите последний пакет, чтобы выбрать все. Затем щелкните правой кнопкой мыши на квадратной рамке и выберите метку для удаления или метку для полного удаления .
или выберите любые пакеты и нажмите Ctrl+, Aчтобы выбрать все. Затем щелкните правой кнопкой мыши на квадратной рамке и выберите метку для удаления или метку для полного удаления.
Вот и все. Удалит без проблем. Я также приложил изображение, чтобы сделать его более четким. Надеюсь, это поможет. :)
источник
Чтобы хотя бы найти их, начните с отключения PPA и запустите
apt-get update
. Затем установитеapt-show-versions
. Запускapt-show-versions | grep 'No available'
будет дать вам список всех установленных пакетов , которые не могут быть найдены в сконфигурированных репозиториев. С некоторой магией командной строки вы, вероятно, можете удалить только имена пакетов и передать ихapt-get remove
:Обратите внимание, что это будет проходить через список, возвращенный из,
apt-show-versions
и удалять их один за другим. В зависимости от того, что он находит, это может привести к удалению чего-то непреднамеренного из-за зависимостей, поэтому сначала проверьте это.источник
libvpx0
пакет из дневного хрома PPA. Ответ @ enzotib показал этот пакет.apt-show-versions
как пользователь без полномочий root, ему необходимоsudo apt-show-versions -i
обновить свой кэш и увидеть изменения из недавно удаленных репозиториев / PPA (в противном случае он обновляется только с помощью задания cron.daily)Я обнаружил, что использование ppa-purge затруднительно.
Откройте диспетчер пакетов Synaptic в разделе «Система», затем выберите «Настройки», «Хранилища».
Удалить те, которые вы не хотите.
Выполнено!
источник