Blockieren Sie die Deinstallation eines Pakets in APT

8

Kurz gesagt, ich möchte das Paket abcso einstellen können , dass:

  1. apt-get remove abc sollte scheitern.
  2. apt-get purge abc sollte scheitern.
  3. apt-get upgrade abc sollte arbeiten.

Wenn sich die Paketabhängigkeiten ändern, so dass abcsie während eines deinstalliert werden sollten, dist-upgradebin ich froh, gezwungen zu sein, etwas zu tun und dann noch dist-upgradeeinmal.

Gelöscht
quelle
Ich habe ein wesentliches Metapaket erstellt, das davon abhängt abc, aber es wurde trotzdem entfernt ... Ich denke, Sie müssen die abcEinstellung neu kompilieren Essential: yesund Priority: requiredindebian/control
Teresa e Junior
@TeresaeJunior Seltsam, ein unverzichtbares Paket sollte defje nach abcfunktionieren. Wurde defentfernt? Hilft es, wenn Sie machen def Priority: required?
Gilles 'SO - hör auf böse zu sein'
@ Gilles Genau, ich habe beide eingestellt Essential: yesund Priority: requiredund es wurde ohne Warnungen entfernt. Ich habe dieses kleine Skript erstellt, um das Paket zu erstellen, wenn Sie einen Blick darauf werfen
Teresa e Junior
Ich sehe, dass Essential: yesdas ignoriert wurde, also equivsist es nicht ausreichend dafür ... Vielleicht debuildwerde ich es versuchen, wenn das Paket mit erstellt wird.
Teresa e Junior

Antworten:

5

Nicht wirklich etwas, um ein Paket festzunageln, um das Entfernen zu verhindern, aber ein Upgrade zu ermöglichen.

Sie können einen Spike in ein Paket hämmern, können nicht gelöscht, gelöscht, aktualisiert, geleckt werden, alles ...

Aber es ist ein bisschen komplizierter als die meisten Dinge.

Zum Beispiel möchten wir Firefox festnageln: (Sie würden natürlich den richtigen vollständigen Namen des Pakets verwenden)

echo firefox hold | dpkg --set-selections

was dann " Firefox " unsterblich machen würde. ABER es kann auch in diesem Zustand nicht aktualisiert werden.

Das Entfernen des Haltestatus ist etwas einfacher, aber eine Art umfassende Geste:

dpkg --clear-selections

entfernt den HOLD-Status von ALLES! Wenn Sie also ein paar Pakete aufbewahren möchten, sollten Sie eine Liste führen, um sie später erneut anzuwenden

Es ist eigentlich sehr angenehm und einfach, mit Eignung oder Synaptik zu arbeiten , da sie Menüoptionen zum Halten / Enthalten eines Pakets haben, die die gesamte Buchhaltung hinter den Kulissen für Sie erledigen. Ich würde empfehlen, einen dieser (oder einen der unzähligen anderen Paketmanager, denen Sie begegnen könnten) zu verwenden.

Mit Aptitude ist auch die Verwendung der Befehlszeile möglich:

aptitude hold <package>
aptitude unhold <package>

Denken Sie jedoch daran, dass Sie etwas " zurückhalten " müssen, wenn Sie ein Upgrade durchführen möchten. Wenn Sie jedoch die GUI-Seite von Aptitude verwenden, sollte es Ihnen mitteilen, ob etwas, das gespeichert ist, aktualisierbar ist

lornix
quelle
1
apt-getwird gerne ein gehaltenes Paket deinstallieren.
Bahamat