wtorek, 09 lutego 2010 
Start arrow FreeBSD arrow PORTY I PACZKI arrow Narz?dzie portupgrade - ?atwiejsze zarz?dzanie portami
Menu BSD4u
FreeBSD
OpenBSD
NetBSD
Dla *BSD
FAQ BSD4u
Forum BSDGuru.org
Security Advisory
Licencje
Images BSD
Menu ogólne
Start
Aktualności
Download
Sondy
Szukaj
Linki
Książki
About BSD4u
Info
Team BSD4u
Regulamin
Kanał #BSD4u
Kontakt
Sondy
Co sądzisz o naszym nowym Projekcie, i jak oceniasz zmianę koncepcji Projektu?
 
Popularne
Kompilacja i konfigu...
SQUID - najpopularni...
Samba - serwer plikó...
Neostrada+ i modem ...
NATowanie czyli jak ...
Upgrade systemu
Apache (konfiguracja...
Praktyczne IPFW
MRTG - statystyki ru...
CVSup - pomocny podc...
Neostrada na modemie...
Postfix - bezpieczny...
Postfix z autoryzacj...
System Portów (Kolek...
Postfix oparty na ba...
Top Download
File icon Postfix - "Krok po kroku" v1.17811
File icon Postfix - "Krok po kroku" v1.06759
File icon PPTPd - "Prosty i szybki VPN" v1.0b6314
File icon sdi.sh3875
File icon uEagle 1.0p12971
File icon named.sh2938
File icon uEagle 0.99b2867
File icon cs.sh2824
File icon uEagle 1.02756
File icon uEagle 1.12566
Ostatnie komentarze
RE: transparent a v...
Dodał: Trash
Dnia: 2009-10-06 15:45:18
transparent a virus...
Dodał: grzywka18
Dnia: 2008-05-13 11:19:58
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
Narz?dzie portupgrade - ?atwiejsze zarz?dzanie portami Drukuj E-mail
Oceny: / 24
KiepskiBardzo dobry 
wtorek, 24 lutego 2004 - Napisał: KaCzY (26635 odsłon)

Poniższy artykuł opisuje narzędzie portupgrade - jest to narzędzie zarządzające portami/paczkami w naszym systemie. Dowiemy się z niego jak w prosty i szybki sposób aktualizować już zainstalowane porty/paczki, jak sprawdzać "świeżość" naszych programów, jak instalować nowe porty/paczki poprzez portupgrade itp. Po przeczytaniu tego dokumentu docenisz jak pomocny jest portupgrade w codziennym administrowaniu systemem FreeBSD.

Instalacja portupgrade

Tak jak w przypadku innych portów tak i tu, aby zainstalować portupgrade wystarczy przejść do jego katalogu i wydać magiczne zaklęcie:

# cd /usr/ports/sysutils/portupgrade
# make install clean

Użyjmy sztuczki z moich poprzednich artykułów i sprawdźmy, które manuale a w związku z tym i narzędzia zostały zainstalowane:

% pkg_info -xL portupgrade | grep man
/usr/local/man/man1/pkg_deinstall.1.gz
/usr/local/man/man1/pkg_fetch.1.gz
/usr/local/man/man1/pkg_glob.1.gz
/usr/local/man/man1/pkg_sort.1.gz
/usr/local/man/man1/pkgdb.1.gz
/usr/local/man/man1/portcvsweb.1.gz
/usr/local/man/man1/portsclean.1.gz
/usr/local/man/man1/portsdb.1.gz
/usr/local/man/man1/portupgrade.1.gz
/usr/local/man/man1/portversion.1.gz
/usr/local/man/man5/pkgtools.conf.5.gz
/usr/local/man/man1/pkg_which.1.gz
/usr/local/man/man1/portinstall.1.gz
/usr/local/man/man1/ports_glob.1.gz

Najwyższa pora poświęcić trochę czasu i przejrzeć te manuale. Będziesz miał obraz jak potężna i elastyczna jest kolekcja portów i odkryjesz sztuczki o których nigdy nie miałeś pojęcia. Jednakże, nie przerażaj się, jeśli czujesz się odrobinę przytłoczony ilością dostępnych informacji. W kilku następnych artykułach, poprowadzę cię za rączkę przez konkretne przykłady, abyś sam zaczął używać tych narzędzi skutecznie.

Na początek przyjrzymy się strukturze portów, gdzie one lezą w systemie i jak utrzymać ich aktualność.

Kiedy instalowałeś FreeBSD i zdecydowałeś się ze chcesz zainstalować kolekcję portów, to katalog /usr/ports i jego zawartość została utworzone tak jak sobie tego zażyczyłeś. Jeśli wylistujesz zawartość katalogu /usr/ports spostrzeżesz, że kolekcja ta podzielona jest na podkatalogi tworzące logiczne kategorie. Jak chociażby podkatalogi dla mail, www i databases. Każdy podkatalog zawiera podkatalog dla odpowienich aplikacji, więc www ma podkatalogi dla mozilla i lynx. Każdy z tych katalogów zawiera informacje potrzebne do zainstalowania tej konkretnej aplikacji. Na przykład:

% ls -F /usr/ports/www/mozilla
./Makefiledistinfo pkg-descr pkg-message
../README.htmlfiles/ pkg-descr.gtk2

Kolekcja portów jest ciągle poddawana procesowi aktualizacji. Nowe porty dodawane są regularnie, zwykle codziennie. Jeśli jesteś ciekawski i chcesz zobaczyć rozkład kiedy i jakie porty zostały dodane, http://www.freshports.org/ stanie się nieocenionym źródłem informacji dla ciebie.

Bardzo dobrze jest mieć taką dynamiczną kolekcję portów, ale oznacza to ze twoje drzewko portów - tzn. struktura katalogów /usr/ports - może szybko się zdezaktualizować. Aby utrzymać ją w synchronizacji ze zmianami i być pewnym, że zawsze masz możliwość zbudowania jakiegokolwiek portu trzeba zastosować cvsup.

Synchronizacja drzewa portów

Wspominałem już o cvsup dość często. Jeśli jeszcze nie korzystałeś z cvsup, powinieneś przeczytać Using CVSup oraz zajrzeć do działu CVSup.  Handbook jest zdecydowanie najlepszym miejscem, aby zrozumieć cały proces cvsup. Kiedy będziesz gotowy:

# cd /usr/ports/net/cvsup-without-gui
# make install clean

CVSup można wykorzystać do dwóch rzeczy aktualizacji systemu operacyjnego jak i i kolekcji portów. Jeśli interesuje cię na razie tylko utrzymanie portów w synchronizacji, to ten plik to zrobi:

# more /root/cvs-supfile
*default host=cvsup.pl.freebsd.org
*default base=/usr/local/etc/cvsup
*default prefix=/usr
*default release=cvs delete use-rel-suffix compress
ports-all tag=.

Ten plik to argument dla polecenia cvsup uruchomionego z konta superużytkownika:

# cvsup -g -L 2 ~/cvs-supfile

Jeśli ten plik lub te polecenie nie maja dla ciebie sensu, zapoznaj się z odpowiednią sekcją w handbook'u o której wspominałem wcześniej. Zwróć uwagę, że =. (kropka) w linii z ports-all jest ważna, więc upewnij się czy i twój plik tez ją posiada.

Polecenie cvsup ściągnie wszystkie najnowsze kawałki z kolekcji portów i dodaje je do twojego drzewa portów. Jest to tego typu komenda, z której uzyskamy wymierne korzyści jeśli będziemy ją odpalać codziennie, więc być może zechcesz ją dodać jako zadanie dla cron'a.

Proces cvsup również uaktualni plik /usr/ports/INDEX (od tłum. jak i /usr/ports/INDEX-5 niezależnie czy korzystamy z gałęzi 4.X czy 5.X). Plik ten zawiera całą listę portów. Aby sprawdzić jak bardzo aktualne mamy porty, skorzystaj z polecenia (od tłum. bazowanie na tym odczycie nie jest najlepszym wyjściem; bo INDEX{-5} jest uaktualniany ZTCW tylko 2 razy w miesiącu a zmiany w kolekcji portów są nanoszone codziennie; po drugie sami możemy sobie wygenerować ten indeks kiedy tylko chcemy; ):

% ls -l /usr/ports/INDEX
-rw-r--r-- 1 root wheel 3678738 May 17 17:04 INDEX

Na tej maszynie system został postawiony 17 Maja i od tamtego czasu nie aktualizowałem portów. Jeśli porównam to do mojej głównej maszyny, na której cvsup jest uruchamiany codziennie:

% ls -l /usr/ports/INDEX
-rw-r--r-- 1 root wheel 3912366 Aug 17 08:50 INDEX

Widać ze rozmiar pliku i w związku z tym ilość portów wzrosła znacznie w przeciągu tych trzech miesięcy.

Aktualizacja bazy portów

W porządku, w końcu jesteśmy gotowi na portupgrade i jego zestaw narzędzi. Po każdym cvsup, odpal to polecenie:

# portsdb -Uu
Updating the ports index ...
...
7000.........8000.........9000.........10000 ..... done]

Gdy pierwszy raz skorzystasz z tego polecenia zostanie utworzona baza INDEX.db w katalogu /usr/ports. Ta baza będzie uaktualnia za każdym razem, gdy powtórzysz polecenie portsdb po świeżej operacji cvsup. Jeśli skorzystasz z narzędzia file, zobaczysz, że nie będziesz mógł przejrzeć zawartości INDEX.db (od. tłum w przeciwieństwie do /usr/ports/INDEX{-5}), ponieważ nie jest to zwykły plik ASCII:

% file /usr/ports/INDEX.db
/usr/ports/INDEX.db: Berkeley DB 1.85/1.86 (Btree, version 3, native byte-order)

Jednak kilka narzędzi z pakietu portupgrade będzie korzystać z tej bazy. Btree wskazuje na typ bazy, której algorytmy zostały zaprojektowane do szybkiego przeszukiwania dużych ilości danych. Jest to idealne rozwiązanie dla opasłej kolekcji portów - przekonamy się ze niektóre narzędzia portupgrade są szybsze i bardziej wydajne niż narzędzia z base systemu prezentowane w poprzednich artykułach, to właśnie z powodu Btree.

Musisz wykazać się odrobiną cierpliwości bo portsdb potrzebuje chwilki czasu, aby zakończyć swoje działanie. Gdy skończy, jesteś gotowy by odpalić portversion i przekonać się czy którykolwiek z zainstalowanych portów wymaga aktualizacji. Pamiętasz to polecenie?

% portversion -v -l "<"
gqview-devel-1.3.1 < needs updating (port has 1.3.5)

Jeśli komenda ta coś zwróci, to twoim następnych krokiem będzie aktualizacja tych konkretnych przestarzałych portów. Nie bądź zdziwiony, gdy będziemy używać portupgrade, wywołując go jako portinstall (od tłum. czyli do instalacji również nowych portów a nie tylko aktualizacji obecnych)

Aktualizacja portów

W najprostszej postaci, 'portupgrade -a' zaktualizuje wszystkie (ang. all (-a)) nieaktualne porty. Czasami proces ten może zakończyć się na portach które odmówią aktualizacji. Ta pozorna anomalia to nie ograniczenie portupgrade, ale kwestia zależności.

Porty maja dwa typy zależności. Pierwszy zwany jest 'zbuduj zależność' (ang. build dependency) i wskazuje na inne porty, które muszą zostać zainstalowane zanim właściwy port pomyślnie zostanie dodany do systemu. Drugi typ zależności odnosi się do portów, które zależą od tego konkretnego portu, który chcesz sobie uaktualnić. Z pewnością pamiętasz z ostatniego artykułu, że pkg_delete nie pozwolił usunąć tych aplikacji, jeśli inne aplikację zależały od nich.

Jeśli tylko podbijesz numerek aplikacji, ale nie sprawdzisz czy zależności również wymagają aktualizacji, ostatecznie skończysz z aplikacjami, które odmówią uaktualnienia. Aby się przed tym zabezpieczyć, wywołuj portupgrade z dodatkowymi dwoma rekursywnymi przełącznikami czyli:

# portupgrade -arR

Przełącznik '-R' sprawdzi zależności wymagane do kompilacji portu a '-r' zatroszczy się o aplikacje zależne od portu, który jest uaktualniany. To ochroni twój system przed przestarzałymi zależności i niekompatybilnością oprogramowania. Czasami, podczas korzystania z portupgrade lub któregoś z jego narzędzi, może pojawić się wiadomość z prośbą o 'pkgdb -F'. Mogłeś zapewne domyślić się po nazwie, że te narzędzie uaktualnia bazę paczek będących w systemie. Baza ta znajduje się w /var/db/pkg/pkgdb.db. I także tu baza ta wykorzystuje Btree ze względu na optymalny czas przeszukiwania. Jeśli kiedykolwiek zostaniesz poproszony o uruchomienie 'pkgdb -F' po prostu zrób to. Jednakże, z własnej inicjatywy nie przerywaj pracy temu poleceniu bo skończysz z niespójną bazą. Jeśli jednak znajdziesz się w takiej pechowej sytuacji, to polecenie naprawi spójność twojej bazy (od tłum. czasami to jest doskonałe remedium na dziwne zachowanie portupgrade):

# pkgdb -fu
---> Updating the pkgdb
[Rebuilding the pkgdb in /var/db/pkg ...
............................................................ done]

Uruchomienie pkgdb z '-F' pozwoli interaktywnie naprawić bazę (od tłum. właściwie to skorygować zależności):

# pkgdb -F
---> Checking the package registry database
Stale dependency: mod_php4-4.3.4_4,1 -> apache-1.3.29_1 (www/apache13):
apache-2.0.48_1 (score:57%) ? ([y]es/[n]o/[a]ll) [no] yes
New dependency? (? to help):
[Enter] to skip, [Ctrl]+[D] to delete, [.][Enter] to abort, [Tab] to complete

Odpalenie pkgdb z przełącznikiem '-F' interaktywnie pozwoli skorygować tą bazę. To znaczy pkgdb zatrzyma się i zapyta co zamierzasz zrobić, zanim to wykona. Michael Lucas napisał artykuł wyjaśniający jak odpowiadać na te zapytania ze strony pkgdb. Jeśli jesteś przesadnie ostrożny, alternatywą może być '-Fa', czyli pkgdb poprawi tylko te rozbieżności co do których nie będzie miał żadnych wątpliwości. To wszystko tylko tak brzmi przerażająco, w rzeczywistości jest inaczej. Jest mało prawdopodobne, że kiedykolwiek będziesz poproszony o uruchomienie 'pkgdb -F' (od tłum. zamiast 'mało prawdopodobne' raczej pasuje tu 'czasami'). Aplikacja pkgdb jest wykorzystywana również do innych celów, i w związku z tym zwana jest tez pkg_which.

Korzystanie z pkg_which

pkg_which (lub pkgdb) można wykorzystać, aby odszukać do którego portu należy konkretny plik. A oto prosty przykład demonstrujący różnice między wbudowana komenda which i pkg_which:

% which pkgdb
/usr/local/sbin/pkgdb

Polecenie 'which' jest wykorzystywane do odnalezienia ścieżki do aplikacji. Natomiast pkg_which jest w stanie powiedzieć mi do którego portu należy dany plik (od tłum. binarka, manual, plik nagłówkowy ... czyli jeśli coś przyszło z portem pkg_which powie dokładnie z którym).

% pkg_which pkgdb
portupgrade-20030723

A to polecenie jest równoważne z poprzednim poleceniem:

% pkgdb pkgdb
portupgrade-20030723

A o to następny przykład. Powiedzmy, że myszkujesz w /usr/local/, jest to struktura katalogów zawierająca pliki wykorzystywane przez zainstalowane aplikacje. Znalazłeś cala garść plików i nie masz najmniejszego pojęcia skąd one się wzięły lub do której aplikacji nalezą. To zadanie dla pkg_which. Spójrz na przykładowy fragment z mojego systemu:

% ls /usr/local/bin | grep yaf
tryaffix*
yaf-cdda*
yaf-mpgplay*
yaf-splay*
yaf-tplay*
yaf-vorbis*
yaf-yuv*

Jeśli jesteś podobny do mnie, to te pliki całkowicie nic ci tez nie mówią. Zobaczmy do której aplikacji one nalezą:

% pkg_which *yaf*
ispell-3.2.06_3
kdemultimedia-3.1.3
kdemultimedia-3.1.3
kdemultimedia-3.1.3
kdemultimedia-3.1.3
kdemultimedia-3.1.3
kdemultimedia-3.1.3

Polecenie 'pkg_which' ma kilka pożytecznych opcji. Jedna z nich to '-o', czyli pochodzenie (ang. origin (-o)). Załóżmy ze nie pamiętasz z której gałęzi portów wywodzi się kdemultimedia-3.1.3. Spróbuj tego:

% pkg_which -o kdemultimedia-3.1.3
multimedia/kdemultimedia3

Wyjście wskazuje nazwę podkatalogu z którego ten port został zbudowany czyli /usr/ports/multimedia/kdemultimedia3. Również opcja '-v' może się przydać. Jeśli chciałbym się dowiedzieć, które aplikacje KDE mam obecnie zainstalowane to:

% pkg_which -v kde*
kde-config: kdelibs-3.1.3
kdebugdialog: kdebase-3.1.3
kded: kdelibs-3.1.3
kdeeject: kdebase-3.1.3
kdeinit: kdelibs-3.1.3
kdeinit_shutdown: kdelibs-3.1.3
kdeinit_wrapper: kdelibs-3.1.3
kdepasswd: kdeutils-3.1.3
kdeprintfax: kdebase-3.1.3
kdesktop: kdebase-3.1.3
kdesktop_lock: kdebase-3.1.3
kdessh: kdeutils-3.1.3
kdesu: kdebase-3.1.3
kdesu_stub: kdelibs-3.1.3
kdesud: kdebase-3.1.3
kdevdlg2ui: kdevelop-2.1.5
kdevelop: kdevelop-2.1.5

Jak widać wyjście z polecenia jest dość gadatliwe. Każda linia pokazuje nazwę aplikacji, później znak : (od tłum. znak pełniący tylko funkcje ogranicznika), i na końcu nazwa portu z której pochodzi ta aplikacja. A tak przy okazji to wygląda na to, że na tej maszynie jest KDE w wersji 3.1.3 Zanim przejdziemy dalej, podsumujmy kroki niezbędne, aby mieć zainstalowane najświeższe oprogramowanie:

  • uruchom 'cvsup' w celu synchronizacji drzewa portów /usr/ports

  • uruchom portsdb, żeby zaktualizować /usr/ports/INDEX.db

  • użyj portversion, aby ustalic które aplikacje wymagają aktualizacji

  • wykorzystaj portupgrade do aktualizacji tych aplikacji

Dodatkowe opcje portupgrade

Już wiemy, że 'portupgrade -arR' prawidłowo aktualizuje aplikacje. Dodatkowo portupgrade dostarcza kilku opcji, które pozwalają skrupulatnie wybrać jakie aplikacje uaktualnić i jak to zrobić. Jedna z bardziej pożytecznych opcji wtedy, gdy nie masz stałego łącza to '-F'. Zazwyczaj, kiedy aktualizujesz, portupgrade korzysta z sieci wtedy gdy potrzebuje pliku a potem rozpoczyna kompilacje. Jeśli robisz większa aktualizacja jak chociażby KDE, to potrzebuje on, abyś przebywał online przez parę ładnych godzin. Natomiast to polecenie wyskoczy na chwile do Internetu i tylko ściągnie wszystkie pliki których potrzebujesz do aktualizacji portu:

# portupgrade -aFrR

Gdy już zassałeś wszystkie niezbędne pliki, możesz już zerwać połączenie z siecią i tradycyjnie rozpocząć aktualizacje 'portupgrade -arR'. Kolejna dostępna opcja to '-n'. Przełącznik ten pokaże co portupgrade zrobi, ale właściwie bez wykonywania tego tak na prawdę (od tłum. czyli symulacja). Przydatna opcja, gdy jesteś pełen obaw lub masz podejście paranoika i chcesz wiedzieć już zawczasu co się stanie z twoim oprogramowaniem. A o to wyjście z takiej sesji:

# portupgrade -anrR
---> Session started at: Sun, 17 Aug 2003 22:06:00 -0400
...
---> Reporting the results (+:done / -:ignored / *:skipped / !:failed)
- lang/ruby16 (ruby-1.6.8.2003.04.19)
- net/cvsup-without-gui (cvsup-without-gui-16.1h)
+ lang/ruby16-shim-ruby18 (ruby-shim-ruby18-1.8.0.p2.2003.04.19)
+ databases/ruby-bdb1 (ruby-bdb1-0.1.9)
- sysutils/portupgrade (portupgrade-20030723)
- www/lynx (lynx-2.8.4.1d)
---> Session ended at: Sun, 17 Aug 2003 22:06:02 -0400 (consumed 00:00:02)

Przeanalizujmy ten output. Portupgrade przebrnął przez każdy zainstalowany port w systemie a wynik umieścił w raporcie. Każda linia raportu to pochodzenie portu, obecnie zainstalowana wersja i symbol wskazujący czy wymagana jest aktualizacja czy tez nie. W tym powyższym raporcie tylko dwa porty wymagają aktualizacji. Są to te których linie zaczynają się od znaku '+'. Przyrównując ten raport do portversion, wyniki będą podobne, ale przedstawione w inny sposób:

% portversion -l "<"
ruby-bdb1
ruby-shim-ruby18

Jeśli twoją dewiza jest "ostrożności nigdy za wiele" to do gustu może ci przypaść opcja '-i' (ang. interactive (-i)) czyli opcja interakcyjna. Dodając ja do reszty opcji, portupgrade po prostu będzie zatrzymywał się przed każdym uaktualnianym pakietem. To zatrzymanie będzie wyglądało tak:

# portupgrade -ianrR
...
---> Upgrading 'ruby-bdb1-0.1.9' to 'ruby-bdb1-0.2.1'
(databases/ruby/bdb1)
OK? [yes]

Domyślna odpowiedź to yes w nawiasach kwadratowych. To znaczy jeśli klepniesz Enter, to twoja odpowiedz będzie brzmiała [yes] chce, pragnę, musze ;-). Jeśli jednak zdecydujesz nie uaktualniać tego portu, musisz wpisać słowo no.

