Wegen des Fehlers # 693758 möchte ich verhindern, dass der apt-get upgrade
Update Manager das Paket "libgtk2.0-0" aktualisiert.
Wie kann das erreicht werden?
disable packages from the auto-update
Wegen des Fehlers # 693758 möchte ich verhindern, dass der apt-get upgrade
Update Manager das Paket "libgtk2.0-0" aktualisiert.
Wie kann das erreicht werden?
disable packages from the auto-update
Antworten:
Es gibt vier Möglichkeiten, Pakete zurückzuhalten: mit dpkg, apt, aptitude oder dselect.
Paket zurückstellen:
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>"
Halten Sie ein Paket:
sudo apt-mark hold <package-name>
Entfernen Sie den Laderaum:
sudo apt-mark unhold <package-name>
Alle angehaltenen Pakete anzeigen:
sudo apt-mark showhold
Rufen Sie mit dselect den Bildschirm [S] elect auf, suchen Sie das Paket, das Sie in seinem aktuellen Zustand halten möchten, und drücken Sie =oder H. Die Änderungen werden sofort nach dem Verlassen des Auswahlbildschirms [S] wirksam.
Die folgenden Ansätze sind dahingehend eingeschränkt, dass das Sperren / Halten eines Pakets innerhalb von aptitude oder synaptic keinen Einfluss auf apt-get / apt hat.
Halten Sie ein Paket:
sudo aptitude hold <package-name>
Entfernen Sie den Laderaum:
sudo aptitude unhold <package-name>
Gehen Sie zu Synaptic Package Manager (System> Administration> 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 zum Menü Paket und wählen Sie Version sperren .
Dieses Paket wird jetzt nicht im Update-Manager angezeigt und nicht aktualisiert.
devscripts
werden viele Pakete als empfohlene Pakete abgerufen. Da ich keinen Mailserver (Postfix) benötige, kann ich die Installation deaktivieren, indem ich sie echo postfix hold | sudo dpkg --set-selections
vor der Ausführung ausführe sudo apt-get install devscripts
. Diese Hold-Aktion bleibt nur für diese Installation bestehen. Nach der Installation werden die Einstellungen zurückgesetzt.
apt-mark
nicht unterstützt hold
in der Version 0.7.25 (Ubuntu Lucid)
apt-mark hold fglrx fglrx-amdcccle fglrx-dev && aptitude hold fglrx fglrx-amdcccle fglrx-dev
.
So stellen Sie ein Paket "foo" in die Warteschleife:
echo "foo hold" | dpkg --set-selections
In Ihrem Fall werden wir den Wein auf Eis legen:
sudo -i
echo "wine hold" | dpkg --set-selections
So entfernen Sie den Hold:
sudo -i
echo "wine install" | dpkg --set-selections
apt-get install wine=1.2.3
. In der Warteschleife zu sein, verhindert, dass dies apt-get (dist-)upgrade
geändert wird.
/var/cache/apt/archives
) unabhängig ist von hält und Upgrades & stuff, so dass alle Versionen , die Sie wird es heruntergeladen haben , bis Sie laufenapt-get [auto]clean
Ich habe das Gleiche gesucht und nach langem Nachforschen festgestellt, dass Sie mit der folgenden Syntax eine bestimmte Version verbieten und das nächste Update zulassen können:
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.
Installieren Sie synaptic
mit sudo apt-get install synaptic
.
Führen Sie mit gksudo synaptic
und im Suchfeld das Paket aus, das Sie sperren möchten, dh:gedit
Wählen Sie im Paketmenü die Option Version sperren :
Und das ist alles, die zum Zeitpunkt der Sperre aktuell installierte Version bleibt auch bei Upgrades installiert.
Das Verhindern der Installation eines Pakets wird als "Paketspeicherung" bezeichnet und ist ganz einfach:
echo Paketname hold | dpkg --set-Auswahl
... wobei * Paketname * der Name des Pakets ist, dessen Installation Sie verhindern möchten.
Hinweis: Der obige Befehl setzt root-Rechte voraus. Mit anderen Worten, Sie müssen wahrscheinlich etwas eingeben, sudo su
bevor Sie es ausführen können.
s/sudo su/sudo -s/g
(oder sudo -i
). ( -i
Wird eine Login-Shell geben, -s
wird nicht).
Da einige Zeit apt-get
durch ersetzt wird apt
, möchte ich beispielsweise verhindern, dass Firefox auf eine Version über 56 aktualisiert wird, da viele Add-Ons wie "Tab Groups" mit dem neuen Firefox 57 nicht mehr funktionieren (siehe "WebExtensions") Aktualisieren").
Es ist möglich, mehrere Pakete mit einem Befehl zu speichern und Platzhalter zu verwenden.
sudo apt-mark hold firefox firefox-locale-*
Wenn Sie sie später wieder freigeben möchten, ist dies der Befehl:
sudo apt-mark unhold firefox firefox-locale-*
Ich bin mir nicht sicher, ob dies apt-get ändern wird, aber es wird definitiv den Update Manager stoppen.
Um ein Paket einzufrieren, wählen Sie es in Synaptic aus, öffnen Sie das Paketmenü und wählen Sie die Option zum Einfrieren der Version.
Hoffe das hilft
bearbeiten: Diese Frage 16668 befasst sich mit einer ähnlichen Situation
Alles, was Sie schon immer über das Speichern und Fixieren von Paketen für bestimmte Versionen wissen wollten: https://help.ubuntu.com/community/PinningHowto
Siehe Bugs # 75332 , # 158981 und # 72806 .
Die Zusammenfassung ist, dass das Halten auf apt-get / aptitude-Ebene nicht den Haltestatus in dpkg auslöst (siehe insbesondere Bug 72806) und der Update-Manager den Status von dpkg liest.
Die Problemumgehung wird als root ausgeführt:
echo "package hold" | dpkg --set-selections
Sie können bei Bedarf den "bestimmten Override" wie folgt verwenden:
aptitude reinstall ~i oracle-java8-jre:
Dies ist eine einmalige Verwendung von (nicht für zukünftige Neuinstallationen gespeichert), um alle Pakete in Ihrem System neu zu installieren, jedoch nicht von oracle-java8-jre.
Wenn Sie ein Keep-spezifisches Override verwenden, befindet sich das Paket momentan in einem Keep-Zustand und es wird nicht versucht, es zu installieren.
Eine sehr gute Sache, wenn Sie glauben, dass Ihr System irgendwie kompromittiert wurde.
Wenn Sie Synaptic installiert haben, können Sie das Paket auswählen und das Menü Paket -> Version sperren verwenden, um zu verhindern, dass es aktualisiert wird.
Sie können Synaptic mit sudo apt-get install synaptic installieren. Ich persönlich finde es nützlicher als das Software Center ... andererseits bin ich ziemlich altmodisch. :)
Gelegentlich möchte man vielleicht alle derzeit installierten Pakete zurückhalten . Hier ist wie.
Speichern Sie zuerst den aktuellen Status, damit Sie Folgendes rückgängig machen können:
dpkg --get-selections > current_selections.txt
So halten Sie alle Pakete zurück:
dpkg --get-selections | sed -r "s/\tinstall/hold/" |dpkg --set-selections
Zum Schluss, wenn Sie zum vorherigen Status zurückkehren möchten:
dpkg --set-selections < current_selections.txt
Ein Anwendungsfall hierfür ist möglicherweise die Erstellung eines VM- oder Amazon AMI-Snapshots für die Migration von einer QS- in eine Produktionsumgebung.
Hinzufügen von Details zu @sogers Kommentaren zu Ubuntu 16.04.
In Ubuntu 16.04 ist standardmäßig keine / etc / apt / preferences-Datei vorhanden. Wenn Sie derzeit keine haben, erstellen Sie einfach eine neue Datei und füllen Sie sie mit einer Zeilengruppe, wie oben von @soger beschrieben, um das angegebene Paket und seine Abhängigkeiten von Aktualisierungen auszuschließen.
Danach laufen apt update
und du bist GTG. : 0)
Zum Beispiel habe ich einen Ubuntu 16.04.5 LTS-Server mit eingebetteter Intel-Grafikkarte und einer NVidia-Karte. Die NVidia-Karte ist die einzige, die verwendet wird. Der Server verwendet auch CUDA-Treiber. Ich hatte ein Problem, auf dem ich apt
immer wieder bestand
Va-Fahrer-alles
(Intel-Treiber) erforderten ein Update, konnten jedoch nicht feststellen, welche Version installiert werden soll. Das hat mich verrückt gemacht, und ich brauchte sowieso keine Intel-Treiber. Ich habe diesen Text in die Einstellungsdatei eingegeben und apt gelöscht, Problem behoben.
Package: va-driver-all
Pin: release *
Pin-Priority: -1