doc/pl_PL.ISO8859-2/books/handbook/ports/chapter.xml
Gabor Kovesdan a6684b4306 - Reduce the misuse of role attribute; role="directory" should actually be
class="directory"
- Add constraint to enforce this
2013-04-04 11:40:58 +00:00

1484 lines
62 KiB
XML

<?xml version="1.0" encoding="iso-8859-2"?>
<!--
The FreeBSD Polish Documentation Project
$FreeBSD$
Original revision: 1.260
-->
<chapter id="ports">
<chapterinfo>
<authorgroup>
<author>
<firstname>Cezary</firstname>
<surname>Morga</surname>
<contrib>Tłumaczył </contrib>
</author>
</authorgroup>
</chapterinfo>
<title>Instalacja programów: pakiety i porty</title>
<sect1 id="ports-synopsis">
<title>Streszczenie</title>
<indexterm><primary>porty</primary></indexterm>
<indexterm><primary>pakiety</primary></indexterm>
<para>System FreeBSD rozprowadzany jest wraz z bogatą kolekcją
narzędzi systemowych. Tym nie mniej, stanowi to absolutne minimum.
Szybko pojawia się bowiem potrzeba zainstalowania dodatkowego
oprogramowania, by móc rozpocząć prawdziwą pracę z systemem.
FreeBSD dostarcza dwóch dopełniających się metod instalacji
oprogramowania: kolekcję portów FreeBSD (kompilacja programów
ze źródeł) i system pakietów (instalacja z gotowych binariów).
Każda z tych metod może zostać wykorzystana do instalacji najnowszych
wersji ulubionego oprogramowania z lokalnych nośników bądź
bezpośrednio z sieci.</para>
<para>Przeczytawszy ten rozdział dowiemy się:</para>
<itemizedlist>
<listitem>
<para>Jak instalować oprogramowanie innych producentów
dostarczane w postaci binarnej.</para>
</listitem>
<listitem>
<para>Jak kompilować oprogramowanie innych producentów
z wykorzystaniem kolekcji portów.</para>
</listitem>
<listitem>
<para>Jak usunąć poprzednio zainstalowane pakiety bądź
porty.</para>
</listitem>
<listitem>
<para>Jak zmienić domyślne wartości wykorzystywane
przy kompilacji portów.</para>
</listitem>
<listitem>
<para>Jak odnaleźć właściwe oprogramowanie.</para>
</listitem>
<listitem>
<para>Jak zaktualizować wykorzystywane aplikacje.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="ports-overview">
<title>Omówienie instalacji oprogramowania</title>
<para>Osoby, które już wcześniej pracowały z systemami &unix;
wiedzą, że typowy proces instalacji oprogramowania sprowadza
się mniej więcej do następujących punktów:</para>
<procedure>
<step>
<para>Pobranie programu, który może być rozprowadzany
w postaci kodu źródłowego bądź binarnej.</para>
</step>
<step>
<para>Rozpakowania programu z formatu w jakim jest
rozprowadzany (najczęściej jest to plik tar skompresowany
za pomocą &man.compress.1;, &man.gzip.1; lub
&man.bzip2.1;).</para>
</step>
<step>
<para>Odnalezienie dokumentacji (najczęściej plik
<filename>INSTALL</filename> lub <filename>README</filename>
bądź pliki w podkatalogu <filename>doc/</filename>)
i zapoznanie się z instrukcjami instalacji programu.</para>
</step>
<step>
<para>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 <filename>Makefile</filename>
bądź uruchomienia skryptu <command>configure</command>.</para>
</step>
<step>
<para>Weryfikacja i instalacja aplikacji.</para>
</step>
</procedure>
<para>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ć.</para>
<para>Oczywiście, we FreeBSD można instalować oprogramowanie
<quote>tradycyjnym</quote> 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 &os.numports;
aplikacji.</para>
<para>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ń &man.pkg.add.1;, &man.pkg.delete.1;, &man.pkg.info.1;,
itp. Nowe programy można instalować za pomocą zaledwie
jednego polecenia.</para>
<para>Port natomiast, jest zbiorem plików mających za zadanie
zautomatyzować proces kompilacji danego programu z kodu
źródłowego.</para>
<para>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.</para>
<para>Ponadto system portów może również posłużyć do przygotowania
pakietów, którymi następnie można manipulować za pomocą
<command>pkg_add</command> i innymi poleceniami
zarządzających pakietami.</para>
<para>Obydwa systemy potrafią analizować <emphasis>zależności</emphasis>
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 <command>pkg_add</command>
czy porty, by zainstalować program, to obydwa systemy spostrzegą,
że biblioteka nie została zainstalowana i automatycznie zainstalują
najpierw bibliotekę.</para>
<para>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ń.</para>
<itemizedlist>
<title>Zalety pakietów</title>
<listitem>
<para>Skompresowany plik pakietu zajmuje z reguły mniej miejsca
niż skompresowany plik zawierający kod źródłowy.</para>
</listitem>
<listitem>
<para>Instalacja pakietów nie wymaga dodatkowej kompilacji.
W przypadku dużych aplikacji, jak np. <application>Mozilla</application>,
<application>KDE</application> czy <application>GNOME</application>
może to być istotne. Szczególnie gdy pracuje się na dość wolnej
maszynie.</para>
</listitem>
<listitem>
<para>Stosowanie pakietów nie wymaga żadnej wiedzy o procesie
kompilowania oprogramowania w systemie FreeBSD.</para>
</listitem>
</itemizedlist>
<itemizedlist>
<title>Zalety portów</title>
<listitem>
<para>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ść
<quote>podkręcenia</quote> opcji kompilacji, by (przykładowo)
skompilować program zoptymalizowany dla procesorów Pentium IV
lub Athlon.</para>
</listitem>
<listitem>
<para>Niektóre aplikacje posiadają pewne opcje kompilacji
związane z zadaniami, które maja realizować. Przykładowo
<application>Apache</application> 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.</para>
<para>W niektórych przypadkach dostępnych jest kilka pakietów
tej samej aplikacji skompilowanych z różnymi parametrami.
Na przykład program <application>Ghostscript</application>
dostępny jest jako pakiet <filename>ghostscript</filename>
oraz <filename>ghostscript-nox11</filename>, 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.</para>
</listitem>
<listitem>
<para>Warunki licencji niektórych aplikacji zabraniają
rozprowadzania w postaci binarnej. Muszą być zatem rozprowadzane
jako kod źródłowy.</para>
</listitem>
<listitem>
<para>Niektórzy nie ufają pakietom binarnym. W przypadku
kodu źródłowego można (przynajmniej w teorii) przejrzeć
go i samemu poszukać potencjalnych luk.</para>
</listitem>
<listitem>
<para>Jeśli posiadamy własne łaty będziemy potrzebowali
kodu źródłowego aby je nanieść do programu.</para>
</listitem>
<listitem>
<para>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.</para>
</listitem>
</itemizedlist>
<para>Najlepszym sposobem śledzenia zmian dokonywanych w systemie
portów jest zapisanie się na &a.pl.ports.b; oraz
&a.pl.ports-bugs.b;.</para>
<warning>
<para> Przed instalacją jakiejkolwiek aplikacji należy sprawdzić
na stronie <ulink url="http://vuxml.freebsd.org/"></ulink>
czy w danym programie istnieją luki związane bezpieczeństwem.</para>
<para>Alternatywnie możemy zainstalować <filename
role="package">security/portaudit</filename>, 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 <command>portaudit
-F -a</command>, by sprawdzić zainstalowane już pakiety.</para>
</warning>
<para>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.</para>
</sect1>
<sect1 id="ports-finding-applications">
<title>Odnalezienie programu dla siebie</title>
<para>Nim przystąpimy do instalacji programów musimy wiedzieć
co chcemy zainstalować i jak się nazywa.</para>
<para>Lista dostępnych we FreeBSD programów rośnie cały czas.
Na szczęście jest wiele sposobów na odnalezienie tego czego
szukamy:</para>
<itemizedlist>
<listitem>
<para>Na stronie internetowej FreeBSD pod adresem <ulink
url="&url.base;/ports/index.html">http://www.FreeBSD.org/ports/</ulink>
znajduje jest aktualna lista dostępnych programów. Listę można
dowolnie przeszukiwać według kilku kryteriów, np. nazwy (jeśli
ją znamy). Możliwe jest również przejrzenie spisu wszystkich
aplikacji znajdujących się w danej kategorii.</para>
</listitem>
<listitem>
<indexterm><primary>FreshPorts</primary></indexterm>
<para>Dzięki stronie FreshPorts (<ulink
url="http://www.FreshPorts.org/"></ulink>) prowadzonej
przez Dana Langille'a możliwe jest bieżące śledzenie zmian
aplikacji w drzewie portów. Witryna umożliwia otrzymywanie
informacji drogą emailową o zmianach w wybranych
portach.</para>
</listitem>
<listitem>
<indexterm><primary>FreshMeat</primary></indexterm>
<para>Jeśli nie znamy nazwy programu, który chcemy zainstalować,
warto poszukać go na stronach pokroju FreshMeat (<ulink
url="http://www.freshmeat.net/"></ulink>) a następnie
sprawdzić na stronie FreeBSD czy został przygotowany
odpowiedni port.</para>
</listitem>
<listitem>
<para>Jeśli znamy dokładną nazwę portu a chcemy sprawdzić
z jakiej pochodzi kategorii, można skorzystać z polecenia
&man.whereis.1;. Wystarczy wpisać <command>whereis
<replaceable>plik</replaceable></command>, gdzie
<replaceable>plik</replaceable> jest nazwą programu, którego
poszukujemy. Otrzymany wynik będzie postaci:</para>
<screen>&prompt.root; <userinput>whereis lsof</userinput>
lsof: /usr/ports/sysutils/lsof</screen>
<para>Przykład ten informuje nas, że program <command>lsof</command>
(narzędzie systemowe) znajduje się w katalogu
<filename>/usr/ports/sysutils/lsof</filename>.</para></listitem>
<listitem>
<para>Jeszcze innym sposobem na odnalezienie danego portu jest
wykorzystanie mechanizmu przeszukiwania kolekcji portów.
By skorzystać z tej funkcji należy przejść do katalogu
<filename>/usr/ports</filename>. Następnie wpisać
<command>make search
name=<replaceable>nazwa-programu</replaceable></command>,
gdzie <replaceable>program-name</replaceable> jest nazwą
poszukiwanej aplikacji. Przykładowo, szukając
<command>lsof</command>:</para>
<screen>&prompt.root; <userinput>cd /usr/ports</userinput>
&prompt.root; <userinput>make search name=lsof</userinput>
Port: lsof-4.56.4
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint: obrien@FreeBSD.org
Index: sysutils
B-deps:
R-deps: </screen>
<para>Część wyniku, która nas interesuje to wiersz zaczynający
się od <quote>Path:</quote>, a określający lokalizację portu.
Pozostałe z uzyskanych w ten sposób informacji nie zostaną
tutaj opisane, gdyż nie są potrzebne do instalacji
programu.</para>
<para>Szersze przeszukanie kolekcji portów możliwe jest
wykorzystując <command>make
search key=<replaceable>zwrot</replaceable></command>,
gdzie <replaceable>zwrot</replaceable> jest dowolnym wyrazem.
Opcja ta przeszukuje nazwy portów, komentarze, opisy i listy
zależności. Może być wykorzystana do odnalezienia portów
związanych z danym zagadnieniem gdy nie znamy nazwy
poszukiwanego programu.</para>
<para>W obydwu przypadkach nie są rozróżniane małe i duże
litery w poszukiwanym ciągu. Szukając zatem <quote>LSOF</quote>
oraz <quote>lsof</quote> otrzymamy takie same wyniki.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="packages-using">
<sect1info>
<authorgroup>
<author>
<firstname>Chern</firstname>
<surname>Lee</surname>
<contrib>Napisał </contrib>
</author>
</authorgroup>
<!-- 30 Mar 2001 -->
<authorgroup>
<author>
<firstname>Aleksander</firstname>
<surname>Fafuła</surname>
<contrib>Tłumaczył </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Cezary</firstname>
<surname>Morga</surname>
<contrib>Przekład uzupełnił </contrib>
</author>
</authorgroup>
</sect1info>
<title>Korzystanie z systemu pakietów</title>
<sect2>
<title>Instalacja pakietów</title>
<indexterm>
<primary>pakiety</primary>
<secondary>instalacja</secondary>
</indexterm>
<indexterm>
<primary><command>pkg_add</command></primary>
</indexterm>
<para>Programu &man.pkg.add.1; można użyć do instalacji
programów zarówno z dysku lokalnego, jak i z sieci.</para>
<example>
<title>Ręczne pobranie pakietu i instalacja lokalna</title>
<screen>&prompt.root; <userinput>ftp -a <replaceable>ftp2.FreeBSD.org</replaceable></userinput>
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230- This machine is in Vienna, VA, USA, hosted by Verio.
230- Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
<prompt>ftp></prompt> <userinput>cd /pub/FreeBSD/ports/packages/sysutils/</userinput>
250 CWD command successful.
<prompt>ftp></prompt> <userinput>get lsof-4.56.4.tgz</userinput>
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375 00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
<prompt>ftp></prompt> <userinput>exit</userinput>
&prompt.root; <userinput>pkg_add <replaceable>lsof-4.56.4.tgz</replaceable></userinput></screen>
</example>
<para>Jeśli nie posiadamy lokalnego źródła programów (np na
płytach CD FreeBSD), będzie Ci prawdopodobnie łatwiej użyć komendy
&man.pkg.add.1; z opcją <option>-r</option>. Spowoduje to,
że program samodzielnie określi odpowiednią wersję oprogramowania
dla naszej wersji systemu. Następnie pobierze odpowiedni plik
z sieci oraz go zainstaluje.</para>
<indexterm>
<primary><command>pkg_add</command></primary></indexterm>
<screen>&prompt.root; <userinput>pkg_add -r <replaceable>lsof</replaceable></userinput></screen>
<para>W powyższym przykładzie program pobierze właściwy pakiet
i zainstaluje go bez jakiejkolwiek dalszej ingerencji użytkownika.
Jeśli chcemy wskazać programowi alternatywny serwer lustrzany,
należy odpowiednio zdefiniować zmienną środowiskową
<envar>PACKAGESITE</envar>. Program &man.pkg.add.1; do pobierania
plików z serwerów wykorzystuje &man.fetch.3;, który z kolei
wykorzystuje różnorodne zmienne środowiskowe, m.in.
<envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar> oraz
<envar>FTP_PASSWORD</envar>. Może się okazać, że będziemy musieli
zdefiniować niektóre z nich jeśli nasz komputer znajduje się za
zaporą ogniową, bądź musi korzystać z serwera pośredniczącego
FTP/HTTP proxy. Więcej informacji znaleźć można w podręczniku
systemowym programu &man.fetch.3;. Warto zauważyć, iż w
powyższym przykładzie jako nazwę pakietu podano jedynie
<literal>lsof</literal> zamiast <literal>lsof-4.56.4</literal>.
Przy zdalnym pobieraniu pakietów nie należy podawać numeru wersji
pakietu. Program &man.pkg.add.1; automatycznie pobierze najnowszą
wersję aplikacji.</para>
<note>
<para>Program &man.pkg.add.1; pobierze najnowszą wersję aplikacji
jedynie, gdy wykorzystujemy &os.current; albo &os.stable;. W przypadku
-RELEASE pobrana zostanie wersja pakietu zbudowana dla danego wydania.
Ograniczenie to można obejść modyfikując zmienną środowiskową
<envar>PACKAGESITE</envar>. Na przykład, jeśli korzystamy z
&os;&nbsp;5.4-RELEASE domyślnie &man.pkg.add.1; będzie pobierał
pakiety z
<literal>ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/Latest/</literal>.
By zmusić go do pobierania pakietów zbudowanych dla
&os;&nbsp;5-STABLE należy zmodyfikować zmienną <envar>PACKAGESITE</envar>
by wskazywała na
<literal>ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5-stable/Latest/</literal>.</para>
</note>
<para>Pakiety rozpowszechniane są w formacie <filename>.tgz</filename>
oraz <filename>.tbz</filename>. Możemy je pobrać z
<ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/"></ulink>,
w Polsce z <ulink
url="ftp://ftp.pl.FreeBSD.org/pub/FreeBSD/ports/packages/"></ulink>,
bądź odnaleźć na płytach CDROM FreeBSD. Każda płyta z cztero płytowej
dystrybucji (także PowerPak'a itp) zawiera pakiety w katalogu
<filename>/packages</filename>. Struktura katalogu podobna jest
do drzewa portów <filename>/usr/ports</filename>. Każda kategoria ma
swój własny katalog, ponadto każdy pakiet może zostać odnaleziony
w katalogu <filename>All</filename> (Wszystkie).</para>
<para>Struktura katalogów pakietów jest identyczna względem
struktury katalogów portów. Porty i pakiety kooperują za sobą,
tworząc wspólnie cały system pakietów/portów.</para>
</sect2>
<sect2>
<title>Zarządzanie pakietami</title>
<indexterm>
<primary>pakiety</primary>
<secondary>zarządzanie</secondary>
</indexterm>
<para>Narzędziem służącym do przedstawienia informacji
o zainstalowanych pakietach oraz wyświetlającym ich krótki
opis jest &man.pkg.info.1;.</para>
<indexterm>
<primary><command>pkg_info</command></primary>
</indexterm>
<screen>&prompt.root; <userinput>pkg_info</userinput>
cvsup-16.1 A general network file distribution system optimized for CV
docbook-1.2 Meta-port for the different versions of the DocBook DTD
...</screen>
<para>Program &man.pkg.version.1; jest natomiast narzędziem,
które podsumowuje wersje wszystkich zainstalowanych pakietów.
Porównuje je następnie z tymi które znajdują się w drzewie portów.</para>
<indexterm>
<primary><command>pkg_version</command></primary>
</indexterm>
<screen>&prompt.root; <userinput>pkg_version</userinput>
cvsup =
docbook =
...</screen>
<para>Symbol w drugiej kolumnie określa wiek zainstalowanej wersji
oprogramowania względem wersji odnalezionej w portach.</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry>Symbol</entry>
<entry>Znaczenie</entry>
</row>
</thead>
<tbody>
<row>
<entry>=</entry> <entry>Wersja odnaleziona w portach jest
identyczna.</entry>
</row>
<row><entry>&lt;</entry>
<entry>Wersja jest starsza, niż ta odnaleziona w portach.</entry>
</row>
<row><entry>&gt;</entry><entry>Zainstalowana wersja jest nowsza,
niż znaleziona w portach. (Prawdopodobnie lokalne drzewo portów
nie zostało zaktualizowane.)</entry></row>
<row><entry>?</entry><entry>Zainstalowany pakiet nie może zostać
odnaleziony w drzewie portów. (Może to mieć miejsce np. w sytuacji
gdy zainstalowany port został usunięty z kolekcji portów, bądź
zmienił nazwę.)</entry></row>
<row><entry>*</entry><entry>Istnieje wiele wersji tego programu.</entry></row>
</tbody>
</tgroup>
</informaltable>
</sect2>
<sect2>
<title>Usuwanie pakietów</title>
<indexterm>
<primary><command>pkg_delete</command></primary>
</indexterm>
<indexterm>
<primary>pakiety</primary>
<secondary>usuwanie</secondary>
</indexterm>
<para>Aby usunąć uprzednio zainstalowane oprogramowanie użyj &man.pkg.delete.1;.</para>
<screen>&prompt.root; <userinput>pkg_delete <replaceable>xchat-1.7.1</replaceable></userinput></screen>
</sect2>
<sect2>
<title>Dodatkowe informacje</title>
<para>Wszystkie informacje o pakietach znajdują się w katalogu
<filename>/var/db/pkg</filename>. Lista zainstalowanych plików,
a także opis każdej paczki można odnaleźć właśnie w tym katalogu.
</para>
</sect2>
</sect1>
<sect1 id="ports-using">
<sect1info>
<authorgroup>
<author>
<firstname>Aleksander</firstname>
<surname>Fafuła</surname>
<contrib>Tłumaczył </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Cezary</firstname>
<surname>Morga</surname>
<contrib>Przekład uzupełnił </contrib>
</author>
</authorgroup>
</sect1info>
<title>Korzystanie z kolekcji portów</title>
<para>Poniższy podrozdział dostarcza podstawowych informacji
z zakresu używania kolekcji portów, w stopniu umożliwiającym
instalowanie lub odinstalowywanie programów z własnego systemu.
Szczegółowy opis parametrów polecenia <command>make</command>
i zmiennych środowiskowych dostępny jest w podręczniku
systemowym &man.ports.7;.</para>
<sect2 id="ports-tree">
<title>Pozyskanie kolekcji portów</title>
<para>Zanim zainstalujemy jakikolwiek port, musimy pobrać
kolekcję portów, która w zasadzie jest zestawem plików
<filename>Makefiles</filename>, łat i opisowych. Kolekcja
znajduje się w katalogu <filename>/usr/ports</filename>.</para>
<para>W trakcie instalacji FreeBSD, <application>sysinstall</application>
zapytał czy chcemy zainstalować kolekcję portów. Jeśli wybraliśmy
nie, poniższe instrukcje pomogą nam własnoręcznie zainstalować
kolekcję portów:</para>
<procedure>
<title>Metoda CVSup</title>
<para>Jest to prosta i szybka metoda pobrania kolekcji portów
wykorzystująca system <application>CVSup</application>.
Więcej informacji o <application>CVSup</application> dostępnych
jest w podrozdziale <link linkend="cvsup">Korzystanie z
CVSup</link>.</para>
<para>Bardzo ważnym jest, aby upewnić się, że katalog
<filename class="directory">/usr/ports</filename> jest pusty
nim po raz pierwszy uruchomimy <application>CVSup</application>!
Jeśli posiadamy już kolekcję portów pozyskaną z innego źródła
<application>CVSup</application> nie usunie nieużywanych
plików łat.</para>
<step>
<para>Zainstaluj pakiet <filename
role="package">net/cvsup-without-gui</filename>:</para>
<screen>&prompt.root; <userinput>pkg_add -r cvsup-without-gui</userinput></screen>
<para>Więcej informacji w podrozdziale <link
linkend="cvsup-install">Instalacja CVSup</link> (<xref
linkend="cvsup-install"/>).</para>
</step>
<step>
<para>Uruchom <command>cvsup</command>:</para>
<screen>&prompt.root; <userinput>cvsup -L 2 -h <replaceable>cvsup.FreeBSD.org</replaceable> /usr/share/examples/cvsup/ports-supfile</userinput></screen>
<para>Warto zastąpić <replaceable>cvsup.FreeBSD.org</replaceable>
adresem serwera CVSup zlokalizowanego bliżej nas. Kompletna lista
serwerów lustrzanych dostępna jest w podrozdziale
<link linkend="cvsup-mirrors">Serwery lustrzane CVSup</link>
(<xref linkend="cvsup-mirrors"/>).</para>
<note>
<para>Można wykorzystać własny plik <filename>ports-supfile</filename>,
by np. uniknąć konieczności podawania adresu serwera
<application>CVSup</application> z linii poleceń.</para>
<procedure>
<step>
<para>W takim wypadku, jako użytkownik <username>root</username>,
skopiuj plik
<filename>/usr/share/examples/cvsup/ports-supfile</filename>
do innego katalogu, np. <filename>/root</filename> bądź własnego
katalogu domowego.</para>
</step>
<step>
<para>Zmodyfikuj plik <filename>ports-supfile</filename>.</para>
</step>
<step>
<para>Zmień wpis
<replaceable>CHANGE_THIS.FreeBSD.org</replaceable>na adres
wybranego serwera lustrzanego <application>CVSup</application>.
Kompletna lista serwerów lustrzanych dostępna jest w podrozdziale
<link linkend="cvsup-mirrors">Serwery lustrzane
CVSup</link> (<xref linkend="cvsup-mirrors"/>).</para>
</step>
<step>
<para>Teraz uruchom <command>cvsup</command> używając
polecenia::</para>
<screen>&prompt.root; <userinput>cvsup -L 2 <replaceable>/root/ports-supfile</replaceable></userinput></screen>
</step>
</procedure>
</note>
</step>
<step>
<para>Późniejsze wpisanie polecenia &man.cvsup.1; spowoduje
sprawdzenie zmian dokonanych w kolekcji portów i aktualizację
lokalnej wersji. Nie spowoduje to natomiast automatycznie ponownego
skompilowania wykorzystywanych przez nas portów.</para>
</step>
</procedure>
<procedure>
<title>Metoda Portsnap</title>
<para><application>Portsnap</application> jest alternatywnym
systemem dystrybucji kolekcji portów. Po raz pierwszy został
dołączony do FreeBSD&nbsp;6.0. W starszych wersjach może zostać
zainstalowany z pakietu <filename
role="package">sysutils/portsnap</filename>:</para>
<screen>&prompt.root; <userinput>pkg_add -r portsnap</userinput></screen>
<para>Szczegółowe informacje o możliwościach programu dostępne
są w podrozdziale <link linkend="portsnap">Korzystanie z
Portsnap</link>.</para>
<step>
<para>Ten punkt możemy pominąć jeśli posiadamy &os;&nbsp;6.1-RELEASE
bądź najnowszą wersję programu <application>Portsnap</application>.
Przy pierwszym uruchomieniu programu &man.portsnap.8; zostanie
automatycznie utworzony katalog <filename
class="directory">/usr/ports</filename>. W starszych wersjach programu
wymagane jest własnoręczne utworzenie katalogu:</para>
<screen>&prompt.root; <userinput>mkdir /usr/ports</userinput></screen>
</step>
<step>
<para>Pobierz skompresowaną migawkę kolekcji portów do katalogu
<filename class="directory">/var/db/portsnap</filename>. Można następnie
zakończyć połączenie z Internetem, jeśli jest taka potrzeba.</para>
<screen>&prompt.root; <userinput>portsnap fetch</userinput></screen>
</step>
<step>
<para>Jeśli uruchamiany <application>Portsnap</application> po raz
pierwszy należy rozpakować migawkę do katalogu
<filename class="directory">/usr/ports</filename>:
</para>
<screen>&prompt.root; <userinput>portsnap extract</userinput></screen>
<para>Jeśli posiadamy już kolekcję portów w <filename
class="directory">/usr/ports</filename> i jedynie ją aktualizujemy,
wpisujemy polecenie:</para>
<screen>&prompt.root; <userinput>portsnap update</userinput></screen>
</step>
</procedure>
<procedure>
<title>Metoda sysinstall</title>
<para>Metoda ta instaluje kolekcję portów z lokalnego nośnika posługując
się programem <application>sysinstall</application>. Zainstalowana
zostanie kopia kolekcji z dnia, w którym przygotowana została dana wersja
FreeBSD. Jeśli dysponujemy połączeniem z Internetem powinniśmy zawsze
stosować jedną z metod opisanych powyżej.</para>
<step>
<para>Uruchom <command>sysinstall</command> jako użytkownik
<username>root</username> (<command>/stand/sysinstall</command>
w wersjach &os; starszych niż 5.2):</para>
<screen>&prompt.root; <userinput>sysinstall</userinput></screen>
</step>
<step>
<para>Przejdź w dół, wybierz <guimenuitem>Configure</guimenuitem>,
i naciśnij <keycap>Enter</keycap>.</para>
</step>
<step>
<para>Przejdź w dół, wybierz
<guimenuitem>Distributions</guimenuitem> i naciśnij
<keycap>Enter</keycap>.</para>
</step>
<step>
<para>Przejdź w dół do opcji <guimenuitem>ports</guimenuitem> i naciśnij
<keycap>Spację</keycap>.</para>
</step>
<step>
<para>Przejdź do góry do opcji <guimenuitem>Exit</guimenuitem> i naciśnij
<keycap>Enter</keycap>.</para>
</step>
<step>
<para>Ustaw wybrany przez siebie typ medium instalacji, jak np. płytę CDROM,
serwer FTP, itd.</para>
</step>
<step>
<para>Przejdź do góry do opcji <guimenuitem>Exit</guimenuitem> i naciśnij
<keycap>Enter</keycap>.</para>
</step>
<step>
<para>Naciśni <keycap>X</keycap> by wyjść z programu
<application>sysinstall</application>.</para>
</step>
</procedure>
</sect2>
<sect2 id="ports-skeleton">
<title>Instalacja Portów</title>
<indexterm>
<primary>porty</primary>
<secondary>instalacja</secondary>
</indexterm>
<para>Pierwsza rzecz o jakiej należy wspomnieć omawiając
kolekcję portów, jest <quote>szkielet</quote>. Mówiąc w
skrócie, szkielet portu jest minimalnym zestawem plików,
które informują FreeBSD, jak poprawnie skompilować i
zainstalować program. Każdy szkielet portu zawiera:</para>
<itemizedlist>
<listitem>
<para>Plik <filename>Makefile</filename>. Plik ten zawiera
różne dane określające jak skompilować aplikację oraz gdzie
ją zainstalować w systemie.</para>
</listitem>
<listitem>
<para>Plik <filename>distinfo</filename> Plik ten zawiera informacje
dotyczące plików, które muszą zostać pobrane, by skompilować
port. Ponadto zawiera sumy kontrolne, na podstawie których
&man.md5.1; potrafi sprawdzić, czy pliki nie uległy uszkodzeniu
w trakcie pobierania z sieci.</para>
</listitem>
<listitem>
<para>Katalog <filename>files</filename>, który zawiera łaty
pozwalające skompilować i zainstalować program w naszym
systemie FreeBSD. Łaty są małymi plikami, w których określone
są zmiany dotyczące konkretnych plików. Są to pliki tekstowe i po
prostu mówią <quote>Usuń linię 10</quote> lub <quote>Zmień linię
26 na to: ...</quote>. Łatki są także znane jako <quote>diffs</quote>
(ang. skrót od różnice) ponieważ są generowane przez program
&man.diff.1;.</para>
<para>Ten katalog może zawierać także inne pliki używane do
kompilacji portu.</para>
</listitem>
<listitem>
<para>Plik opisu <filename>pkg-descr</filename>. Jest to bardziej
szczegółowy, nierzadko wieloliniowy opis programu.</para>
</listitem>
<listitem>
<para>Plik listy <filename>pkg-plist</filename>. Jest to lista wszystkich
plików, które zostaną zainstalowane przez port. Jest to także lista plików,
które należy usunąć w przypadku odinstalowywania.</para>
</listitem>
</itemizedlist>
<para>Niekiedy porty zawierają również inne pliki, jak na przykład
<filename>pkg-message</filename> (message-wiadomość).
System portów używa tych plików w specjalnych sytuacjach. Jeśli potrzebujesz
więcej informacji na temat tych plików i portów w ogóle, zajrzyj do podręcznika
<ulink url="&url.books.porters-handbook;/index.html">FreeBSD
Porter's Handbook</ulink>.</para>
<para>Jak już raz powiedziano, porty zawierają instrukcje odnośnie
kompilacji programów z kodu źródłowego. Jednakże nie zawierają
one samego kodu. Kod pobrać można z płyty CD bądź z Internetu.
Rozprowadzany może być w dowolnej postaci jaką wybierze sobie
jego producent, przy czym najczęściej jest to spakowany plik tar
skompresowany dodatkowo gzipem. Kod źródłowy programu nazywany
jest <quote>distfile</quote>. Poniżej przedstawione zostały dwie
metody instalacji portów we &os;.</para>
<note>
<para> By móc zainstalować port musimy być zalogowania jako
użytkownik <username>root</username>.</para>
</note>
<warning>
<para> Przed instalacją jakiegokolwiek portu należy upewnić się,
że dysponujemy aktualną kolekcją portów oraz sprawdzić potencjalne
luki bezpieczeństwa związane z danym portem na stronie <ulink
url="http://vuxml.freebsd.org/"></ulink>.</para>
<para>Istnieje możliwość zautomatyzowania procesu weryfikacji
potencjalnych luk bezpieczeństwa przed instalacją portu. Do tego
celu można wykorzystać program <application>portaudit</application>,
dostępny również w kolekcji portów (<filename
role="package">security/portaudit</filename>). Wydanie polecenia
<command>portaudit -F</command> przed instalacją nowego portu
spowoduje pobranie aktualnej bazy luk bezpieczeństwa. Możliwe jest
również wykonywanie regularnych aktualizacji bazy i rewizji
zainstalowanego oprogramowania w trakcie codziennego przeglądu
bezpieczeństwa systemu. Więcej informacji dostępnych jest na stronach
podręcznika systemowego &man.portaudit.1; i &man.periodic.8;.</para>
</warning>
<para>Sposób funkcjonowania kolekcji portów wiąże się z założeniem,
że posiadamy połączenie z Internetem. Jeśli nie, będziemy musieli
ręcznie pobierać kod źródłowy <quote>distfile</quote> i umieszczać
w katalogu <filename>/usr/ports/distfiles</filename> dla każdego
instalowanego portu.</para>
<para>By rozpocząć instalację należy przejść do katalogu
wybranego portu:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput></screen>
<para>Wewnątrz katalogu <filename>lsof</filename> znajduje się
szkielet portu. Następnym krokiem jest kompilacja programu, co
sprowadza się do wpisania polecenia <command>make</command>.
Efekt działania polecenia powinien być zbliżony do:</para>
<screen>&prompt.root; <userinput>make</userinput>
&gt;&gt; lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
&gt;&gt; Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===&gt; Extracting for lsof-4.57
...
[extraction output snipped]
...
&gt;&gt; Checksum OK for lsof_4.57D.freebsd.tar.gz.
===&gt; Patching for lsof-4.57
===&gt; Applying FreeBSD patches for lsof-4.57
===&gt; Configuring for lsof-4.57
...
[configure output snipped]
...
===&gt; Building for lsof-4.57
...
[compilation output snipped]
...
&prompt.root;</screen>
<para>Po skończeniu kompilacji powracamy do linii poleceń.
Kolejnym krokiem jest instalacja portu poprzez wpisanie polecenia
<command>make</command> wraz ze słowem
<command>install</command>:</para>
<screen>&prompt.root; <userinput>make install</userinput>
===&gt; Installing for lsof-4.57
...
[installation output snipped]
...
===&gt; Generating temporary packing list
===&gt; Compressing manual pages for lsof-4.57
===&gt; Registering installation for lsof-4.57
===&gt; SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
&prompt.root;</screen>
<para>Gdy ponownie powrócimy do linii poleceń, powinniśmy
być już w stanie uruchomić właśnie zainstalowaną aplikację.
Ostrzeżenie jakie pojawi się na ekranie związane jest z faktem,
że lsof jest programem pracującym ze zwiększonymi przywilejami.
W trakcie kompilacji i instalacji portów powinniśmy zwracać uwagę
na wszystkie pojawiające się ostrzeżenia.</para>
<para>Dobrym pomysłem, jest również usunięcie podkatalogu
zawierającego wszystkie tymczasowe pliki wykorzystywane
w trakcie kompilacji. Nie tylko dlatego, że niepotrzebnie zajmuje
miejsce na dysku, ale również dlatego, że może być przyczyną
problemów podczas aktualizacji programu do nowszej wersji.</para>
<screen>&prompt.root; <userinput>make clean</userinput>
===&gt; Cleaning for lsof-4.57
&prompt.root;</screen>
<note>
<para>Można sobie oszczędzić dwóch naddatkowych kroków wpisując
od razu <command>make install clean</command> zamiast trzech
osobnych poleceń <command>make</command>,
<command>make install</command> oraz
<command>make clean</command>.</para>
</note>
<note>
<para>Niektóre powłoki utrzymują bufor listy poleceń
z katalogów znajdujących się w zmiennej środowiskowej
<envar>PATH</envar>. Ma to za zadanie przyśpieszyć
wyszukiwanie plików binarnych tychże poleceń.
Jeśli korzystamy z jednej z takich właśnie powłok
może okazać się niezbędnym wydać polecenie
<command>rehash</command> po instalacji portu,
nim będziemy mogli wykorzystać nowo zainstalowany
program. Polecenie to dostępne jest przy wykorzystaniu
powłoki typu <command>tcsh</command>. Natomiast
dla powłoki typu <command>sh</command> odpowiednikiem
jest <command>hash -r</command>. Więcej informacji
dostępnych jest w dokumentacji powłoki.</para>
</note>
<para>Niektóre wydawnictwa na płytach DVD-ROM, jak np. FreeBSD
Toolkit z <ulink url="http://www.freebsdmall.com/">FreeBSD
Mall</ulink>, zawierają źródła distfile. Mogą być one
wykorzystane z kolekcją portów. Wystarczy zamontować płytę
DVD w <filename>/cdrom</filename>. Jeśli natomiast używamy
innego punktu montowania dla płyt musimy zmodyfikować zmienną
<makevar>CD_MOUNTPTS</makevar> by wskazywała na właściwe
miejsce. Niezbędne źródła distfile zostaną automatycznie
wykorzystane jeśli znajdują się na płycie.</para>
<note>
<para>Mimo wszystko należy mieć w pamięci, że licencje
nielicznych portów nie zezwalają na załączenie ich na
płycie CD-ROM. Może to być np. z powodu konieczności
wcześniejszej rejestracji przed pobraniem źródeł bądź
ich redystrybucja nie jest dozwolona. Jeśli chcemy
zainstalować port, który nie znajduje się na płycie
CD musimy mieć połączenie z Internetem.</para>
</note>
<para>System portów do pobierania plików wykorzystuje
program &man.fetch.1;, który z kolei potrafi korzystać
z wielu zmiennych środowiskowych, m.in.
<envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar>
czy <envar>FTP_PASSWORD</envar>. Jeśli znajdujemy się
za zaporą ogniową, bądź musimy korzystać z serwera
pośredniczącego FTP/HTTP proxy, może się okazać,
że będziemy musieli ustawić niektóre z tych zmiennych.
Kompletna lista wykorzystywanych zmiennych dostępna
jest w podręczniku systemowym &man.fetch.3;.</para>
<para>Dla użytkowników nie mogących być cały czas połączonych
z Internetem dostępne jest polecenie
<command>make <maketarget>fetch</maketarget></command>.
Wystarczy wpisać to polecenie znajdując się w głównym
katalogu drzewa portów (<filename>/usr/ports</filename>)
a wymagane pliki zostaną automatycznie pobrane. Polecenie
to będzie również funkcjonować w podkatalogach, np.
<filename>/usr/ports/net</filename>. Jednakże, w takiej
sytuacji <emphasis>nie</emphasis> zostaną automatycznie
pobrane źródła bibliotek, od których zależy dany port.
Zamieniając parametr <maketarget>fetch</maketarget> na
<maketarget>fetch-recursive</maketarget> spowodujemy
pobranie również źródeł wszystkich portów, od których
zależy instalowany program.</para>
<note><para>Możliwe jest kompilowanie każdego portu z osobna
w danej kategorii, bądź wszystkich na raz poprzez polecenie
<command>make</command> wykonane, analogicznie do
<command>make <makevar>fetch</makevar></command>,
w głównym katalogu kategorii. Jednakże jest to niebezpieczna
metoda, gdyż niektóre porty nie mogą jednocześnie funkcjonować
w systemie, bądź mogą zainstalować różne pliki o tej samej
nazwie.</para></note>
<para>W naprawdę żadkich przypadkach, użytkownicy mogą pozyskać
pliki distfile z innego źródła niż <makevar>MASTER_SITES</makevar>
(miejsce skąd je pobiera system portów). Opcję
<makevar>MASTER_SITES</makevar> można zastąpić za
pomocą następującego polecenia:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/<replaceable>directory</replaceable></userinput>
&prompt.root; <userinput>make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen>
<para>W tym przykładzie zastąpiliśmy opcję
<makevar>MASTER_SITES</makevar> adresem <hostid
role="fqdn">ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/</hostid>.</para>
<note><para>Niektóre porty umożliwiają (a nawet wymagają)
podanie pewnych opcji kompilacji, które mogą włączyć
bądź wyłączyć nie potrzebne części aplikacji, pewne
opcje bezpieczeństwa i inne parametry. Z przychodzących
na myśl tego typu programów to
<filename role="package">www/mozilla</filename>, <filename
role="package">security/gpgme</filename> oraz <filename
role="package">mail/sylpheed-claws</filename>. Za każdym
razem gdy dostępne będą tego typu opcje wyświetlony
zostanie komunikat.</para></note>
<sect3>
<title>Ignorowanie domyślnych katalogów portów</title>
<para>Czasami okazuje się być przydatne (a nawet wymagane)
by skorzystać z innych katalogów tymczasowych i docelowych.
Domyślne katalogi można zastąpić wykorzystując zmienne
<makevar>WRKDIRPREFIX</makevar> i <makevar>PREFIX</makevar>.
Na przykład:</para>
<screen>&prompt.root; <userinput>make WRKDIRPREFIX=/usr/home/example/ports install</userinput></screen>
<para>spowoduje skompilowanie portu w katalogu
<filename>/usr/home/example/ports</filename> i instalację
w podkatalogach <filename>/usr/local</filename>.</para>
<screen>&prompt.root; <userinput>make PREFIX=/usr/home/example/local install</userinput></screen>
<para>spowoduje natomiast kompilację w katalogu
<filename>/usr/ports</filename> oraz instalację
w podkatalogach
<filename>/usr/home/example/local</filename>.</para>
<para>I oczywiście,</para>
<screen>&prompt.root; <userinput>make WRKDIRPREFIX=../ports PREFIX=../local install</userinput></screen>
<para>spowoduje połącznie obydwu powyższych
ustawień (jest to za długie by całkowicie zmieściło
się na stronie, ale powinno dać ogólne wyobrażenie).</para>
<para>Alternatywnie, obydwie zmienne mogą być
również określone jako zmienne środowiskowe.
Informacje o definiowaniu zmiennych środowiskowych
dostępne są w podręczniku systemowym naszej
powłoki.</para>
</sect3>
<sect3>
<title>Jak poradzić sobie z <command>imake</command></title>
<para>Niektóre porty wykorzystujące <command>imake</command>
(część Systemu okien X) nie współpracują ze zmienną
<makevar>PREFIX</makevar> i mimo wszystko będą
instalowały programy w <filename>/usr/X11R6</filename>.
Podobnie niektóre z portów napisanych w języku Perl
ignorują zmienną <makevar>PREFIX</makevar>
i instalują programy w głównym drzewie Perla.
Zmuszenie tych portów do współpracy ze zmienną
<makevar>PREFIX</makevar> jest niezmiernie trudne,
albo wręcz niemożliwe.</para>
</sect3>
</sect2>
<sect2 id="ports-removing">
<title>Usuwanie zainstalowanych portów</title>
<indexterm>
<primary>porty</primary>
<secondary>usuwanie</secondary>
</indexterm>
<para>Teraz, gdy wiesz już jak instalować porty,
zastanawiasz się prawdopodobnie jak je usuwać,
na przykład w wypadku, gdy zainstalowaliśmy port,
ale okazało się jednak, że to nie był ten którego
szukaliśmy. W ramach przykładu usuniemy port,
który instalowaliśmy poprzednio (dla tych którzy
nie uważają, był to <command>lsof</command>).
Podobnie jak w przypadku pakietów (szerzej opisane
w podrozdziale traktującym o <link
linkend="packages-using">pakietach</link>),
również porty usuwane są za pomocą polecenia
&man.pkg.delete.1;:</para>
<screen>&prompt.root; <userinput>pkg_delete lsof-4.57</userinput></screen>
</sect2>
<sect2 id="ports-upgrading">
<title>Aktualizacja portów</title>
<indexterm>
<primary>porty</primary>
<secondary>aktualizacja</secondary>
</indexterm>
<para>Na wstępie musimy wyświetlić zdezaktualizowane porty w kolekcji.
Wykorzystamy do tego polecenie &man.pkg.version.1;:</para>
<screen>&prompt.root; <userinput>pkg_version -v</userinput></screen>
<sect3 id="ports-file-updating">
<title><filename>/usr/ports/UPDATING</filename></title>
<para>Po zaktualizowaniu kolekcji, a przed próbą aktualizacji
jakichkolwiek portów, należy zapoznać się z zawartością pliku
<filename>/usr/ports/UPDATING</filename>. Plik ten opisuje
różne zagadnienia i dodatkowe kroki, na które można natknąć
się i będzie trzeba wykonać podczas aktualizacji, np.
zmiany formatu plików czy zmiany w lokalizacji plików
konfiguracyjnych.</para>
<para>Jeśli opis w pliku <filename>UPDATING</filename> mówi coś innego
niż ten tekst, należy zastosować się do opisu.</para>
</sect3>
<sect3 id="portupgrade">
<title>Aktualizacja portów z wykorzystaniem programu Portupgrade</title>
<indexterm>
<primary>portupgrade</primary>
</indexterm>
<para>Program <application>portupgrade</application> został
zaprojektowany by ułatwić aktualizację zainstalowanych w
systemie portów. Dostępny jest z portu <filename
role="package">sysutils/portupgrade</filename>.
Jego instalacja przebiega dokładnie tak samo, jak każdego
innego portu, wykorzystując polecenie
<command>make <makevar>install
clean</makevar></command> command:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/sysutils/portupgrade</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>Przeskanujmy następnie listę zainstalowanych portów
za pomocą polecenia <command>pkgdb -F</command> i usuńmy
wszystkie niezgodności jakie nam zwróci skanowanie.
Regularne skanowanie przed każdą aktualizacją jest
zdecydowanie dobrym pomysłem.</para>
<para>Wydanie polecenia <command>portupgrade -a</command>
spowoduje, że program <application>portupgrade</application>
rozpocznie aktualizację wszystkich przedawnionych portów
zainstalowanych w naszym systemie. Parametr <option>-i</option>
pozwoli przejść w tryb interaktywny, gdzie będziemy musieli
potwierdzić aktualizację każdego portu.</para>
<screen>&prompt.root; <userinput>portupgrade -ai</userinput></screen>
<para>By zaktualizować jedynie wybraną aplikację zamiast wszystkich
portów należy wykorzystać polecenie <command>portupgrade
<replaceable>nazwa_programu</replaceable></command>.
Opcja <option>-R</option> oznacza, że portupgrade powinien
najpierw zaktualizować wszystkie porty, od których
zależy dany program.</para>
<screen>&prompt.root; <userinput>portupgrade -R firefox</userinput></screen>
<para>By do instalacji wykorzystać pakiety zamiast portów
należy dodać parametr <option>-P</option>. Wówczas
<application>portupgrade</application> przeszuka katalogi
zawarte w zmiennej <envar>PKG_PATH</envar>. Jeśli pakiet
nie zostanie odnaleziony lokalnie zostanie pobrany z Internetu.
Jeśli nie będzie możliwe żadne z powyższych, wówczas
<application>portupgrade</application> wykorzysta do
aktualizacji porty. By temu zapobiec należy zastosować
parametr <option>-PP</option>.</para>
<screen>&prompt.root; <userinput>portupgrade -PR gnome2</userinput></screen>
<para>Aby pobrać jedynie pliki źródłowe distfiles
(bądź pakiety, gdy wykorzystamy opcję <option>-P</option>)
bez kompilacji czy instalacji czegokolwiek należy użyć
parametru <option>-F</option>. Więcej informacji
dostępnych jest w &man.portupgrade.1;.</para>
</sect3>
<sect3 id="portmanager">
<title>Aktualizacja portów z wykorzystaniem programu Portmanager</title>
<indexterm>
<primary>portmanager</primary>
</indexterm>
<para>Kolejnym narzędziem ułatwiającym aktualizację zainstalowanych
portów jest <application>Portmanager</application>, dostępny z portu
<filename role="package">sysutils/portmanager</filename>:</para>
<screen>&prompt.root; <userinput>cd <filename class="directory">/usr/ports/sysutils/portmanager</filename></userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>Wszystkie zainstalowane porty mogą zostać zaktualizowane
za pomocą polecenia:</para>
<screen>&prompt.root; <userinput>portmanager -u</userinput></screen>
<para>Wykorzystując parametr <option>-ui</option> przechodzimy w tryb
interaktywny, gdzie będziemy pytani o potwierdzenie każdej operacji
wykonywanej przez <application>Portmanager</application>.
Program ten może być z równym powodzeniem wykorzystywany do instalacji
nowych portów w systemie. W przeciwieństwie do polecenia
<command>make install clean</command> program
<application>Portmanager</application> zaktualizuje wszystkie
zależności nim skompiluje i zainstaluje wybrany port.</para>
<screen>&prompt.root; <userinput>portmanager <replaceable>x11/gnome2</replaceable></userinput></screen>
<para>Gdy wystąpią problemy z zależnościami wybranego portu
można wykorzystać <application>Portmanager</application>a,
by ponownie skompilował je we właściwej kolejności. Na
koniec zostanie również ponownie skompilowany port
stwarzający problemy.</para>
<screen>&prompt.root; <userinput>portmanager <replaceable>graphics/gimp</replaceable> -f</userinput></screen>
<para>Więcej informacji dostępnych jest na stronach podręcznika
systemowego <application>Portmanager</application>a.</para>
</sect3>
</sect2>
<sect2 id="ports-disk-space">
<title>Porty i przestrzeń na dysku</title>
<indexterm>
<primary>porty</primary>
<secondary>przestrzeń na dysku</secondary>
</indexterm>
<para>Korzystanie z kolekcji portów z czasem odbije się na
wolnym miejscu na dysku. Dlatego też zawsze po skompilowaniu
i zainstalowaniu programu z portu powinniśmy pamiętać
o usunięciu tymczasowych katalogów roboczych (ang.
<filename class="directory">work</filename> directories)
wykorzystując do tego polecenie <command>make
<makevar>clean</makevar></command>. Całą kolekcję natomiast
można oczyścić wpisujące polecenie:</para>
<screen>&prompt.root; <userinput>portsclean -C</userinput></screen>
<para>Z czasem uzbiera nam się wiele katalogów
<filename class="directory">distfiles</filename>, które
będą jedynie zajmować przestrzeń na dysku. Możemy je ręcznie
usuwać bądź posłużyć się następującym poleceniem, by usunąć
wszystkie katalogi distfiles nie powiązane aktualnie z
żadnym portem:</para>
<screen>&prompt.root; <userinput>portsclean -D</userinput></screen>
<para>Badź, by usunąć wszystkie katalogi disftiles, do których nie odnosi się
żaden z aktualnie zainstalowanych portów w naszym systemie:</para>
<screen>&prompt.root; <userinput>portsclean -DD</userinput></screen>
<note>
<para>Program <command>portsclean</command> jest częścią pakietu
<application>portupgrade</application>.</para>
</note>
<para>Pamiętajmy również o usuwaniu instalowanych portów gdy
już ich nie potrzebujemy. Przydatne narzędzie pozwalające
zautomatyzować te czynności znajduje się w
<filename role="package">sysutils/pkg_cutleaves</filename>.</para>
</sect2>
</sect1>
<sect1 id="ports-nextsteps">
<title>Czynności po-instalacyjne</title>
<para>Po zainstalowaniu nowego programu z reguły chcemy
zapoznać się z dostarczoną z nim dokumentacją, zmodyfikować
wymagane pliki konfiguracyjne, upewnić się, że program
(jeśli jest to demon) będzie uruchamiany w trakcie
ładowania systemu, itp.</para>
<para>Oczywiście, szczegółowe kroki jakie należy podjąć
konfigurując każdą aplikację będą różne. Tym nie mniej,
jeśli właśnie zainstalowaliśmy nowy program i zastanawiamy
się <quote>Co dalej?</quote> poniższe uwagi mogą
okazać się pomocne:</para>
<itemizedlist>
<listitem>
<para>Za pomocą &man.pkg.info.1; możemy sprawdzić gdzie
i jakie pliki zostały zainstalowane. Na przykład, jeśli
zainstalowaliśmy wersję 1.0.0 pakietu FooPackage,
polecenie</para>
<screen>&prompt.root; <userinput>pkg_info -L foopackage-1.0.0 | less</userinput></screen>
<para>wyświetli nam wszystkie pliki zainstalowane
z pakietu. Szczególną uwagę warto zwrócić na pliki
zainstalowane w katalogach: <filename>man/</filename>
zawierającym strony podręcznika systemowego,
<filename>etc/</filename> zawierającym pliki
konfiguracyjne, oraz <filename>doc/</filename>,
gdzie znajdować się będzie dużo obszerniejsza
dokumentacja.</para>
<para>Jeśli nie jesteśmy pewni, którą wersją programu
zainstalowaliśmy, polecenie</para>
<screen>&prompt.root; <userinput>pkg_info | grep -i <replaceable>foopackage</replaceable></userinput></screen>
<para>wyświetli wszystkie zainstalowane pakiety
zawierające <replaceable>foopackage</replaceable>
w nazwie. Oczywiście <replaceable>foopackage</replaceable>
należy zastąpić nazwą poszukiwanego pakietu.</para>
</listitem>
<listitem>
<para>Gdy już udało się ustalić jakie strony podręcznika
systemowego zostały zainstalowane przez dany pakiet,
można je przeczytać za pomocą polecenia &man.man.1;.
Warto również obejrzeć przykładowe pliki konfiguracyjne
i wszelką dodatkową dokumentację.</para>
</listitem>
<listitem>
<para>Jeśli dana aplikacja posiada własną witrynę internetową
warto jest również tam poszukać dodatkowej dokumentacji
czy odpowiedzi na często zadawane pytania (FAQ). Jeśli nie
znamy właściwego adresu internetowego może być on podany
w wyniku polecenia</para>
<screen>&prompt.root; <userinput>pkg_info <replaceable>foopackage-1.0.0</replaceable></userinput></screen>
<para>Wiersz <literal>WWW:</literal>, jeśli w ogóle jest
podany, powinien zawierać informacje o adresie witryny.</para>
</listitem>
<listitem>
<para>Programy, które powinny być uruchamiane podczas
ładowania systemu (np. serwery internetowe) z reguły
instalują przykładowy skrypt w
<filename>/usr/local/etc/rc.d</filename>. Powinniśmy
sprawdzić zawartość tego skryptu oraz w razie potrzeby
zmodyfikować go bądź zmienić nazwę. Szczegółowe informacje
dostępne są w podrozdziale <link
linkend="configtuning-starting-services">Uruchamianie
usług</link>.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="ports-broken">
<title>Jak radzić sobie ze źle przygotowanymi portami</title>
<para>Jeśli natknęliśmy się na port, który z jakichś
powodów nie działa na naszym komputerze, możemy zrobić
kilka następujących rzeczy:</para>
<orderedlist>
<listitem>
<para>Sprawdzić w <ulink url="&url.base;/support.html#gnats">bazie
danych zgłoszonych problemów</ulink> czy jest przygotowywana
poprawka dla danego portu. Jeśli tak, może uda się nam
zastosować tę poprawkę.</para>
</listitem>
<listitem>
<para>Poprosić o pomoc opiekuna danego portu. Adres
email opiekuna można znaleźć przeglądająć plik
<filename>Makefile</filename> w katalogu portu bądź
wpisująć polecenie <command>make maintainer</command>.
Wysyłając wiadomość pamiętajmy o zawarciu informacji
o nazwie i wersji portu (najlepiej jest zawrzeć cały
wiersz z pliku <filename>Makefile</filename> zaczynający
się od <literal>&dollar;FreeBSD:</literal>), oraz opis
błędu i wynik działania programu w momencie
zaistnienia błędu.</para>
<note>
<para>Niektóre porty nie są przygotowywane przez pojedyncze
osoby, ale raczej przez <ulink
url="&url.articles.mailing-list-faq;/article.html">grupy
dyskusyjne</ulink>. Wiele adresów takich grup, choć nie
wszystkie, ma postać
<email role="nolink">freebsd-listname@FreeBSD.org</email>.
Należy mieć również to na uwadze formułując swoje pytania.</para>
<para>Porty przygotowywane przez
<email role="nolink">freebsd-ports@FreeBSD.org</email>
w rzeczywistości nie posiadają żadnego konkretnego opiekuna,
ani grupy opiekunów. Poprawki i pomoc dla takich portów
przygotowują osoby zapisane na tę listę dyskusyjną. Nowi
ochotnicy są zawsze mile widziani!</para>
</note>
<para>W przypadku braku odpowiedzi można również przesłać
zgłoszenie błędu poprzez &man.send-pr.1; (szczegóły w artykule
<ulink
url="&url.articles.problem-reports;/article.html">Writing
FreeBSD Problem Reports</ulink>).</para>
</listitem>
<listitem>
<para>Naprawić błąd samemu! Podręcznik <ulink
url="&url.books.porters-handbook;/index.html">Porter's
Handbook</ulink> (ang.) zawiera szczegółowe informacje
o strukturze <quote>Portów</quote>, dzięki czemu można samemu
naprawić błąd lub przygotować własny port!</para>
</listitem>
<listitem>
<para>Pobrać pakiet z najbliższego serwera FTP.
<quote>Główne</quote> repozytorium pakietów znajduje
się na serwerze <hostid
role="fqdn">ftp.FreeBSD.org</hostid> w katalogu <ulink
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/">packages</ulink>.
Tym nie mniej warto jest najpierw odszukać <ulink
url="http://mirrorlist.FreeBSD.org/">lokalny serwer
lustrzany</ulink>. Szanse na to, że gotowe pakiety
będą działać poprawnie są większe niż w przypadku
kompilowania programów. Pakiety można zainstalować
za pomocą programu &man.pkg.add.1;.</para>
</listitem>
</orderedlist>
</sect1>
</chapter>