Wie verbiete ich die Installation eines bestimmten Pakets?

27

Kann ich Ubuntu so konfigurieren, dass niemals ein bestimmtes Paket installiert wird, auch wenn es von einem anderen von mir installierten Paket benötigt wird?

Ivan
quelle
Sie können ein Paket nicht ohne Abhängigkeiten installieren, es sei denn, Sie möchten Ihr System beschädigen.
Enzotib
2
@enzotib, zuallererst irren Sie sich: Paketabhängigkeiten können redundant sein. Es gibt zahlreiche Beispiele, oder Sie können ein Äquivalent eines erforderlichen Pakets auf eine andere Art und Weise installieren lassen (z. B. habe ich openjdk-6 installiert, da es von allen Java-Anwendungen in den Repos benötigt wird, aber ich verwende openjdk-6, I nie Richten Sie alles so ein, dass stattdessen openjdk-7 oder Oracle JDK 7 verwendet wird. Und die zweite Sache - ich habe nicht gesagt, dass ich das abhängige Paket installieren möchte - es kann in diesem Fall nur einen Fehler auslösen. Ich möchte nur sicherstellen, dass ein bestimmtes Paket sowieso nie installiert wird.
Ivan
Es gibt eine ähnliche Frage .
Nimmermehr

Antworten:

28

Wie in Debian können wir auch in Ubuntu apt-pinning für die Versions- und Installationskontrolle verwenden .

Um die Installation eines bestimmten Pakets zu blockieren, können wir die folgenden Zeilen einfügen /etc/apt/preferences

Package: <nameofpackage>
Pin: origin ""
Pin-Priority: -1

Indem wir diesem Pin eine negative Priorität geben, blockieren wir die Installation <nameofpackage>von nicht weiter spezifiziertem Ursprung, dh unserem lokalen Repository. Natürlich können wir mit apt-pinning eine bestimmte Paketversion oder einen bestimmten Ursprung anheften.

Bevor Sie fortfahren, wird dringend empfohlen, die oben angegebene Dokumentation und die Manpage von apt_preferences zu lesen, da Fehler in diesen Dateien von apt nicht überprüft werden und wenn sie auftreten, Ihre Paketverwaltung unterbrechen können.

Eine Alternative und Informationen zum Verhindern der Aktualisierung eines bestimmten Pakets finden Sie unter:

Takkat
quelle
Wissen Sie, ob dies in Ubuntu 12.04 funktionieren könnte? Eine andere Frage berichtet, dass es vielleicht nicht funktioniert.
Lucio
1
@ Lucio: sicher - es funktioniert immer noch; habe es gerade getestet, um auch in 12.10 zu funktionieren.
Takkat
3
In der Package:-Zeile können Sie mehrere durch Leerzeichen getrennte Pakete auflisten: Paket: Metacity Metacity-Common Libmetacity-Private0a. (Scheint Muster wie Paket: Metacity * sind auch möglich)
Volker Siegel
5
In Ubuntu 16.04 Pin: origin ""hat bei mir nicht funktioniert, aber Pin: release *.
barbaz
3

In debian können Sie ein Paket blockieren, und dieses Paket wird nicht mehr aktualisiert

# echo name_of_package hold | dpkg --set-selections

aber ich bin nicht sicher, ob du es verbieten kannst

maniat1k
quelle
Ich habe es gerade mit Ubuntu 15.10 ausprobiert (schlau) und es hat das Paket nicht blockiert; gab mir nur eine Warnungpackage not in database
Brent Baccala
2

Ich habe ein Päckchen, das sich immer wieder reinschleicht und den Mist kaputt macht

sudo apt-mark hold libgnutls-deb0-28

sollte verhindern, dass das Paket installiert wird

Alexx Roche
quelle