Wie kann ich von einem Upgrade auf das vorgeschlagene Repository zurückkehren?


Antworten:


24

Hier ist eine allgemeinere Methode, um von lokal installierten Paketen, vorgeschlagenen Paketen und Backports auf den Stable + Update-Kanal zurückzukehren. Die anderen Antworten sind zwar richtig und funktionieren auf ähnliche Weise, ich denke jedoch, dass dies ein eleganterer Ansatz ist.

  1. Stellen Sie sicher, dass Sie die Einträge von -proposedoder -backportsin Ihren /etc/apt/sources.listund /etc/apt/sources.list.d/*-Dateien entfernt haben.
  2. Füge eine Apt-Preferences-Datei hinzu, zB /etc/apt/preferences.d/99-back-to-stable-updatesmit (für precisehier - durch deine Version ersetzen):

    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
    

    Durch das Feststecken von> 1000 werden Pakete von diesem Kanal herabgestuft, und durch eine Priorität von <0 für die Kanäle -proposedund -backportswerden auch alle weiteren Pakete entfernt.

  3. Jetzt lauf

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

    Prüfen Sie die vorgeschlagene Lösung, die Ihnen apt geben wird. Wenn Sie der Meinung sind, dass sie in Ordnung ist, akzeptieren Sie sie. Wenn Sie überprüfen müssen, warum und auf welche Version ein Downgrade durchgeführt wird, überprüfen Sie anhand dieser apt-cache policy packagenameInformationen, welche Versionen verfügbar sind und für welche Version die Installation in Frage kommt.

  4. Entfernen Sie die /etc/apt/preferences.d/99-back-to-stable-updatesDatei erneut, da sie nicht mehr benötigt wird.

Vielen Dank an mlindin den Ubuntu-Foren für diese Anregung, wie er seinen Beitrag vor mehr als 5 Jahren gepinnt hat - und doch hat es mir heute ganz gut geholfen.


Ich denke, es sollte auch mit Debian funktionieren. Leider macht es nichts für mich: /
Michael

@Michael 1) Debian hat nicht das Konzept von vorgeschlagenen offiziellen Repositories. 2) Diese Seite handelt von Ubuntu, nicht von Debian. Ich empfehle Ihnen, eine neue Frage zu Unix.SE zu stellen .
Gertvdijk

Diese Lösung funktionierte auch mit der 'Xenial'-Version! (nach dem Ersetzen von exact durch xenial in der Datei natürlich) Vielen Dank!
Morhook

4

Auf dieser Seite wird vorgeschlagen , dass das Fixieren von Apt zum Downgrade eines gesamten Repositorys verwendet werden kann, indem die Tatsache genutzt wird, dass Pin-Prioritäten über 1000 zu einem Downgrade des Pakets führen können .

Eine Lösung könnte darin bestehen, die Standardprioritäten aller Paketdateien mit Ausnahme derjenigen aus dem natty-proposedRepository vorübergehend um 1000 zu erhöhen:

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

(Hinweis: Mit dieser Methode kann die Priorität von Paketdateien, deren Versionsfelder Kommas enthalten, nicht erhöht werden . Siehe diese Frage .)

Anschließend apt-get --simulate upgradekönnen Sie testen, ob ein Downgrade erfolgreich durchgeführt wurde. Nach der Bestätigung, dass die korrekten Downgrades erkannt wurden, sudo apt-get upgradesollte alles vorhanden sein, was zur Durchführung des Downgrades erforderlich ist.

Wenn das Downgrade abgeschlossen ist, deaktivieren Sie mithilfe der Softwarequellen das (von natty vorgeschlagene) Vorab-Update- Repository und entfernen Sie dann die vorübergehende Prioritätserhöhung:

sudo rm /etc/apt/preferences.d/downgrade-from-natty-proposed

Starten Sie abschließend neu, damit alle ausgeführten Programme die herabgestuften Versionen sind.


1
Interessante Lösung, wahrscheinlich am besten und allgemeiner als meine. Übrigens ist die Anzahl der herabgestuften Pakete gleich, was die Richtigkeit beider Ansätze bestätigt.
Enzotib

2

Ich kann keine einfachere Lösung finden als die folgende. Ich hoffe jedoch, dass jemand eine bessere Antwort erhält.

Das folgende Skript, das das Downgrade ausführen kann

#!/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)

Das awkSkript mit dem Namen get-prev-pkg-verslautet wie folgt

#!/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
}

Beim Ausführen des Skripts sollte das vorgeschlagene Repo noch NICHT deaktiviert sein.

Denken Sie daran, das ausführbare Bit in beiden Skripten zu setzen.

Ein Problem bei diesem Ansatz ist, dass alle herabgestuften Pakete manuell installiert werden (auch diejenigen, die automatisch installiert wurden).

Fügen Sie aus Sicherheitsgründen die --simulateOption apt-getam Ende des Bash-Skripts hinzu.


2

Das Zurücksetzen aller Pakete von natty-recommended ist wahrscheinlich nicht erforderlich: Die meisten Pakete werden sowieso bald durch natty-updates auf die gleichen Versionen aktualisiert.

Falls Sie ein Problem mit einem Paket haben, können Sie dieses mit der Methode zurücksetzen, die darent präsentiert (nachdem Sie -proposed deaktiviert haben), oder Sie können verwenden sudo aptitude install packagename/natty. Aber was noch wichtiger ist, Sie sollten einen Fehler gegen das Paket einreichen. Nur wenige Leute testen Natty-Proposed, und wenn Regressionen (= neue Probleme) auftreten, sollten sie auf jeden Fall gemeldet werden. Andernfalls könnten sie in den Updates für alle Ubuntu-Benutzer landen. Wenn Sie also Probleme haben, melden Sie dies bitte.


1

In synaptic können Sie das Repository für vorgeschlagene deaktivieren und Ihre Quellen aktualisieren. Dann sehen Sie, dass alle aktualisierten Pakete als lokal installiert angezeigt werden (da sie nicht mehr in den Repos enthalten sind).

Jetzt müssen Sie diese Pakete "downgraden". Wählen Sie eins nach dem anderen aus und wählen Sie im oberen Menü:

package > force version

(oder Strg + E)

Es erscheint ein Menü mit den verfügbaren Optionen. Ich würde die niedrigere Versionsnummer für jedes Paket wählen. Wenn Sie einen Fehler machen und es eine neuere Version in den normalen Repos gibt, wird dies in einem späteren Update behoben.

Eine schnelle Lösung wäre, den Befehl purge-ppa zu verwenden, der auf das porposed-Repository verweist, aber ich weiß nicht, ob er mit ihnen funktionieren würde. Ich habe ihn nur verwendet, um externe ppa- und Downgrade-Pakete auf die offiziellen Ubuntu-Versionen zu bereinigen. Ich werde Ihnen in diesem Fall nicht empfehlen, dies zu tun, vielleicht weiß jemand, ob es eine sichere Methode ist ...


Der letzte Absatz ist nur Spekulation und sollte daher ein Kommentar zur Frage sein oder ordnungsgemäß recherchiert werden.
Karl Richter

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.