Ich benutze meistens Pakete unter FreeBSD, weil die meisten für mich in Ordnung sind. Einige passen jedoch nicht zu mir, wie das vim
Paket, das keine Grafik enthält gvim
.
Kein Problem. Ich kann stattdessen den Port installieren, indem ich portmaster editors/vim
die GTK2
Option benutze und auswähle . Das funktioniert gut.
Wenn ich jedoch pkg upgrade
nach 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 upgrade
die 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?
quelle
pkg lock
die empfohlene Lösung? Es funktioniert, aber ich würde hoffen, dass etwas so einfaches wie dies automatisch gehandhabt werden könnte.pkg lock
die 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."Antworten:
Sie müssen sich daran erinnern, dass
pkg
und 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/vim
Port ausgewählt haben, wurde dieser in der Paketdatenbank registriert. Wenn Sie später liefenpkg upgrade
,pkg
an den Paketdaten gesuchtvim
und gefunden , dass GTK2 Unterstützung in der installierten Version freigegeben worden war, während sie nicht in dem vorkompilierte Paket aktiviert ist.pkg upgrade
genau 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
pkg
ein 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 despkg lock
Befehls.Wenn Sie jedoch feststellen, dass Sie die Optionen für eine Reihe von Ports ändern, sollten Sie möglicherweise
poudriere
Ihr 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.quelle