So verhindern Sie, dass apt upgrade eine manuell installierte Bibliothek installiert

554
Angelo Fuchs

Ich habe eine Bibliothek, die ich aus Quellen in einer Version erstellt habe, die noch nicht in den Debian-Archiven verfügbar ist. Ein anderes Paket erfordert dies und apt upgrademöchte die ältere Version installieren. Wie kann ich das verhindern?

Details: Ich habe ein Problem mit Sane, das in seiner neuesten Version behoben wurde (libsane: 1.0.27). In Debian ist die aktuellste Version 1.0.26.

Ich habe versucht es so zu fixieren:

Package: libsane Pin: version 1.0.27 Pin-Priority: 900 

Der Versuch, libsane zu installieren, wurde jedoch nicht geändert, wenn ich apt upgrade durchführe.

0

3 Antworten auf die Frage

1
Angelo Fuchs

Sie müssen verwenden apt-get upgrade, um zu verhindern, dass apt neue Pakete installiert.

apt upgrade verhält sich wie das von Ihnen beschriebene Verhalten.

Aus den Manpages:

Man apt-get Abschnittupgrade

Mit dem Upgrade werden die neuesten Versionen aller derzeit installierten [...] Pakete installiert. Auf keinen Fall [...] werden noch nicht installierte Pakete abgerufen und installiert.

Mann passender Abschnittupgrade

Mit dem Upgrade werden die neuesten Versionen aller derzeit installierten Pakete installiert [...]. Neue Pakete werden installiert, bestehende Pakete werden jedoch niemals entfernt.

1
grawity

Sie können bestimmte Pakete vorübergehend aufbewahren:

apt-mark hold libsane 
das hat funktioniert. Könnten Sie erläutern, was es macht und wann "vorübergehend" endet? Angelo Fuchs vor 6 Jahren 0
0
styrofoam fly

Zwei einfachste Optionen sind:

  • verwendet equivsPaket ein Dummy - Paket zu erstellen. Erweitertes Tutorial hier .

  • Ändern Sie die /var/lib/dpkg/statusDatei, um die unerwünschte Abhängigkeit dort zu löschen. Suchen Sie einfach das Paket über die Abhängigkeiten aptund löschen Sie relevante Elemente aus der Abhängigkeitszeile. Zum Beispiel Bearbeitungszeile Depends: libco (>= 2.14), libefivar (>= 30), libssl1.0.0 (>= 1.0.0)zu, Depends: libefivar (>= 30)wenn Sie werfen wollen libcound libssl1.0.0Anforderung.

Die zweite Option erfordert, dass Sie dieses Paket installiert haben. Sie können das Paket jedoch einfach mit den Befehlen apt-get download packagenameund installieren dpkg --ignore-deps=.

wäre die zweite Option nach dem nächsten apt-Update nicht in Frage? Angelo Fuchs vor 6 Jahren 0
@AngeloFuchs Nein, wird es nicht. Durch die erneute Installation dieses Pakets kann sich der Eintrag in der Statusdatei jedoch ändern. styrofoam fly vor 6 Jahren 0
Die zweite Option funktioniert bei mir nicht. Ich habe `libsane` aus den Abhängigkeiten von` xsane` entfernt, aber `apt upgrade` möchte` xsane` aktualisieren und `libsane` installieren. Angelo Fuchs vor 6 Jahren 0
Wie ich bereits sagte, kann die Installation dieses Pakets seinen Eintrag in der Statusdatei ändern. Installieren Sie die neue Version von `xsane` mit` apt-get download` und `dpkg --ignore-deps ...` und entfernen Sie die Abhängigkeiten aus der `status`-Datei. `apt upgrade` funktioniert gut. styrofoam fly vor 6 Jahren 0