Was ist zuverlässiger - apt-mark oder APT-pin (/etc/apt/preferences.d/pin) für die Versionssperre?

7

Normalerweise sperre ich auf meinem Ubuntu 16.04 LTS Paketversionen mit APT-Pin-Funktionalität.

Wenn ich zum Beispiel meldan Version 1.5.3-1ubuntu1 anheften möchte, erstelle ich die folgende Pin-Datei:

cat <<EOF | sudo tee /etc/apt/preferences.d/pin-meld
Package: meld
Pin: version 1.5.3-1ubuntu1
Pin-Priority: 1337
EOF

Diese Datei gilt Einstellungen systemweit: apt, apt-get, aptitudeund GUI - Tools wie synapticund muonrespektiert sie.

Ich kenne andere Mechanismen - apt-mark. Angenommen. Mein Ausgangspunkt - Ich habe meld_1.5.3-1ubuntu1 manuell installiert , sein Pin wurde entfernt.

$ apt-mark showhold
$ apt-cache policy meld 
meld:
  Installed: 1.5.3-1ubuntu1
  Candidate: 3.14.2-1
  Version table:
     3.14.2-1 500
        500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
        500 http://archive.ubuntu.com/ubuntu xenial/universe i386 Packages
 *** 1.5.3-1ubuntu1 100
        100 /var/lib/dpkg/status

Dann halte ich die installierte Version.

$ sudo apt-mark hold meld
meld set on hold.

$ dpkg -l | grep meld
hi  meld                                          1.5.3-1ubuntu1                               all          graphical tool to diff and merge files

Die APT-Markierung zeigt an, dass sie gehalten wird. Habe apt-cache policy meldaber keine Änderungen

$ apt-cache policy meld 
meld:
  Installed: 1.5.3-1ubuntu1
  Candidate: 3.14.2-1
  Version table:
     3.14.2-1 500
        500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
        500 http://archive.ubuntu.com/ubuntu xenial/universe i386 Packages
 *** 1.5.3-1ubuntu1 100
        100 /var/lib/dpkg/status

apt-get upgradeBerichte , die meldsich zurückgehalten :

$ sudo apt-get upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  meld
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

Aber wenn ich aptitudeim interaktiven Modus starte, habe ich meldin Upgradable Packages :

Actions  Undo  Package  Resolver  Search  Options  Views  Help
C-T: Menu  ?: Help  q: Quit  u: Update  g: Preview/Download/Install/Remove Pkgs
aptitude 0.7.4
--\ Upgradable Packages (1)
  --\ gnome - The GNOME Desktop Environment (1)
    --\ universe - Unsupported Free Software. (1)                                                                                                    
ih    meld    1.5.3-1ubuntu1 3.14.2-1      

und wenn ich versehentlich Aktionen -> Ausstehende Aktionen abbrechen auswähle , wird das Halten entfernt.

Soweit ich verstehen kann, werden Markierungen synapticignoriert. Die Funktionalität der Sperrversion funktioniert anders. wird hier als Installiert (aktualisierbar) aufgeführt . Die Schaltfläche Alle Upgrades markieren wählt sie nicht automatisch aus, aber das Paket wird möglicherweise versehentlich von Mark for Upgrade aktualisiert .apt-mark
meld

Muon arbeitet auf die gleiche Weise mit Paketen, die von gehalten werden apt-mark. Aber was interessant ist seine Option Lock at Current Version schreibt Pin-Datei in /etc/apt/preferences.d/meld.

Verstehe ich richtig, dass APT-Pin zuverlässiger ist als apt-mark?

N0rbert
quelle
Ich bin mir nicht sicher, ob zuverlässig der richtige Begriff ist. Beides sollte funktionieren. Wenn man nicht funktioniert, ist das ein Fehler. Seien Sie konsequent in Ihrer Verwendung - mischen Sie die Methoden nicht. Ich denke, vielleicht haben Sie ein paar Papierschnitt-Fehler in apt entdeckt.
user535733
Ich mische keine Methoden. Ich sehe hier auf askubuntu einige Antworten, die auf apt-mark beruhen. Ich benutze immer Pinning.
N0rbert

Antworten:

5

Ja, das Feststecken ist zuverlässiger als apt-mark.

Was ich entdeckt habe:

  • letzte 12-14 Jahre Synaptic verwendet eine eigene Pinning-Datei (/ var / lib / synaptic / settings ) - siehe Fehler 42178 auf dem Launchpad . Für systemweit kann man Symlink zwischen /etcund Synaptic einstellen

    sudo ln -s /etc/apt/preferences.d/synaptic /var/lib/synaptic/preferences
    

    Daher ist es eine Problemumgehung. Das Sperren von Versionen in Synaptic wird nicht empfohlen (diese Datei wird nicht von apt-getund gelesen aptitude).

  • Muon verwendet systemweite PIN-Dateien pro Anwendung in /etc/apt/preferences.d.

  • aptitude hat zwei Fehler:

    1. am 14.04 LTS wird es nicht apt-markvollständig respektiert (siehe meinen Fehler 1747189 am Launchpad ).
    2. am 16.04 LTS-Holds, die von festgelegt wurden, apt-markgehen verloren, nachdem Sie auf Aktionen -> Ausstehende Aktionen abbrechen geklickt haben (siehe meinen Fehler 1747191 auf dem Launchpad ).

    aber in 18.04 LTS aptitudehaben keine solchen Fehler, es ist großartig.

Meine Schlussfolgerung lautet also wie folgt: apt-markKann nur verwendet werden, wenn Sie Software nur mit installieren / entfernen / aktualisieren apt-get. Andernfalls sollten Sie Pinning (dh /etc/apt/preferences.d/) verwenden. Dies ist zuverlässiger und unkomplizierter.


Hinweis: Um zu verhindern, dass die Pin-Priorität der Paketinstallation negativ ist :

P <0:
Verhindert die Installation der Version

zum Beispiel Pin-Priority: -10.

N0rbert
quelle
Wissen Sie, ob der apt-mark18.04 allgemein anerkannt wird? In einem Kommentar zu Ihrem Ticket wurde festgestellt, dass der Fehler anscheinend nicht den 18.04. Betrifft, aber nicht sicher ist, ob es um den 18.04. Andere Macken gibt ...
Doktor J
Ich weiß nichts über 18.04 LTS, ich verwende derzeit viele 16.04 LTS-Systeme. Und ich sehe, dass das apt-markhier nicht zuverlässig ist. Daher werde ich empfehlen und hier weiterhin Pinning verwenden.
N0rbert