Frage Wie kann die Aktualisierung eines bestimmten Pakets verhindert werden?


Durch Fehler # 693758 Ich möchte das verhindern apt-get upgrade und Update Manager aktualisiert das Paket "libgtk2.0-0".

Wie kann dies erreicht werden?


324
2017-12-23 17:29


Ursprung


@hhlp: Aber diese Frage fragt nach einem Paket, das nie installiert wurde. - Nathan Osman
@George Edison - Es gibt auch das Halten von Paketen, mit denen Sie das Paket nicht aktualisieren können. Wenn Sie also ein Paket halten, bedeutet das im Grunde, dass Sie dem Paketmanager sagen, dass er die aktuelle Version behalten soll. Dies ist nützlich, wenn nach einem Update eine neuere Version eines gerade laufenden Programms unterbrochen wird. (Sie können nicht ein Paket halten, das nie installiert wurde, siehe auch meine Frage ist das gleiche) .... ich habe das gerade getestet - siehe er sagte disable packages from the auto-update - hhlp


Antworten:


Halten

Es gibt vier Möglichkeiten, Pakete zurückzuhalten: mit dpkg, apt, aptitude oder dselect.

dpkg

Legen Sie ein Paket in die Warteschleife:

echo "<package-name> hold" | sudo dpkg --set-selections

Entfernen Sie den Laderaum:

echo "<package-name> install" | sudo dpkg --set-selections

Zeigen Sie den Status Ihrer Pakete an:

dpkg --get-selections

Zeigen Sie den Status eines einzelnen Pakets an:

dpkg --get-selections | grep "<package-name>"

geeignet

Halten Sie ein Paket:

sudo apt-mark hold <package-name>

Entfernen Sie den Laderaum:

sudo apt-mark unhold <package-name>

dselect

Wählen Sie mit dselect den Bildschirm [S] elect, suchen Sie das Paket, das Sie in seinem aktuellen Zustand halten möchten, und drücken Sie = oder H. Die Änderungen werden sofort nach Verlassen des [S] Wahlbildschirms wirksam.


Die folgenden Ansätze sind insofern begrenzt, als das Sperren / Halten eines Pakets in aptitude oder synaptic apt-get / apt nicht beeinflusst.

Eignung

Halten Sie ein Paket:

sudo aptitude hold <package-name>

Entfernen Sie den Laderaum:

sudo aptitude unhold <package-name>

Sperren mit Synaptic Package Manager

Gehe zu Synaptischer Paketmanager (System> Verwaltung> Synaptic Package Manager).

Klicken Sie auf die Suchschaltfläche und geben Sie den Paketnamen ein.

Wenn Sie das Paket gefunden haben, wählen Sie es aus und gehen Sie zu Paket Menü und wählen Sie Version sperren.

Synaptic menu

Dieses Paket wird jetzt nicht im Update Manager angezeigt und nicht aktualisiert.


474
2017-12-23 18:04



Dies verhindert auch, dass ein Paket installiert wird. Bei der Installation devscripts, viel verpackt werden als Empfohlene Pakete gezogen. Da ich keinen Mailserver (Postfix) benötige, könnte ich die Installation durch Ausführen deaktivieren echo postfix hold | sudo dpkg --set-selections vor dem Laufen sudo apt-get install devscripts. Diese Halteaktion bleibt nur für diese Installation bestehen, nach der Installation werden die Auswahlen zurückgesetzt. - Lekensteyn
Es lohnt sich auch darauf hinzuweisen, dass Paket-Holds Upgrades und Patches manchmal unterbrechen, indem sie eine Situation schaffen, in der es keine rechtliche Lösung gibt, die apt zu einer Abhängigkeit berechnen kann. Wenn das Paket foo eine == <oder <= Abhängigkeit von der libbar hat, lehnt apt das Upgrade der libbar sowie foo ab. Im Laufe der Zeit können diese kaskadierenden Abhängigkeiten wachsen und eine große Anzahl von Updates einschließlich wichtiger Sicherheitsupdates blockieren. Sie müssen entweder die Vormerkung entfernen und das Upgrade durchführen lassen oder die Pakete neu erstellen, die Sie gegen neuere Versionen ihrer Abhängigkeiten halten, falls dies geschieht. - Stephanie
Nur eine Notiz: apt-mark unterstützt nicht hold in der Version 0.7.25 (Ubuntu Lucid) - Joril
Dies ist besonders nützlich, wenn Sie versuchen, Grafiktreiber zurückzuhalten. Für ATI-Benutzer apt-mark hold fglrx fglrx-amdcccle fglrx-dev && aptitude hold fglrx fglrx-amdcccle fglrx-dev. - earthmeLon
Derzeit sperren synaptic und aptitude nur Pakete innerhalb dieser Programme. "Alles andere, das Paket-Upgrades durchführt (siehe: Update Manager, apt-get, aptitude usw.), ignoriert dies." Von diese Frage. - holocronweaver


Um ein Paket "foo" in die Warteschleife zu setzen:

echo "foo hold" | dpkg --set-selections

In Ihrem Fall werden wir den Wein auf Eis legen:

sudo -i
echo "wine hold" | dpkg --set-selections

Um den Halt zu entfernen:

sudo -i
echo "wine install" | dpkg --set-selections

43
2017-12-08 20:15



