Antworten:
Nun, Sie können die Pakete entfernen und neu installieren
ppa-purge
ist wahrscheinlich immer noch die beste Wahl für eine saubere Flucht. Fügen Sie einfach das PPA hinzu, von dem das Paket stammt, und verwenden Sie es dann ppa-purge
, um es zu beenden. Ich bin mir nicht sicher, wie viele PPAs Sie installiert haben, aber wenn es weniger als 10 sind, würde ich dies versuchen.
Wenn Sie der Meinung sind, dass diese Methode zu weich ist, habe ich gerade bash
-porn geschrieben, um Paketversionen zu identifizieren, deren Installationsquelle jetzt nur noch lokal in vorhanden ist /var/lib/dpkg/status
. Dies ist nicht dasselbe wie "verwaiste" Pakete.
for p in `dpkg-query --showformat='${Package} ' -W`; do
if [[ $(apt-cache policy $p | grep -Pzo "\*\*\* [^\n]+\s+100") ]]; then
echo $p;
fi;
done
Ich bin mir nicht sicher, ob dies noch perfekt ist, aber probieren Sie es aus. Beachten Sie, dass nur die Namen der Pakete ausgedruckt werden. Sie müssen jedes Paket manuell deinstallieren / neu installieren.
Schauen Sie sich dazu zunächst an, was für dieses Paket verfügbar ist, apt-cache policy <package>
und sehen Sie eine Liste der Paketversionen (einschließlich der /var/lib/dpkg/status
Version). Suchen Sie die nächste externe und führen Sie Folgendes aus:
sudo apt-get install <package>=<version>
Möglicherweise müssen Sie eine hinzufügen , --reinstall
nachdem die install
aber sehen , wie es geht.
ppa-purge
nach entfernt? Es ist in den Repos für Trusty sowie in jeder anderen unterstützten Version enthalten .
Ich habe ein vollständigeres Skript geschrieben, das Pakete erkennt, deren aktuelle Version nicht von einer PPA stammt, und die eine alternative PPA-verfügbare Version haben. Nach der Ausführung wird ein sofort einsatzbereiter Befehl gedruckt, mit dem solche Pakete auf ihre PPA-Versionen heruntergestuft werden.
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}"