Ostatnią opcje jaka chce omówić to '-l' (ang. log (-l)) czyli logowanie. Opcja nieoceniona w sytuacji, gdy port odmawia instalacji i wyjście trzeba przesłać do kogoś innego. Tu na przykład uaktualnienie portu i skierowanie dodatkowo wyjścia do pliku o nazwie logfile:

# portupgrade -rR ruby-shim-ruby18 -l logfile

Najprawdopodobniej nie będziesz chciał korzystać z opcji '-l' i '-a' jednocześnie, szczególnie jeśli masz dużo nieaktualnych portów. Nikt nie chce brnąć przez logi aż tak duże!

O autorze

Dru Lavigne jest nauczycielem na Willis College w Ottawie. W swoim "nieistniejącym" wolnym czasie, strzela lub jeździ na rowerze po 'Gatineau Park'.

O tłumaczeniu

Artykuł ukazał się 2003-08-28 na ONLamp.com : BSD Devcenter pod adresem http://www.onlamp.com/pub/a/bsd/2003/08/28/FreeBSD_Basics.html


Tłumaczenie: KaCzY
kaczy(at)xl.wp.pl

Oryginał tego tłumaczenia znajduje się pod adresem
http://www.freebsd.friko.pl/ShowMe.php?txt=Portupgrade

