Najczęściej używam pakietów na FreeBSD, ponieważ większość z nich mi odpowiada. Niektóre jednak mi nie pasują, na przykład vim
pakiet, który nie zawiera grafiki gvim
.
Nie ma problemu. Zamiast tego mogę zainstalować port, używając portmaster editors/vim
i wybierając GTK2
opcję. To działa dobrze.
Jednak gdy biegnę pkg upgrade
po chwili, otrzymuję następujące informacje:
Reinstalling vim-7.4.110_3 (options changed)
Co daje? Nie zmieniłem żadnych opcji i nie ma nowej wersji (również nie w portach). Czy porównuje mój zainstalowany port z wersją zdalną bez GTK2
?
Oczywiście mogę pozwolić, pkg upgrade
aby zadziałało i ponownie zainstalować port później, ale to jest głupie. Jaki jest zalecany sposób aktualizacji kombinacji pakietów i portów?
package-management
freebsd
bsd-ports
Ricardo Buring
źródło
źródło
pkg lock
zalecanego rozwiązania? Działa, ale mam nadzieję, że coś tak prostego można rozwiązać automatycznie.pkg lock
jest to zaprojektowane rozwiązanie: ze strony podręcznika: „pkg lock służy do blokowania pakietów przed ponowną instalacją, modyfikacją lub usunięciem”.Odpowiedzi:
Musisz o tym pamiętać,
pkg
a porty rejestrują zainstalowane oprogramowanie w tym samym miejscu (baza danych SQLite w/var/db/pkg
). Żaden system nie rejestruje żadnych dodatkowych informacji, że dane oprogramowanie zostało zainstalowane jako wstępnie skompilowany pakiet lub jako port. Dlatego po zainstalowaniu oprogramowania jednym z tych podejść narzędzia nie mają możliwości dowiedzenia się, w jaki sposób zostało zainstalowane.Po wybraniu obsługi GTK2 dla
editors/vim
portu, który został zarejestrowany w bazie danych pakietu. Kiedy później uruchomiłeśpkg upgrade
,pkg
sprawdziłeś dane pakietuvim
i okazało się, że obsługa GTK2 została włączona w zainstalowanej wersji, podczas gdy nie jest włączona we wstępnie skompilowanym pakiecie.pkg upgrade
robi dokładnie to, co powinien - wyszukuje wszystkie zainstalowane pakiety, które różnią się od dostępnych wstępnie skompilowanych pakietów, i próbuje je uaktualnić. Różnice mogą dotyczyć numeru wersji, wykresu zależności, opcji czasu kompilacji itp.Właściwym sposobem uniknięcia
pkg
rozważenia portu lub pakietu (po zainstalowaniu nie ma różnicy, jeśli chodzi o narzędzia), które chcesz zabezpieczyć, jest użyciepkg lock
polecenia.Alternatywnie, jeśli zmienisz opcje na wielu portach, możesz rozważyć zainstalowanie
poudriere
i utrzymanie własnego repozytorium pakietów. Trwa to trochę konfiguracji i działa najlepiej, jeśli host kompilacji ma pulę pamięci ZFS, chociaż będzie działać, jeśli nie masz ZFS; jest to bardzo elastyczny i wygodny sposób zarządzania niestandardowymi kompilacjami oprogramowania.źródło