Respuestas:
Bueno, puedes eliminar y reinstalar los paquetes
ppa-purge
probablemente sea su mejor apuesta para un escape limpio. Simplemente vuelve a agregar el PPA del que vino el paquete y luego lo usas ppa-purge
para matarlo. No estoy seguro de cuántos PPA ha instalado, pero si son menos de 10, estaría buscando hacerlo.
Si crees que ese método es demasiado suave, acabo de escribir algunos bash
-porn para ayudar a identificar versiones de paquetes cuya fuente de instalación ahora solo existe localmente /var/lib/dpkg/status
. Esto no es lo mismo que los paquetes "huérfanos".
for p in `dpkg-query --showformat='${Package} ' -W`; do
if [[ $(apt-cache policy $p | grep -Pzo "\*\*\* [^\n]+\s+100") ]]; then
echo $p;
fi;
done
No estoy seguro de si esto es perfecto todavía, pero pruébalo. Tenga en cuenta que solo imprimirá los nombres de los paquetes. Tendrá que desinstalar / reinstalar manualmente cada paquete.
Para hacer eso, primero mire qué está disponible para ese paquete ejecutando apt-cache policy <package>
y verá una lista de las versiones del paquete (incluida la /var/lib/dpkg/status
versión). Encuentra el externo más cercano y ejecuta:
sudo apt-get install <package>=<version>
Es posible que necesite agregar un --reinstall
después de install
pero ver cómo va.
ppa-purge
fue eliminado? Está en los repositorios para Trusty, así como en cualquier otra versión compatible .
He escrito un script más completo que reconocerá los paquetes cuya versión actual no es de un PPA, y tienen una versión alternativa disponible para PPA. Después de ejecutarse, imprime un comando listo para ejecutar que degradará dichos paquetes a sus versiones 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}"