Autorem tekstu jest Tomasz Luchowski, uczeń II LO w Lublinie.
Obecnie pracuje jako administrator serwerów opartych o NetBSD/FreeBSD
Kontakt z autorem przez e-mail: zuntum@eik.pl
Packages, ports, pkgsrc -- pakiety w systemach *BSD
Kolekcja pakietów FreeBSD, OpenBSD oraz NetBSD to zbiór narzędzi bardzo ułatwiających kompilację i instalację dużej ilości darmowego oprogramowania dla systemów Uniksowych. Trzeba wydać tylko jedną lub dwie komendy żeby otrzymać działający program.
Są dwa sposoby instalacji: możemy ściągnąć pakiet ze skompilowanym programem , który trzeba tylko dodać do systemu, bądź też sami kompilujemy program. Pakiety binarne częściej są stosowane na słabszych komputerach, na których kompilacja kodu źródłowego zajęłaby dużo czasu. Jednak samodzielne kompilowanie kodu źródłowego daje nam większe możliwości, możemy dostosować wszystkie opcje kompilacji, wybrać optymalizację na nasz procesor itp.
Pakiety zawierające skompilowane programy w systemach *BSD noszą nazwę paczek (packages), natomiast pakiety ułatwiające kompilację programów ze źródeł we FreeBSD i OpenBSD noszą nazwę portów (ports), w NetBSD zaś pkgsrc. W NetBSD wprowadzono inną nazwę ze względu na to, że według nazewnictwa NetBSD port to wersja NetBSD dla konkretnej platformy sprzętowej.
Ściąganie i instalacja paczki (package)
Na początku znajdźmy i skopiujmy pakiet binarny (package), który nas interesuje. Chcąc odnaleźć dany plik na serwerach FTP należy zacząć poszukiwania od podanych poniżej adresów, zależnie od systemu.
Pakiety NetBSD można wygodnie przeglądać pod adresem:
ftp://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/README.html
FreeBSD:
ftp://ftp.freebsd.org/pub/FreeBSD/releases/
W tym katalogu znajdują się podkatalogi z numerami wersji FreeBSD, w nich zaś oddzielne katalogi dla każdej platformy sprzętowej. Szukając paczek dla platformy i386 należy wejść do katalogu i386. Potem wchodzimy do odpowiedniego katalogu w zależności od posiadanej wersji FreeBSD, np. 4.1.1-RELEASE. W tym katalogu znajdują się już posortowane paczki – są katalogi „tematyczne” z paczkami należącymi tylko do danej kategorii oraz katalog All w którym umieszczone są wszystkie paczki.
OpenBSD:
ftp://ftp.openbsd.org/pub/OpenBSD/
Znajdują się tutaj katalogi z numerami wersji OpenBSD, najnowsza wersja ma numer 2.7. Następnie ależy się skierować do katalogu packages, potem do odpowiedniego podkatalogu w zależności od platformy sprzętowej, np. i386. Tam znajdziemy posortowane paczki w katalogach tematycznych oraz wszystkie paczki w katalogu All
NetBSD:
ftp://ftp.netbsd.org/pub/NetBSD/packages/
Są tutaj umieszczone podkatalogi z numerami wersji NetBSD, w nich zaś oddzielne katalogi dla każdej platformy sprzętowej. Na przykład poszukując paczki dla wersji 1.4.2 dla platformy i386 należy wejść do katalogu 1.4.2/i386. W tym katalogu znajdziemy katalogi z kategoriami, np. paczki z kategorii mail znajdują się w katalogu o tej nazwie. Chcąc przejrzeć wszystkie dostępne paczki trzeba wejść do katalogu All.
Po ściągnięciu odpowiedniej paczki dokonujemy jej instalacji poleceniem:
# pkg_add nazwa-pliku.tgz
Brak komunikatu oznacza, że paczka została zainstalowana. Najczęstszym komunikatem o błędzie jest informacja o niemożności instalacji paczki która jest wymagana do instalacji danej, np.:
# pkg_add gnome-1.2.tgz
pkg_add: could not find package gnomeapplets-1.2.2 !
pkg_add: could not find package gnomeaudio-1.0.0 !
pkg_add: could not find package gnomebasic-0.0.12 !
pkg_add: could not find package gnomecontrolcenter-1.2.2 !
pkg_add: could not find package gnomecore-1.2.2.1 !
Należy ściągnąć wymagane paczki oraz umieścić w bieżącym katalogu, gdyż program pkg_add sam zainstaluje wymagane paczki, jeśli je znajdzie.
Można także nakazać pobranie i instalację paczki z sieci, wtedy jako argument dla pkg_add podajemy adres URL paczki , np.:
# pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/4.1.1-RELEASE/packages/shells/zsh-3.1.9.tgz
Wygodniej jest jednak ręcznie ściągnąć paczkę i zainstalować komendą pkg_add, gdyż w przypadku instalacji paczki przez sieć musimy pamiętać pełną ścieżkę do niej na serwerze FTP.
Ports i pkgsrc
Przedstawię teraz drugą metodę instalacji pakietów - przy wykorzystaniu ports/pkgsrc. Najpierw należy ściągnąć i rozpakować plik ports.tar.gz lub pkgsrc.tar.gz
W zależności od systemu:
FreeBSD:
# ftp ftp://ftp.freebsd.org/pub/FreeBSD/branches/-current/ports.tar.gz
# tar xfvz ports.tar.gz –C /usr
OpenBSD:
# ftp ftp://ftp.openbsd.org/pub/OpenBSD/2.7/ports.tar.gz
# tar xfvz ports.tar.gz –C /usr
NetBSD:
# ftp ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/pkgsrc.tar.gz
# tar xfvz pkgsrc.tar.gz –C /usr
Teraz w katalogu /usr/ports (bądź /usr/pkgsrc w przypadku NetBSD) znajdują się katalogi nazwane tak jak poszczególne kategorie (np. shells, mail). W celu zainstalowania odpowiedniego programu należy wejść do stosownego katalogu:
# cd /usr/ports/shells/zsh
lub
# cd /usr/pkgsrc/shells/zsh
w przypadku NetBSD
Teraz trzeba wydać komendę:
# make
Jeśli pliki źródłowe nie zostaną znalezione (pliki te szukane w katalogu /usr/ports/distfiles lub /usr/pkgsrc/distfiles), wówczas zostają ściągnięte. Następnie następuje kompilacja. W celu zainstalowania programu piszemy:
# make install
Wydanie polecenia
# make clean
spowoduje usunięcie tymczasowych plików powstałych podczas kompilacji.
Można także od razu napisać:
# make install clean
Co powoduje wykonanie wszystkich wyżej wymienionych kroków.
Uzyskiwanie informacji o pakietach oraz ich usuwanie
Paczka (package) oraz pakiet skompilowany ze źródeł (w przypadku instalacji z ports/pkgsrc) są po zainstalowaniu traktowane jednakowo. Informacje o zainstalowanych pakietach znajdują się w katalogu /var/db/pkg. Istnieje wygodne narzędzie do przeglądania zainstalowanych pakietów – pkg_info. Wykonanie polecenia pkg_info bez parametrów spowoduje wyświetlenie ich listy wraz z krótkim opisem, jeśli uruchomimy pkg_info z parametrem „-a” otrzymamy dokładniejszy opis.
W celu usunięcia pakietu należy znać jego dokładną nazwę, nie wystarczy bowiem napisanie
# pkg_delete tcsh
pkg_delete: no such package 'tcsh' installed
Gdyż nie zainstalowano pakietu o nazwie tcsh. W celu ustalenia jego dokładnej nazwy pomocne będzie polecenie grep:
# pkg_info | grep tcsh
tcsh-6.09.00 An extended C-shell with many useful features
Teraz już wiemy, że należy napisać:
# pkg_delete tcsh-6.09.00
Uaktualnianie ports/pkgsrc
Warto regularnie uaktualniać kolekcje ports/pkgsrc. Nowsze wersje portsów są częściej lepiej dopracowane pod względem security, uaktualniane są także wersje programów. Oczywiście jest wiele metod uaktualniania ports/pkgsrc, podam tylko niektóre.
FreeBSD:
Najwygodniej zrobić to za pomocą programu cvsup. Nie znajduje się on domyślnie w systemie, jednak łatwo go dodać komendą:
# pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/packages/4.1.1-RELEASE/All/cvsup-bin-16.1.tgz
Oto przykładowy plik konfiguracyjny dla cvsup:
*default host=cvsup.pl.freebsd.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default compress
ports-all
Następnie uruchamiamy:
# cvsup nazwa-pliku-konfiguracyjnego
OpenBSD:
# setenv CVS_RSH ssh
# cd /usr/ports; cvs –d anoncvs@anoncvs.ca.openbsd.org:/cvs -z9 update –dAP
NetBSD:
Program cvs nie znajduje się domyślnie w systemie, jednak łatwo go dodać komendą:
# pkg_add ftp://ftp.netbsd.org/pub/NetBSD/packages/1.4.2/i386/devel/cvs-1.10.tgz
Analogicznie postępujemy z rsync:
# pkg_add ftp://ftp.netbsd.org/pub/NetBSD/packages/1.4.2/i386/All/rsync-2.4.3.tgz
Uaktualnianie przez cvs:
# setenv CVS_RSH ssh
# cd /usr; cvs –d anoncvs@anoncvs.netbsd.org:/cvsroot –z6 co pkgsrc
Lub przez rsync:
# cd /usr
# rsync –vvvvaaaazzzz rsync://rsync.netbsd.org/NetBSD/NetBSD-current/pkgsrc .
Więcej informacji można znaleźć pod adresami:
http://www.freebsd.org/handbook/ports.html
http://www.openbsd.org/faq/faq8.html#8.6
http://www.netbsd.org/Documentation/software/packages.html |