Risposte:
Bene puoi rimuovere e reinstallare i pacchetti
ppa-purge
è probabilmente ancora la soluzione migliore per una fuga pulita. Basta aggiungere nuovamente il PPA da cui proviene il pacchetto e poi usarlo ppa-purge
per ucciderlo. Non sono sicuro di quanti PPA hai installato, ma se è inferiore a 10, starei cercando di farlo.
Se ritieni che questo metodo sia troppo morbido, ho appena scritto un po ' bash
-porn per aiutare a identificare le versioni del pacchetto la cui fonte di installazione ora esiste solo localmente in /var/lib/dpkg/status
. Questo non è lo stesso dei pacchetti "orfani".
for p in `dpkg-query --showformat='${Package} ' -W`; do
if [[ $(apt-cache policy $p | grep -Pzo "\*\*\* [^\n]+\s+100") ]]; then
echo $p;
fi;
done
Non sono sicuro che sia perfetto, ma provalo. Nota che stamperà solo i nomi dei pacchetti. Dovrai disinstallare / reinstallare manualmente ciascun pacchetto.
Per fare ciò, guarda prima cosa è disponibile per quel pacchetto eseguendo apt-cache policy <package>
e vedrai un elenco di versioni del pacchetto (inclusa la /var/lib/dpkg/status
versione). Trova quello esterno più vicino ed esegui:
sudo apt-get install <package>=<version>
Potrebbe essere necessario aggiungere un --reinstall
dopo il install
ma vedere come va.
ppa-purge
stato rimosso? È nei repository di Trusty e di ogni altra versione supportata .
Ho scritto uno script più completo che riconoscerà i pacchetti la cui versione corrente non proviene da un PPA e hanno una versione alternativa PPA disponibile. Dopo l'esecuzione, stampa un comando pronto per l'esecuzione che eseguirà il downgrade di tali pacchetti alle loro versioni 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}"