hmm Dodał: dzibi Dnia: 2007-12-12 10:01:14 Bez tytułu Dodał: grzywka18 Dnia: 2007-12-11 17:46:06 Bez tytułu Dodał: termid Dnia: 2007-05-09 18:01:11 Bez tytułu Dodał: sarelo33 Dnia: 2006-12-30 23:50:14 Jest ok ale.. Dodał: theviant Dnia: 2006-11-16 08:10:05 Bez tytułu Dodał: micard Dnia: 2006-11-04 13:49:04
Google
Newsletter
Zapisz się na nasz newsletter, jeżeli chcesz być na bieżąco informowany o aktualnościach..
System Portów (Kolekcja Portów) - /usr/ports
sobota, 01 listopada 2003 -
Napisał: Artur Kulda (30497 odsłon)
Kolekcja portów we FreeBSD oferuje użytkownikom i
administratorom prosty sposób instalowania aplikacji. Każdy port zawiera patches
(łatki) potrzebne do zrobienia aplikacji z kodu źródłowego i uruchomienia we FreeBSD.
Kompilacja kodu źródłowego aplikacji jest tak prosta jak wpisanie polecenia make
build będąc w odpowiednim katalogu. Makefile automatycznie ściągnie
kod źródłowy aplikacji albo z lokalnego dysku albo z FTP, rozpakuje w
systemie, zaaplikuje łatki i przekompiluje. Tak jak to wszystko jest proste tak
i instalacja jest prosta: wystarczy wpisać make install.
Jak zdobyć kolekcję portów
Zanim będziesz mógł używać kolekcji portów najpierw musisz je zdobyć
(w zasadzie są to pliki Makefile, patch i opisowe) umiejscowione w katalogu /usr/ports.
Podczas instalowania systemu FreeBSD, Sysinstall pytał się Ciebie czy chcesz
zainstalować kolekcję portów. Jeżeli wybrałeś No, możesz zastosować
się do poniższych instrukcji aby teraz je zdobyć.
Metoda Sysinstall Ta metoda używa programu Sysinstall do zdobycia kolekcji portów (w
przeciwieństwie do instalacji ręcznej).
Z konta root wydaj poniższe poleceni
# /stand/sysinstall
- strzałką w dół wybierz Configure
i wciśnij Enter;
- strzałką w dół wybierz Distributions i wciśnij Enter;
- strzałką w dół przejdź do ports i wciśnij Spację;
- strzałką w górę wybierz Exit i wciśnij Enter;
- strzałkami wybierz metodę instalacji taką jak: CD-ROM, FTP i tak dalej;
- przejdź do Exit i wciśnij Enter;
- wybieraz X aby wyjść z Sysinstall;
Alternatywną metodą zdobycia i utrzymywania Twoich portów w
"świeżości" jest użycie CVSup. Więcej informacji znajdziesz w
dziale CVSup i
Handbooku.
Metoda CVSup Jest to szybka metoda zdobywania świeżej kolekcji portów. Zainstaluj
CVSup z portów (/usr/ports/net/cvsup) lub z paczki (pkg_add -r cvsup). Jako
root skopiuj plik /usr/share/examples/cvsup/ports-supfile do katalogu /root
i wyedytuj go zgodnie z tym co jest napisane w dziale
CVSup.
Wydaj poniższe polecenie:
# cvsup -g -L 2 /root/ports-supfile
Powyższe polecenie spowoduje pobranie i zastosowanie
wszystkich najnowszych zmian w Twoich portach.
Instalowanie portów
Pierwszą rzeczą jaka powinna zostać wyjaśniona jeśli chodzi o kolekcję
portów to pojęcie szkieletu (skeleton). W kilku słowach, szkielet portów
jest zbiorem plików, które mówią systemowi FreeBSD jak prawidłowo kompilować
(compile), instalować (install) oraz czyścić (clean) dany port. Każdy port
zawiera:
Makefile - plik ten zawiera informacje precyzujące
jak dana aplikacja powinna być skompilowana i gdzie ma być zainstalowana w
systemie.
Plik distinfo - w pliku tym zawarte są informacje o plikach jakie muszą
być ściągnięte aby poprawnie zbudować port oraz ich sumy kontrolne (MD5)
sprawdzające czy dany plik nie został uszkodzony podczas pobierania z Internetu.
Katalog files - zawiera łatki (patches), z którymi to kompilujemy i
instalujemy program. Patches są z reguły małymi plikami określającymi jakie
zmiany mają zajść w poszczególnych plikach. Są napisane w formie pliku
tekstowego i zasadniczo mówią "Usuń linię 10" albo "Zmień
linię 26 na ...". Patches są znane również jako diffs, ponieważ
są generowane przez program diff. Ten katalog może zawierać również inne
pliki potrzebne do zbudowania portu.
Plik pkg-descr - to jest bardziej szczegółowy, często
wieloliniowy opis programu.
Plik pkg-plist - jest to lista wszystkich plików,
które zostaną zainstalowane przez dany port. Mówi on systemowi portów,
które pliki mają być usunięte podczas odinstalowywania.
Niektóre porty mają inne pliki takie jak pkg-message.
System portów używa tych plików podczas wyjątkowych sytuacji.
Teraz
gdy już masz wystarczającą wiedzę na temat używania portów, jesteś gotowy
do zainstalowania pierwszego portu. Są dwa sposoby aby to uczynić (CD-ROM,
Internet). Każdy z nich jest wyjaśniony poniżej.
Jednak
zanim do tego przystąpimy, musisz wybrać port do zainstalowania. Jest wiele
sposobów aby wybrać interesujący nas port. Najprostszym sposobem jest wyświetlenie
listy portów na stronie FreeBSD. Możesz je sobie przejrzeć po kolei lub użyć
systemu wyszukiwania na stronie. Każdy port zawiera zwięzły opis, więc przed
podjęciem decyzji możesz sobie przeczytać do czego służy dany port.
Kolejnym
sposobem jest użycie komendy whereis. Whereis po prostu wskazuje gdzie znajduje
się program, którego szukamy. Jeżeli zostanie on znaleziony w Twoim systemie
będziesz powiadomiony komunikatem tak jak poniżej:
# whereis lsof
lsof: /usr/ports/sysutils/lsof
To mówi
nam, że program lsof (narzędzie systemowe) znajdziemy w katalogu /usr/ports/sysutils/lsof.
Kolejnym
sposobem na wyszukanie portu jest użycie wbudowanego w kolekcję portów
mechanizmu szukania. Aby skorzystać z tej cechy kolekcji portów musisz
znajdować się w katalogu /usr/ports. Będąc w tym katalogu użyj
polecenia make search name=program-name, gdzie porgram-name
jest nazwą programu, którego szukasz. Na przykład poszukamy programu lsof:
# cd /usr/ports
# make search name=lsof
Port: lsof-4.56.4
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint:
Index: sysutils
B-deps:
R-deps:
Szczególną uwagę zwróć
na linijkę rozpoczynającą się od Path:, ponieważ ona Ci powie gdzie
znaleźć dany port. Inne informacje dostarczane przez make search nie są aż tak potrzebne, więc nie będą one tutaj poruszane.
Jeżeli
nie znamy nazwy programu możemy użyć komendy make search key=string,
gdzie string jest słowem kluczowym, którego szukamy. Wyszukiwanie prowadzone
jest w nazwach portów, komentarzach, opisach i zależnościach. Może być użyte
do znalezienia portów, które odnoszą się do konkretnego tematu.
W
oby wypadkach szukane słowo nie jest "wrażliwe" na pisownię, czyli
szukanie "LSOF" daje ten sam rezultat co szukanie "lsof".
UWAGA: Musisz być zalogowany jako root aby móc
instalować porty.
Teraz gdy już znalazłeś port, który chcesz zainstalować,
jesteś gotowy do instalacji. Porty zawierają instrukcje jak skompilować źródła
programu, ale nie zawierają tych źródeł. Możesz je zdobyć z cdromu lub z Internetu.
Źródła programu są rozprowadzane w różnoraki sposób, w taki jaki
przewidział to autor. Najczęściej są one spakowane tarem lub gzipem, ale mogą
być także kompresowane innymi narzędziami lub wogóle niekompresowane. Kod źródłowy
programu w jakiejkolwiek formie jest nazywany distfile. Taki właśnie
distfile możesz pobrać z CD-ROM lub z Internetu.
Instalowanie
portów z CD-ROM
Oficjalne płyty CD-ROM (obrazy iso) już od jakiegoś czasu nie zawierają
plików distfile. Zajmują one dużo miejsca, dlatego też zdecydowano, że
lepszym rozwiązaniem będzie zamieszczanie gotowych przekompilowanych pakietów z programami. Płyty CD-ROM
takie jak FreeBSD PowerPak zawierają pliki distfile i możesz je zamówić
u sprzedawcy jakim jest FreeBSD Mall. Ta sekcja dotyczy właśnie takich
CD-ROMów.
Umieść płytę FreeBSD w napędzie CD-ROM.
Zamontuj ją jako /cdrom (jeżeli używasz innego punktu montowania
instalacja nie zadziała). Następnie zmień bieżący katalog na ten z portem,
który wybrałeś:
# cd /usr/ports/sysutils/lsof
Będąc w tym katalogu powinieneś zobaczyć szkielet portu. Następnym
krokiem jest kompilacja (lub jak kto woli budowa) portu. Jest to po prostu
wpisanie komendy make po tzw. znaku zachęty. Gdy to zrobisz powinieneś ujrzeć
coś takiego:
# make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from file:/cdrom/ports/distfiles/.
===> Extracting for lsof-4.57
...
[szczegóły dekompresji wycięte]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===> Patching for lsof-4.57
===> Applying FreeBSD patches for lsof-4.57
===> Configuring for lsof-4.57
...
[szczegóły konfiguracji wycięte]
...
===> Building for lsof-4.57
...
[szczegóły kompilacji wycięte]
...
#
Zauważ to, że kompilacja jest ukończona po tym jak powrócisz
do linii poleceń (znak zachęty). Następnym krokiem jest zainstalowanie portu.
Aby zainstalować go potrzebujesz dodać jedno słowo do komendy make, a
tym słowem jest install.
# make install
===> Installing for lsof-4.57
...
[szczegóły instalacji wycięte]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
#
Gdy instalacja przebiegnie pomyślnie i powrócisz do znaku
zachęty, powinieneś mieć możliwość uruchomienia programu, który dopiero
co zainstalowałeś. Ponieważ lsof jest programem, który uruchomiony jest ze zwiększonymi
prawami, dlatego wyświetlane jest ostrzeżenie dotyczące bezpieczeństwa. Podczas budowania i instalowania portu, powinieneś
uważnie czytać tego typu informacje oraz inne ostrzeżenia.
UWAGA: Kompilację i instalację portu można wykonać w
jednym kroku używają polecenia make install, które zastępuje powyższe
dwa kroki. UWAGA: W wielu shellach wymagane jest wydanie komendy rehash po
instalacji portu a przed użyciem komend nowo zainstalowanego programu. Tego typu
shellami jest część shelli dostępnych w base-systemie (takich jak tcsh)
oraz shelle dostępne w portach (przykładowo shells/zsh). UWAGA: Bądź świadom tego, że licencja kilku portów nie pozwala na
umieszczaniu ich na płytach CD-ROM. Dzieje się tak, ponieważ wymagane jest
wypełnienie form rejestracyjnych przed pobraniem z Internetu. Jeśli chciałbyś zainstalować port, który nie jest zamieszczony na CDROM'ie, musisz być podłączony do sieci Internet.
Instalowanie portów z Internetu
Tak jak ostatnia sekcja, ta z góry zakłada iż masz działające połączenie z
Internetem. Jeżeli nie, będziesz zmuszony dokonywać instalacji z CD-ROM albo
kopiować ręcznie pliki distfile do katalogu /usr/ports/distfiles.
Instalowanie portu poprzez Internet jest wykonywane dokładnie
tak samo jakbyś instalował go z płyt CD-ROM. Jedyna różnica pomiędzy tymi
dwoma sposobami to taka, że pliki z kodem źródłowym są pobierane z Internetu
zamiast odczytywane z CD-ROM.
Kroki postępowania są identyczne:
# make install
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
439860 bytes transferred in 18.0 seconds (23.90 kBps)
===> Extracting for lsof-4.57
...
[szczegóły dekompresji wycięte]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===> Patching for lsof-4.57
===> Applying FreeBSD patches for lsof-4.57
===> Configuring for lsof-4.57
...
[szczegóły konfiguracji wycięte]
...
===> Building for lsof-4.57
...
[szczegóły kompilacji wycięte]
...
===> Installing for lsof-4.57
...
[szczegóły instalacji wycięte]
...
===> Generating temporary packing list
===> Compressing manual pages for lsof-4.57
===> Registering installation for lsof-4.57
===> SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
#
Tak jak widać powyżej jedyna różnica jest w linijce, która
mówi skąd jest pobierany plik z kodem źródłowym.
System portów pobiera plik za pomocą narzędzia fetch
(podobnie jak w przypadku pkg_add -r), które to używa zmiennych środowiskowych takich jak: FTP_PASSIVE_MODE, FTP_PROXY i FTP_PASSWORD. Możesz potrzebować ustawić jedną lub więcej z tych opcji jeżeli jesteś za firewallem, albo będziesz potrzebował użyć FTP/HTTP proxy. Więcej informacji możesz uzyskać w podręczniku manuala fetch(3).
Usuwanie zainstalowanych portów
Teraz gdy już wiesz jak instalować porty pewnie zastanawiasz się jak je usunąć.
Tak jak w przypadku instalowania musisz zadecydować, który port usunąć. My
usuniemy nasz przykładowy port (jakim jest lsof - to dla nieuważnych ;-)). Najpierw musisz zmienić katalog na
katalog portu (u nas /usr/ports/sysutils/lsof). Po zmianie katalogu jesteś
gotowy do usunięcia programu z systemu. Dokonuje się tego za pomocą komendy make
deinstall:
# cd /usr/ports/sysutils/lsof
# make deinstall
===> Deinstalling for lsof-4.57
To było dość łatwe. Usunąłeś lsof (lub inną aplikację)
z systemu. Jeśli chciałbyś przeinstalować port musisz uruchomić make
reinstall podczas gdy jesteś w katalogu odpowiedniego portu.
Komendy make deinstall i make reinstall nie
zadziałają jeżeli wcześniej użyłeś make clean. Jeżeli chcesz usunąć
port po tym jak oczyściłeś port, użyj pkg_delete w sposób omówiony
w dziale Menedżer
Pakietów.
Porty i przestrzeń dyskowa
Używanie kolekcji portów może zużyć dużą część Twojej przestrzeni
dyskowej. Aby temu zapobiec powinieneś zawsze pamiętać o czyszczeniu katalogu
work używając opcji make clean. To usuwa katalog work po tym jak
port został zbudowany i zainstalowany. Możesz także usunąć pliki .tar z
katalogu distfiles albo usunąć zainstalowane porty, których rzadko używasz.
Niektórzy użytkownicy wybierają ograniczoną ilość
kategorii portów pobieranych z Internetu. Jest to sposób stosowany przy używaniu
programu CVSup, jeżeli nie chcemy pobierać plików z danej kategorii, która
nas nie interesuje.
Upgrade portów
Utrzymywanie portów w jak najświeższej wersji jest bardzo nużącą i pracochłonną
pracą. Na przykład, aby zrobić upgrade portu musisz iść najpierw do
katalogu portu, następnie zbudować go, odinstalować stary, zainstalować nowy
a potem oczyścić port ze "śmieci". Wyobraź sobie wykonanie tej
czynności dla pięciu portów. Nudna praca, prawda? Administratorzy systemu
mieli duży problem z poradzeniem sobie w takich sytuacjach. Teraz mamy narzędzia,
które robią to wszystko za nas. Dla przykładu aplikacja sysutils/portupgrade
robi za Ciebie to co powyżej napisane! Ty musisz tylko ją zainstalować tak
jak każdy inny port używając komendy make install clean.
Teraz tworzymy bazę komendą pkgdb -F.
# pkgdb -F
Polecenie to odczytuje listę zainstalowanych portów i tworzy
plik bazy w katalogu /var/db/pkg. Teraz gdy uruchomisz
# portupgrade -a
odczyta on powyższy plik i plik indeksu portów (INDEX). Następnie
portupgrade rozpocznie pobieranie, budowę, backup starych portów, instalację
i czyszczenie portów, które zostały zainstalowane. Inne narzędzia tego typu
można znaleźć w katalogu /usr/ports/sysutils. Zobacz do czego służą
i co potrafią.
To by było na tyle. Życzę udanego "portowania".
;-)
Możesz używać aliasów, by
zmniejszyć długość często
wpisywanej komendy.
Popularne aliasy to:
(poprawne dla bash, sh,
ksh i zsh)
alias lf="ls
-FA"
alias ll="ls
-lA"
alias su="su
-m"
W csh i tcsh, odpowiada
to:
alias lf ls -FA
alias ll ls -lA
alias su su -m
By usunąć alias, użyj
'unalias nazwa_aliasu'.
By uzyskać listę
wszystkich
aliasów wpisz po prostu
'alias'.