Comment puis-je revenir d'une mise à niveau au référentiel proposé?

24

J'ai activé par erreur le référentiel des mises à jour préliminaires (natty-propose) , puis mis à niveau tous les packages.

Comment puis-je annuler cela?

Voici les résultats des tests de Les instructions de @ enzotib et le résultats des tests de mes instructions .

    
posée ændrük 31.08.2011 - 19:17
la source

5 réponses

24

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.

  1. Assurez-vous d'avoir supprimé les entrées de -proposed ou -backports dans vos fichiers /etc/apt/sources.list et /etc/apt/sources.list.d/* .
  2. 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
    

    Cet épinglage de > 1000 forcera apt à forcer le déclassement des paquets de ce canal et une priorité de < 0 sur les chaînes -proposed et -backports fera également disparaître tous les paquets supplémentaires.

  3. Maintenant, lancez

    sudo apt-get update
    sudo apt-get dist-upgrade
    

    Inspectez la solution proposée par apt, et si vous pensez que cela vous convient, acceptez-la. Si vous avez besoin de savoir pourquoi et à quelle version il sera rétrogradé, vérifiez-le avec apt-cache policy packagename pour voir quelles versions sont disponibles et quelle apt décide quel est le candidat à installer.

  4. 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 inspiration au sujet de son message d'il y a plus de 5 ans - et pourtant cela m'a beaucoup aidé aujourd'hui.

    
réponse donnée gertvdijk 16.12.2012 - 17:49
la source
4

Cette page suggère que le repérage par Apt peut être utilisé pour rétrograder à partir d'un référentiel entier en tirant parti du fait que < Une href="http://manpages.ubuntu.com/manpages/natty/man5/apt_preferences.5.html"> des priorités d'épingles supérieures à 1 000 peuvent entraîner la dégradation du package .

Une solution pourrait alors consister à incrémenter temporairement de 1 000 les priorités par défaut de tous les fichiers de package, à 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 version 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.

Lorsque la rétrogradation est terminée, utilisez des sources logicielles pour désactiver le référentiel Mises à jour de pré-version (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 rétrogradée.

    
réponse donnée ændrük 02.09.2011 - 19:53
la source
2

Dans synaptic, vous pouvez désactiver le référentiel des propositions et mettre à jour vos sources. Ensuite, vous verrez que tous les paquets mis à jour apparaissent comme installés localement (car ils ne sont plus dans le dépôt).

Vous devez maintenant "rétrograder" ces packages. Sélectionnez-les 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.

Si cela vous aide.

EDIT:

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ée que pour purger les paquets externes de ppa et rétrograder les paquetages vers Ubuntu officiel. versions. 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 ...

    
réponse donnée animaletdesequia 31.08.2011 - 21:08
la source
2

Je ne trouve pas de solution plus simple que la suivante. En espérant néanmoins que la réponse soit meilleure.

Le script suivant pouvant exécuter la rétrogradation

#!/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'aurait PAS dû être désactivé pour l'instant.

N'oubliez pas de définir le bit exécutable sur les deux scripts.

Un problème avec cette approche est que tous les paquets 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.

    
réponse donnée enzotib 31.08.2011 - 22:12
la source
2

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 darent present (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 signalées. Sinon, ils pourraient se retrouver dans les mises à jour pour tous les utilisateurs d'ubuntu. Si vous rencontrez des problèmes, signalez-les.

    
réponse donnée johanvdw 31.08.2011 - 22:22
la source

Lire d'autres questions sur les étiquettes