Osoby, które już wcześniej pracowały z systemami UNIX(R) wiedzą, że typowy proces instalacji oprogramowania sprowadza się mniej więcej do następujących punktów:
Pobranie programu, który może być rozprowadzany w postaci kodu źródłowego bądź binarnej.
Rozpakowania programu z formatu w jakim jest rozprowadzany (najczęściej jest to plik tar skompresowany za pomocą compress(1), gzip(1) lub bzip2(1)).
Odnalezienie dokumentacji (najczęściej plik
INSTALL
lub README
bądź pliki w podkatalogu doc/
)
i zapoznanie się z instrukcjami instalacji programu.
Kompilacja programu, jeśli rozprowadzany jest w postaci
źródłowej. Może to wymagać również wykonania dodatkowych
czynności, jak np. edycji pliku Makefile
bądź uruchomienia skryptu configure
.
Weryfikacja i instalacja aplikacji.
Wszystko to przy założeniu, że w między czasie nie pojawiły się żadne trudności. Instalacja oprogramowania, które nie było przygotowywane z myślą o FreeBSD może wymagać nawet modyfikacji kodu źródłowego nim zacznie poprawnie funkcjonować.
Oczywiście, we FreeBSD można instalować oprogramowanie "tradycyjnym" sposobem. Jednakże system ten posiada dwa rozwiązania, które potrafią zaoszczędzić mnóstwo czasu i trudu: pakiety i porty. W chwili pisania tego tekstu, dostępnych za pomocą tych systemów jest przeszło 24,000 aplikacji.
Dla każdego programu dostępny jest do pobrania pojedynczy pakiet, który zawiera skompilowane kopie plików aplikacji, zarówno plików uruchomieniowych jak i konfiguracyjnych czy dokumentacji. Pobranym plikiem można manipulować za pomocą poleceń pkg_add(1), pkg_delete(1), pkg_info(1), itp. Nowe programy można instalować za pomocą zaledwie jednego polecenia.
Port natomiast, jest zbiorem plików mających za zadanie zautomatyzować proces kompilacji danego programu z kodu źródłowego.
O ile typowa kompilacja programu składa się z wielu czynności wykonywanych przez użytkownika, o tyle pliki składające się na port zawierają dostateczną ilość informacji aby pozwolić systemowi zrobić to za nas. Wystarczy wprowadzić kilka prostych poleceń a system automatycznie pobierze kod źródłowy programu, rozpakuje, nałoży łatki, skompiluje i zainstaluje za nas.
Ponadto system portów może również posłużyć do przygotowania
pakietów, którymi następnie można manipulować za pomocą
pkg_add
i innymi poleceniami
zarządzających pakietami.
Obydwa systemy potrafią analizować zależności
występujące pomiędzy aplikacjami. Załóżmy, że chcemy zainstalować
program, który zależy od pewnej biblioteki. Zarówno program jak
i biblioteka dostępne są w systemach portów i pakietów FreeBSD.
Niezależnie od tego czy wykorzystamy polecenie pkg_add
czy porty, by zainstalować program, to obydwa systemy spostrzegą,
że biblioteka nie została zainstalowana i automatycznie zainstalują
najpierw bibliotekę.
Można by się zastanawiać dlaczego FreeBSD wykorzystuje obydwa systemy, skoro ich działanie jest tak bardzo podobne. Tak pakiety jak i porty posiadają pewne zalety. Który system wykorzystamy zależy od naszych własnych upodobań.
Skompresowany plik pakietu zajmuje z reguły mniej miejsca niż skompresowany plik zawierający kod źródłowy.
Instalacja pakietów nie wymaga dodatkowej kompilacji. W przypadku dużych aplikacji, jak np. Mozilla, KDE czy GNOME może to być istotne. Szczególnie gdy pracuje się na dość wolnej maszynie.
Stosowanie pakietów nie wymaga żadnej wiedzy o procesie kompilowania oprogramowania w systemie FreeBSD.
Pakiety są z reguły kompilowane z dość typowymi opcjami, ponieważ powinny być przydatne do wykorzystania na maksymalnej liczbie komputerów. Instalując programy z portów mamy możliwość "podkręcenia" opcji kompilacji, by (przykładowo) skompilować program zoptymalizowany dla procesorów Pentium IV lub Athlon.
Niektóre aplikacje posiadają pewne opcje kompilacji związane z zadaniami, które maja realizować. Przykładowo Apache może zostać skompilowany z wieloma różnorodnymi opcjami. Kompilując go z portów nie musimy zgadzać się na domyślne opcje mogąc samemu dokonać wyboru.
W niektórych przypadkach dostępnych jest kilka pakietów
tej samej aplikacji skompilowanych z różnymi parametrami.
Na przykład program Ghostscript
dostępny jest jako pakiet ghostscript
oraz ghostscript-nox11
, zależnie od
tego czy mamy zainstalowany serwer X11. O ile tego typu
rozwiązania są teoretycznie możliwe do zrealizowania w
systemie pakietów, o tyle staje się to praktycznie niemożliwe
gdy aplikacja posiada więcej niż kilka różnych opcji
kompilacji.
Warunki licencji niektórych aplikacji zabraniają rozprowadzania w postaci binarnej. Muszą być zatem rozprowadzane jako kod źródłowy.
Niektórzy nie ufają pakietom binarnym. W przypadku kodu źródłowego można (przynajmniej w teorii) przejrzeć go i samemu poszukać potencjalnych luk.
Jeśli posiadamy własne łaty będziemy potrzebowali kodu źródłowego aby je nanieść do programu.
Jeszcze inni po prostu lubią mieć pod ręką kod źródłowy, by móc go poczytać gdy się nudzą, zmodyfikować czy zapożyczyć pewne rozwiązania (o ile pozwala na to licencja), itd.
Najlepszym sposobem śledzenia zmian dokonywanych w systemie portów jest zapisanie się na Listę dyskusyjną portów FreeBSD oraz Listę dyskusyjną błędów w systemie portów FreeBSD.
Przed instalacją jakiejkolwiek aplikacji należy sprawdzić
na stronie http://vuxml.freebsd.org/
czy w danym programie istnieją luki związane bezpieczeństwem.
Alternatywnie możemy zainstalować security/portaudit, który automatycznie
sprawdza wszystkie instalowane programy pod względem znanych
luk bezpieczeństwa; weryfikowane są również porty przed kompilacją.
W między czasie można wykorzystać polecenie portaudit
-F -a
, by sprawdzić zainstalowane już pakiety.
Pozostała część niniejszego rozdziału ma za zadanie wyjaśnić jak z wykorzystaniem systemu pakietów i portów instalować w systemie FreeBSD oprogramowanie innych producentów.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.