So aktualisieren Sie eine Mischung aus Paketen und Ports unter FreeBSD

18

Ich benutze meistens Pakete unter FreeBSD, weil die meisten für mich in Ordnung sind. Einige passen jedoch nicht zu mir, wie das vimPaket, das keine Grafik enthält gvim.

Kein Problem. Ich kann stattdessen den Port installieren, indem ich portmaster editors/vimdie GTK2Option benutze und auswähle . Das funktioniert gut.

Wenn ich jedoch pkg upgradenach einer Weile renne, wird mir Folgendes angezeigt:

        Reinstalling vim-7.4.110_3 (options changed)

Was gibt? Ich habe keine Optionen geändert und es gibt keine neue Version (auch nicht in den Ports). Vergleicht es meinen installierten Port mit der Remote-Version ohne GTK2?

Natürlich kann ich pkg upgradedie Arbeit machen lassen und den Port danach wieder installieren, aber das ist blöd. Was ist die empfohlene Methode, um eine Mischung aus Paketen und Ports zu aktualisieren?

Ricardo Buring
quelle
Verwenden Sie pkg lockdie empfohlene Lösung? Es funktioniert, aber ich würde hoffen, dass etwas so einfaches wie dies automatisch gehandhabt werden könnte.
Ricardo Buring
Ja, pkg lockdie Lösung wurde dafür entwickelt: In der Manpage heißt es: "pkg lock wird verwendet, um Pakete gegen Neuinstallation, Änderung oder Löschung zu sperren."
Dereckson
Dieser Beitrag ist nicht mehr aktuell. Aber ich erzähle gerne, dass ich bis jetzt das gleiche Problem habe. Ich hatte das FreeBSD-Forum gefragt: "Pakete und Ports gleichzeitig verwenden?" Und ein Mitglied rät mir, ein Skript für Installationsaktualisierungen zu verwenden, wie er es getan hat. Sie finden es dort in seiner Antwort.
HL1234,

Antworten:

15

Sie müssen sich daran erinnern, dass pkgund Ports installierte Software an derselben Stelle registrieren (eine SQLite-Datenbank in /var/db/pkg). Keines der Systeme zeichnet zusätzliche Informationen darüber auf, dass eine bestimmte Software als vorkompiliertes Paket oder als Port installiert wurde. Sobald eine Software auf eine der beiden Arten installiert wurde, können die Tools nicht mehr wissen, wie sie installiert wurde.

Wenn Sie die GTK2-Unterstützung für den editors/vimPort ausgewählt haben, wurde dieser in der Paketdatenbank registriert. Wenn Sie später liefen pkg upgrade, pkgan den Paketdaten gesucht vimund gefunden , dass GTK2 Unterstützung in der installierten Version freigegeben worden war, während sie nicht in dem vorkompilierte Paket aktiviert ist. pkg upgradegenau das, was es tun sollte - installierte Pakete finden, die sich von den verfügbaren vorkompilierten Paketen unterscheiden, und versuchen, sie zu aktualisieren. Diese Unterschiede können sich auf die Versionsnummer, das Abhängigkeitsdiagramm, die Optionen für die Kompilierungszeit usw. beziehen.

Die richtige Möglichkeit, zu verhindern, dass pkgein Port oder ein Paket (nach der Installation gibt es keinen Unterschied in Bezug auf die zu schützenden Tools) in Betracht gezogen wird, besteht in der Verwendung des pkg lockBefehls.

Wenn Sie jedoch feststellen, dass Sie die Optionen für eine Reihe von Ports ändern, sollten Sie möglicherweise poudriereIhr eigenes Paket-Repository installieren und warten. Das Einrichten ist etwas aufwendig und funktioniert am besten, wenn Ihr Build-Host über einen ZFS-Speicherpool verfügt. Es ist eine sehr flexible und bequeme Möglichkeit, benutzerdefinierte Software-Builds zu verwalten.

D_Bye
quelle