Komentarze:
Re: Narzędzie portupgrade - łatwiejsze z
Dodane przez KaCzY w dniu - 2004-03-01 19:49:36
no widze, ze copy & paste Ci dziala :-)
Re: Narzędzie portupgrade - łatwiejsze z
Dodane przez arti w dniu - 2004-03-01 21:49:25
Hmmm... no i poczułem się głupio ;-)
Re: Narzędzie portupgrade - łatwiejsze z
Dodane przez KaCzY w dniu - 2004-03-02 15:08:06
Wystarczy ze dasz link do oryginalnej lokalizacji tlumaczenia a winny twoje zostana Ci odpuszczone :-).
to chyba z pośpiechu :)
Dodane przez arti w dniu - 2004-03-02 18:30:20
Oooo... na śmierć o tym zapomniałem. Wynikło to chyba z pośpiechu. Przy poprzednuch dwóch artach dodałem i tutaj też miało być. 
Dzięki za zwrócenie uwagi, bo pewnie bym tego nie zauważył ;-)
Re: Narzędzie portupgrade - łatwiejsze z
Dodane przez dgrabkow w dniu - 2005-02-19 20:30:41
Szybko i sprawnie ;-)

Tylko zarejestrowani użytkownicy mogą pisać komentarze.
Prosze zaloguj się i dodaj komentarz.

Powered by AkoComment!

Ostatnio aktualizowany ( piątek, 11 listopada 2005 )

« wstecz   dalej »
Ciekawostki
Jeśli chcesz znaleźć pliki o podanej nazwie, użyj find(1), np.
find / -name "*GENERIC*" -ls
przeszuka cały system w poszukiwaniu plików zawierających w nazwie 'GENERIC'
Pobierz
FreeBSD
OpenBSD
NetBSD
DragonFlyBSD
PC-BSD
FreeSBIE LiveCD
4.4BSD Lite
Domeny
Google

Google


Newsletter
Zapisz się na nasz newsletter, jeżeli chcesz być na bieżąco informowany o aktualnościach..




Licznik odwiedzin
Odwiedziło już nas
3044813
Internautów od lutego 2003

Korzystamy ze statysyk