Beachten Sie auch, dass während Sie ein Paket halten kann installiere eine bestimmte Version über apt-get install wine=1.2.3. Warteschleife verhindert apt-get (dist-)upgrade es zu verändern. - rcoup
@rcoup Wenn Sie eine alte Version in der Warteschleife haben und dann manuell auf eine neue Version upgraden, ohne den Hold wie beschrieben zu entfernen, wird die alte Version im Cache gespeichert, so dass Sie zurückgehen können? - cxrodgers
@cxrodgers der lokale Cache (normalerweise /var/cache/apt/archives) ist unabhängig von Holds & Upgrades & Zeug, also werden alle Versionen, die du heruntergeladen hast, dort sein, bis du rennst apt-get [auto]clean - rcoup


Ich habe nach dem gleichen gesucht und nach vielen Recherchen fand ich heraus, dass man mit der folgenden Syntax eine bestimmte Version verbieten kann, aber das nächste Update erlaubt:

Paket: compiz-plugins-main
Pin: Version 1: 0.9.7.0 ~ bzr19-0ubuntu10.1
Pin-Priorität: -1

Dies geht in die Datei / etc / apt / preferences.


28
2017-07-22 11:13



Dies ist ein viel besserer Weg, als Updates auf unbestimmte Zeit zu verhindern - Eero Aaltonen
Mit dieser Methode, denke ich, sind die Chancen größer, Ubuntu 'Adware' wie Ubuntu One oder das Amazon Icon vor dem nächsten Release Upgrade zu installieren ... - Daniel Alder


Installieren synaptic verwenden sudo apt-get install synaptic.

Ausführen mit gksudo synaptic und suchen Sie im Suchfeld das Paket, das Sie sperren möchten, dh: gedit

enter image description here

Wählen Sie aus dem Paketmenü Version sperren:

enter image description here

Und das ist alles, die Version, die zur Zeit der Sperre installiert ist, bleibt auch während der Aktualisierung installiert.


19
2017-12-08 20:06



Bitte schauen Sie sich an: "Die Lock-Version ist nicht so clever wie sie klingt. Sie soll tun, was auf dem Kasten steht, die Version sperren ... Aber sie sperrt sie nur innerhalb von Synaptic. Alles andere macht Paket-Upgrades (siehe: Update Manager , apt-get, aptitude, etc) ignoriert dies. Dies ist wahrscheinlich fehlerhaftes Verhalten, also würde ich erwarten, dass dies rechtzeitig behoben wird. " von askubuntu.com/questions/9607/was-does-lock-version-do. Wie ist der aktuelle Stand? Wenn etwas in Synaptic gesperrt ist, "ehren" andere Paketmanager die Sperre?
vasa1: Ab Version 0.75.13 immer noch nicht :( Gleiches Problem mit Eignung. - syockit


Verhindern, dass ein Paket installiert wird, heißt "package holding" und es ist sehr einfach zu tun:

Echo Paketnamen halten | dpkg --set-Auswahlen

... wobei * Paketname * der Name des Pakets ist, das Sie bei der Installation verhindern möchten.

Hinweis: Der obige Befehl nimmt root-Privilegien an. Mit anderen Worten, Sie werden wahrscheinlich tippen müssen sudo su bevor es läuft.


16
2018-02-05 01:18



Perfekt Dies war die Antwort. Vielen Dank. - asoundmove
s/sudo su/sudo -s/g (oder sudo -i). (-i wird eine Login-Shell geben, -s wird nicht). - derobert


Seit einiger Zeit apt-get wird ersetzt durch aptIch möchte zum Beispiel verhindern, dass Firefox auf die Version 56 aktualisiert, weil viele Add-Ons, wie "Tab Gruppen" arbeite nicht mehr mit dem neuen Firefox 57 (siehe "WebExtensions Update").

Es ist möglich, mehr als ein Paket mit einem Befehl zu speichern und Platzhalter zu verwenden.

Verhindern, dass Firefox aktualisiert wird

sudo apt-mark hold firefox firefox-locale-*

Wenn Sie sich später entschließen sollten, sie zu halten, wäre das der Befehl:

sudo apt-mark unhold firefox firefox-locale-*

5
2017-11-19 07:45





Ich synaptic Sie können die Version eines bestimmten Pakets einfrieren Ich bin nicht 100% sicher, ob dies apt-get ändern wird, aber es wird auf jeden Fall den Update-Manager stoppen.

Um ein Paket einzufrieren, wählen Sie es in synaptischer Form, öffnen Sie dann das Paketmenü und wählen Sie die Version einfrieren.

Hoffe das hilft

edit: Dies Frage 16668 beschäftigt sich mit einer ähnlichen Situation


4
2017-12-23 17:35





Alles, was Sie schon immer über das "Halten" und "Pinnen" von Paketen in bestimmten Versionen wissen wollten: https://help.ubuntu.com/community/PinningHowto


3
2017-12-23 21:09





Siehe Fehler # 75332, # 158981 und # 72806.

Die Zusammenfassung ist, dass das Halten auf apt-get / aptitude level nicht den Haltezustand in dpkg auslöst (siehe insbesondere Fehler 72806) und update-manager den Status von dpkg liest.

Problemumgehung wird als root ausgeführt: echo "package hold" | dpkg --set-selections


3
2017-11-26 07:24