Czy można ustawić konkretną wersję pakietów, od której zależy pakiet główny?


10

Mamy środowisko programistyczne na FreeBSD 10.3. Słyszałem, że FreeBSD zarządza zależnościami pakietów w taki sposób, że zawsze szuka najnowszej wersji wszystkich pakietów, od której zależy pakiet główny. I wygląda na to, że to prawda. Tak więc moje pytania to:

  1. Czy to prawda? czy istnieją jakieś oficjalne dokumenty, które to potwierdzają?
  2. Najlepszy sposób na rozwiązanie tego problemu?

7
Podejrzewam, że możesz najpierw zainstalować pakiet konkretnej wersji, której potrzebujesz pkg lock, a następnie zainstalować wszystko, co chcesz.
arrowd

1
Zależy to również od tego, jakiego portu / pakietu chcesz iw jakiej wersji. Na przykład możesz mieć różne wersje python / postgresql / php. Czasami istnieje wiele pakietów dostępnych dla oprogramowania, czasem możesz zbudować swój specjalny pakiet z portów.
Raphael Ahrens

3
Jeśli ślepo uruchomisz aktualizacje Freebsd (lub aktualizację pkg), tak, znajdzie najnowszą możliwą i spróbuje ją zainstalować. Jak powiedział arrowd, teraz (od wersji 9.2) możesz pkg zablokować <pkg>, co powinno chronić to, co zainstalowałeś i jego zależności przed modyfikacją. YMMV.
quadruplebucky

Odpowiedzi:


1

Jak FreeBSD buduje pakiety

Projekt FreeBSD służył do budowania pakietów tylko dla wydań, a czasami dla gałęzi STABLE. Stare konstruktory pakietów korzystały z systemu rozproszonego o nazwie Portbuild. Do zbudowania pakietów użyłby dużego klastra mniejszych maszyn o pojemności 2 GB-4 GB. Było to podatne na błędy i powolne, głównie ze względu na starsze maszyny. Pełna kompilacja może potrwać jeszcze tydzień. Dzisiaj pakiety są budowane przy użyciu pojedynczych dużych maszyn przy użyciu Poudriere. (Ze strony internetowej Brian Drewery ).

Zobacz także: Jak zaktualizować mieszankę pakietów i portów we FreeBSD

FreeBSD ma ewoluujący ABI (i API), podobnie jak Solaris i Windows, podczas gdy Linux ma stabilny (stagnacyjny?) ABI (i API), więc w przypadku Linuksa stare pliki binarne będą nadal działać na nowszej wersji systemu operacyjnego, podczas gdy w systemach innych niż Linux nie jest to „ t zawsze tak jest (czasem tak jest).

Używanie pkg lockmoże nadal prowadzić do bólów głowy , podczas gdy blokuje się (wyświetla ostrzeżenie) podczas próby uaktualnienia przy użyciu pkg upgradenadal zakłada, że ​​wersje o wyższym numerze są lepsze (pożądane) i że jest to coś, co chcesz zrobić - więc prosi o pozwolenie, i możesz na to pozwolić, ale nie gwarantuje to, że coś innego nie zostanie zepsute. Zobacz powyższy adres URL lub tę dyskusję: „ Czy wolisz, aby FreeBSD blokował wersje pakietów binarnych dystrybuowanych za pośrednictwem pkg dla wersji systemu operacyjnego? ”.

Jeśli jeden pakiet jest czasem zablokowany , musisz zezwolić na jego odblokowanie i wykonanie aktualizacji, podczas gdy będzie to działać dla jednego pakietu (i wszystkich jego zależności), nie ma pewności, że coś innego nie będzie niezgodne z nowymi bibliotekami ( i dlatego też potrzebujesz aktualizacji, jeśli jest ona obecnie dostępna).

Blog Briana Drewery'ego: „ FreeBSD Journal: Poudriereocenia :

„Przestań używać portmaster, portupgrade i portów na serwerach i przełącz się na pakiety.

Konfigurowanie własnych kompilacji pakietów za pomocą Poudriere zajmuje tylko kilka minut i pozwoli ci zaoszczędzić dużo czasu w przyszłości.

...

