Ich habe eine Reihe von Mesa-Paketen, die ich auf eine PPA-Version aktualisiert habe, bevor ich die PPA lösche, damit ich mein System aktualisieren kann. Die Unterschiede in den Versionen sind geringfügig (sie sind technisch identisch, nur eine Gruppe von Bibliotheken stammt von git und die anderen sind die endgültigen Versionen).
Wenn ich versuche, ein Downgrade über Synaptic, apt-get oder aptitude durchzuführen, gerate ich in die Hölle der Abhängigkeit.
Gibt es eine Möglichkeit, die Pakete manuell herunterzustufen (möglicherweise einzeln) und ihre abhängigen Pakete als unbeweglich zu markieren (sofern dies sinnvoll ist), bis ich fertig bin?
PS diese Frage: Wie kann man ein Paket über apt-get downgraden? ist ein bisschen anders und hilft dieser Situation nicht.
quelle
ppa-purge
zuerst?synaptic
das Paket xyz auswählen, werden standardmäßig alle Abhängigkeiten ausgewählt. Sie können jedoch immer alle Abhängigkeiten deaktivieren und nur das Hauptpaket installieren. Später können Sie alle Abhängigkeiten erneut installieren. Dies funktioniert nur, wenn Sie zur Neuinstallation bereit sind.Antworten:
Ich habe noch nie damit gespielt, aber ich würde vorschlagen, dass Sie
hold
(oderlock
) die Version der Abhängigkeiten, die Sie Probleme verursachen. Dieser Wegapt
hat eine begrenzte Anzahl möglicher Lösungen und wird möglicherweise nicht verwirrt, wenn Sie versuchen, die anderen Pakete herunterzustufen.Wenn nichts anderes funktioniert, können Sie den in dieser Antwort vorgeschlagenen manuellen Ansatz verwenden: Wie stuft man ein Paket über apt-get herunter? . Im Grunde genommen, laden Sie die notwendigen
.deb
Pakete manuell, dann installieren Sie sie eins nach dem anderen mit der unteren Ebenedpkg
und einer seiner kraftvollen Argumente:--ignore-depends
,--force-depends
,--force-depends-version
, oder sogar--force-all
.Im gleichen Sinne wie oben haben Sie das
--force-downgrade
Argument:Dies setzt jedoch voraus, dass Sie gelesen
man dpkg
haben und verstehen, was Sie tun:Siehe Fehler: Versionsnummer beginnt nicht mit Ziffer und Wie installiere ich eine ältere Version von Java und Wie installiere ich eine ältere Version eines Pakets wie liquid 2.2.2? für Beispiele von:
Und siehe Wie kann ich ein Paket installieren, ohne einige Abhängigkeiten zu installieren? für ein Beispiel (zusammen mit der entsprechenden Warnung) von:
Ein weiterer Ansatz wäre die Erstellung eines Dummy-
.deb
Pakets unter Verwendung desequivs
Pakets (und möglicherweise eines etwas anderen Namens). Wenn Sie dann das Dummy-Paket installieren, sollten Sie das "wahre" Paket entfernen können, während Sie die relevanten Abhängigkeiten beibehalten, und dann die ältere Version installieren. Ich bin mir nicht sicher, wie genau dies funktionieren würde, aber überprüfen Sie diesen relevanten Thread auf Details: So entfernen Sie eine Deb, ohne ihre Abhängigkeiten zu entfernen .quelle
Sie können zunächst
apt-mark
alle Abhängigkeiten des Zielpakets (und möglicherweise auch die empfohlenen / vorgeschlagenen), die im System installiert sind, als manuell markieren installiert Installationen . Installieren Sie anschließend die vorherigen Versionen der Software,apt-get
indem Sie die Version explizit erwähnen.So listen Sie die Abhängigkeiten auf: Empfohlene und vorgeschlagene Pakete für das Zielpaket:
Pakete als manuell installiert markieren :
(Verwenden Sie dies für alle Abhängigkeiten, Empfehlungen und Vorschläge.)
Entfernen Sie das Zielpaket:
Verwenden Sie Folgendes, um eine Liste der Paketversionen anzuzeigen, auf die Sie ein Downgrade / Upgrade durchführen können:
Installieren Sie die Zielversion des erforderlichen Pakets:
oder
PS. Wenn die Liste der Abhängigkeiten / empfohlenen / vorgeschlagenen Pakete, dh derjenigen, die mit gekennzeichnet werden sollen,
apt-mark
groß ist, speichern Sie die vorgesehene Liste der gepackten Ausgabenapt-cache show <target-package-name>
in einer beliebigen Datei/path/to/foo
und verwenden Sie dieapt-mark
in einer Kombination wie der folgenden:quelle
apt-cache policy <target-package-name>
für mit einer Liste von Paketversionen , dass Sie eine Herabstufung / Upgrade auf ..Ich habe gerade die Qualen hinter mir, ein Upgrade auf eine Upstream-Version eines Pakets durchzuführen und mich dann für ein Downgrade zu entscheiden. Dies geschah über ein privates Repository des Betreuers. In meinem Fall ging es darum, die neueste (noch unveröffentlichte) systemd 233-Version auszuprobieren.
Der Schlüssel ist zu verstehen, dass Sie alle Pakete angeben müssen, die heruntergestuft werden sollen. Wenn Sie das richtig verstehen, werden die Chancen gut stehen, dass Sie tun, was Sie wollen. Wenn Sie etwas verpassen, werden Sie von apt darauf hingewiesen, dass durch die Aktion viele Pakete entfernt werden. Um sicherzustellen, dass wir das '-s'-Flag verwenden, probieren wir das Downgrade aus, bevor wir es tatsächlich durchführen.
Die Schritte, die Sie unternehmen müssen, sind also:
1) Listen Sie alle Abhängigkeiten auf, die auf Upstream aktualisiert wurden (verwenden Sie ein anderes Schlüsselwort, wenn Ihre Situation anders ist):
Dies gibt Ihnen eine Liste von Paketen mit einer Upstream-Versionsnummer.
2) Geben Sie für jedes Paket die richtige stabile Version an:
3) Überprüfen Sie noch einmal, ob alles in Ordnung ist:
(Ich bin mir nicht sicher, ob --reinstall erforderlich ist, aber das habe ich getan)
4) Entfernen Sie das -s und machen Sie es.
quelle