Відповіді:
Добре ви можете видалити та перевстановити пакети
ppa-purge
це, мабуть, все-таки найкраща ставка на чисту втечу. Просто повторно додавши PPA, з якого взявся пакет, а потім використати його ppa-purge
для вбивства. Я не впевнений, скільки PPA ви встановили, але якщо їх менше 10, я б дивився на це.
Якщо ви вважаєте, що метод занадто м'який, я лише написав bash
-porn, щоб допомогти визначити версії пакетів, джерело встановлення яких існує лише локально /var/lib/dpkg/status
. Це не те саме, що "осиротілі" пакети.
for p in `dpkg-query --showformat='${Package} ' -W`; do
if [[ $(apt-cache policy $p | grep -Pzo "\*\*\* [^\n]+\s+100") ]]; then
echo $p;
fi;
done
Я не впевнений, чи все це ідеально, але дайте йому піти. Зверніть увагу: він буде роздруковувати лише назви пакетів. Вам доведеться вручну видалити / перевстановити кожен пакет.
Для цього спочатку подивіться, що доступно для цього пакета, запустівши, apt-cache policy <package>
і ви побачите список версій пакету (включаючи /var/lib/dpkg/status
версію). Знайдіть найближчий зовнішній і запустіть:
sudo apt-get install <package>=<version>
Можливо, вам потрібно буде додати --reinstall
після, install
але подивіться, як це відбувається.
ppa-purge
його видалили? Це у репортажі для Trusty, як і будь-якого іншого підтримуваного випуску .
Я написав більш повний скрипт, який розпізнає пакети, поточна версія яких не є з PPA, і вони мають альтернативну версію, доступну для PPA. Після запуску він друкує готову до запуску команду, яка знизить такі пакети до їх версій PPA.
https://gist.github.com/peci1/2d7859857fdad73ee8443f5ecd5ee5a3
#!/usr/bin/env bash
# BSD 3-clause license, copyright Martin Pecka @ 2019
# This script outputs a command that will revert all packages from non-PPA versions to their latest PPA version.
# This may be handy i.e. for finding packages for which you installed a newer version from a .deb file, or after
# incompletely removing a PPA.
export LC_ALL=C
command=""
for p in `dpkg-query --showformat='${Package} ' -W`; do
if [[ $(apt-cache policy $p | grep -Pzo "\*\*\* [^\n]+\s+100") ]]; then
versions=$(apt-cache policy $p | tr "\n" "\r" | grep -Po '(?<=\r )[ *]{3} [^\r]+ [0-9]+\r\s+[0-9]+' | sed 's/ [0-9]\+\r\s\+\([0-9]\+\)/ \1/g' | tr "\r" "\n")
installable_versions=$(echo "${versions}" | grep -v " 100$")
version_to_install=$(echo "${installable_versions}" | head -n1 | grep -Po "\s+\K.*(?= [0-9]+$)")
if [[ ! -z "${version_to_install}" ]]; then
echo "${p}=${version_to_install}"
command="${command} ${p}=${version_to_install}"
else
echo "${p}: no PPA version"
fi
fi;
done
echo "To revert packages to their latest PPA version, call the following command as root. Please, carefully go through the list of changes apt-get will present to you!"
echo "apt-get install ${command}"