Jeśli utrzymujesz więcej niż jeden system FreeBSD i nie używasz już pakietów, powinieneś. Obsługuję tylko 20 serwerów, ale budowa portów w każdym systemie zajęła mi dużo czasu i zmarnowała zasoby na maszyny produkcyjne. Podczas budowania portów na wielu serwerach bardzo łatwo jest zsynchronizować ich opcje lub wersje. Budując pakiety raz na jednym systemie, zmniejszyłem obciążenie moich systemów, zmniejszyłem ilość pracy, którą musiałem wykonać i zapewniłem spójność wszystkich moich systemów. Zamiast radzić sobie z tą samą awarią w każdym systemie, muszę sobie z tym poradzić tylko w systemie budowania.

Ale zaczep…

Dlaczego miałbyś odchodzić od oficjalnych pakietów? Struktura portów zapewnia obsługę portów w celu zmiany konfiguracji czasu kompilacji. Nie wszystkie aplikacje obsługują konfigurację w czasie wykonywania. Niektóre aplikacje muszą być kompilowane inaczej w zależności od włączonych funkcji. Inne mają opcje po prostu zmniejszające liczbę funkcji i zależności w domyślnym porcie. W przypadku administratorów serwerów może to szybko doprowadzić do stwierdzenia, że ​​niektóre domyślne pakiety nie spełniają ich wymagań.

Więc ...

Istnieje kilka sposobów uzyskania niestandardowych pakietów. Pkg obsługuje używanie wielu repozytoriów. Można go skonfigurować tak, aby używał oficjalnego repozytorium FreeBSD jako podstawowego, a niestandardowego jako dodatkowego. Pkg nie jest ograniczona liczbą repozytoriów, które może śledzić, i można je zmienić według priorytetu. Problem z wieloma repozytoriami polega na tym, że ich utrzymanie może być obecnie trudne. Gdy Pkg wykryje, że zainstalowany pakiet ma inne opcje lub zależności od repozytorium, które śledzi, pakiet zostanie ponownie zainstalowany z potencjalnie dowolnej zdalnej wersji. Możesz albo zablokować pakiet podczas aktualizacji za pomocą pkg lock PKGNAME i pkg unlock PKGNAME lub powiązać go z określonym repozytorium za pomocą adnotacji pkg -A repozytorium PKGNAME REPONAME. Istnieje również subtelny problem związany z synchronizacją drzewa portów dla niestandardowego repozytorium z pakietami FreeBSD. Ponieważ pakiety są tworzone z migawki drzewa portów wykonywanej raz w tygodniu, jeśli niestandardowe repozytorium nie pasuje, może to prowadzić do konfliktów. O wiele łatwiej jest po prostu zbudować cały zestaw dokładnie tego, czego potrzebujesz, z wybranymi opcjami.

Rozwiązanie:

Poudriere (z grubsza wymawiane poo-dree-year, francuski dla „beczki w proszku”) został napisany jako szybszy i prostszy zamiennik dla Tinderbox. Został napisany przez autora Pkg Baptiste Daroussina i jest teraz w większości obsługiwany przeze mnie wraz z Baptiste i kilkoma innymi autorami. Szybko stał się de facto narzędziem do testowania portów i budowania pakietów FreeBSD. Jest to oficjalne narzędzie klastrowania kompilacji i jest również używane w projekcie FreeBSD Ports do testowania poprawek w tak zwanych „uruchomieniach exp”. Jest napisany w powłoce POSIX i powoli jest przenoszony do komponentów C. W przeciwieństwie do Tinderboksa nie ma zależności i nie wymaga bazy danych. Został znacznie zoptymalizowany, aby był wysoce równoległy we wszystkich operacjach. Wykorzystuje więzienia do budowania portów w środowisku piaskownicy w bardzo surowych warunkach. Więzienie jest tworzone raz za pomocą prostego polecenia. Podczas kompilacji więzienie jest automatycznie klonowane dla każdego procesora używanego, aby zapewnić portom czyste miejsce do kompilacji. ".

Utworzenie własnego repozytorium za pomocą poudriere pozwala na elastyczność portów i łatwość zarządzania pakietami.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.