[OpenBSD]

Kolekcja portów i pakietów


Spis treści


Motywacja

OpenBSD jest dość kompletnym systemem sam w sobie, niemniej jest dużo oprogramowania, które powinno być dodane. Istnieje jednak problem, polegający na wytyczeniu granicy co do tego, co ma być włączone do systemu, a co nie. Ponadto czasami występują kłopoty w prawach licencyjnych i eksportowych. Jako, że OpenBSD ma być małym, niezależnym systemem UNIX-opodobnym, to niektórych rzeczy po prostu nie da się rozprowadzać z systemem.

Porty i pakiety NIE PODLEGAJĄ temu samemu, dokładnemu procesowi audytu, przez który przechodzi kod OpenBSD. Jakkolwiek staramy się utrzymać jakość pakietów na wysokim poziomie, to nie posiadamy wystarczająco dużo zasobów ludzkich, aby zagwarantować ten sam poziom solidności i bezpieczeństwa.

Kolekcja portów, zapożyczona od FreeBSD, wypełnia tą lukę. Koncepcja polega na posiadaniu Makefile, dla każdego programu z zewnątrz, który kontroluje:

Wszystkie te informacje są przechowywane w odpowiedniej hierarchii w katalogu /usr/ports .

Pakiety są binarnym odpowiednikiem portów. Skompilowany port staje się pakietem, który może być zarejestrowany w systemie przy użyciu pkg_add(1)

Pakiety wyglądają jak normalne archiwa .tgz, ale powinny być zawsze dodawane przy pomocy pkg_add(1). ponieważ w pakietach, mogą znajdować się dodatkowe informacje, które mogą być zinterpretowane tylko przez pkg_add(1). Uwaga: Łatwo można odróżnić pakiet od archiwum .tgz przez użycie pkg_info(1).

Zdobywanie pakietów

Duża kolekcja pakietów gotowych do instalacji jest dostępna na najbardziej powszechne architektury. Dodawanie pakietu jest tak proste jak wpisanie pkg_add pkgname.tgz. Jeśli bierzesz pakiety z jednego źródła (repozytorium pakietów), to ustaw zmienną środowiskową PKG_PATH na URL tego repozytorium, aby ściągnąć pakiety zależne.

Na przykład, aby zainstalować pakiet Gimp dla wydania 4.2 na architekturze i386 z ftp'a (z włączeniem pakietów zależnych):

    # export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.2/packages/i386/
    # pkg_add gimp-2.2.17.tgz

Uaktualnianie portów i pakietów do wydania OpenBSD

Wydanie 2.7 wprowadziło gałąź stabilną do drzewa portów.

Na przykład, aby ściągnąć gałąź stabilną dla wydania 4.2, wykonaj:

    $ cd /usr/ports
    $ cvs -q -d anoncvs@jakis.anon.serwer:/cvs up -r OPENBSD_4_2 -Pd

Poczynając od wydania 2.8, wybrane dostępne są rówież pakiety binarne. Odwołaj się do strony stabilnych pakietów, aby dowiedzieć się o uaktualnionych pakietach do gałęzi stabilnej. Jeśli chcesz otrzymywać oficjalne ogłoszenia związane z bezpieczeństwem portów, zapisz się na listę mailingową ports-security.

Nazwy pakietów są zawsze zmienione, w razie uaktualnienia, aby uniknąć możliwego ryzyka pomylenia pakietu z wydania z pakietem z poprawionym błędem.

Instalacja i zarządzanie pakietami

Strona manuala packages(7) zawiera przydatne informacje o sposobach zarządzania zainstalowanymi pakietami, oraz rozwiązywania problemów dotyczących konfliktów (plików, które już istnieją) i zarządzania zależnościami.

Od OpenBSD 2.8, aby uaktualnić pakiet, musisz:

Może być to trochę uciążliwe, ponieważ pakiety mogą zależeć od siebie, i możesz musieć usunąć dużą ilość pakietów, aby dokonać uaktualnienia.

Używanie portów

Jeżeli dany pakiet nie istnieje dla twojej architektury, możesz być pomimo tego w stanie skompilować port. Zresztą, niektórzy użytkownicy i tak preferują przekompilowanie każdego pakietu ze źródła, z różnych przyczyn.

Możesz ściągnąć przez FTP wersję z wydania z katalogu pub/OpenBSD/[wersja] (gdzie [wersja] jest numerem wydania), z któregokolwiek z mirrorów ftp. Wersja wydania, to ta która jest dostarczana przez nas na CDROM'ie, i przeszła przez więcej testów niż którykolwiek snapshot. Więcej informacji jest dostępne na stronie manuala ports(7).

Cykl życia drzewa portów

The ports tree, like the rest of OpenBSD, is constantly changing.

Porty z gałęzi -current nie mogą być używane z poprzednim wydaniem. Dzieje się tak, ze względu na zmiany, zazwyczaj w sposobie budowania portu, które wymagają kodu z drzewa źródeł OpenBSD-current.

Drzewo Portów działa jako jedność. Uaktualnianie pojedyńczego katalogu, nie daje gwarancji, że program będzie działać, ponieważ zależności pakietów mogą zmusić użytkownika do przekompilowania dużej części drzewa portów. Nie powinno się korzystać z ports-current, chyba że jest się przygotowanym na różnego rodzaju problemy. Listy mailingowe takie jak ports-changes@openbsd.org lub tech@openbsd.org będą w tym wypadku nieocenioną pomocą.

Zaleca się aby śledzić ports-stable na maszynie produkcyjnej: będziemy starać się utrzymać drzewo portów aktualnym jeśli chodzi o rozwiązywanie problemów, oraz dostarczać uaktualnienia binarne.

