J'ai activé par erreur le référentiel des mises à jour préliminaires (natty-propose) , puis j'ai mis à niveau tous les packages.
Comment puis-je annuler cela?
Voici les résultats du test de instructions de @ enzotib et le résultats de test de mes instructions .
Voici un moyen plus général de revenir des packages installés localement, des packages proposés et de backports vers le canal stable + updates. Alors que les autres réponses sont correctes et fonctionnent de manière similaire, je pense que cette approche est plus élégante.
-proposed
ou -backports
dans vos fichiers /etc/apt/sources.list
et /etc/apt/sources.list.d/*
.Ajoutez un fichier apt-preferences, par exemple. /etc/apt/preferences.d/99-back-to-stable-updates
contenant (pour precise
ici - remplacez par votre version):
Package: *
Pin: release a=precise
Pin-Priority: 1001
Package: *
Pin: release a=precise-updates
Pin-Priority: 1001
Package: *
Pin: release a=precise-security
Pin-Priority: 1001
Package: *
Pin: release a=precise-proposed
Pin-Priority: -10
Package: *
Pin: release a=precise-backports
Pin-Priority: -10
Ce repérage de> 1000 forcera apt à forcer la rétrogradation des paquetages à partir de ce canal et une priorité inférieure à 0 sur les canaux -proposed
et -backports
entraînera également la suppression de tout paquet supplémentaire.
Maintenant courir
Sudo apt-get update
Sudo apt-get dist-upgrade
Inspectez la solution proposée par apt, et si vous pensez que tout va bien, acceptez-la. Si vous avez besoin de vérifier pourquoi et quelle version il sera rétrogradé, cochez-le avec apt-cache policy packagename
pour voir quelles versions sont disponibles et quelle apt décide quel est le candidat à l'installation.
Supprimez à nouveau le fichier /etc/apt/preferences.d/99-back-to-stable-updates
, car il n’est plus nécessaire.
Merci à mlind
sur les forums Ubuntu pour cette explication sur l’identification son message il y a plus de 5 ans - et pourtant cela m’a beaucoup aidé aujourd’hui.
Cette page suggère que l'épinglage Apt peut être utilisé pour rétrograder à partir d'un référentiel entier en s'appuyant sur le fait que des priorités d'épingles supérieures à 1 000 peuvent provoquer des déclassements de paquets .
Une solution pourrait alors consister à incrémenter temporairement de 1 000 les priorités par défaut de tous les fichiers de paquet, à l'exception de ceux du référentiel natty-proposed
:
apt-cache policy | awk '
/^ [0-9]+ / {
p = $1;
getline;
r = $0;
if (r !~ /a=natty-proposed/) p += 1000;
print "Package: *\nPin: " r "\nPin-priority: " p "\n"
}
' | Sudo tee /etc/apt/preferences.d/downgrade-from-natty-proposed
(Remarque: cette méthode n'augmente pas la priorité des fichiers de package dont les champs de publication contiennent des virgules. Voir cette question .)
Après cela, apt-get --simulate upgrade
peut être utilisé pour tester la détection de la rétrogradation réussie. Après avoir vérifié que les dégradations correctes sont détectées, Sudo apt-get upgrade
devrait suffire à effectuer la rétrogradation.
Une fois la rétrogradation terminée, utilisez les sources logicielles pour désactiver le référentiel Mises à jour préliminaires (natty-proposée) , puis supprimez l'augmentation temporaire de la priorité:
Sudo rm /etc/apt/preferences.d/downgrade-from-natty-proposed
Enfin, redémarrez de manière à ce que tous les programmes en cours d’exécution soient à la version actualisée.
Je ne peux pas trouver une solution plus simple que la suivante. Pourtant, j'espère que quelqu'un obtiendra une meilleure réponse.
Le script suivant pouvant exécuter le déclassement
#!/bin/bash
# get a list of installed packages
dpkg --get-selections | awk '{ print $1 }' > all-packages
# run apt-cache policy on each of them, then elaborate with the awk script
apt-cache policy $(<all-packages) |
./get-prev-pkg-vers >old-versions
# install previous version of packages
Sudo apt-get --simulate install $(< old-versions)
Le script awk
, nommé get-prev-pkg-vers
est le suivant
#!/usr/bin/awk -f
/^[^ ]/ {
package = $1
gsub(":", "", package)
search_next = 0
}
/^ [^ ]/ {
installed = 0
version = $1
if (search_next == 1) {
print package "=" version
search_next = 0
}
}
/^ \*\*\* [^ ]/ {
installed = 1
}
/^ [^ ]/ {
branch = $3
if (installed == 1 && branch ~ /proposed/) {
search_next = 1
}
installed = 0
}
Lors de l'exécution du script, le référentiel proposé N'A PAS dû être désactivé pour le moment.
N'oubliez pas de définir le bit exécutable sur les deux scripts.
Un problème avec cette approche est que tous les paquetages rétrogradés seront installés manuellement (même ceux installés automatiquement).
Pour plus de sécurité, ajoutez l'option --simulate
à apt-get
à la fin du script bash.
Il n'est probablement pas nécessaire de revenir sur tous les paquets de natty-propose: la plupart des paquets seront bientôt mis à jour vers les mêmes versions via natty-updates de toute façon.
Si vous rencontrez un problème avec un package, vous pouvez rétablir ce package à l'aide de la méthode présentée par darent (après avoir désactivé -proposed), ou vous pouvez utiliser Sudo aptitude install packagename/natty
. Mais plus important encore, vous devriez créer un bogue contre le paquet. Peu de personnes testent réellement les propositions natty proposées, et si des régressions (= nouveaux problèmes) se produisent, elles devraient certainement être rapportées. Sinon, ils pourraient se retrouver dans les mises à jour pour tous les utilisateurs d'ubuntu. Donc, si vous avez des problèmes, s'il vous plaît signaler.
Dans synaptic, vous pouvez désactiver le référentiel des propositions et mettre à jour vos sources. Ensuite, vous verrez que tous les packages qui ont été mis à jour apparaissent comme installés localement (car ils ne sont plus dans le dépôt).
Maintenant, vous devrez "déclasser" ces paquets. Sélectionnez un par un, et dans le menu supérieur, choisissez:
package > force version
(ou Control + E)
Un menu apparaîtra avec les options disponibles. Je choisirais le numéro de version inférieur pour chaque paquet. Si vous faites une erreur et qu'une version plus récente figure dans le dépôt normal, elle sera résolue dans une mise à jour ultérieure.
Une solution rapide consisterait à utiliser la commande purge-ppa pointant vers le référentiel proposé, mais je ne sais pas si cela fonctionnerait avec eux. Je ne l’ai utilisé que pour purger les paquets externes de ppa et rétrograder les versions officielles d’ubuntu. Je ne vous recommanderai pas de faire cela dans ce cas, peut-être que quelqu'un sait si c'est une méthode sûre ...
J'ai proposé de fournir une fonction permettant de rétrograder tous les packages proposed
avec une simple commande maintenue équivalente à ppa-purge
à l'adresse https://bugs.launchpad.net/ubuntu/+ source/software-properties/+ bug/1810499 car les publications ici semblent encore représenter l’état du système.
"proposé" - l'obtenir?