Zauważ, że znikające pliki dystrybucyjne nie są problemem, ponieważ ftp.openbsd.org zawiera całe repozytorium. Nawet zmiana sumy kontrolnej nie jest problemem - możesz wydać polecenie:

	make checksum REFETCH=true 
aby upewnić się że ściągasz właściwy plik dystrybucyjny dla twojego drzewa portów. Aby zapoznać się z definicją current i stable, zobacz wątki OpenBSD..

Listadziennych zmian w portach i portach-current jest dostępna.

Porty-current można uzyskać poprzez:

Porty i X Window System

W pliku konfiguracyjnym dla X pod OpenBSD, jest trochę magii, która pozwala na instalowanie aplikacji, które bazują na imake w katalogu /usr/local.

Przykład użycia drzewa portów

Załóżmy, że zaopatrzyłeś się w drzewo portów i chcesz skompilować i zainstalować program archiwizacyjny unzip. Powinieneś być w stanie to zrobić w następujący sposób:

    % cd /usr/ports/archivers/unzip
    % su
    # make
    # make install
    # exit
Proste, nieprawdaż? Szczególnie, biorąc pod uwagę wszystko co działo się w tle:

W OpenBSD 3.0, niemalże wszystkie porty automatycznie budują binarne pakiety, gdy się je instaluje.

Podczas budowania portów, katalog /usr/ports/distfiles stopniowo zapełnia się archiwami z źródłami programów, a /usr/ports/packages, binarnymi pakietami. Użytkownicy, odwiedzający Internet sporadycznie, powinni zapoznać się z mirroring-ports(7), dzięki czemu, będą w stanie wydajnie ściągnąć wszystkie pliki źródłowe jednocześnie. Zauważ, że zestaw płyt OpenBSD zawiera drzewo portów i wybrane pakiety. Jeśli chcesz mieć pliki ze źródłem, będziesz musiał się w nie sam zaopatrzyć.

Zaawansowane używanie drzewa ports

Porty posiadają wiele opcji, przeznaczonych dla zaawansowanego użytkownika, które czynią je wartościowym narzędziem. Zaawansowani użytkownicy mogą chcieć manipulować przy plikach Makefile (powinni przeczytać najpierw stronę manuala poświęconą make(1) lub ustawiać różne zmienne podczas uruchamiania make z linii poleceń, lub w /etc/mk.conf. Te zmienne są dokładnie opisane w bsd.port.mk(5), i w dokumentach dotyczących portowania poniżej.

Tworzenie nowych portów

Jeżeli jesteś zainteresowany pomocą przy rozszerzaniu drzewa portów OpenBSD, powinienieś najpierw przeczytać porting.html. Strona ta odnosi się do Podręcznika Porter'a FreeBSD i do innych szczegółów, specyficznych dla OpenBSD.

Kiedy port opóźnia się w stosunku do powszechnej wersji

Kolekcja portów jest projektem ochotniczym. Czasami, po prostu dany projekt nie posiada wystarczająco dużo developerów, aby wszystko było aktualne. Developerzy często wybierają to, co ich interesuje i testują w swoim środowisku. Twoje dotacje pozwalają na testowanie portów na różnych platformach.

Niektóre pojedyńcze porty, mogą opóźniać się w stosunku do powszechnej wersji z tego właśnie powodu. Kolekcja portów, może mieć wersję programu ze stycznia, podczas gdy developerzy wydali nową wersję w maju. Często jest to świadoma decyzja, ponieważ nowa wersja może mieć problemy w działaniu na OpenBSD, który to problem autor stara się rozwiązać, lub zwyczajnie nowsza wersja jest gorsza od starszej: OpenBSD może mieć inne cele od osób, które rozwijają oprogramowanie, które to cele nie zawsze są zgodne z celami drużyny OpenBSD. Uaktualnienie portu może być opóźnione, ponieważ nowa wersja nie jest uznawana jako niezbędne uaktualnienie.

Jeżeli koniecznie potrzebujesz nowej wersji portu, powinieneś zapytać OSOBĘ ODPOWIEDZIALNĄ za port, aby go uaktualniła (zobacz poniżej jak sprawdzić kto jest osobą odpowiedzialną); jeśli możesz, wyślij odpowiednie łatki. Aby stworzyć odpowiednie łatki, odwołaj się do dokumentacji związanej z tworzeniem portów.

Problemy i kontakty

Jeśli masz problem z istniejącym portem, wyślij e-mail'a do osoby odpowiedzialnej za port. Aby sprawdzić, kto jest osobą odpowiedzialną za port wykonaj:

       % cd /usr/ports/archivers/unzip
       % make show=MAINTAINER
Jeśli nie ma osoby odpowiedzialnej, lub nie możesz się z nim/nią skontaktować, wyślij e-mail'a na listę wysyłkową OpenBSD, ports@openbsd.org. Nie używaj misc@openbsd.org aby zadawać pytania dotyczące portów. Poprawki są zawsze mile widziane, ale w każdym wypadku załącz poniższe informacje: Dla portów, które nie kompilują się poprawnie, cała transkrypcja kompilacji jest potrzebna. Możesz użyć skryptu portlogger, który znajduje się w /usr/ports/infrastructure/build. Przykładowe użycie:
       % cd /usr/ports/archivers/unzip
       % su
       # mkdir -p ~/portslogs
       # make clean install 2>&1 | /usr/ports/infrastructure/build/portslogger \
               ~/portslogs
Po wykonaniu tego skryptu powinieneś mieć plik w katalogu ~/portslogs, który możesz wysłać do osoby odpowiedzialnej za port. Upewnij się że nie masz ustawionych jakiś specjalnych opcji, na przykład w /etc/mk.conf.

Alternatywnym sposobem jest wykonanie poniższych czynności:


OpenBSD www@openbsd.org
$OpenBSD$