Reference Osamu Aoki Koordynator tłumaczenia: Bartosz Fe´nskiaka fEnIo ‘Autorzy’ na 203 stronie

CVS, wtorek, 12 sierpie´n2003, 12:07:29 UTC

Streszczenie

Debian Reference (http://qref.sourceforge.net/) z zało˙zeniastanowi´cma podr˛ecznik poinstalacyjny Debiana, b˛ed˛acjednocze´snieszerokim omówieniem tego systemu. Dokument opisuje wiele aspektów administracji, ilustruj ˛acje przykładowymi poleceniami. Zawarte w nim samouczki, porady i inne informacje dotycz ˛atematów takich jak: podstawowe zało˙zenia systemu Debian, wskazówki instalacyjne, zarz ˛adzaniepakietami, j ˛adro Linuksa, dostrajanie systemu, konfiguracja bramy sieciowej, edytory tekstu, CVS, programowanie oraz GnuPG (dla zwykłych u˙zytkowników). Prawa autorskie

Copyright © 2001–2002 by Osamu Aoki . Copyright (Rozdział 2) © 1996–2001 by Software in the Public Interest. Ten dokument mo˙zezosta´cu˙zytyzgodnie z warunkami GNU General Public License w wersji 2 lub wy˙zszej.(http://www.gnu.org/copyleft/gpl.html) Zezwolenie na tworzenie i dystrybucj˛ekopii tego dokumentu zostaje przyznane pod warunk- iem, ˙zezapis o prawie autorskim oraz to zezwolenie zostan ˛aprzechowane na wszystkich kopi- ach. Zezwolenie na kopiowanie i rozpowszechnianie zmodyfikowanych wersji tego dokumentu zostaje przyznane zgodnie z warunkami kopiowania, z zastrze˙zeniem,˙zecała praca jest rozpowszech- niana zgodnie z warunkami zezwolenia identycznego z tutejszym. Zezwolenie na kopiowanie i rozpowszechnianie tłumacze´ntego dokumentu na inny j˛ezyk zostaje przyznane dla wersji zmodyfikowanej zgodnie z powy˙zszymiwarunkami, prócz tego, ˙zeto zezwolenie mo˙zeby´cwł ˛aczonew tłumaczeniu zaakceptowanym przez FSF zamiast wer- sji oryginalnej, w j˛ezykuangielskim. i

Spis tre´sci

1 Wst˛ep 1 1.1 Oficjalny dokument ...... 1 1.2 Konwencje w dokumencie ...... 2 1.3 Przykładowe skrypty ...... 2 1.4 Podstawowe ustawienia ...... 2 1.5 Podstawowe informacje o dystrybucjach Debiana ...... 3

2 Debian – Podstawy 5 2.1 Archiwa Debiana ...... 5 2.1.1 Struktura katalogów ...... 5 2.1.2 Dystrybucje Debiana ...... 6 2.1.3 Dystrybucja stabilna ...... 6 2.1.4 Dystrybucja testowa ...... 7 2.1.5 Dystrybucja niestabilna ...... 7 2.1.6 Dystrybucja frozen (zamro˙zona) ...... 8 2.1.7 Kryptonimy dystrybucji Debiana ...... 8 2.1.8 Kryptonimy u˙zywanew przeszło´sci ...... 9 2.1.9 Zródło´ kryptonimów ...... 9 2.1.10 Katalog pool ...... 9 2.1.11 Nota historyczna o dystrybucji Sid ...... 10 2.1.12 Pakiety umieszczone w incoming/ ...... 10 2.1.13 Odzyskiwanie starszego pakietu ...... 10 2.1.14 Podział na architektury ...... 11 2.1.15 Kod ´zródłowy ...... 11 SPIS TRESCI´ ii

2.2 System zarz ˛adzaniapakietami w Debianie ...... 12 2.2.1 Przegl ˛adpakietów Debiana ...... 12 2.2.2 Format pakietów Debiana ...... 13 2.2.3 Zasady nadawania nazw pakietom Debiana ...... 13 2.2.4 Ochrona lokalnych plików konfiguracyjnych ...... 14 2.2.5 Skrypty instalacyjne i deinstalacyjne ...... 14 2.2.6 Priorytety pakietów ...... 15 2.2.7 Pakiety wirtualne ...... 15 2.2.8 Zale˙zno´scimi˛edzypakietami ...... 16 2.2.9 Znaczenie „pre-depends” ...... 17 2.2.10 Status pakietu ...... 17 2.2.11 Zapobieganie instalacji nowych wersji pakietów ...... 18 2.2.12 Pakiety ´zródłowe ...... 18 2.2.13 Tworzenie pakietów binarnych ze ´zródłowych ...... 19 2.2.14 Tworzenie nowych pakietów Debiana ...... 19 2.3 Aktualizacja systemu Debian ...... 19 2.3.1 Sposoby aktualizacji systemu Debian ...... 20 2.3.2 Przegl ˛adnarz˛edzido zarz ˛adzaniapakietami ...... 20 2.3.3 ...... 20 2.3.4 APT ...... 21 2.3.5 ...... 21 2.3.6 Aktualizacja działaj ˛acegosystemu ...... 21 2.3.7 Pobrane i chwilowo zapisane na dysku pliki . ...... 22 2.3.8 Rejestracja zmian w pakietach ...... 22 2.4 Proces ładowania systemu w Debianie ...... 22 2.4.1 Program init ...... 22 2.4.2 Poziomy startu (Runlevels) ...... 22 2.4.3 Modyfikacje procesu ładowania ...... 23 2.5 Wsparcie dla ró˙znorodno´sci ...... 24 2.6 Internacjonalizacja ...... 24 2.7 Debian i kernel ...... 24 SPIS TRESCI´ iii

2.7.1 Kompilacja j ˛adraze ´zródełinnych, ni˙zdebianowe ...... 25 2.7.2 Narz˛edziado tworzenia j ˛adra ...... 25 2.7.3 Alternatywne programy ładuj ˛acesystem (bootloadery) ...... 26 2.7.4 Dyskietki startowe własnej roboty ...... 26 2.7.5 Specjalne wyposa˙zeniedo obsługi modułów j ˛adra ...... 26 2.7.6 Usuwanie starego pakietu z j ˛adrem ...... 26

3 Wskazówki dotycz ˛aceinstalacji Debiana 27 3.1 Główne wskazówki dotycz ˛aceinstalacji systemu ...... 27 3.1.1 Podstawy zgodno´scisprz˛etowych ...... 27 3.1.2 Okre´slanieinformacji o sprz˛eciei układach płyty głównej...... 28 3.1.3 Okre´slanieinformacji o sprz˛ecieza pomoc ˛aDebiana; ...... 28 3.1.4 Okre´slanieinformacji o sprz˛ecieza pomoc ˛ainnego systemu operacyjnego: 28 3.1.5 Mity o Lilo ...... 29 3.1.6 GRUB ...... 29 3.1.7 Wybór zestawu dyskietek startowych ...... 29 3.1.8 Instalacja ...... 30 3.1.9 Nazwy hostów i adresy IP u˙zywanew sieci LAN ...... 30 3.1.10 Konta u˙zytkowników ...... 31 3.1.11 Tworzenie systemów plików ...... 32 3.1.12 Wytyczne dotycz ˛acepami˛eciDRAM ...... 35 3.1.13 Przestrze´nwymiany ...... 35 3.2 Konfiguracja Bash ...... 35 3.3 Konfiguracja myszy ...... 36 3.3.1 Myszy PS/2 ...... 36 3.3.2 Mysz na USB ...... 38 3.3.3 Touchpad ...... 39 3.4 Konfiguracja NFS ...... 39 3.5 Konfiguracja Samby ...... 39 3.6 Konfiguracja drukarki ...... 40 3.6.1 lpr/lpd ...... 40 SPIS TRESCI´ iv

3.6.2 CUPS™ ...... 41 3.7 Inne wskazówki instalacyjne ...... 42 3.7.1 Doinstaluj jeszcze troch˛epakietów po wst˛epnejinstalacji ...... 42 3.7.2 Moduły ...... 43 3.7.3 Podstawy instalacji CD-RW ...... 43 3.7.4 Automatyczne wył ˛aczaniekomputera oraz komputery z wi˛eksz˛ailo´sci˛a pami˛eci ...... 43 3.7.5 Dziwne kłopoty z dost˛epemdo witryn WWW...... 44 3.7.6 Konfiguracja poł ˛aczeniamodemowego (Dialup PPP) ...... 45 3.7.7 Inne pliki konfiguracyjne do dostrojenia w /etc ...... 45

4 Samouczki Debiana 47 4.1 Zródła´ informacji ...... 47 4.2 Konsola Linuksa ...... 47 4.2.1 Login ...... 47 4.2.2 Dodawanie konta u˙zytkownika ...... 48 4.2.3 Jak zamyka´csystem ...... 48 4.2.4 Edycja w linii polece´n ...... 49 4.2.5 Wykonywanie polece´n ...... 49 4.2.6 Najbardziej podstawowe polecenia do zapami˛etania ...... 49 4.2.7 System X Window ...... 50 4.2.8 Wa˙zneskróty klawiszowe ...... 50 4.3 Midnight Commander (MC) ...... 50 4.3.1 Instalowanie MC ...... 51 4.3.2 Uruchamianie MC ...... 51 4.3.3 Mened˙zerplików ...... 51 4.3.4 Triki linii polece´n ...... 51 4.3.5 Edytor ...... 52 4.3.6 Podgl ˛ad ...... 52 4.3.7 Własno´sciauto-startu ...... 53 4.3.8 Wirtualny system plików FTP ...... 53 4.4 Podstawy systemu plików GNU/Linux ...... 53 SPIS TRESCI´ v

4.4.1 Prawa dost˛epudo plików i katalogów ...... 53 4.4.2 Znaczniki czasu ...... 55 4.4.3 Dowi ˛azania() ...... 56 4.5 Dalsza nauka ...... 56

5 Uaktualnianie dystrybucji do wersji testowej 57 5.1 Przej´sciedo APT z Woodiego ...... 57 5.2 Przygotowanie do przej´scia(z wersji stabilnej na testow ˛a) ...... 58 5.3 Aktualizacja systemu ...... 59 5.3.1 Najlepiej do aktualizacji jest u˙zy´cprogramu dselect ...... 59 5.3.2 Niezalecany sposób aktualizacji przy u˙zyciu -get ...... 59

6 Zarz ˛adzaniepakietami Debiana 61 6.1 Wprowadzenie ...... 61 6.1.1 Podstawowe narz˛edzia ...... 61 6.1.2 Wygodne narz˛edzia ...... 62 6.2 Podstawy zarz ˛adzaniapakietami Debiana ...... 62 6.2.1 Instalowanie zada´n programem tasksel lub ...... 62 6.2.2 Konfiguracja systemu APT ...... 63 6.2.3 dselect ...... 63 6.2.4 aptitude ...... 64 6.2.5 Polecenia apt-cache i apt-get ...... 64 6.2.6 Pod ˛a˙zanieza smakiem dystrybucji Debian ...... 66 6.2.7 Obni˙zeniewersji wszystkich pakietów do stable ...... 66 6.2.8 Przegl ˛adpliku /etc/apt/preferences ...... 66 6.3 Polecenia zapewniaj ˛aceprzetrwanie w Debianie ...... 67 6.3.1 Sprawdzanie bł˛edóww Debianie i poszukiwanie pomocy ...... 67 6.3.2 Problemy przy aktualizacji APT ...... 68 6.3.3 Ratowanie przy u˙zyciu dpkg ...... 69 6.3.4 Przywracanie danych wyboru pakietów ...... 70 6.3.5 Przywracanie systemu po awarii /var ...... 70 6.3.6 Instalowanie pakietu w niestartuj ˛acymsystemie ...... 70 SPIS TRESCI´ vi

6.3.7 Co robi´c,gdy polecenie dpkg nie działa? ...... 71 6.4 Polecenia prowadz ˛acedo nirwany w Debianie ...... 71 6.4.1 Informacje o pliku ...... 72 6.4.2 Informacje o pakiecie ...... 72 6.4.3 Niepilnowana instalacja przy u˙zyciuAPT ...... 73 6.4.4 Ponowna konfiguracja zainstalowanych pakietów ...... 73 6.4.5 Usuwanie i czyszczenie pakietów ...... 74 6.4.6 Wstrzymywanie starszych pakietów ...... 74 6.4.7 Mieszany system - stable/testing/unstable ...... 75 6.4.8 Wyczy´s´cbuforowane pliki pakietów ...... 75 6.4.9 Zapisanie/kopiowanie konfiguracji systemu ...... 75 6.4.10 Przeniesienie pakietu do systemu stabilnego ...... 75 6.4.11 Lokalne archiwum pakietów ...... 76 6.4.12 Zmiana lub instalacja obcego pakietu binarnego ...... 77 6.4.13 Sprawdzanie poprawno´scizainstalowanych plików ...... 78 6.4.14 Zoptymalizowane sources.list ...... 78 6.5 Inne osobliwo´sciDebiana ...... 78 6.5.1 Polecenie dpkg-divert ...... 78 6.5.2 Pakiet equivs ...... 79 6.5.3 Alternatywne polecenia ...... 79 6.5.4 System-V init i poziomy startu (runlevels) ...... 79 6.5.5 Wył ˛aczoneusługi demonów ...... 80

7 J ˛adrosystemu Linux w Debianie 81 7.1 Kompilacja j ˛adra ...... 81 7.1.1 Standardowa metoda Debiana ...... 81 7.1.2 Metoda klasyczna ...... 82 7.1.3 Pliki nagłówkowe j ˛adra ...... 83 7.2 Zmodularyzowane j ˛adro 2.4 ...... 83 7.2.1 PCMCIA ...... 83 7.2.2 SCSI ...... 84 SPIS TRESCI´ vii

7.2.3 Obsługa sieci ...... 84 7.2.4 System plików EXT3 ( > 2.4.17) ...... 85 7.2.5 Wsparcie układu Realtek RTL-8139 w j ˛adrze2.4 ...... 87 7.2.6 Wsparcie dla portów równoległych ...... 87 7.3 Dostrajanie j ˛adraprzy pomocy systemu plików proc ...... 87 7.3.1 Za du˙zootwartych plików ...... 87 7.3.2 Przedziały czasu mi˛edzyoperacjami dyskowymi ...... 87 7.3.3 Stare, powolne maszyny z mał ˛ailo´sci˛apami˛eci ...... 88

8 Debianowe porady 89 8.1 Uruchamianie systemu ...... 89 8.1.1 „Zapomniałem hasła roota!” (1) ...... 89 8.1.2 „Zapomniałem hasła roota!” (2) ...... 90 8.1.3 System si˛enie uruchamia ...... 90 8.1.4 Jak wył ˛aczy´cautomatyczne uruchamianie Xów przy starcie?! ...... 91 8.1.5 Inne triki stosowane podczas startu systemu ...... 92 8.1.6 Ustawianie parametrów uruchomieniowych GRUB ...... 92 8.2 Rejestrowanie działa´n ...... 93 8.2.1 Rejestrowanie polece´npowłoki ...... 93 8.2.2 Rejestrowanie obrazu w Xach...... 94 8.3 Kopiowanie oraz archiwizacja całych katalogów ...... 94 8.3.1 Podstawowe polecenia do kopiowania całych podkatalogów ...... 94 8.3.2 cp ...... 94 8.3.3 tar ...... 95 8.3.4 pax ...... 95 8.3.5 cpio ...... 95 8.3.6 afio ...... 95 8.4 Kopia ró˙znicowaoraz synchronizacja danych ...... 96 8.4.1 Kopia ró˙znicowaz u˙zyciemrdiff ...... 96 8.4.2 Codzienna kopia z u˙zyciem pdumpfs ...... 97 8.4.3 Regularne kopie ró˙znicowewykonywane z u˙zyciemRCS ...... 97 SPIS TRESCI´ viii

8.5 Przywracanie po zawieszeniu systemu ...... 97 8.5.1 Usuwanie procesów ...... 97 8.5.2 Alt-SysRq ...... 98 8.6 Warte zapami˛etaniapolecenia ...... 98 8.6.1 Przegl ˛adarkatre´scitekstowych ...... 98 8.6.2 Wolna pami˛e´c ...... 98 8.6.3 Ustawianie czasu (BIOS) ...... 99 8.6.4 Ustawianie czasu (NTP) ...... 99 8.6.5 Jak wył ˛aczy´cwygaszacz ekranu ...... 100 8.6.6 Przeszukiwanie administracyjnych baz danych ...... 100 8.6.7 Wył ˛aczeniad´zwi˛eków(brz˛eczyk) ...... 100 8.6.8 Komunikaty o bł˛edachna ekranie konsoli ...... 100 8.6.9 Ustawienie wła´sciwegotypu konsoli ...... 101 8.6.10 Przywracanie konsoli do rozs ˛adnegostanu ...... 101 8.6.11 Konwersja plików ze stylu dosowego na uniksowy ...... 101 8.6.12 Zast˛epowanieprzy pomocy wyra˙ze´nregularnych ...... 102 8.6.13 Edytowanie plików przez skrypt ...... 102 8.6.14 Odnajdywanie ró˙znici scalanie uaktualnie´nw pliku ´zródłowym ..... 102 8.6.15 Przekształcanie du˙zegopliku w kilka małych ...... 103 8.6.16 Wyłuskiwanie danych z tekstowych tabel ...... 103 8.6.17 Kawałki kodu przekierowywania polece´n ...... 103 8.6.18 Szale´nstwokrótkich skryptów Perla ...... 104 8.6.19 Pobieranie tekstu oraz archiwów list dyskusyjnych ze stron WWW .... 104 8.6.20 Estetyczne wydruki stron WWW ...... 105 8.6.21 Estetyczne wydruki stron podr˛ecznikasystemowego ...... 105 8.6.22 Ł ˛aczeniedwóch plików w formacie PostScript lub PDF ...... 105 8.6.23 Czas trwania ...... 105 8.6.24 Polecenie nice ...... 106 8.6.25 Harmonogram działa´n(cron, at) ...... 106 8.6.26 Zmiana konsoli przy pomocy screena ...... 107 8.6.27 Podstawy testowania sieci ...... 108 SPIS TRESCI´ ix

8.6.28 Wypychanie przesyłek z lokalnej kolejki ...... 109 8.6.29 Usuwanie zamro˙zonychprzesyłek z lokalnej kolejki ...... 109 8.6.30 Ponownie dostarczanie zawarto´scimboksa ...... 109 8.6.31 Usuwanie zawarto´sciplików ...... 109 8.6.32 Sztuczne pliki ...... 110 8.6.33 chroot ...... 110 8.6.34 Jak weryfikowa´cdowi ˛azania(hardlink) ...... 112 8.6.35 Montowanie obrazów systemów plików ...... 112 8.6.36 Samba ...... 112 8.6.37 Narz˛edziado obsługi obcych systemów plików ...... 113

9 Dostrajanie systemu Debian 115 9.1 Wskazówki dotycz ˛aceinicjalizacji systemu...... 115 9.1.1 Dostosowywanie skryptów startowych do własnych potrzeb...... 115 9.1.2 Logowanie komunikatów systemowych ...... 115 9.1.3 Optymalizacja ustawie´nsprz˛etowych ...... 116 9.2 Kontrola dost˛epu ...... 117 9.2.1 Kontrola dost˛epupoprzez PAM oraz login ...... 117 9.2.2 „Dlaczego GNU su nie obsługuje grupy wheel” ...... 118 9.2.3 Znaczenie ró˙znychgrup ...... 118 9.2.4 sudo – bezpieczniejsze ´srodowisko pracy ...... 119 9.2.5 Kontrola dost˛epudo demonów ...... 119 9.2.6 Lightweight Directory Access Protocol ...... 120 9.3 Nagrywarki CD ...... 120 9.3.1 Wst˛ep ...... 121 9.3.2 Sposób 1: moduły j ˛adra+ lilo ...... 121 9.3.3 Sposób 2: ponowna kompilacja j ˛adra ...... 121 9.3.4 Czynno´scipo konfiguracji ...... 122 9.3.5 Obrazy startowe płyt CD ...... 122 9.3.6 Wypalanie płyty (R, RW): ...... 123 9.3.7 Wykonanie obrazu z posiadanej płyty CD ...... 124 SPIS TRESCI´ x

9.3.8 Obrazy Debian CD ...... 124 9.3.9 Wykonywanie kopii systemu na płytach CD-R ...... 125 9.3.10 Kopiowanie CD z muzyk ˛a ...... 125 9.4 X Window System ...... 125 9.4.1 Pakiety zwi ˛azanez X system ...... 126 9.4.2 Pakiety ułatwiaj ˛acewykrywanie sprz˛etudla X Window ...... 127 9.4.3 X serwer ...... 127 9.4.4 Klient X ...... 129 9.4.5 X session ...... 130 9.4.6 Poł ˛aczenieTCP/IP z X ...... 133 9.4.7 Zdalne poł ˛aczeniez X: xhost ...... 134 9.4.8 Zdalne poł ˛aczeniez X: ssh ...... 134 9.4.9 xterm ...... 135 9.4.10 Baza danych zasobów X ...... 135 9.4.11 Uprawnienia administratora w X ...... 135 9.4.12 Czcionki TrueType dla X ...... 137 9.4.13 Przegl ˛adarkaWWW (graficzna) ...... 137 9.5 SSH ...... 138 9.5.1 Podstawy...... 138 9.5.2 Przekierowywanie portów – tunelowanie dla SMTP/POP3 ...... 140 9.5.3 Poł ˛aczeniaz mniejsz ˛ailo´sci˛ahaseł ...... 140 9.5.4 Inne klienty SSH ...... 141 9.5.5 SSH agent ...... 141 9.5.6 Problemy ...... 141 9.6 Programy pocztowe ...... 142 9.6.1 Mail transport agent (MTA) ...... 142 9.6.2 Fetchmail ...... 144 9.6.3 Procmail ...... 144 9.6.4 Mutt ...... 145 9.7 Lokalizacja i obsługa obcych j˛ezyków...... 145 9.7.1 Podstawy ...... 145 SPIS TRESCI´ xi

9.7.2 Locales ...... 146 9.7.3 Aktywacja wsparcia locale ...... 147 9.7.4 Uaktywnienie okre´slonegolocale...... 147 9.7.5 Format daty ISO 8601 ...... 148 9.7.6 Przykład dla US (ISO-8859-2) ...... 148 9.7.7 Przykład dla Francji, z walut ˛aEuro (ISO-8859-15) ...... 148 9.7.8 Przykład systemu dwuj˛ezycznego(japo´nskiEUC i ISO-8859-1) ...... 149 9.7.9 Przykład UTF-8 w X ...... 151 9.7.10 Przykład UTF-8 w terminalu framebuffer ...... 151 9.7.11 Poza locale ...... 151

10 Tworzenie bramy sieciowej z systemem Debian 153 10.1 Konfiguracja sieci ...... 153 10.1.1 Konfiguracja stacji sieciowej przeznaczonej na bram˛e ...... 153 10.1.2 Lista „do zrobienia” konfiguracji sieci ...... 154 10.2 Konfiguracja Netfilter ...... 155 10.2.1 Netfilter - podstawy ...... 155 10.2.2 Tablice Netfilter ...... 155 10.2.3 Cele Netfilter ...... 156 10.2.4 Polecenia Netfiltera ...... 156 10.2.5 Maskarada IP ...... 157 10.2.6 Przekierowanie poł ˛acze´nSMTP (2.4) ...... 157 10.3 Zarz ˛adzaniewieloma poł ˛aczeniamiz sieci ˛a ...... 158

11 Edytory 159 11.1 Popularne edytory ...... 159 11.2 Edytory awaryjne ...... 160 11.3 Emacs i Vim ...... 160 11.3.1 Wskazówki do Vima ...... 160 11.3.2 Wskazówki do Emacsa ...... 160 11.3.3 Uruchamianie edytora ...... 161 11.3.4 Podsumowanie polece´nedytorów (Emacs, Vim) ...... 161 SPIS TRESCI´ xii

11.3.5 Konfiguracja Vima ...... 163 11.3.6 Ctags ...... 163 11.3.7 Konwersja ekranu z pod´swietlaniemskładni do kodu HTML ...... 164 11.3.8 Rozdzielanie ekranu w vimie ...... 164

12 Systemy kontroli wersji 165 12.1 CVS ...... 165 12.1.1 Instalacja serwera CVS ...... 165 12.1.2 Przykładowe sesje CVS ...... 165 12.1.3 Rozwi ˛azywanieproblemów z CVS ...... 169 12.1.4 Polecenia CVS ...... 169 12.2 Subversion ...... 170 12.2.1 Instalacja serwera Subversion ...... 170 12.2.2 Przenoszenie repozytorium CVS do Subversion ...... 171 12.2.3 Przykłady u˙zyciaSubversion ...... 171

13 Programowanie 173 13.1 Gdzie zacz ˛a´c? ...... 173 13.2 Powłoka ...... 173 13.2.1 Bash – interaktywna powłoka zgodna z GNU ...... 173 13.2.2 Powłoki zgodne z POSIX ...... 174 13.2.3 Parametry powłoki ...... 175 13.2.4 Przekierowywanie powłoki ...... 175 13.2.5 Polecenia warunkowe powłoki ...... 176 13.2.6 Przetwarzanie linii polece´n ...... 177 13.3 Awk ...... 177 13.4 Perl ...... 179 13.5 Python ...... 179 13.6 Make ...... 181 13.7 C ...... 182 13.7.1 Prosty program w C (gcc) ...... 183 13.7.2 Odpluskwianie ...... 183 SPIS TRESCI´ xiii

13.7.3 Flex – lepszy Lex ...... 185 13.7.4 Bison – lepszy Yacc ...... 185 13.7.5 Autoconf ...... 186 13.8 Przygotowanie dokumentu ...... 186 13.8.1 Skład tekstu roff ...... 186 13.8.2 SGML ...... 187 13.9 Pakietowanie ...... 188 13.9.1 Pakietowanie pojedy´nczegopliku binarnego ...... 189 13.9.2 Pakietowanie z u˙zyciemnarz˛edzi ...... 189

14 GnuPG 191 14.1 Instalacja GnuPG ...... 191 14.2 U˙zywanieGnuPG ...... 192 14.3 Utrzymywanie GnuPG ...... 192 14.4 U˙zywanieGnuPG z innymi programami ...... 193 14.4.1 U˙zywanieGnuPG z Muttem ...... 193 14.4.2 U˙zywanieGnuPG z Vimem ...... 193

15 Rozwi ˛azywanieproblemów 195 15.1 Zasoby ...... 195 15.2 Znajdowanie znaczenia słowa ...... 199 15.3 Sprawdzanie popularno´scipakietu Debiana ...... 199 15.4 System ´sledzeniabł˛edówDebiana ...... 199 15.5 Listy dyskusyjne ...... 199 15.6 Internet Relay Chat (IRC) ...... 200 15.7 Wyszukiwarki ...... 200 15.8 Strony w sieci ...... 201

A Dodatek 203 A.1 Autorzy ...... 203 A.2 Gwarancje ...... 205 A.3 Pomoc ...... 205 SPIS TRESCI´ xiv

A.4 Format dokumentu ...... 206 A.5 Labirynt Debiana ...... 206 A.6 Cytaty o Debianie ...... 207 1

Rozdział 1

Wst˛ep

Celem Debian Reference (http://qref.sourceforge.net/) jest dostarczenie szerokiego przegl ˛adusystemu Debian w postaci instrukcji poinstalacyjnej. Docelowym czytelnikiem jest osoba, która jest skłonna do czytania skryptów powłoki systemowej (ang. shell). Oczekuj˛eod czytelnika posiadania podstawowych umiej˛etno´sciporuszania si˛ew systemach uniksopodob- nych. Podj ˛ałem´swiadom˛adecyzj˛e nie wyja´sniania wszystkiego w szczegółach, je´slis ˛aone do odnalezienia na stronach podr˛ecznikasystemowego, stronach systemu pomocy info lub w dokumentach Jak to zrobi´c (HOWTO). Zamiast szczegółowych wyja´snie´n,starałem si˛eraczej udzieli´cprak- tycznych porad dostarczaj ˛ac dokładnych zestawów polece ´n w głównym tek´scielub umieszc- zonych w katalogu examples/ plikach z przykładami. Musisz zrozumie´czawarto´s´cprzykładów zanim wykorzystasz je w prawdziwym systemie. Musisz równie˙zpami˛eta´c,˙zew Twoim sys- temie mog ˛awyst˛epowa´cniewielkie ró˙znicew tych poleceniach. Wiele zamieszczonych informacji składa si˛ez przypomnie´nlub odsyłaczy do pozycji z listy ‘Zasoby’ na 195 stronie. Jest to cz˛e´sciowospowodowane tym, ˙zeten dokument to krótkie wprowadzenie. Krótkie i proste (KISS=Keep it short and simple) to moja główna zasada. W sytuacji zagro˙zeniadla systemu, po pomoc udaj si˛enatychmiast do rozdziału ‘Polecenia zapewniaj ˛aceprzetrwanie w Debianie’ na 67 stronie.

1.1 Oficjalny dokument

Najnowszy oficjalny dokument znajduje si˛ew archiwum Debiana, w pakiecie debian-reference oraz pod adresem http://www.debian.org/doc/manuals/debian-reference/. Natomiast najnowsz ˛awersj˛erozwojow ˛amo˙zeszznale´z´cpod adresem http://qref.sourceforge. net/Debian/. Strona domowa projektu to http://qref.sourceforge.net/. Mo˙zesz tam znale´z´cten dokument w wersji tekstowej, HTML, PDF, SGML oraz PostScript. Rozdział 1. Wst˛ep 2

1.2 Konwencje w dokumencie

Dokument o nazwie: „Debian Reference” zawiera informacje przedstawione w postaci krót- kich polece´npowłoki systemowej Bash. U˙zytonast˛epuj˛acychkonwencji:

# polecenie wykonane z konta administratora $ polecenie wykonane z konta u˙zytkownika

Je´slichcesz dowiedzie´csi˛ewi˛ecejo powłoce systemowej Bash, zerknij do ‘Bash – interaktywna powłoka zgodna z GNU’ na 173 stronie. Odsyłam równie˙zdo: • Podr˛ecznikasystemowego: bash(1). • strony GNU TEXINFO: info libc. • ksi ˛a˙zki: The C Programming Language. • strony: http://www.debian.org/doc/manuals/debian-reference/. • dost˛epnegow systemie pliku: /usr/share/doc/Debian/reference/. W dokumencie u˙zywanes ˛askróty LDP, DDP i oznaczaj ˛a: • LDP: Linux Documentation Project (Projekt Dokumentacji Linuksa) (http://www.tldp. org/) • DDP: Debian Documentation Project (Projekt Dokumentacji Debiana) (http://www. debian.org/doc/) Przedstawiono tutaj tylko odwołania do LDP w postaci odsyłaczy URL, ale mog ˛aby´cone pozyskane jako pakiet i zainstalowane do /usr/share/doc/HOWTO/. Zobacz tak˙ze‘Zasoby’ na 195 stronie.

1.3 Przykładowe skrypty

Przykładowe skrypty s ˛adost˛epnew podkatalogach z przykładami (examples/) zainstalowanych w /usr/share/doc/Debian/reference/; pocz ˛atkowyznak dla ukrytych plików to : „.”. W nazwach plików został on przerobiony na podkre´slenie:„_”. Dodatkowe rozszerzenia s ˛a dodawane w przypadku kilku alternatywnych wersji skryptów.

1.4 Podstawowe ustawienia

Je´slisystem został zainstalowany z minimalnym zestawem pakietów, upewnij si˛e, ˙zewyko- nane zostało polecenie:

# apt-get install info man-db doc-base dhelp apt apt-utils auto-apt \ dpkg less mc ssh nano-tiny elvis-tiny vim sash \ kernel-package \ Rozdział 1. Wst˛ep 3

manpages manpages-dev doc-debian doc-linux-text \ debian-policy developers-reference maint-guide \ apt-howto harden-doc install-doc \ libpam-doc glibc-doc samba-doc exim-doc cvsbook \ gnupg-doc # apt-get install debian-reference # w przypadku Sarge, wykonaj tak˙zeto :) instaluj ˛acegłówne pakiety i kilka kluczowych dokumentów.

1.5 Podstawowe informacje o dystrybucjach Debiana

Debian wyst˛epujew 3 „smakach”:

• stabilny (stable): Dobry do u˙zywaniana serwerze produkcyjnym. Nudny w przy- padku stacji roboczej (SR). Zobacz ‘Dystrybucja stabilna’ na 6 stronie.

• testowy (testing): Niezłe wyj´sciena stacj˛erobocz ˛a.Zobacz ‘Dystrybucja testowa’ na 7 stronie.

• niestabilny (unstable): Nigdy nie wykorzystuj go „na ´slepo”. Zobacz ‘Dystrybucja niestabilna’ na 7 stronie.

Zasubskrybuj przynajmniej kluczow ˛alist˛e [email protected] informuj ˛ac˛ao uaktualnieniach Debiana. W marcu 2002 roku te trzy wersje odpowiadały kodowym nazwom: Potato (jako´s´cproduk- cyjna), Woody (testy, bardzo stabilna, gdy˙znadchodziło kolejne wydanie) oraz Sid (testy alfa). W sierpniu 2002, ju˙zpo wydaniu wersji Woody, odpowiednie wersje (stabilna, testowa, ni- estabilna) oznaczaj ˛a:Woody (jako´s´cprodukcyjna), Sarge (testy, b˛edziew takim stanie jeszcze przez jaki´sczas) oraz Sid (jak zwykle testy alfa). Gdy pakiety z wersji niestabilnej nie maj ˛a zgłoszonych ˙zadnychkrytycznych bł˛edów(RC) po tygodniu, s ˛aautomatycznie przenoszone do wersji testowej. Zobacz: ‘Archiwa Debiana’ na 5 stronie. S ˛adwa sposoby na u˙zywanienajnowszych wersji oprogramowania. • ‘Podstawy zarz ˛adzaniapakietami Debiana’ na 62 stronie (głównie na stacje robocze) • ‘Przeniesienie pakietu do systemu stabilnego’ na 75 stronie (głównie na serwery) U˙zywaniewersji testowej Debiana niesie ze sob ˛azagro˙zeniew postaci wolnego pojawiania si˛euaktualnie´nzwi ˛azanychz bezpiecze´nstwem.Zachowaj wi˛ecostro˙zno´s´c. Je´slimieszasz smaki Debiana, u˙zywaj˛accz˛e´sci testowej lub niestabilnej w wydaniu stabilnym, mo˙zesznieumy´slnie zainstalowa´ckluczowe pakiety w wersji, która mo˙zezaw- iera´cbł˛edy. Równie˙zzachowaj ostro˙zno´s´c. U˙zywanie testowych lub niestabilnych wersji poci ˛agaza sob ˛azwi˛ekszoneryzyko natkni˛e- cia si˛ena istotny bł ˛ad.Nad ryzykiem tym mo˙znazapanowa´cinstaluj ˛acdodatkowo wersj˛e Rozdział 1. Wst˛ep 4

stabiln ˛alub korzystaj ˛acz programu „chroot” (opisano to w ‘chroot’ na 110 stronie. Ostatni sposób umo˙zliwiauruchamianie ró˙znychsmaków równocze´snie,na ró˙znychkonsolach. Po wyja´snieniukilku elementarnych sposobów dystrybucji Debiana w ‘Debian – Podstawy’ na s ˛asiedniejstronie, zaprezentuj˛ekilka podstawowych informacji ułatwiaj ˛acychposługiwanie si˛enajnowszym oprogramowaniem oraz wykorzystywanie wersji testowej i niestabilnej. Niecierpliwi powinni natychmiast zajrze´cdo ‘Polecenia zapewniaj ˛aceprzetrwanie w Debianie’ na 67 stronie. Miłego uaktualniania! 5

Rozdział 2

Debian – Podstawy

Ten rozdział dostarcza podstawowych informacji o systemie Debian dla osób nie b˛ed˛acych deweloperami. Sprawdzone i oficjalne wiadomo´scinale˙zyczerpa´cz: • Debian Policy Manual • Debian Packaging Manual (Potato) • Debian Developer’s Reference • Debian New Maintainers’ Guide wymienionych w ‘Zasoby’ na 195 stronie. Je˙zeliszukasz mniej szczegółowych „jak-to-zrobi´c”(„how-to”), przejd´zbezpo´srednio do ‘Zarz ˛adzanie pakietami Debiana’ na 61 stronie lub innych zasobów. Niniejszy rozdział zawiera dokumenty wzi˛etez „Debian FAQ”, poddane gruntownej reorga- nizacji dla ułatwienia startu pocz ˛atkuj˛acemuadministratorowi systemu Debian.

2.1 Archiwa Debiana

2.1.1 Struktura katalogów

Pakiety z oprogramowaniem systemu Debian dost˛epnes ˛apoprzez FTP lub HTTP z katalogów znajduj ˛acychsi˛ena serwerze lustrzanym Debiana (http://www.debian.org/misc/README. mirrors). Na ka˙zdymz takich serwerów w katalogu /debian mo˙znaznale´z´cnast˛epuj˛acepodkatalogi:

/dists/: Ten katalog zawiera „dystrybucje”, a niegdy´sbył to kanoniczny sposób uzyskiwa- nia dost˛epudo aktualnych pakietów w stabilnych i niestabilnych wydaniach Debiana. Wci ˛a˙zmo˙znatam znale´z´ctroch˛estarych pakietów i pliki Packages.gz.

/pool/: Nowe miejsce umieszczenia pakietów nale˙z˛acychdo wszystkich ko´ncowychi testowych wyda´nDebiana. Rozdział 2. Debian – Podstawy 6

/tools/: DOSowe programy u˙zytkowe,umo˙zliwiaj˛acetworzenie dyskietek startowych, par- tycjonowanie dysków, kompresj˛ei dekompresj˛eplików oraz uruchomienie Linuksa.

/doc/: Podstawowa dokumentacja Debiana, np. FAQ, instrukcje dotycz ˛acezgłaszania bł˛edów, itp.

/indices/: Pliki Maintainers i override.

/project/: przewa˙zniemateriały dla deweloperów takie, jak:

project/experimental/: Pakiety i narz˛edzia,które jeszcze nie zostały uko´nczonei znajduj ˛asi˛ew fazie alfa. Nie nale˙zyich u˙zywa´cponiewa˙zmog ˛asi˛eokaza´cniebez- pieczne i szkodliwe nawet dla najbardziej do´swiadczonych. project/orphaned/: Pakiety osierocone przez dotychczasowych opiekunów i wykre´slone z dystrybucji.

2.1.2 Dystrybucje Debiana

W katalogu dists normalnie znajduj ˛asi˛einformacje o trzech dystrybucjach Debiana. Kata- logi z nimi (i same dystrybucje) nosz ˛anazwy stable (dystrybucja stabilna), testing (dys- trybucja testowa) i unstable (dystrybucja niestabilna). Czasami te˙zwyst˛epujetam dystry- bucja frozen („zamro˙zona”).Katalog ka˙zdejdystrybucji stanowi symboliczne dowi ˛azaniedo rzeczywistego katalogu o odpowiednim kryptonimie w katalogu dists.

2.1.3 Dystrybucja stabilna

Dane pakietów nale˙z˛acychdo dystrybucji stabilnej, Debian Woody (3.0r0), s ˛azapisywane do katalogu stable (dowi ˛azaniesymboliczne do Woody/):

• stable/main/: Ten katalog zawiera pakiety oficjalnie uznawane za najbardziej aktu- alne wydanie systemu Debian. Wszystkie z tych pakietów s ˛azgodne z Debian Guidelines (http://www. debian.org/social_contract#guidelines) (DFSG, dokument dost˛epnyrównie˙z jako /usr/share/doc/debian/social-contract.txt po zainstalowaniu pakietu debian-doc) i mo˙znaich swobodnie u˙zywa´c,a tak˙zerozpowszechnia´c.

• stable/non-free/: Ten katalog zawiera informacje o pakietach, których rozpowszech- nianie zostało ograniczone przez wymagania stawiane dystrybutorowi, które mówi ˛ao zwróceniu szczególnej uwagi, na kwestie praw autorskich danego programu. Na przykład, licencje niektórych pakietów zabraniaj ˛akomercyjnego rozpowszechniania. Inne znowu˙zmog ˛aby´credystrybuowane, ale stanowi ˛ashareware, a nie wolne opro- gramowanie. Zanim wł ˛aczysi˛ektórykolwiek z tych pakietów do jakiej´sredystrybucji (np. na CD-ROMie), nale˙zyprzestudiowa´cjego licencj˛ei prawdopodobnie przeprowadzi´c odpowiednie negocjacje. Rozdział 2. Debian – Podstawy 7

• stable/contrib/: Ten katalog zawiera informacje o pakietach wolnych w rozumieniu DFSG (Debian Free Software Guidelines) i podlegaj ˛acych swobodnemu rozpowszechni- aniu, ale w jaki´ssposób zale˙znychod pakietu, który swobodnemu rozpowszechnianiu nie podlega i z tej przyczyny jest dost˛epnyw sekcji non-free.

Wy˙zejwymienione katalogi zawieraj ˛ainformacje o pakietach. Same pakiety za´smieszcz ˛asi˛e w katalogu pool (‘Katalog pool’ na 9 stronie). Aktualny stan bł˛edóww dystrybucji stabilnej podaje strona WWW Problemy ze stabiln ˛a dystrybucj ˛a(http://ftp-master.debian.org/testing/stable_probs.html) (po ang- ielsku) .

2.1.4 Dystrybucja testowa

Informacja o pakietach zawartych w dystrybucji testowej, czyli Debian Sarge, jest zapisy- wana w katalogu testing (dowi ˛azaniesymboliczne do Sarge/) po tym, jak przejd ˛atestowanie wst˛epnew dystrybucji niestabilnej. Pakiety, których dotycz ˛ainformacje zapisane w kat- alogu testing, s ˛aumieszczane w katalogu pool (‘Katalog pool’ na 9 stronie). Oczywi´scie, w katalogu testing istniej ˛arównie˙zpodkatalogi main, contrib oraz non-free, pełni ˛ace takie same funkcje, jak ich odpowiedniki w stable. Pakiety w dystrybucji testowej musz ˛adziała´cna wszystkich architekturach, na których zostan ˛azbudowane i nie mog ˛aposiada´czale˙zno´sciuniemo˙zliwiaj˛acychinstalacj˛e;musz ˛amie´c równie˙zmniej bł˛edówo priorytecie release-critical (o znaczeniu krytycznym dla wydania), ni˙zwersje znajduj ˛acesi˛ew unstable. W ten sposób mo˙znamie´cnadziej˛e, ˙zedystrybucja testowa zawsze jest dystrybucj ˛ablisk ˛awydania. Wi˛ecejinformacji o mechanizmach testowa- nia znajduje si˛ena http://ftp-master.debian.org/testing/ (po angielsku). Naj´swie˙zszeinformacje o stanie dystrybucji testowej zawieraj ˛anast˛epuj˛acestrony WWW: • update excuses (wymówki aktualizacyjne) (http://ftp-master.debian.org/testing/ update_excuses.html) • testing problems (problemy w dystrybucji testowej) (http://ftp-master.debian. org/testing/testing_probs.html) • release-critical bugs (bł˛edyo znaczeniu krytycznym dla wydania) (http://bugs.debian. org/release-critical/) • base system bugs (bł˛edyw systemie podstawowym) (http://bugs.qa.debian.org/ cgi-bin/base.cgi) • bugs in standard and task packages (bł˛edyw pakietach kategorii standard i task) (http: //bugs.qa.debian.org/cgi-bin/standard.cgi) • other bugs and bug-squashing party notes (inne bł˛edyi uwagi z sesji t˛epieniapluskiew) (http://bugs.qa.debian.org/)

2.1.5 Dystrybucja niestabilna

Informacje o pakietach wchodz ˛acychw skład dystrybucji niestabilnej, zawsze nazywanej „Sid”, s ˛azapisywane do katalogu unstable (dowi ˛azaniesymboliczne do sid/) po umieszcze- Rozdział 2. Debian – Podstawy 8

niu tych pakietów w archiwum Debiana i pozostaj ˛atu, a˙zzostan ˛aprzeniesione do testing /. Odpowiadaj ˛acewpisom pakiety umieszcza si˛ew katalogu pool (‘Katalog pool’ na s ˛asied- niej stronie). Równie˙zistniej ˛atu podkatalogi main, contrib i non-free, spełniaj ˛acete same zadania, co w katalogu stable/. Dystrybucja niestabilna jest obrazem systemu w najnowszym stadium jego rozwoju. Nic nie stoi na przeszkodzie w u˙zywaniui testowaniu tych pakietów, trzeba jednak uwa˙za´c,bo mog ˛aby´cjeszcze nie w pełni dopracowane. Zalet ˛akorzystania z dystrybucji niestabilnej jest to, ˙zejest si˛ezawsze „na czasie” ze wszystkimi nowinkami w projekcie Debian, ale je˙zeli co´snawali, to licz na siebie, a nie na pomoc. Na stronie WWW Problemy z dystrybucj ˛aniestabiln ˛a(http://ftp-master.debian.org/ testing/unstable_probs.html) (po angielsku) mo˙znasi˛ezapozna´cz aktualnym stanem bł˛edóww dystrybucji niestabilnej.

2.1.6 Dystrybucja frozen (zamro˙zona)

Gdy dystrybucja testowa osi ˛agniewystarczaj ˛ac˛adojrzało´s´c,zostaje zamro˙zona,co oznacza, ˙zenie przyjmuje si˛edo niej ju˙z˙zadnegonowego oprogramowania z wyj ˛atkiemkoniecznych poprawek (bugfixes). W katalogu dists/ tworzy si˛enowy podkatalog dla dystrybucji test- ing, dowi ˛azanydo nowego kryptonimu. Dystrybucja zamro˙zonaprzechodzi przez kilku- miesi˛ecznyokres próbny składaj ˛acysi˛ena przemian z aktualizacji i z okresów gł˛ebokiego zamro˙zenianazywanych „cyklami testowymi”. (Ostatnio proces wydania dystrybucji woody nie utworzył dowi ˛azaniasymbolicznego frozen/, wi˛ec frozen nie było dystrybucj ˛a,a tylko etapem rozwoju dystrybucji testowej). Utrzymujemy rejestr bł˛edóww dystrybucji zamro˙zonej,które mog ˛aopó´zni´cwydanie pakietu lub doprowadzi´cdo wstrzymania wydania całej dystrybucji. Gdy liczba bł˛edówspadnie do maksymalnie akceptowalnej warto´sci,dystrybucja zamro˙zonastaje si˛edystrybucj ˛astabiln ˛a (stable), zostaje wydana, a dotychczasowe wydanie stabilne staje si˛eprzestarzałe (obsolete) i zostaje przeniesione do archiwum.

2.1.7 Kryptonimy dystrybucji Debiana

Nazwy rzeczywistych podkatalogów w katalogu dists, na przykład Woody i Sarge, s ˛atylko „kryptonimami”. Kiedy dystrybucja systemu Debian znajduje si˛ejeszcze w etapie rozwo- jowym, nie posiada numeru wersji, a zamiast niego kryptonim. Kryptonimy zastosowano w celu ułatwienia tworzenia archiwów lustrzanych (mirroring) dystrybucji systemu Debian (gdyby rzeczywisty katalog taki, jak unstable nagle zmienił swoj ˛anazw˛ena stable/, nieje- den musiałby niepotrzebnie pobiera´cponownie mas˛eoprogramowania). Aktualnie, stable/ jest dowi ˛azaniemsymbolicznym do Woody/, a testing/ dowi ˛azaniem do Sarge/. Oznacza to, ˙ze Woody jest aktualn ˛adystrybucj ˛astabiln ˛a,a Sarge testow ˛a. unstable/ jest ju˙zna zawsze dowi ˛azaniemsymbolicznym do sid/, poniewa˙zSid jest za- wsze dystrybucj ˛aniestabiln ˛a. Rozdział 2. Debian – Podstawy 9

2.1.8 Kryptonimy u˙zywanew przeszło´sci

Inne kryptonimy, których ju˙zwcze´snieju˙zywano,to : „Buzz” dla wydania 1.1, „Rex” dla wydania 1.2, „Bo” dla wydania 1.3.x, „Hamm” dla wydania 2.0, „Slink” dla wydania 2.1 oraz „Potato” dla wydania 2.2.

2.1.9 Zródło´ kryptonimów

Jak dotychczas wybierano postaci z filmu Toy Story produkcji Pixar. • Buzz (Buzz Lightyear) był kosmonaut ˛a, • Rex był tyranozaurem, • Bo (Bo Peep) była dziewczynk ˛a,która opiekowała si˛eowieczk ˛a, • Hamm była ´swink˛a-skarbonk˛a • Slink (Slinky Dog) był psem-zabawk ˛a, • Sarge był ˙zołnierzemz zielonego plastiku, • Potato był oczywi´sciePanem Ziemniakiem, • Woody był kowbojem, • Sid był chłopcem psuj ˛acymzabawki.

2.1.10 Katalog pool

Dawniej pakiety przechowywano w podkatalogu katalogu dists, którego nazwa odpowiadała dystrybucji, w skład której wchodziły. Okazało si˛ejednak, ˙zewywoływało to ró˙zneproblemy, jak np. du˙zeobci ˛a˙zenieserwerów lustrzanych, gdy dokonywano wi˛ekszychzmian. Obecnie pakiety znajduj ˛asi˛ew du˙zej„puli” („pool”), której struktura jest utworzona na pod- stawie nazw pakietów ´zródłowych.Dla ułatwienia zarz ˛adzaniaczym´stakim, pula - pool jest podzielona według sekcji (main, contrib i non-free) i według pierwszej litery nazwy paki- etu ´zródłowego. Katalogi te zawieraj ˛apewn ˛aliczb˛eplików: pakiety binarne dla ka˙zdejar- chitektury (platformy sprz˛etowej)oraz pakiety ´zródłowe,z których te pierwsze zostały wygen- erowane. Miejsce, gdzie znajduje si˛ejaki´spakiet, mo˙znaokre´sli´cwykonuj ˛acpolecenie apt-cache showsrc nazwa_pakietu i znajduj ˛acw jego wyj´sciuwiersz zaczynaj ˛acysi˛eod „Directory:”. Na przykład pakiety serwera http apache znajduj ˛asi˛ew pool/main/a/apache/. Pakietów lib* jest bardzo du˙zo,wi˛ecs ˛atraktowane szczególnie: na przykład pakiety libpaper s ˛aprzechowywane w katalogu pool/main/libp/libpaper/. Podkatalogi katalogu dists s ˛aw dalszym ci ˛aguu˙zywanedo przechowywania plików indek- sowych u˙zywanychprzez programy w rodzaju apt. Równie˙z,w czasie pisania niniejszego dokumentu starsze dystrybucje nie były przestawione na u˙zywaniekatalogu pool, wi˛ecmo˙zna zobaczy´ctakie nazwy dystrybucji, jak potato czy woody w wierszach zaczynaj ˛acychsi˛eod „Filename:” (przytoczone powy˙zejpolecenie apt-cache). Nie jest to powód do zmartwie´n,poniewa˙znowy apt i prawdopodobnie równie˙zstarszy dpkg-ftp (zobacz ‘Sposoby aktualizacji systemu Debian’ na 20 stronie) radz ˛asobie z tak ˛a Rozdział 2. Debian – Podstawy 10

struktur ˛abez problemów. Wi˛ecejinformacji mo˙znaznale´z´cw Debian Package Pools FAQ (http://people.debian.org/~joeyh/poolfaq) (po angielsku).

2.1.11 Nota historyczna o dystrybucji Sid

Kiedy dzisiejszy Sid jeszcze nie istniał, organizacja sieciowych archiwów Debiana miała jedn ˛a du˙z˛awad˛e: kiedy dokładano now ˛aarchitektur˛edo bie˙z˛acejdystrybucji unstable, pakiety zrobione dla niej mogły by´cwydane dopiero wtedy, gdy ta dystrybucja stawała si˛enow ˛a dystrybucj ˛a stable. Dla wielu architektur nie dochodziło do tego i trzeba było przenosi´c odpowiadaj ˛aceim katalogi, gdy dochodziło do wydania dystrybucji. Było to niepraktyczne, poniewa˙zprzenoszenie katalogów silnie obci ˛a˙załoł ˛acza. Administratorzy archiwów sieciowych przez kilka lat obchodzili ten problem, umieszczaj ˛ac binaria dla architektur jeszcze nie wydanych w specjalnym katalogu o nazwie sid. Dla ar- chitektur jeszcze nie wydanych, tworzono w chwili wydania dowi ˛azaniez aktualnego kat- alogu stable do sid i od tej pory tworzono je w drzewie unstable, jak zwykle. Takie rozwi ˛azaniebyło troch˛emyl ˛acedla u˙zytkowników. Z nadej´sciemkatalogu „pool” (zobacz ‘Katalog pool’ na poprzedniej stronie) w trakcie pow- stawania dystrybucji Woody, zacz˛etozapisywa´cpakiety binarne w lokalizacji kanonicznej w tym˙zekatalogu, niezale˙znieod dystrybucji, wi˛ecwydanie dystrybucji przestało by´czwi ˛azane z poddawaniem serwerów lustrzanych du˙zymobci ˛a˙zeniom(natomiast mamy do czynienia z do´s´csporymi, rozło˙zonymiw czasie obci ˛a˙zeniamiw trakcie całego procesu rozwijania dystry- bucji).

2.1.12 Pakiety umieszczone w incoming/

Pakiety umieszczane w archiwum trafiaj ˛anajpierw do http://incoming.debian.org/, po sprawdzeniu autentyczno´scipochodzenia od jednego z deweloperów (w wypadku tzw. Non-Maintainer Upload – NMU – pakiety trafiaj ˛ado podkatalogu DELAYED). Raz dziennie pakiety przenosi si˛ez incoming/ do unstable/. W nagłych wypadkach mo˙znainstalowa´cpakiety z incoming/, zanim jeszcze trafi ˛ado unstable.

2.1.13 Odzyskiwanie starszego pakietu

Podczas gdy najnowsze dystrybucje Debiana trzyma si˛ew podkatalogach katalogu debian, na ka˙zdymz serwerów wymienionych na Stronie serwerów lustrzanych Debiana (http:// www.debian.org/misc/README.mirrors), archiwa starszych dystrybucji (np. Slink) znaj- duj ˛asi˛ena http://archive.debian.org/ lub w podkatalogach katalogu debian-archive na ka˙zdymserwerze lustrzanym Debiana. Starsze pakiety z testing i unstable mo˙znaznale´z´cna http://snapshot.debian.net/. Rozdział 2. Debian – Podstawy 11

2.1.14 Podział na architektury

W obr˛ebieka˙zdegoz głównych drzew katalogów (dists/stable/main, dists/stable /contrib, dists/stable/non-free, dists/unstable/main/, itd.), informacja o paki- etach binarnych znajduje si˛ew podkatalogach o nazwach wskazuj ˛acychna platform˛esprz˛e- tow ˛a(architektur˛e),dla jakiej zostały skompilowane.

• binary-all/, dla pakietów niezale˙znychod architektury (dotyczy to np. skryptów Perla lub czystej dokumentacji).

• binary-platform/, dla pakietów przeznaczonych dla konkretnej architektury.

Warto zauwa˙zy´c, ˙zepakiety binarne dla dystrybucji testing i unstable nie s ˛aju˙zprze- chowywane w tych katalogach, ale w katalogu pool. Pliki indeksowe (Packages i Packages.gz) jednak, dla zachowania kompatybilno´sciz wcze´sniejszymirozwi ˛azaniami,w dalszym ci ˛agu przebywaj ˛atam, gdzie były.

Aby pozna´cfaktyczny zestaw wspieranych platform sprz˛etowych,nale˙zyzapozna´csi˛ez In- formacjami Wydawniczymi dla danej dystrybucji. Mo˙znaje odnale´z´cna stronach zajmuj ˛acych si˛eUwagami Wydawniczymi dla stable (http://www.debian.org/releases/stable/ releasenotes) i testing (http://www.debian.org/releases/testing/releasenotes).

2.1.15 Kod ´zródłowy

Debian posiada równie˙zkod ´zródłowyka˙zdegoze swoich składników. Co wi˛ecej,warunki licencji wi˛ekszo´sciprogramów w systemie zawieraj ˛a wymóg dystrybucji kodu ´zródłowego wraz z programem, lub przynajmniej zadeklarowania gotowo´scidostarczenia kodu ´zródłowego wraz z programem.

Normalnie kod ´zródłowyjest rozpowszechniany za po´srednictwem katalogów source, ist- niej ˛acychrównolegle do wszystkich katalogów charakterystycznych dla poszczególnych ar- chitektur, a obecnie w katalogu pool directory (zobacz ‘Katalog pool’ na 9 stronie). Aby po- bra´cz archiwum kod ´zródłowybez konieczno´scizaznajamiania si˛eze struktur ˛aarchiwum De- biana nale˙zywykona´cpolecenie podobne do tego: apt-get source mojanazwapakietu.

Niektóre pakiety, na przykład pine, s ˛adost˛epnewył ˛aczniew postaci ´zródełwskutek ogranicze´n licencyjnych. (Niedawno pojawił si˛epakiet pine-tracker ułatwiaj ˛acyinstalacj˛ePine). Pro- cedury opisane w ‘Przeniesienie pakietu do systemu stabilnego’ na 75 stronie i ‘Pakietowanie’ na 188 stronie opisuj ˛asposoby tworzenia pakietów samemu.

Dla pakietów z katalogów contrib i non-free, które oficjalnie nie stanowi ˛acz˛e´scisystemu Debian, kod ´zródłowymo˙zeby´cniedost˛epny. Rozdział 2. Debian – Podstawy 12

2.2 System zarz ˛adzaniapakietami w Debianie

2.2.1 Przegl ˛adpakietów Debiana

W ogólno´scipakiety zawieraj ˛awszystkie pliki niezb˛ednedo zaimplementowania zestawu odpowiednich polece´nlub wła´sciwo´sci.S ˛adwa typy pakietów Debiana:

• Pakiety binarne, zawieraj ˛acepliki wykonywalne, pliki konfiguracyjne, strony podr˛ecznika systemowego man lub info, informacje o prawach autorskich i pozostał ˛adokumen- tacj˛e.S ˛aone rozpowszechniane w charakterystycznym dla Debiana formacie archiwum (zobacz ‘Format pakietów Debiana’ na s ˛asiedniejstronie); zwykle mo˙znaje odró˙zni´c od innych plików po tym, ˙zeich nazwa ko´nczysi˛ena .deb. Pakiety binarne mo˙zna rozpakowywa´cz pomoc ˛aprogramu dpkg; ze szczegółami mo˙znasi˛ezapozna´cczytaj ˛ac stron˛epodr˛ecznikasystemowego po´swi˛econ˛adpkg.

• Pakiety ´zródłowe, składaj ˛acesi˛ez pliku .dsc opisuj ˛acegopakiet ´zródłowy(wł ˛acznie z nazwami plików składowych pakietu), pliku .orig.tar.gz zawieraj ˛acegoorygi- nalny, niezmodyfikowany kod ´zródłowyspakowany programem tar i skompresowany programem gzip oraz zwykle pliku .diff.gz zawieraj ˛acegocharakterystyczne dla De- biana zmiany w stosunku do oryginalnego ´zródła. Do pakowania i rozpakowywania archiwów ´zródłowychDebiana u˙zywasi˛eprogramu u˙zytkowego dpkg-source; szczegóły s ˛adost˛epnepo zapoznaniu si˛ez po´swi˛econ˛amu stron ˛apodr˛ecznikasystemowego man

Instalacja oprogramowania przez system pakietów posługuje si˛epoj˛eciem„zale˙zno´sci”(„de- pendencies”), troskliwie okre´slonychprzez opiekunów poszczególnych pakietów. Te zale˙zno´sci s ˛awyszczególnione w pliku control wchodz ˛acymw skład ka˙zdegopakietu. Na przykład, pakiet zawieraj ˛acykompilator GNU C (gcc) jest zale˙znyod zawieraj ˛acegokonsolidator (linker) i asembler pakietu binutils. Je˙zeliu˙zytkownikusiłuje zainstalowa´c gcc nie zainstalowawszy uprzednio binutils, system zarz ˛adzaniapakietami (dpkg) drukuje komunikat mówi ˛acy, ˙ze trzeba zainstalowa´c binutils, a nast˛epniezatrzymuje instalacj˛e gcc (uparty u˙zytkownik mo˙zejednak zmieni´cto zachowanie; zobacz dpkg(8)). Z dodatkowymi szczegółami mo˙zna zapozna´csi˛ew ‘Zale˙zno´scimi˛edzypakietami’ na 16 stronie. Zawartych w Debianie narz˛edziobsługuj ˛acychpakiety mo˙znau˙zywa´cdo:

• manipulowania i zarz ˛adzaniapakietami lub ich cz˛e´sciamiskładowymi,

• ułatwienia u˙zytkownikowipodziału na cz˛e´scipakietów, które trzeba umie´sci´cna no´snikach o ograniczonej wielko´sci(np. na dyskietkach),

• pomocy deweloperom w konstruowaniu archiwów pakietów, oraz

• pomocy u˙zytkownikomw instalacji pakietów przechowywanych na sieciowych serwer- ach z archiwami Debiana. Rozdział 2. Debian – Podstawy 13

2.2.2 Format pakietów Debiana

„Pakiet” Debiana (zwany te˙zarchiwum Debiana - nie myli´cz umieszczon ˛ana serwerze cał ˛a dystrybucj ˛a!)zawiera pliki wykonywalne, biblioteki oraz dokumentacj˛ezwi ˛azan˛az konkret- nym programem lub zestawem w jaki´ssposób powi ˛azanychze sob ˛aprogramów. Z reguły nazwa pakietu Debiana ko´nczysi˛esufiksem .deb. Budow˛ewewn˛etrzn˛apakietów binarnych w tym formacie opisuje podr˛eczniksystemowy deb(5). Z uwagi na mo˙zliwo´s´czachodzenia zmian w specyfikacji formatu (z jednego wyda- nia systemu Debian na kolejne jego wydanie), przy manipulacji plikami .deb nale˙zyzawsze korzysta´cz dpkg-deb(8). Wszystkie pakiety Debiana (co najmniej Woody i wcze´sniejszedystrybucje), mo˙znaobrabia´c u˙zywaj˛acstandardowych polece´nsystemu Unix: ar, i tar, nawet, gdy polecenia dpkg s ˛a niedost˛epne.

2.2.3 Zasady nadawania nazw pakietom Debiana

Nazwy plików zawieraj ˛acychpakiety w Debianie przestrzegaj ˛anast˛epuj˛acychzasad:

foo_NumerWersji-NumerRewizjiDebiana.deb gdzie foo stanowi nazw˛epakietu. Dla sprawdzenia: maj ˛acdany plik .deb mo˙znaokre´sli´c nazw˛ezawartego w nim pakietu w jeden z nast˛epuj˛acychsposobów:

• przejrze´cplik „Packages” w katalogu, w którym jest przechowywany na jednym z ser- werów Debiana. Plik ten zawiera sekcje opisuj ˛aceka˙zdypakiet. Pierwszy wiersz ka˙zdej sekcji zawiera oficjaln ˛anazw˛epakietu (po „Package: ”).

• u˙zy´cpolecenia dpkg --info foo_VVV-RRR.deb (gdzie VVV i RRR s ˛aodpowiednio wersj ˛ai rewizj ˛apakietu foo). Polecenie wy´swietlaw´sródinnych rzeczy nazw˛epakietu zawartego w pliku poddanym sprawdzeniu.

Składnik VVV jest numerem wersji, nadanym przez programist˛ezajmuj ˛acegosi˛edanym pro- gramem/pakietem poza systemem Debian. Numery wersji nie s ˛austalane przez ˙zadnenormy, dlatego te˙zmog ˛aone mie´cnajrozmaitsze formaty, jak np. „19990513” czy „1.3.8pre1”. Składnik RRR jest numerem rewizji w Debianie i jest nadawany przez opiekuna danego paki- etu lub przez indywidualnego u˙zytkownika,je´sliten zechce zbudowa´cpakiet samodzielnie. Numer ten odpowiada poziomowi rewizji pakietu w systemie; z tego wzgl˛edunowy poziom rewizji zwykle oznacza zmiany w plikach opisuj ˛acychbudow˛ei instalacj˛epakietu: debian /rules (Debian makefile), debian/control (Debian control file), skrypcie instalacyjnym i deinstalacyjnym debian/p*, lub plikach konfiguracyjnych zwi ˛azanychz pakietem. Rozdział 2. Debian – Podstawy 14

2.2.4 Ochrona lokalnych plików konfiguracyjnych

Mechanizm „conffiles” istniej ˛acyw Debianie pozwala na otoczenie ochron ˛aplików konfigu- racyjnych w systemie. Pliki te, zazwyczaj umieszczone w katalogu /etc, s ˛awymienione w plikach o nazwach ko´ncz˛acychsi˛ena conffiles wchodz ˛acychw skład systemu pakietów. Mechanizm ten gwarantuje, ˙zesystemowe pliki konfiguracyjne nie b˛ed˛anadpisywane pod- czas instalacji nowej wersji pakietu. Je´slimo˙zliwajest konfiguracja systemu bez dokonywania zmian w plikach nale˙z˛acychdo ró˙znychpakietów, dobrym pomysłem jest powstrzymanie si˛eod ich modyfikacji nawet je´sli s ˛ato pliki „conffiles”. Ułatwi to i przyspieszy instalacj˛enowych wersji pakietów. Aby dowiedzie´csi˛e,jakie dokładnie pliki zostan ˛azachowane podczas instalacji nowej wersji (upgrade’u) pakietu, nale˙zyuruchomi´cpolecenie:

dpkg --status pakiet i szuka´c„Conffiles:”. Szczegółów na temat zawarto´sciplików conffiles dostarcza dokument Debian Policy Man- ual w rozdziale 11.7 (zobacz ‘Zasoby’ na 195 stronie).

2.2.5 Skrypty instalacyjne i deinstalacyjne

S ˛ato skrypty automatycznie uruchamiane przed instalacj ˛ai po instalacji pakietu. Wraz z plikiem o nazwie control wchodz ˛aw skład sekcji „control” ka˙zdegopakietu w Debianie. S ˛ato: preinst Ten skrypt jest wykonywany zanim pakiet zostanie rozpakowany z pliku .deb. Wiele skryptów „preinst” zatrzymuje działanie usług ´swiadczonychprzez pakiety, których now ˛awersj˛ewła´snieinstalujemy, a˙zdo czasu zako´nczeniaprocesu instalacji lub aktu- alizacji (tzn. do chwili bezbł˛ednegowykonania skryptu „postinst”). postinst Ten skrypt z zasady wykonuje wszelkie operacje konfiguracyjne wymagane do praw- idłowej pracy pakietu po jego rozpakowaniu z pliku .deb. Skrypty „postinst” cz˛esto wymagaj ˛awprowadzenia pewnych informacji przez u˙zytkownikai/lub ostrzegaj ˛ago, ˙zew wypadku akceptacji warto´scidomy´slnychpowinien pami˛eta´co pó´zniejszejrekon- figuracji pakietu w miar˛epotrzeb. Wiele ze skryptów „postinst” wykonuje nast˛epnie wszelkie polecenia konieczne do uruchomienia lub ponownego uruchomienia danej usługi po instalacji lub aktualizacji pakietu. prerm Z reguły, skrypt ten zatrzymuje wszystkie demony zwi ˛azanez pakietem, a jest wykony- wany przed usuni˛eciemplików, które zawierał ten pakiet. postrm Ten skrypt z reguły modyfikuje dowi ˛azanialub inne pliki zwi ˛azanez pakietem i/lub usuwa pliki przeze´nutworzone (zobacz równie˙z‘Pakiety wirtualne’ na nast˛epnejstronie). Rozdział 2. Debian – Podstawy 15

Aktualnie wszystkie pliki steruj ˛acepakietu (te z sekcji „control”) mo˙znaznale´z´cw katalogu /var/lib/dpkg/info. Pliki zwi ˛azanez pakietem foo maj ˛anazwy zaczynaj ˛acesi˛eod „foo” i ko´ncz˛acena „preinst”, „postinst”, itd. Plik foo.list w tym katalogu wymienia wszystkie pliki zainstalowane podczas instalacji pakietu foo. (Poło˙zenietych plików jest wewn˛etrzn˛a spraw ˛aprogramu dpkg i mo˙zeby´czmienione).

2.2.6 Priorytety pakietów

Ka˙zdemupakietowi w Debianie opiekunowie dystrybucji przypisali pewien priorytet, maj ˛acy spełnia´cpomocnicze funkcje wzgl˛edemsystemu zarz ˛adzaniapakietami. Istniej ˛anast˛epuj˛ace rodzaje priorytetów:

• Pakiety Wymagane (Required), s ˛akonieczne do wła´sciwegodziałania systemu. W ich skład wchodz ˛awszystkie narz˛edziakonieczne do naprawy uszkodze´nsystemu. Nie wolno ich usuwa´c,bo system mo˙zeulec totalnej zapa´sci,która uniemo˙zliwinawet u˙zycie dpkg do próby jego odtworzenia. Systemy zawieraj ˛acewyłacznie pakiety o prio- rytecie Required najprawdopodobniej nie nadaj ˛asi˛edo wielu rzeczy, ale posiadaj ˛afunkcjon- alno´s´cwystarczaj ˛ac˛ado ich uruchomienia i instalacji dodatkowego oprogramowania. • Pakiety Wa˙zne (Important), powinny by´czainstalowane na ka˙zdymsystemie uniksopodob- nym. Inne pakiety, bez których system nie b˛edziedobrze działał, lub nie b˛edzieu˙zyteczny, b˛ed˛aposiada´crównie˙zten priorytet. Nie nale˙z˛a do nich Emacs, X11, TeX czy inne du˙ze aplikacje. Pakiety o priorytecie Important tworz ˛azaledwie goł ˛ainfrastruktur˛e. • Pakiety Standardowe (Standard). Stanowi ˛astandard na ka˙zdymsystemie linuksowym, tworz ˛acniedu˙zy, ale niezbyt ograniczony system pracuj ˛acyw trybie tekstowym. Pakiety o tym priorytecie zainstaluj ˛asi˛edomy´slnie,je˙zeliu˙zytkowniknie wybierze nic ponadto. Grupa Standard zawiera niewiele du˙zychaplikacji, ale zawiera Emacs (jest on bardziej elementem infrastruktury, ni˙zaplikacj ˛a)i rozs ˛adnywybór z TeX-a i LaTeX-a (to, czego mo˙znau˙zywa´cbez X). • Pakiety Opcjonalne (Optional) s ˛apakietami, których instalacja mo˙zesi˛eokaza´crozs ˛ad- nym wyborem nawet wtedy, gdy si˛enie zna ich na wskro´si kiedy nie ma si˛ejakich´s szczególnych wymaga´n. W skład tej grupy wchodz ˛aX11, pełna dystrybucja TeX-a i mnóstwo aplikacji. • Pakiety Ekstra (Extra) s ˛aw konflikcie z innymi pakietami o wy˙zszympriorytecie, maj ˛a mał ˛au˙zyteczno´s´cdla nieobeznanych z nimi, albo maj ˛aszczególne wymagania, które nie pozwalaj ˛aim wej´s´cdo grupy pakietów Opcjonalnych.

2.2.7 Pakiety wirtualne

Pakiet wirtualny nosi nazw˛eodnosz ˛ac˛asi˛edo dowolnego z grupy pakietów, posiadaj ˛acych zbli˙zon˛afunkcjonalno´s´c.Na przykład zarówno tin jak i trn s ˛aklientami grup dyskusyjnych Rozdział 2. Debian – Podstawy 16

i ka˙zdyz nich powinien spełnia´cwymagania innego programu, wymagaj ˛acegoczytnika news do działania. O obu z nich mówi si˛ewi˛ec,˙zedostarczaj ˛a„wirtualny pakiet” o nazwie news-reader. Podobnie, exim i sendmail s ˛aprogramami transportuj ˛acymipoczt˛e(mail transport agent). Mówi si˛ewi˛eco nich, ˙zedostarczaj ˛awirtualny pakiet o nazwie mail-transport-agent. Je˙zelijeden z nich zostanie zainstalowany, ka˙zdyprogram zale˙z˛acyod instalacji mail transport agent zostanie usatysfakcjonowany dzi˛ekiistnieniu tego pakietu wirtualnego. Debian posiada równie˙zmechanizm umo˙zliwiaj˛acyadministratorowi wyznaczenie preferowanego pakietu w razie, gdy kilka zainstalowanych pakietów dostarcza ten sam „pakiet wirtualny”. Odpowiednim poleceniem jest update-alternatives, które opisano w ‘Alternatywne polece- nia’ na 79 stronie.

2.2.8 Zale˙zno´scimi˛edzypakietami

W systemie zarz ˛adzaniapakietami w Debianie istnieje kategoria „zale˙zno´sci”mi˛edzypaki- etami zaprojektowanych tak, aby w prosty sposób, (za pomoc ˛apojedynczej flagi) ukaza´cpoziom niezale˙zno´scifunkcjonowania programu A od istnienia w danym systemie programu B:

• Pakiet A zale˙zy (depends on) od Pakietu B, je˙zeliB musi by´cbezwarunkowo zain- stalowany, aby mo˙znabyło uruchomi´cA. W niektórych przypadkach A nie tylko zale˙zy od B, ale od jego okre´slonejwersji. W takich przypadkach zale˙zno´s´cwersji jest doln ˛a granic ˛a,co nale˙zyrozumie´c, ˙zeA zale˙zyod dowolnej wersji B nowszej od wersji po- danej.

• Pakiet A zaleca (recommends) Pakiet B, je˙zeliopiekun pakietu jest zdania, ˙zewi˛ekszo´s´c u˙zytkownikównie zechciałaby skorzysta´cz A bez posiadania mo˙zliwo´scioferowanych przez B.

• Pakiet A sugeruje (suggests) Pakiet B, je˙zeliB zawiera pliki maj ˛acezwi ˛azekz funkcjon- alno´sci˛aA (zwykle zwi˛ekszaj˛acej ˛a).

• Package A jest w konflikcie (conflicts) z Pakietem B wtedy, kiedy A nie b˛edziedziała´c, je˙zeliB jest zainstalowany w systemie. Konflikty zachodz ˛aprzewa˙zniewtedy, gdy A zawiera pliki, które maj ˛apod jakim´swzgl˛edemprzewag˛enad plikami nale˙z˛acymido B. Stan „conflicts” cz˛estowyst˛epujewspólnie z „replaces”.

• Pakiet A zast˛epuje (replaces) Pakiet B wtedy, gdy pliki zainstalowane przez B ulegaj ˛a usuni˛eciui (w niektórych wypadkach) nadpisaniu przez pliki nale˙z˛acedo A.

• Pakiet A dostarcza (provides) Pakiet B wtedy, gdy wszystkie pliki i cała funkcjonalno´s´c pakietu B zawieraj ˛asi˛ew A. Daje to u˙zytkownikommniejszych dysków mo˙zliwo´s´czain- stalowania tylko tej cz˛e´scipakietu A, której naprawd˛epotrzebuj ˛a.

Bardziej szczegółowe informacje o wykorzystaniu ka˙zdegoz powy˙zszychpoj˛e´czawieraj ˛adoku- menty Packaging Manual i Policy Manual. Rozdział 2. Debian – Podstawy 17

Dobrze wiedzie´c,˙ze dselect umo˙zliwiabardziej subteln ˛akontrol˛enad pakietami zalecanymi i sugerowanymi, ni˙z apt-get, który po prostu pobiera wszystkie pakiety oznaczone zale˙zy a zostawia w spokoju rekomendowane i sugerowane. W nowoczesnym wydaniu obydwa programy s ˛a„nakładk ˛a”na APT.

2.2.9 Znaczenie „pre-depends”

Poj˛ecie„zale˙zno´s´cwst˛epna”(„pre-depend”) stanowi szczególny rodzaj zale˙zno´sci.W wypadku zwyczajnego pakietu dpkg rozpakuje plik pakietu (plik .deb) niezale˙znieod tego, czy pliki, od których dany pakiet zale˙zy, s ˛aju˙zw systemie. Samo rozpakowanie polega na tym, ˙ze dpkg wyci ˛agaz pliku archiwum pliki przeznaczone do instalacji w systemie u˙zytkownikai umieszcza je we wła´sciwychmiejscach w tym systemie. Je˙zelipakiet wła´snieinstalowany za- le˙zy od obecno´sciw systemie u˙zytkownikajakich´sinnych pakietów, dpkg odmówi doko´nczenia instalacji (co przejawiłoby si˛ewykonaniem akcji „configure”) a˙zdo czasu zainstalowania tych pakietów.

Istnieje jednak troch˛epakietów, których dpkg nie b˛edziechciał nawet rozpakowa´c,dopóki nie zostan ˛aspełnione pewne zale˙zno´sci.Mówimy, ˙zetakie pakiety „pre-depend” (zale˙z˛awst˛ep- nie) od obecno´sciw systemie jakich´sinnych pakietów. Mechanizm ten został wprowadzony w projekcie Debian w celu ułatwienia bezpiecznej instalacji nowych wersji pakietów w dobie przej´sciaz formatu a.out na ELF, gdy nawet kolejno´s´c rozpakowywania pakietów była kry- tyczna. S ˛ate˙zinne sytuacje zwi ˛azanez du˙zymiaktualizacjami systemu, w których omawiany mechanizm okazuje si˛eu˙zyteczny, np. dla pakietów o priorytecie „Wymagane” zale˙znychod libc.

Bardziej szczegółowe informacje mo˙znaznale´z´cw dokumencie Packaging Manual.

2.2.10 Status pakietu

Status pakietu mo˙zeprzybiera´cform˛e:„nieznany” („unknown”), „zainstalowa´c”(„install”), „usun ˛a´ccz˛e´sciowo” („remove”), „usun ˛a´ccałkowicie” („purge”) lub „zatrzyma´c”(„hold”). Te znaczniki pokazuj ˛a,co u˙zytkownikchciałby uczyni´cz danym pakietem (przez dokonanie wyboru w sekcji „Select” programu dselect lub przez bezpo´srednie wywołanie dpkg).

Ich znaczenie jest nast˛epuj˛ace: • unknown - u˙zytkowniknigdy nie zdradził, czy w ogóle chce tego pakietu • install - u˙zytkownikchce, aby pakiet (lub jego nowsza wersja) został zainstalowany. • remove - u˙zytkownikchce, aby pakiet został usuni˛ety, ale nie chce usuwa´cjego plików konfiguracyjnych. • purge - u˙zytkownik chce całkowitego usuni˛eciapakietu, z plikami konfiguracyjnymi wł ˛acznie. • hold - u˙zytkowniknie chce, aby pakiet był ruszany, tzn. chce zachowa´cbie˙z˛ac˛awersj˛e pakietu w bie˙z˛acymstanie, wszystko jedno jakim. Rozdział 2. Debian – Podstawy 18

2.2.11 Zapobieganie instalacji nowych wersji pakietów

S ˛adwa mechanizmy chroni ˛acepakiety przed instalacj ˛anowej wersji, jeden z nich oparty jest na dpkg, a drugi od dystrybucji Woody, na APT. Wykorzystuj ˛acten pierwszy z nich, nale˙zynajpierw wyeksportowa´clist˛ezawieraj ˛ac˛anazwy zainstalowanych pakietów i status ka˙zdegoz nich:

dpkg --get-selections \* > selections.txt

Nast˛epnienale˙zydokona´cedycji powstałego pliku selections.txt, zmieniaj ˛acodpowied- nio wiersz zawieraj ˛acynazw˛epakietu, który chcemy chroni´c(np. libc6), z czego´stakiego:

libc6 install na co´stakiego:

libc6 hold

Plik nale˙zyzapisa´cna dysku i wprowadzi´cgo do bazy danych dpkg wykonuj ˛acpolecenie:

dpkg --set-selections < selections.txt

Je˙zelidobrze znamy nazw˛epakietu, który chcemy chroni´c,mo˙zemypo prostu wykona´c:

echo libc6 hold | dpkg --set-selections

Dla ka˙zdegopotraktowanego w ten sposób pakietu oznacza to, ˙zeb˛edzieon chroniony przed zainstalowaniem swojej nowszej wersji. Taki sam wynik mo˙znauzyska´ckorzystaj ˛acz programu dselect. Wystarczy w tym wypadku wej´s´cdo sekcji [S]elect, odnale´z´cpakiet, który chcemy chroni´cprzed zmian ˛ai nacisn ˛a´cklawisz „=” lub „H”. Zmiana statusu b˛edzieobowi ˛azywa´cod chwili opuszczenia sekcji [S]elect. Wiod ˛acyw dystrybucji Woody, system APT posiada nowy, alternatywny mechanizm ochrony pakietów podczas ich pobierania z repozytorium, oparty na Pin-Priority. Wi˛ecejszczegółów na ten temat dostarczy apt_preferences(5), wraz z http://www.debian.org/doc/ manuals/apt-howto/ lub pakietem apt-howto; ‘Przegl ˛adpliku /etc/apt/preferences’ na 66 stronie równie˙zzawiera krótkie wyja´snienie.

2.2.12 Pakiety ´zródłowe

Pakiety ´zródłowes ˛aprzechowywane w katalogu o nazwie source, mo˙znaje pobiera´cklasy- cznymi metodami, mo˙znate˙zu˙zy´cpolecenia

apt-get source foo do ich pobrania (o konfiguracji programu APT do tej operacji szerzej traktuje podr˛eczniksys- temowy: apt-get(8)). Rozdział 2. Debian – Podstawy 19

2.2.13 Tworzenie pakietów binarnych ze ´zródłowych

Aby skompilowa´cpliki ´zródłowedla pakietu o nazwie foo, b˛edzietrzeba u˙zy´cwszystkich, z nast˛epuj˛acychplików: foo_*.dsc, foo_*.tar.gz oraz foo_*.diff.gz. (ciekawa rzecz: dla rodzimych pakietów Debiana nie ma plików .diff.gz). Je´slipobrali´smyju˙zwszystkie potrzebne pliki i mamy zainstalowany pakiet dpkg-dev, polece- nie

$ dpkg-source -x foo_version-revision.dsc rozpakuje pakiet do katalogu o nazwie foo-version. Aby utworzy´cpakiet binarny, nale˙zywyda´cnast˛epuj˛acepolecenie (tutaj podane w wersji dla zwykłego u˙zytkownika):

$ cd foo-version $ su -c "apt-get update ; apt-get install fakeroot" $ dpkg-buildpackage -rfakeroot -us -uc

Nast˛epnie,

$ su -c "dpkg -i ../foo_version-revision_arch.deb" aby zainstalowa´c´swie˙zoutworzony pakiet. Wi˛ecejinformacji - ‘Przeniesienie pakietu do sys- temu stabilnego’ na 75 stronie.

2.2.14 Tworzenie nowych pakietów Debiana

Szczegółowych informacji dotycz ˛acychtworzenia nowych pakietów dostarczy lektura „New Maintainers’ Guide”, dost˛epnegojako pakiet maint-guide, lub pod adresem http://www. debian.org/doc/manuals/maint-guide/.

2.3 Aktualizacja systemu Debian

Jednym ze strategicznych celów Debiana jest dostarczenie spójnych metod umo˙zliwiaj˛acych bezpieczn ˛ainstalacj˛enowego oprogramowania; dokładamy stara´n,aby proces instalacji nowego wydania na poprzednim przebiegał jak najbardziej gładko. Pakiety b˛ed˛ainformowa´cu˙zytkown- ika o wa˙znychzdarzeniach podczas instalacji, a cz˛estob˛ed˛aproponowa´crozwi ˛azanieprob- lemu. Nale˙zyprzeczyta´cUwagi Wydawnicze (Release Notes), dokument opisuj ˛acyszczegóły in- stalacji nowej wersji (upgrade’u) poszczególnych dystrybucji, dostarczany na ka˙zdejpłytce Rozdział 2. Debian – Podstawy 20

z systemem Debian i dost˛epnyna stronach WWW pod adresem http://www.debian.org/ releases/stable/releasenotes lub http://www.debian.org/releases/testing/ releasenotes. Praktyczny poradnik traktuj ˛acyo instalacji nowej dystrybucji na poprzedni ˛ajest zawarty w ‘Zarz ˛adzaniepakietami Debiana’ na 61 stronie. Ten rozdział opisuje podstawowe szczegóły.

2.3.1 Sposoby aktualizacji systemu Debian

Zawsze mo˙znau˙zy´canonimowego FTP lub programu wget, aby dosta´csi˛edo sieciowego archiwum Debiana, przeszuka´ckatalogi, znale´z´c˙z˛adanyplik, pobra´cgo i wreszcie zainstalowa´c przy pomocy dpkg (dpkg instaluje nowe pakiety na wła´sciwymmiejscu, równie˙zna działaj ˛a- cym systemie). Czasami jednak nowa wersja jednego pakietu wymaga instalacji nowej wersji innego pakietu, co mo˙zeprowadzi´cdo uniemo˙zliwieniainstalacji ˙z˛adanegopakietu do czasu zainstalowania tego drugiego, wymaganego. Dla wielu osób takie r˛ecznepodej´sciejest zbyt czasochłonne, ze wzgl˛eduna fakt, ˙zeDebian tak szybko ewoluuje - co tydzie´ndochodzi tuzin lub wi˛ecejnowych pakietów. Tu˙zprzed du˙zymi wydaniami ta liczba jeszcze ro´snie. Zeby˙ sobie da´crad˛ez tak ˛alawin ˛a,wiele osób prefer- uje u˙zywaniezautomatyzowanego oprogramowania. Do tego celu powstało kilka wyspecjali- zowanych narz˛edzido zarz ˛adzaniapakietami.

2.3.2 Przegl ˛adnarz˛edzido zarz ˛adzaniapakietami

System zarz ˛adzaniapakietami w Debianie posiada dwa cele: manipulacja samymi pakietami oraz pobieranie plików wraz z pakietami z archiwum pakietów. Pierwsze zadanie jest wykony- wane przez dpkg, drugie - przez APT i dselect

2.3.3 dpkg

Jest to główny program do manipulacji plikami z pakietami. Pełny opis mo˙znaznale´z´cw dpkg(8). dpkg wyst˛epujew towarzystwie kilku prostych programów pomocniczych:

• dpkg-deb: Manipulacja plikami .deb. dpkg-deb(1)

• dpkg-ftp: Starszy program do pobierania plików z pakietami. dpkg-ftp(1)

• dpkg-mountable: Starszy program do pobierania plików z pakietami. dpkg-mountable(1)

• dpkg-split: Dzieli du˙zypakiet na mniejsze pliki. dpkg-split(1) dpkg-ftp i dpkg-mountable zostały zast ˛apioneprzez system APT. Rozdział 2. Debian – Podstawy 21

2.3.4 APT

APT (skrót od Advanced Packaging Tool - Zaawansowane Narz˛edziePakietuj ˛ace)jest za- awansowanym interfejsem do debianowego systemu zarz ˛adzaniapakietami składaj ˛acymsi˛e z kilku programów, których nazwy z reguły zaczynaj ˛asi˛eod „apt-”. apt-get, apt-cache i apt-cdrom s ˛adziałaj ˛acymiw ´srodowisku znakowym narz˛edziamido obsługi pakietów. S ˛a równie˙zu˙zywanejako „back end” (program wykonuj ˛acywła´sciw˛aprac˛epod osłon ˛ainterfejsu ułatwiaj ˛acegou˙zytkownikowiobsług˛e)dla innych narz˛edzitakich, jak dselect i aptitude.

Wi˛ecejinformacji mo˙znauzyska´c,instaluj ˛acpakiet apt i czytaj ˛ac apt-get(8), apt-cache(8), apt-cdrom(8), apt.conf(5), sources.list(5), apt_preferences(5) (Woody) oraz /usr/share/doc/apt/guide.html/index.html.

Innym ´zródłeminformacji mo˙zeby´crównie˙zAPT HOWTO (http://www.debian.org/ doc/manuals/apt-howto/), dost˛epnypo zainstalowaniu pakietu apt-howto jako /usr /share/doc/Debian/apt-howto/. apt-get upgrade i apt-get dist-upgrade pobieraj ˛atylko pakiety wymienione w po- lach „Depends:” i ignoruj ˛awszystkie pakiety wymienione w polach „Recommends:” i „Sug- gests:”. Je˙zelisi˛etego nie lubi, u˙zywasi˛e dselect.

2.3.5 dselect dselect jest zaopatrzonym w menu, interfejsem systemu zarz ˛adzaniapakietami w Debianie. Jest szczególnie u˙zytecznyprzy okazji pierwszych instalacji i wi˛ekszychaktualizacji. Zobacz ‘dselect’ na 63 stronie.

Wi˛ecejinformacji zawiera dokument /usr/share/doc/install-doc/dselect-beginner.en.html z pakietu install-doc lub dselect Documentation for Beginners (Dokumentacja dselect dla pocz ˛atkuj˛acych)(http://www.debian.org/releases/woody/i386/dselect-beginner).

2.3.6 Aktualizacja działaj ˛acegosystemu

Kernel i system plików u˙zywanew Debianie umo˙zliwiaj˛azast˛epowaniejednych plików drugimi nawet wtedy, gdy s ˛aone wła´snieu˙zywane.

Dostarczamy równie˙zprogram o nazwie start-stop-daemon, u˙zywanydo uruchamia- nia demonów (pracuj ˛acychw tle programów u˙zytkowych)przy starcie systemu i do ich za- trzymywania podczas zmiany trybu pracy kernela (np. z trybu wielou˙zytkownikowegona jednou˙zytkownikowylub na „halt”). Tego samego programu u˙zywaj˛askrypty instalacyjne, gdy instalowany jest nowy pakiet zawieraj ˛acydemony - do ich zatrzymywania i uruchamia- nia w miar˛epotrzeb.

Nawiasem mówi ˛ac,Debian nie wymaga, aby system poddawany aktualizacji pracował w try- bie jednou˙zytkownikowym. Rozdział 2. Debian – Podstawy 22

2.3.7 Pobrane i chwilowo zapisane na dysku pliki .deb

Je˙zelir˛eczniepobrałe´spliki pakietów na dysk (co nie jest absolutnie konieczne, wystarczy zapozna´csi˛ez wy˙zejzamieszczonym opisem dpkg-ftp lub APT), to po ich zainstalowaniu mo˙zeszusun ˛a´cze swojego systemu pliki .deb. W wypadku u˙zyciaprogramu APT, pakiety s ˛azapisywane w katalogu /var/cache/apt /archives/. Mo˙znaje skasowa´cpo zainstalowaniu (apt-get clean) albo skopiowa´cdo katalogu /var/cache/apt/archives/ na innej maszynie, aby nie ´sci˛aga´cich kolejny raz przy powtórnych instalacjach.

2.3.8 Rejestracja zmian w pakietach dpkg rejestruje pakiety, które rozpakowano, skonfigurowano, usuni˛etocz˛e´sciowolub całkowicie, ale (przynajmniej obecnie) nie przechowuje rejestru tego, co si˛edziało na konsoli w czasie pod- dawania pakietów tym działaniom. Najprostszym sposobem obej´sciatego problemu jest uruchamianie sesji dpkg, dselect, apt-get itd. przy pomocy programu script (script(1)).

2.4 Proces ładowania systemu w Debianie

2.4.1 Program init

Jak wszystkie Uniksy, Debian ładuje si˛edo pami˛eciwykonuj ˛acprogram init. W pliku kon- figuracyjnym programu init (/etc/inittab) jest zapisane, ˙zew pierwszej kolejno´scima by´cwykonany skrypt /etc/init.d/rcS. Uruchamia on wszystkie skrypty znajduj ˛acesi˛e w katalogu /etc/rcS.d/ poprzez nowe podprocesy lub ich kopie, zale˙znieod rozszerzenia nazwy pliku, wykonuj ˛acinicjalizacj˛esystemu, w skład której wchodzi sprawdzanie i mon- towanie systemów plików, ładowanie modułów, uruchamianie usług sieciowych, ustawianie zegara i in. Nast˛epnie,dla kompatybilno´sciz innymi systemami, uruchamia skrypty umieszc- zone w katalogu /etc/rc.boot/ (z wyj ˛atkiemtych, których nazwy zawieraj ˛a„.”). Skrypty umieszczone w tym katalogu s ˛azwykle zarezerwowane do wył ˛acznegou˙zytkuadministra- tora i u˙zywanieich w pakietach nie jest pochwalane. Wi˛ecejinformacji mo˙znaznale´z´cw ‘Wskazówki dotycz ˛aceinicjalizacji systemu.’ na 115 stronie.

2.4.2 Poziomy startu (Runlevels)

Po załadowaniu systemu, init wykonuje wszystkie skrypty startowe w katalogu okre´slonym przez domy´slnypoziom startu (default runlevel, wpis id w pliku /etc/inittab). Jak wi˛ek- szo´s´cUniksów kompatybilnych z System V, Linux ma 7 poziomów startu: • 0 (zatrzymanie systemu), • 1 (tryb jednou˙zytkownikowy), • 2 do 5 (ró˙znetryby wielou˙zytkownikowe)oraz Rozdział 2. Debian – Podstawy 23

• 6 (restart czyli przeładowanie systemu). W Debianie ustawia si˛e id=2, co oznacza, ˙zedomy´slnypoziom startu po wej´sciuw tryb wielou˙zytkownikowywynosi 2, a uruchomieniu podlegaj ˛askrypty znajduj ˛acesi˛ew katalogu /etc/rc2.d/. W rzeczywisto´sciskrypty w ka˙zdymz katalogów /etc/rcN.d/ s ˛atylko symbolicznymi dowi ˛azaniami(symlinkami) do skryptów w /etc/init.d/. Ich nazwy natomiast dobiera si˛e tak, aby odzwierciedlały sposób, w jaki zostan ˛auruchomione skrypty znajduj ˛acesi˛ew /etc /init.d/. W szczególno´sci,przed wej´sciemna którykolwiek poziom startu uruchomione zostaj ˛awszystkie skrypty o nazwach zaczynaj ˛acychsi˛ena „K”; s ˛ato skrypty wył ˛aczaj˛ace usługi. Nast˛epnieuruchomione zostaj ˛askrypty o nazwach zaczynaj ˛acychsi˛ena „S”, które s ˛a skryptami uruchamiaj ˛acymiusługi. Dwucyfrowa liczba wyst˛epuj˛acapo „K” lub „S” okre´sla kolejno´s´c,w jakiej skrypty zostan ˛auruchomione. Skrypty z mniejszymi liczbami s ˛auruchami- ane w pierwszej kolejno´sci. To wszystko działa, poniewa˙zskrypty w /etc/init.d/ pobieraj ˛aargument, którego warto´s- ci ˛amo˙zeby´c„start”, „stop”, „reload”, „restart” lub „force-reload” i wykonuj ˛azadanie okre´slone przez ten wła´snieargument. Skryptów tych mo˙znau˙zywa´crównie˙zpo załadowaniu systemu, steruj ˛acw ten sposób ró˙znymiprocesami. Na przykład, (z argumentem „reload”) polecenie

# /etc/init.d/sendmail reload wysyła demonowi programu sendmail polecenie powtórnego wczytania pliku konfiguracyjnego.

2.4.3 Modyfikacje procesu ładowania

Debian nie korzysta z pochodz ˛acegoz BSD katalogu rc.local w celu dostosowywania pro- cesu ładowania do jakich´sszczególnych ˙zycze´nu˙zytkownika;zamiast tego oferuje nast˛epuj˛acy mechanizm. Załó˙zmy, ˙zesystem powinien wykona´cskrypt foo przy starcie lub podczas wchodzenia na który´sz poziomów startu. Administrator powinien wtedy:

1. Umie´sci´cskrypt foo w katalogu /etc/init.d/.

2. Uruchomi´cwyst˛epuj˛acew Debianie polecenie update-rc.d z odpowiednimi argu- mentami, ustawiaj ˛acw ten sposób dowi ˛azaniami˛edzywymienionymi w wierszu pole- ce´nplikami w katalogach rc?.d a /etc/init.d/foo, gdzie ? jest liczb ˛aod 0 do 6 odpowiadaj ˛ac˛ajednemu z poziomów startu (runlevel) Systemu V.

3. Przeładowa´csystem.

Polecenie update-rc.d ustawi dowi ˛azaniami˛edzyplikami w katalogach rc?.d a skryptem w /etc/init.d/. Nazwa ka˙zdegoz dowi ˛aza´nb˛edziesi˛ezaczyna´cod litery „K” lub „S”, po Rozdział 2. Debian – Podstawy 24

której wyst ˛apiliczba oraz nazwa skryptu. Gdy system osi ˛agniepoziom startu N, skrypty z /etc/init.d/ posiadaj ˛acew katalogu /etc/rcN.d/ dowi ˛azaniao nazwach zaczynaj ˛acych si˛ena „K” s ˛awykonywane z argumentem stop, nast˛epnies ˛awykonywane skrypty, nazwy odniesie´ndo których zaczynaj ˛asi˛ena „S”, przyjmuj ˛acza argument start. Mo˙zna, na przykład, spowodowa´curuchomienie skryptu foo w toku sekwencji startowej umieszczaj ˛acgo w /etc/init.d/ i instaluj ˛acdowi ˛azaniapoleceniem update-rc.d foo defaults 19. Argument defaults odnosi si˛edo domy´slnychpoziomów startu (od 2 do 5). Argument 19 gwarantuje, ˙ze foo zostanie uruchomiony przed którymkolwiek skryptem zawieraj ˛acymliczb˛e20 lub wi˛eksz˛a.

2.5 Wsparcie dla ró˙znorodno´sci

Debian oferuje wiele sposobów spełniania ˙zycze´nadministratora systemu bez gro´zbyuszkodzenia systemu.

• dpkg-divert, zobacz ‘Polecenie dpkg-divert’ na 78 stronie. • equivs, zobacz ‘Pakiet equivs’ na 79 stronie. • update-alternatives, zobacz ‘Alternatywne polecenia’ na 79 stronie. • make-kpkg mo˙zezadowoli´cwymagania stawiane przez wiele bootloaderów. Zobacz make-kpkg(1) i ‘Standardowa metoda Debiana’ na 81 stronie.

Wszystkie pliki w podkatalogach katalogu /usr/local/ nale˙z˛ado administratora systemu i Debian ich nawet nie tknie. Wi˛ekszo´s´c(lub wszystkie) plików w podkatalogach /etc to pliki konfiguracyjne i Debian nie nadpisze ich w trakcie instalacji nowszych wersji pakietów, chyba, ˙zeadministrator wyra´zniesobie tego za˙zyczy.

2.6 Internacjonalizacja

System Debian jest zinternacjonalizowany: obsługuje wy´swietlaniei wprowadzanie znaków w wielu j˛ezykach,tak na konsoli tekstowej, jak i w Xach. Wiele dokumentów, stron podr˛ecznika systemowego man i komunikatów systemu przetłumaczono i tłumaczy si˛ena coraz wi˛eksz˛a liczb˛ej˛ezyków. W trakcie instalacji, Debian zach˛ecau˙zytkownikado wybrania j˛ezykainstalacji (czasem nawet lokalnego dialektu). Je˙zelizainstalowany przez Ciebie system nie obsługuje wszystkich wła´sciwo´scij˛ezykowych, których potrzebujesz, lub je˙zelichcesz zmieni´cj˛ezyklub zainstalowa´cinn ˛aklawiatur˛e,która obsługiwałaby Twój j˛ezyk,zapoznaj si˛ez ‘Lokalizacja i obsługa obcych j˛ezyków.’ na 145 stronie.

2.7 Debian i kernel

Zobacz ‘J ˛adro systemu Linux w Debianie’ na 81 stronie. Rozdział 2. Debian – Podstawy 25

2.7.1 Kompilacja j ˛adraze ´zródełinnych, ni˙zdebianowe

Trzeba zrozumie´cobowi ˛azuj˛acew Debianie zasady post˛epowaniaodno´snieplików nagłówkowych. Biblioteki C w Debianie buduje si˛ez wykorzystaniem najnowszych stabilnych wyda´nplików nagłówkowych j ˛adra (kernel) (Na przykład, Debian-1.2 u˙zywałplików nagłówkowych j ˛adra w wersji 5.4.13). Taka praktyka jest w kontra´scieze wszystkimi pakietami zawieraj ˛acymipliki ´zródłowej ˛a- dra, które wykorzystuj ˛arównie˙znowsze wersje plików nagłówkowych. Pliki nagłówkowe j ˛adrarozpowszechniane z jego ´zródłamis ˛aumieszczone w katalogu /usr/include/linux /include/. W razie potrzeby kompilacji programu wymagaj ˛acegoplików nagłówkowych kernela w wer- sji nowszej, ni˙zzawarte w pakiecie libc6-dev, trzeba do linii polece´nw trakcie kompi- lacji doda´c -I/usr/src/linux/include/. Co´stakiego w pewnym momencie przydarzyło si˛ena przykład pakietowi demona automountera (amd). Gdy nowsze j ˛adro zmieniło troch˛e funkcji obsługuj ˛acychNFS, amd musiał zosta´co tym powiadomiony, co wymagało doł ˛aczenia najnowszej wersji plików nagłówkowych j ˛adra.

2.7.2 Narz˛edziado tworzenia j ˛adra

U˙zytkowników, którzy chc ˛a(albo musz ˛a)utworzy´cwłasne pakiety kernela, zach˛ecamydo instalacji pakietu kernel-package. Zawiera on skrypt umo˙zliwiaj˛acyzbudowanie pakietu zawieraj ˛acegoj ˛adro, umo˙zliwiaj˛acw ten sposób utworzenie Debianowego pakietu zawiera- j ˛acegoju˙zskompilowane j ˛adro przez wydanie polecenia

# make-kpkg kernel_image w katalogu /usr/src/linux/. Bardziej szczegółowych informacji udost˛epniapolecenie

# make-kpkg --help oraz strona podr˛ecznikasystemowego make-kpkg(8) i ‘J ˛adro systemu Linux w Debianie’ na 81 stronie. U˙zytkownicychc ˛acyskompilowa´cnajnowszy kernel (albo po prostu dowolny, wymarzony) musz ˛asamodzielnie pobra´ckod ´zródłowyze swojego ulubionego archiwum sieciowego, o ile nie jest dost˛epnypakiet kernel-source-version, gdzie version oznacza wersj˛ekernela. Skrypt startowy initrd wymaga specjalnej łaty na kernel o nazwie initrd; zobacz http://bugs. debian.org/149236. Szczegółow ˛ainstrukcj˛eu˙zytkowaniapakietu kernel-package mo˙znaznale´z´cw pliku /usr /doc/kernel-package/README.gz. Rozdział 2. Debian – Podstawy 26

2.7.3 Alternatywne programy ładuj ˛acesystem (bootloadery)

Aby skorzysta´calternatywnych bootloaderów (grub lub loadlin), nale˙zyskopiowa´cskom- pilowany kernel (plik bzImage) w inne miejsce, np. do katalogu /boot/grub lub na partycj˛e MS-DOS.

2.7.4 Dyskietki startowe własnej roboty

Wykonywanie własnych dyskietek startowych jest w du˙zymstopniu ułatwione przez pakiet boot-floppies. Mo˙znago znale´z´cw sekcji admin sieciowych archiwów Debiana. Skrypty zawarte w tym pakiecie tworz ˛adyskietki startowe w formacie syslinux. S ˛ato dyskietki sformatowane w formacie MS-DOS, których główne rekordy ładuj ˛ace(master boot records) zmieniono tak, aby bezpo´srednio ładowały Linuksa (albo jakikolwiek inny system operacyjny, który okre´slonow pliku syslinux.cfg na dyskietce). Inne skrypty z tego pakietu tworz ˛a dyskietki ratunkowe lub nawet podstawowe dyskietki instalacyjne. Wi˛ecejinformacji na ten temat mo˙znaznale´z´cw pliku /usr/doc/boot-floppies/README po zainstalowaniu pakietu boot-floppies.

2.7.5 Specjalne wyposa˙zeniedo obsługi modułów j ˛adra

Pakiet modconf zawiera skrypt /usr/sbin/modconf, którego mo˙znau˙zywa´cw celu wprowadza- nia własnych modyfikacji do konfiguracji modułów. Skrypt ten wy´swietlamenu, wypytuj ˛ac u˙zytkownikao szczegóły dotycz ˛aceładowanych sterowników urz ˛adze´nw jego systemie. Na podstawie udzielonych odpowiedzi przeprowadzana jest modyfikacja pliku /etc/modules.conf (wyszczególniaj ˛acegoaliasy i inne argumenty, których nale˙zyu˙zy´cw poł ˛aczeniuz ró˙znymi modułami), w powi ˛azaniuz plikami w /etc/modutils/ i plikiem /etc/modules (zawier- aj ˛acymspis modułów, które trzeba załadowa´cprzy starcie systemu). Podobnie jak ´zródłakernela zostały wyposa˙zonew plik Configure.help, ułatwiaj ˛acykonfig- uracj˛ekerneli własnej produkcji, tak i pakiet modconf daje do dyspozycji seri˛eplików po- mocy (w /usr/lib/modules_help/), dostarczaj ˛acychszczegółowych informacji na temat odpowiednich argumentów dla ka˙zdegomodułu. Przykłady mo˙znaznale´z´cw ‘Zmodulary- zowane j ˛adro 2.4’ na 83 stronie.

2.7.6 Usuwanie starego pakietu z j ˛adrem

Skrypt kernel-image-NNN.prerm sprawdza, czy kernel, który jest aktualnie załadowany, nie jest tym samym, który usiłujemy odinstalowa´c. Mo˙znawi˛ecniechciane pakiety kerneli usuwa´cu˙zywaj˛acpolecenia

dpkg --purge --force-remove-essential kernel-image-NNN

(Oczywi´scie,w miejsce NNN trzeba wpisa´cwersj˛ei podwersj˛eusuwanego kernela). 27

Rozdział 3

Wskazówki dotycz ˛aceinstalacji Debiana

Oficjalna dokumentacja znajduje si˛ena http://www.debian.org/releases/stable/, i http://www.debian.org/releases/stable/installmanual. Natomiast wersje rozwojowe na http://www.debian.org/releases/testing/, i http: //www.debian.org/releases/testing/installmanual (ci ˛aglenad tym pracujemy). Pomimo, ˙ze„Debian Reference” został napisany podczas wydania wersji Potato, wi˛ekszo´s´c zawarto´scizostała zaktualizowana do Debian Woody (3.0r0) i Debian Sarge.

3.1 Główne wskazówki dotycz ˛aceinstalacji systemu Linux

U˙zywaniewersji testing lub unstable Debiana zwi˛ekszaryzyko powa˙znychbł˛edów. Ryzyko mo˙zezosta´cograniczone poprzez u˙zywaniewielorozruchowego schematu z bardziej stabiln ˛a wersj ˛a,lub stosuj ˛ac chroot tak jak jest to opisane w ‘chroot’ na 110 stronie. Ten drugi sposób pozwoli na u˙zywanieró˙znychwersji Debiana jednocze´sniena ró˙znychkonsolach.

3.1.1 Podstawy zgodno´scisprz˛etowych

Linux współpracuje z wi˛ekszo´sci˛asprz˛etuPC i mo˙zeby´czainstalowany prawie na ka˙zdej maszynie. Dla mnie było to równie łatwe jak instalacja Windowsa 95/98/Me. Lista wspier- anego sprz˛etustale si˛epowi˛eksza. Je´slimasz laptopa, sprawd´zLinux on Laptops (http://www.linux-laptop.net/) w celu uzyskania wskazówek dotycz ˛acychmodelu i marki. Moja rekomendacja dla sprz˛etuPC to: • SCSI zamiast IDE do pracy, IDE/ATAPI HD do u˙zytkuprywatnego. • IDE/ATAPI CD-ROM (lub CD-RW). • PCI zamiast ISA, zwłaszcza dla kart sieciowych (NIC). Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 28

• U˙zy´cukładu NIC. Dobre s ˛aTulip dla PCI, NE2000 dla ISA. • Unika´cPCMCIA (notebook) przy pierwszej instalacji. • Zadnej˙ myszki, klawiatury itp. na USB, chyba, ˙zelubisz wyzwania :) Je´slimasz wolny komputer to dobrym pomysłem jest podł ˛aczeniedysku do szybszej maszyny na czas instalacji.

3.1.2 Okre´slanieinformacji o sprz˛eciei układach płyty głównej.

Podczas instalacji b˛edzieszmusiał wybra´crodzaj swojego sprz˛etulub układ płyty głównej. Czasami nie jest łatwo znale´z´ctakie informacje. Proponuj˛ewówczas: 1. Rozkr˛e´cswój komputer i zajrzyj do ´srodka. 2. Spisz numery wi˛ekszychukładów na karcie graficznej i sieciowej, chip blisko portu sz- eregowego i IDE. 3. Spisz nazwy kart PCI i ISA, patrz ˛acna ich tyln ˛astron˛e.

3.1.3 Okre´slanieinformacji o sprz˛ecieza pomoc ˛aDebiana;

Nast˛epuj˛acepolecenia powinny Ci˛enaprowadzi´cna rodzaj sprz˛etui jego konfiguracj˛e.

$ lspci -v |pager $ pager /proc/pci $ pager /proc/interrupts $ pager /proc/ioports $ pager /proc/bus/usb/devices

Polecenia te mog ˛aby´cwydawane podczas instalacji. W celu wł ˛aczeniakonsoli wci´snijAlt-F2. Urz ˛adzeniapodł ˛aczonedo portów USB s ˛awyszczególnione w /proc/bus/usb/devices jako Cls=nn: • Cls=00 : Unused • Cls=01 : Audio (gło´snikiitp.) • Cls=02 : Communication (MODEM, NIC, . . . ) • Cls=03 : HID (klawiatura, mysz, joystick itp) • Cls=07 : Printer (drukarka) • Cls=08 : Mass storage (pami˛e´cmasowa: FDD, nap˛edCD/DVD, HDD, Flash, . . . ) • Cls=09 : Hub (USB hub) • Cls=255 : specyficzny dla dostawcy Je´sliklasa urz ˛adzeniajest ró˙znaod 255 to system je obsłu˙zy.

3.1.4 Okre´slanieinformacji o sprz˛ecieza pomoc ˛ainnego systemu operacyjnego:

Informacje o sprz˛eciemo˙znarównie˙zuzyska´c,u˙zywaj˛acinnego systemu operacyjnego. Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 29

Zainstaluj inn ˛akomercyjn ˛adystrybucj˛eLinuksa. Wykrywanie sprz˛etujest w nich jak na razie du˙zolepsze ni˙zw Debianie. Ta sytuacja powinna si˛ejednak zmieni´cwraz z debian-installer wprowadzonym w dystrybucji Sarge. Zainstaluj Windows. Konfiguracja sprz˛etowamo˙zeby´custalona poprzez klikni˛ecieprawym klawiszem myszy na ikon˛e’Mój komputer’ w celu otworzenia wła´sciwo´sci,a nast˛epnie’Mened˙zera urz ˛adze´n’.Spisz wszystkie informacje takie jak IRQ, I/O adresy portów i DMA. Niektóre stare karty ISA musz ˛aby´cinstalowane pod DOSem.

3.1.5 Mity o Lilo

„Lilo jest ograniczone do 1024 cylindrów”. NIEPRAWDA ! Nowsze lilo u˙zywanepo Debianie Potato posiada wsparcie dla lba32. Je´sli BIOS na Twojej płycie głównej obsługuje lba32 to lilo powinno by´cw stanie ładowa´cspoza 1024 cylindra. Tylko upewnij si˛e,˙zeistnieje wpis „lba32” w pliku lilo.conf je´sliposiadasz stary odpowied- nik. Zobacz /usr/share/doc/lilo/Manual.txt.gz

3.1.6 GRUB

Nowy program rozruchowy grub z projektu GNU Hurd mo˙zeby´czainstalowany na Debianie Woody:

# apt-get update # apt-get install grub-doc # mc /usr/share/doc/grub-doc/html/ ... przeczytaj zawartos´c´ # apt-get install grub # pager /usr/share/doc/grub/README.Debian ... to te˙z:)

By zmieni´cmenu GRUB wyedytuj /boot/grub/menu.lst. Zobacz ‘Ustawianie parametrów uruchomieniowych GRUB’ na 92 stronie, ˙zebysi˛edowiedzie´cjak to zrobi´c,poniewa˙zprogram ten ró˙znisi˛ew konfiguracji od lilo.

3.1.7 Wybór zestawu dyskietek startowych

Dla Potato i zwykłej instalacji dla domowego komputera lubi˛eu˙zywa´czestawu dyskietek IDE- PCI. Dla Woodiego preferuj˛ezestaw dyskietek bf2.4. Obie u˙zywaj˛apakietu boot-floppies do tworzenia dyskietek startowych. Je´sliposiadasz kart˛esieciow ˛aPCMCIA, b˛edzieszmusiał u˙zy´cstandardowego zestawu dyski- etek (wi˛ekszailo´s´c,ale wszystkie moduły sterowników s ˛adost˛epne)i skonfigurowa´ckart˛e Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 30

podczas ustawiania PCMCIA; nie próbuj konfigurowa´ckarty podczas standardowej konfigu- racji sieci. Dla specyficznych systemów mo˙zewyst ˛´cpotrzeba stworzenia własnej dyskietki ratunkowej. Mo˙znatego dokona´cpodmieniaj ˛acobraz j ˛adrao nazwie „linux” na standardowej dyskietce ratunkowej Debiana, na inny skompilowany wcze´sniejna innej maszynie. Szczegóły s ˛aopisane w pliku readme.txt, który znajduje si˛ena wspomnianej dyskietce. Dyskietka ratunkowa ko- rzysta z systemu plików MS-DOS, tak wi˛ecmo˙znau˙zy´cdowolnego systemu operacyjnego by j ˛aodczyta´ci zmodyfikowa´c. To powinno upro´sci´c ˙zycieludziom posiadaj ˛acymspecyficzne karty sieciowe itp. Dla Sarge zalecane jest u˙zywanie debian-installer i/lub pgi do tworzenia dyskietek rozruchowych.

3.1.8 Instalacja

Stosuj si˛edo oficjalnych instrukcji przedstawionych na http://www.debian.org/releases/ stable/installmanual lub http://www.debian.org/releases/testing/installmanual (ci ˛aglenad tym pracujemy). Je´sliinstalujesz system u˙zywaj˛acdyskietek startowych w testowym wydaniu Debiana mo˙zesz by´czmuszony do wł ˛aczeniakonsoli wciskaj ˛acAlt-F2 i r˛ecznejedycji pliku /etc/sources.list w celu zmiany „stable” na „testing” by okre´sli´c´zródłaAPT. Zamierzam umie´sci´c lilo na partycji /dev/hda3, podczas instalowania mbr na dysku /dev /hda. To zmniejszy ryzyko nadpisania informacji startowych. Podczas instalacji wybieram: • MD5 passwords „tak” • shadow passwords „tak” • Instalacja „advanced” (dselect **) i wybieram – Wył ˛aczy´cemacs (je´slizaznaczony), nvi, tex, telnet, talk(d); – Zał ˛aczy´cmc, vim oraz nano-tiny lub elvis-tiny. Zobacz ‘dselect’ na 63 stronie. Nawet je´slijeste´sprzyzwyczajony do Emacsa unikaj go teraz i korzystaj z nano podczas instalacji. Na razie nie instaluj du˙zychpakietów takich jak TeX (miało to miejsce w Potato). Zobacz ‘Edytory awaryjne’ na 160 stronie by dowiedzie´csi˛eo instalacji nano-tiny lub elvis-tiny. • Na wszelkie pytania podczas konfiguracji pakietów odpowiadam „y”. • exim: wybieram 2 dla maszyn poniewa˙zwysyłam poczt˛epoprzez serwer SMTP mojego dostawcy Internetu. Wi˛ecejinformacji na temat dselect znajdziesz tu - ‘dselect’ na 63 stronie.

3.1.9 Nazwy hostów i adresy IP u˙zywanew sieci LAN

Przykład konfiguracji sieci LAN (C podsie´c:192.168.1.0/24): Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 31

Internet | +--- Zewn˛etrznyISP zapewnia usług˛ePOP (dost˛eppoprzez fetchmail) | Punkt dost˛epowyzapewnia usługi DHCP i SMTP | : Modem kablowy (Dialup) | : Bramka sieciowa, zewn˛etrznyinterfejs: eth0 (numer IP przydzielony przez DHCP) u˙zywastarego notebooka PC (IBM Thinkpad, 486 DX2 50 MHz, 20MB RAM) uruchomione j ˛adroLinux 2.4 z obsług ˛asystemu plików ext3. uruchomiony pakiet ,,ipmasq’’ (z poprawkami NAT i firewall) uruchomiony pakiet ,,dhcp-client’’ ustawiony dla eth0 (podmienia ustawienia DNS) uruchomiony pakiet ,,dhcp’’ skonfigurowany dla eth1 uruchomiony ,,exim’’ jako smarthost (tryb 2) uruchomiony ,,fetchmail’’ z długimi odst˛epamiczasu (fallback) uruchomiony ,,bind’’ jako buforuj ˛acyserwer nazw z sieci do Internetu jako autorytatywny serwer nazw dla sieci wewn˛etrznej uruchomione ,,ssh’’ na portach 22 i 8080 (mo˙zliwos´c´ poł ˛aczeniask ˛adkolwiek) uruchomiony ,,squid’’ jako buforuj ˛acyserwer dla archiwów Debiana (APT) Bramka sieciowa, wewn˛etrznyinterfejs: eth1 (IP = 192.168.1.1, stały) | +--- LAN Switch (10 base T) ---+ | | Kilka klientów ze stałymi IP Kilka klientów DHCP (IP = 192.168.1.2-127, stałe) (IP = 192.168.1.128-200, dynamiczne)

Zobacz ‘Tworzenie bramy sieciowej z systemem Debian’ na 153 stronie by uzyska´cwi˛ecej szczegółów na temat konfiguracji bramki sieciowej.

3.1.10 Konta u˙zytkowników

By mie´cpoczucie spójno´scina ró˙znychmaszynach, na pocz ˛atkuzakładam kilka takich samych kont.

Zawsze pierwsze konto które zakładam nosi nazw˛e„admin” lub podobn ˛ai kieruj˛ena nie wszystkie listy roota. Konto to przydzielam do grupy adm (zobacz ‘„Dlaczego GNU su nie obsługuje grupy wheel”’ na 118 stronie), która pozwala na przyznanie wielu przywilejów administratora poprzez su za pomoc ˛aPAM lub polecenia sudo. Szczegóły znajdziesz w ‘Do- dawanie konta u˙zytkownika’na 48 stronie. Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 32

3.1.11 Tworzenie systemów plików

Partycje twardego dysku

Wol˛ezakłada´cosobne partycje dla poszczególnych katalogów z drzewa „/” by unikn ˛a´cutraty danych w przypadku awarii systemu itp.

/ == (/ + /boot + /bin + /sbin) == 50MB+ /tmp == 100MB+ /var == 100MB+ /home == 100MB+ /usr == 700MB+ z Xami /usr/local == 100MB

Rozmiar katalogu /usr zale˙zyod miejsca jakie zajmuj ˛aaplikacje i dokumentacja X Window. /usr mo˙zemie´crozmiar 300MB je´slikto´su˙zywatylko trybu tekstowego, ale 2GB–3GB nie jest niczym szczególnym podczas korzytania z wielu aplikacji Gnome. Gdy katalog /usr b˛edzie zajmował zbyt du˙zomiejsca mo˙znaprzenie´s´cpliki z /usr/share/ na inn ˛apartycje. Przy j ˛adrach2.4 katalog root mo˙zepotrzebowa´cponad 200MB Obecny stan mojej maszyny wygl ˛adanast˛epuj˛aco(wydruk uzyskasz wprowadzaj ˛acpolecenie df -h):

System plików rozm. u˙zyte dost. %u˙z.zamont. na /dev/hda3 300M 106M 179M 38% / /dev/hda7 100M 12M 82M 13% /home /dev/hda8 596M 53M 513M 10% /var /dev/hda6 100M 834k 94M 1% /var/lib/cvs /dev/hda9 596M 222M 343M 40% /usr /dev/hda10 596M 130M 436M 23% /var/cache/apt/archives /dev/hda11 1.5G 204M 1.2G 14% /var/spool/squid

(Du˙zyobszar zarezerwowany dla /var/spool/squid przeznaczony jest na serwer po´sred- nicz ˛acydla pobierania pakietów.) Wprowadzaj ˛acpolecenie fdisk -l uzyskujemy informacje o wszystkich partycjach na twardym dysku:

# fdisk -l /dev/hda # komentarz

/dev/hda1 1 41 309928+ 6 FAT16 # DOS /dev/hda2 42 84 325080 83 Linux # (nie u˙zywana) /dev/hda3 * 85 126 317520 83 Linux # Główna /dev/hda4 127 629 3802680 5 Extended Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 33

/dev/hda5 127 143 128488+ 82 Linux swap /dev/hda6 144 157 105808+ 83 Linux /dev/hda7 158 171 105808+ 83 Linux /dev/hda8 172 253 619888+ 83 Linux /dev/hda9 254 335 619888+ 83 Linux /dev/hda10 336 417 619888+ 83 Linux /dev/hda11 418 629 1602688+ 83 Linux

Istnieje kilka nieu˙zywanychpartycji. S ˛aone zało˙zonez my´sl˛ao innych systemach - cyjnych, b ˛ad´zprzenoszeniu danych z obci ˛a˙zonychcz˛e´scidysku.

Montowanie systemów plików.

Poprawne montowanie powy˙zszychsystemów plików jest realizowane nast˛epuj˛acymplikiem /etc/fstab:

# /etc/fstab: statyczna informacja o systemach plików. # # (system plikow) (punkt montowania) (typ) (opcje) (dump) (pass) /dev/hda3 / ext2 defaults,errors=remount-ro 0 1 /dev/hda5 none swap sw 0 0 proc /proc proc defaults 0 0 /dev/fd0 /floppy auto defaults,user,noauto 0 0 /dev/cdrom /cdrom iso9660 defaults,ro,user,noauto 0 0 # # trzymaj partycje osobno /dev/hda7 /home ext2 defaults 0 2 /dev/hda8 /var ext2 defaults 0 2 /dev/hda6 /var/lib/cvs ext2 defaults 0 2 # noatime przyspieszy odczyt plików /dev/hda9 /usr ext2 defaults,noatime 0 2 /dev/hda10 /var/cache/apt/archives ext2 defaults 0 2

# bardzo du˙zapartycja dla serwera posredniczacego´ (proxy) /dev/hda11 /var/spool/squid ext2 rw 0 2

# zapasowa partycja rozruchowa DOS /dev/hda1 /mnt/dos vfat rw,noauto 0 0 # zapasowa partycja rozruchowa Linux (nie zrobiona) /dev/hda2 /mnt/linux ext2 rw,noauto 0 0 # # punkty montowan´ nfs mickey:/ /mnt/mickey nfs ro,noauto,intr 0 0 Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 34

goofy:/ /mnt/goofy nfs ro,noauto,intr 0 0 # minnie:/ /mnt/minnie smbfs ro,soft,intr,credentials={filename} 0 2

Przy NFS, u˙zywamopcji noauto,intr w poł ˛aczeniuz domy´sln˛aopcj ˛a hard. Tym sposobem, istnieje mo˙zliwo´s´cwciskaj ˛ackombinacj˛eCtrl-C, uratowania si˛ez sytuacji gdy nie mamy poł ˛aczenia i proces montowania zawiesi si˛e. W przypadku maszyny z systemem Windows podł ˛aczonejpoprzez Samb˛e(smbfs), opcje rw,auto,soft,intr powinny by´codpowiednie. Zobacz ‘Konfiguracja Samby’ na 39 stronie. Dla stacji dyskietek u˙zycieopcji noauto,rw,sync,user,exec zapobiega uszkodzeniu plików przy przypadkowym wyj˛eciudyskietki przed jej odmontowaniem. Dzieje si˛eto jednak kosztem wolniejszego zapisu.

Montowanie autofs

Wskazówki do automatycznego montowania: • Załaduj moduł vfat by /etc/auto.misc zawierało -fstype=auto: # modprobe vfat # przed prób ˛adost˛epudo dyskietki ... lub by zautomatyzowac´ t˛eczynnos´c,´ # cat >>/etc/modules vfat ^D ... nast˛epnieuruchom ponownie system. • Ustaw /etc/auto.misc nast˛epuj˛aco: floppy -fstype=auto,sync,nodev,nosuid,gid=100,umask=000 :/dev/fd0 ... gdzie gid=100 to ,,users’’. • Stwórz dowi ˛azania cdrom i floppy w /home/user, które wskazywa´cb˛ed˛ana /var /autofs/misc/cdrom i /var/autofs/misc/floppy. • Przydziel u˙zytkownika user do grupy „users”.

Montowanie NFS

Zewn˛etrznyserwer Linux NFS (goofy) znajduje si˛eza ´scian˛aogniow ˛a(bramk ˛asieciow ˛a).Za- sady bezpiecze´nstwaw mojej sieci w stosunku do niego s ˛amniej restrykcyjne poniewa˙zjestem jego jedynym u˙zytkownikiem.By umo˙zliwi´cdost˛epdo NFS, trzeba po jego stronie doda´cdo /etc/exports nast˛epuj˛acewpisy:

# /etc/exports: the access control list for filesystems which may be # exported to NFS clients. See exports(5). / (rw,no_root_squash)

Chc ˛acuruchomi´cserwer NFS potrzebne s ˛apowy˙zszewpisy oraz oczywi´scieinstalacja i uru- chomienie klienta i serwer NFS. Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 35

Dla uproszczenia zazwyczaj tworz˛epojedyncz ˛apartycj˛eo rozmiarze 2GB na eksperymen- talne instalacje Linuksa. Opcjonalnie współdziel˛epomi˛edzytymi instalacjami partycj˛ewymi- any oraz /tmp. Schematy zawieraj ˛acewiele partycji s ˛arównie˙zprzydatne w takich instalac- jach. Je´slinatomiast potrzeba nam prostego systemu w trybie konsoli, w zupełno´scipowinno wystarczy´c500MB.

3.1.12 Wytyczne dotycz ˛acepami˛eciDRAM

Bezwzgl˛ednewytyczne dotycz ˛aceDRAM.

4MB: Absolutne minimum by j ˛adroLinuksa mogło funkcjonowac.´ 16MB: Minimum dla rozs ˛adnejpracy w konsoli. 32MB: Minimum dla prostego systemu X. 64MB: Minimum dla systemu X z GNOME/KDE. 128MB: Komfortowa praca w systemie X z GNOME/KDE. 256MB (lub wi˛ecej): Dlaczego nie jesli´ jestes´ w stanie je zdobyc?´ DRAM jest tani.

Mo˙zeszpodczas rozruchu systemu u˙zy´copcji mem=4m (lub w lilo append=“mem=4m”) by sprawdzi´cjak zachowa si˛esystem z 4MB pami˛ecioperacyjnej. Je´sliposiadasz stary BIOS i wi˛ecejni˙z64MB pami˛ecito równie˙zmusisz u˙zy´codpowiedniego parametru w lilo.

3.1.13 Przestrze ´nwymiany

U˙zywamnast˛epuj˛acychwytycznych dla przestrzeni wymiany: • Ka˙zdapartycja wymiany jest < 128MB (je´sliu˙zywaszj ˛ader2.0 ), < 2GB (dla nowszych j ˛ader) • Cało´s´c= albo (1 do 2 razy rozmiar zainstalowanego ramu) albo (128MB do 2GB) jako punkt wyj´scia • Rozdziel je na osobne nap˛edyi zamontuj wszystkie z opcjami sw,pri=1 w /etc/fstab. Powoduje to, ˙zej ˛adro obsługuje przestrze´nwymiany jako paskowany RAID co gwaran- tuje maksymaln ˛awydajno´s´c. • Je´slito mo˙zliweu˙zywajcentralnej cz˛e´scidysku do stworzenia partycji wymiany. Nawet je´slinie potrzebujesz, to i tak po˙z˛adanejest ustawienie partycji wymiany (128MB) po to by system zwolnił zanim zawiesi si˛ez powodu programu z wyciekiem pami˛eci.

3.2 Konfiguracja Bash

Modyfikuj˛eskrypty startowe powłoki znajduj ˛acesi˛ew systemie tak by spełniały moje zach- cianki:

/etc/bash.bashrc Zast˛epuj˛ewłasnym Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 36

/etc/profile Pozostawiam bez zmian(\w -> \W) /etc/skel/.bashrc Zast˛epuj˛ewłasnym /etc/skel/.profile Zast˛epuj˛ewłasnym /etc/skel/.bash_profile Zast˛epujewłasnym ~/.bashrc Zast˛epuj˛ewłasnym dla ka˙zdegokonta ~/.profile Zast˛epuj˛ewłasnym dla ka˙zdegokonta ~/.bash_profile Zast˛epuj˛ewłasnym dla ka˙zdegokonta

Zobacz szczegóły moich przykładowych skryptów (examples/). Lubi˛emie´cprzejrzysty sys- tem wi˛ecustawiam umask na 002 lub 022. PATH jest ustawiany poprzez nast˛epuj˛acepliki konfiguracyjne w tej kolejno´sci:

/etc/login.defs - zanim powłoka ustawi zmienn ˛aPATH /etc/profile (mo˙zewywoływac´ /etc/bash.bashrc) ~/.bash_profile (mo˙zewywoływac´ ~/.bashrc)

3.3 Konfiguracja myszy

3.3.1 Myszy PS/2

W przypadku płyty głównej ATX i myszy podł ˛aczonejprzez PS/2, przepływ sygnału powinien by´cnast˛epuj˛acy:

mysz -> /dev/psaux -> gpm -> /dev/gpmdata = /dev/mouse -> X

W tym przypadku utworzone zostało dowi ˛azaniesymboliczne /dev/mouse wskazuj ˛acena /dev/gpmdata po to by niektóre narz˛edziakonfiguracyjne były szcz˛e´sliwei by rekonfigu- racja była prostsza. (Je´slina przykład zrezygnujesz z u˙zywania gpm wystarczy, ˙zepo jego usuni˛eciuzmienisz dowi ˛azaniesymboliczne /dev/mouse tak by wskazywało na /dev/psaux). Taki przepływ sygnału pozwala na wył ˛aczenieklawiatury oraz myszki oraz po ponownym ich podł ˛aczeniuuruchamiaj ˛ac gpm umo˙zliwiajeszcze raz je zainicjalizowa´c.Serwer X pozostanie uruchomiony! Protokół sygnału przepływaj ˛acegopomi˛edzywyj´sciem gpm a wej´sciemX mo˙zeby´czaimple- mentowany na dwa sposoby. Albo jako „ms3” (u˙zywaprotokołu dla szeregowych 3 przy- ciskowych myszek Microsoft) albo jako „raw” (u˙zywatego samego protokołu co podł ˛aczona myszka). Wybór ten determinuje pó´zniejszywybór protokołu u˙zywanegow konfiguracji X. By zademonstrowa´ckonfiguracj˛e,za przykład posłu˙zymi 3-przyciskowa mysz firmy Logitech (tradycyjna mysz stylu Unix) podł ˛aczanado portu PS/2. Je´slitwoja karta graficzna nie jest wspierana przez nowy X4 i musisz u˙zywa´cstarego X3 (niek- tóre 64 bitowe karty ATI), skonfiguruj /etc/X11/X86Config zamiast /etc/X11/X86Config-4 w nast˛epuj˛acysposób podczas instalacji pakietów X3. Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 37

Wariant ms3

/etc/gpm.conf | /etc/X11/X86Config-4 ======+======device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=ms3 | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "IntelliMouse" | EndSection

Je´sliu˙zywasztakiego podej´scia,konfiguracja myszy odbywa si˛epoprzez edycj˛e gpm.conf, natomiast konfiguracja X zostaje niezmieniona. Zobacz przykłady moich skryptów konfigura- cyjnych (examples/).

Wariant raw

/etc/gpm.conf | /etc/X11/X86Config-4 ======+======device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "MouseManPlusPS/2" | EndSection

Je´sliu˙zywasztakiego podej´scia,konfiguracja myszy odbywa si˛epoprzez edycj˛e gpm.conf oraz konfiguracj˛eXów.

Jak doda´cinn ˛amyszk˛e

Urz ˛adzenie gpm typu autops2 powinno rozpozna´cwi˛ekszo´s´cmyszek PS/2 dost˛epnychna rynku. Niestety nie zawsze działa i nie jest dost˛epnew poprzednikach wersji Woody. Spróbuj w takich przypadkach u˙zy´c ps2 lub imps2 w pliku gpm.conf zamiast autops2. By dowiedzie´c si˛ewi˛ecejo typach myszy gpm wpisz :gpm -t help. Zobacz gpm(8). Je´sliu˙zywasz2-przyciskowej myszy PS/2, ustaw protokół X wł ˛aczaj˛acopcje Emulate3Buttons. Ró˙znicemi˛edzyprotokołami 2-przyciskowej i 3-przyciskowej myszy s ˛aautomatycznie rozpoz- nawane i ustawiane przez gpm po naci´sni˛eciu´srodkowego przycisku. Dla protokołu X z ‘Wariant raw’ na bie˙z˛acejstronie lub bez gpm u˙zyj: • IntelliMouse: szeregowy port myszy (gpm repeater with „ms3”) • PS/2: port myszy PS/2 (zawsze to testuj na pocz ˛atku) Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 38

• IMPS/2: inny port PS/2 (2, 3, lub mysz z kółkiem, lepiej) • MouseManPlusPS/2: port myszy Logitech PS/2 • ... Zobacz wi˛ecejna Mouse Support in XFree86 (http://www.xfree86.org/current/mouse. html). Typowe myszy Microsoft z kółkiem najlepiej pracuj ˛az:

/etc/gpm.conf | /etc/X11/X86Config-4 ======+======device=/dev/psaux | Section "InputDevice" responsiveness= | Identifier "Configured Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "CorePointer" append="" | Option "Device" "/dev/mouse" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection

Dla nowszych laptopów Toshiba wł ˛aczenie gpm przed PCMCIA w skryptach inicjalizuj ˛acych System-V mo˙zepomóc przy zapobieganiu zawieszenia systemu. Dziwne ale to prawda.

3.3.2 Mysz na USB

Upewnij si˛e,˙zemasz: • Wkompilowane w j ˛adro lub jako moduł „Input Core Support” i „Input Core Support/Mouse Support” • Wkompilowane w j ˛adro lub jako moduł „Support for USB”, „Preliminary USB device filesystem”, „UHCI or OHCI”, i „USB HID Support” • Zainstaluj hotplug i ustaw X11_USBMICE_HACK=true w pliku /etc/default/hotplug.usb Je´sliu˙zywaszdevfs to stwórz wpis w /dev/input/mice zawieraj ˛acymajor 13 i minor 63 w nast˛epuj˛acysposób:

# cd /dev # mkdir input # mknod input/mice c 13 63

Dla typowej myszki z kółkiem na USB konfiguracja powinna wygl ˛ada´cnast˛epuj˛aco:

/etc/gpm.conf | /etc/X11/X86Config-4 ======+======device=/dev/input/mice | Section "InputDevice" Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 39

responsiveness= | Identifier "Generic Mouse" repeat_type=raw | Driver "mouse" type=autops2 | Option "SendCoreEvents" "true" append="" | Option "Device" "/dev/input/mice" sample_rate= | Option "Protocol" "IMPS/2" | Option "Buttons" "5" | Option "ZAxisMapping" "4 5" | EndSection

By dowiedzie´csi˛ewi˛ecejodwied´zLinux USB Project (http://www.linux-usb.org/)

3.3.3 Touchpad

Pomimo, ˙zetouchpad w laptopach emuluje standardowo 2-przyciskow ˛amysz PS/2, pakiet tpconfig pozwala na pełn ˛akontrol˛enad urz ˛adzeniem.Przykładowo ustawienie OPTIONS=“--tapmode=0” w /etc/default/tpconfig wył ˛aczyzachowanie „click by tap”. Ustaw /etc/gpm.conf nast˛epuj˛aco,by u˙zywa´cjednocze´snietouchpada i myszy na porcie USB pod konsol ˛a:

device=/dev/psaux responsiveness= repeat_type=ms3 type=autops2 append="-M -m /dev/input/mice -t autops2" sample_rate=

3.4 Konfiguracja NFS

Konfiguracja NFS odbywa si˛epoprzez przez ustawienie /etc/exports.

# echo "/ *.nazwa-domeny-dla-lokalnych(rw,no_root_squash,nohide)" \ >> /etc/exports

Szczegóły znajdziesz w moich przykładowych skryptach (examples/).

3.5 Konfiguracja Samby

Szczegółowe informacje: • http://www.samba.org/ • pakiet samba-doc Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 40

Ustawienie serwera Samba w trybie „share” jest du˙zoprostsze poniewa˙ztworzy współdzielone nap˛edytypu WindowsForWorkgroups. Ale tryb „user” jest preferowan ˛ametod ˛a. Samba mo˙zezosta´cskonfigurowana poprzez debconf lub vi:

# dpkg-reconfigure --priority=low samba # w Woody # vi /etc/samba/smb.conf

Szczegóły znajdziesz w moich przykładowych skryptach (examples/). Dodawanie nowego u˙zytkownikado pliku smbpasswd mo˙zeby´cwykonane poprzez smbpasswd:

$ su -c "smbpasswd -a username"

Pami˛etajo u˙zyciuzaszyfrowanych haseł dla optymalnej zgodno´sci. Ustaw os level zgodnie z nast˛epuj˛acymiodpowiednikami systemu (im wi˛ekszaliczba, tym wi˛ekszypriorytet jako serwer)

0: Samba ze swobodn ˛apozycj ˛a(nigdy nie b˛edzieprzegl ˛adark˛anadrz˛edn˛a) 1: WfW 3.1, Win95, Win98, Win/Me? 16: Win NT WS 3.51 17: Win NT WS 4.0 32: Win NT SVR 3.51 33: Win NT SVR 4.0 255: Samba z pot˛e˙zn˛amoc ˛a

Upewnij si˛e,˙zeu˙zytkownicys ˛aczłonkami grupy do której przynale˙zykatalog umo˙zliwiaj˛acy współdzielony dost˛ep,oraz ˙ze´scie˙zkado tego katalogu posiada odpowiednio ustawione up- rawnienia bitu wykonywalno´sci.

3.6 Konfiguracja drukarki

Tradycyjn ˛ametod ˛ajest lpr/lpd. Istnieje nowy system drukowania CUPS™ (Common UNIX Printing System). Inn ˛amo˙zliwo´sci˛ajest PDQ. Zobacz Linux Printing HOWTO (http://www. tldp.org/HOWTO/Printing-HOWTO.html) w celu uzyskania dodatkowych informacji.

3.6.1 lpr/lpd

Dla programów kolejkuj ˛acychtypu lpr/lpd (lpr, lprng i gnulpr) podł ˛aczonychdo drukarek PostScript lub tekstowych ustaw /etc/printcap nast˛epuj˛aco(podstawy): Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 41

lp|alias:\ :sd=/var/spool/lpd/lp:\ :mx#0:\ :sh:\ :lp=/dev/lp0:

Znaczenie powy˙zszychlinii: • Nagłówek: lp – nazwa kolejki, alias = alias • mx#0 – maksymalny rozmiar pliku nieograniczony • sh – wstrzymywanie drukowania sekwencji nagłówków stron • lp=/dev/lp0 – lokalne urz ˛adzeniedrukuj ˛ace,lub port@komputer dla zdalnych To dobra konfiguracja je´sliposiadasz drukark˛ePostScript. Jest to równie˙zdobre ustawienie do drukowania z maszyny Windows poprzez Samb˛e,dla ka˙zdejdrukarki obsługiwanej przez Windows (nie jest obsługiwana komunikacja dwukierunkowa). Musisz wybra´codpowiednie ustawienia drukarki na maszynie z Windows. Je´slinie masz drukarki PostScript powiniene´sustawi´cfiltrowanie za pomoc ˛a gs. Istnieje wiele narz˛edziautomatycznie konfiguruj ˛acych /etc/printcap. Ka˙zdaz tych kombinacji jest wła´s- ciwa: • gnulpr,(lpr-ppd) i printtool – Wła´snietego u˙zywam. • lpr i apsfilter • lpr i magicfilter • lprng i lprngtool • lprng i apsfilter • lprng i magicfilter W przypadku uruchamiania narz˛edziakonfiguracyjnego wykorzystuj ˛acegograficzny interfejs u˙zytkownika,jak na przykład printtool, zobacz najpierw ‘Uprawnienia administratora w X’ na 135 stronie aby dowiedzie´csi˛ejak uzyska´cprzywileje administratora. Kolejki wydruku utworzone przez printtool u˙zywaj˛aprogramu gs i wyst˛epuj˛ajako drukarki PostScript. Dlatego, gdy z nich korzystasz, u˙zywajsterowników PostScriptowych. W systemie Windows „Apple LaserWriter” jest standardowym przykładem takiej drukarki..

3.6.2 CUPS™

Zainstaluj Common UNIX Printing System (lub CUPS™):

# apt-get install cupsys cupsomatic-ppd # apt-get install cupsys-bsd cupsys-driver-gimpprint

Nast˛epnieskonfiguruj system u˙zywaj˛acprzegl ˛adarkiinternetowej:

$ mybrowser http://localhost:631

Przykład w jaki sposób doda´cdrukark˛edo listy dost˛epnych: Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 42

• na głównej stronie kliknij „Printers”, a nast˛epnie„Add Printer”,

• wpisz u˙zytkownika„root” i podaj jego hasło,

• post˛epujwedług instrukcji by doda´cdrukark˛e

• wró´cdo strony „Printers” i kliknij „Configure Printer”, nast˛epnie

• ustaw rozmiar papieru, rozdzielczo´s´ci inne parametry.

Wi˛ecejinformacji znajdziesz na http://localhost:631/documentation.html i http: //www.cups.org/cups-help.html. Dla j ˛adra2.4 zobacz równie˙z‘Wsparcie dla portów równoległych’ na 87 stronie.

3.7 Inne wskazówki instalacyjne

3.7.1 Doinstaluj jeszcze troch˛epakietów po wst˛epnejinstalacji

Je´sliwszystko przebiegło bez problemów to posiadasz ju˙zmały, funkcjonalny system Debian. Czas na instalacj˛ewi˛ekszychpakietów.

• Uruchom tasksel. Zobacz ‘Instalowanie zada´n programem tasksel lub aptitude’ na 62 stronie. Mo˙zeszwybra´cnast˛epuj˛aceelementy je´slis ˛aCi potrzebne: – End-user – X window system – Development – C i C++ – Development – Python – Development – Tcl/Tk – Miscellaneous – ´srodowisko TeX/LaTeX – Dla innych wol˛eu˙zywa´c tasksel jako przewodnika po komponentach wyszczegól- nionych w i instalowa´cje programem dselect.

• Uruchom dselect. Pierwsz ˛arzecz ˛ajak ˛amo˙zeszzrobi´cjest wybór Twojego ulubionego edytora i innych programów, które s ˛aCi potrzebne. Mo˙zeszzainstalowa´cwiele odmian Emacsa na raz. Zobacz ‘dselect’ na 63 stronie i ‘Popularne edytory’ na 159 stronie. Mo˙zeszrównie˙zzast ˛api´cniektóre domy´slnepakiety takimi z wi˛ekszymimo˙zliwo´sciami. – -ssh (zamiast lynx) – ...

• ...

Zazwyczaj edytuj˛e /etc/inittab w celu łatwego wył ˛aczaniakomputera. Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 43

... # Co zrobic´ gdy wcisni˛etes´ ˛aklawisze CTRL-ALT-DEL ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now ...

3.7.2 Moduły

Moduły dla sterowników urz ˛adze´ns ˛akonfigurowane podczas podstawowej instalacji. modconf oferuje mo˙zliwo´s´ckonfiguracji modułów przy pomocy systemu menu. Jest on bardzo u˙zyteczny, gdy jakie´smoduły zostały opuszczone podczas instalacji nowego j ˛adra. Nazwy wszystkich wst˛epnieładowanych modułów s ˛awyszczególnione w pliku /etc/modules. U˙zywamrównie˙z lsmod i depmod by sterowa´cnimi r˛ecznie. Dla j ˛adra2.4 dodaj wpis w pliku /etc/modules pozwalaj ˛acyobsłu˙zy´cIP masquerading (FTP, itp.). Zobacz ‘Zmodularyzowane j ˛adro 2.4’ na 83 stronie, a dokładniej ‘Obsługa sieci’ na 84 stronie.

3.7.3 Podstawy instalacji CD-RW

Wyedytuj nast˛epuj˛acepliki:

/etc/lilo.conf (dodaj append="hdc=ide-scsi ignore=hdc", uruchom lilo w celu aktywacji) /dev/cdrom (symlink # cd /dev; ln -sf scd0 cdrom) /etc/modules (dodaj "ide-scsi" i "sg". Jesli´ b˛edzieto konieczne to równie˙z "sr".)

Zobacz ‘Nagrywarki CD’ na 120 stronie by dowiedzie´csi˛ewi˛ecej.

3.7.4 Automatyczne wył ˛aczaniekomputera oraz komputery z wi˛eksz˛ailo´sci˛apami˛eci

Zmodyfikuj /etc/lilo.conf wg instrukcji poni˙zejaby uwzgl˛edni´cobsług˛ewi˛ekszegorozmi- aru pami˛eci(dla j ˛ader2.2) oraz automatycznego wył ˛aczania(dla APM):

append="mem=128M apm=on apm=power-off noapic"

Teraz uruchom lilo aby zainstalowa´cte ustawienia. apm=power-off jest wymagane dla j ˛aderz obsług ˛awielu procesorów, a noapic jest potrzebne by unika´ckłopotów z moim wadli- wym sprz˛etem. Tego samego mo˙znadokona´cwpisuj ˛acpodane opcje bezpo´srednio podczas ukazania si˛eznaku zach˛etyprogramu uruchomieniowego. Zobacz ‘Inne triki stosowane pod- czas startu systemu’ na 92 stronie. Je´sliAPM jest kompilowany jako moduł, jak to ma miejsce w domy´slnymj ˛adrzeDebiana 2.4, uruchom # insmod apm power_off=1 po wystartowaniu systemu lub wpisz odpowiednie opcje do /etc/modules, na przykład tak: Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 44

# echo "apm power_off=1" >>/etc/modules

Kompiluj ˛acobsług˛eACPI mo˙znaosi ˛agn˛a´cto samo z nowszymi j ˛adramii wygl ˛adana to, ˙ze jest to bardziej przyjazne dla wieloprocesorowych maszyn (wymaga to jednak nowszej płyty głównej). Na j ˛adrachz serii 2.4 i nowszych płytach głównych wi˛ekszeilo´scipami˛ecipowinny by´cwykrywane prawidłowo.

CONFIG_PM=y CONFIG_ACPI=y ... CONFIG_ACPI_BUSMGR=m CONFIG_ACPI_SYS=m i dodaj w tej kolejno´sciponi˙zszelinie do /etc/modules:

ospm_busmgr ospm_system

Lub przekompiluj j ˛adro z tymi opcjami ustawionymi na „y”. W ˙zadnymz przypadków u˙zycia ACPI, nie s ˛apotrzebne ˙zadneparametry podczas uruchamiania.

3.7.5 Dziwne kłopoty z dost˛epemdo witryn WWW.

W nowszych j ˛adrachLinuksa standardowo wł ˛aczonejest ECN. Mo˙zeto powodowa´cproblemy z dost˛epemdo niektórych witryn WWW. By sprawdzi´cstatus ECN:

# cat /proc/sys/net/ipv4/tcp_ecn ... lub # sysctl net.ipv4.tcp_ecn

Chc ˛acgo wył ˛aczy´c,u˙zyj:

# echo "0" > /proc/sys/net/ipv4/tcp_ecn ... lub # sysctl -w net.ipv4.tcp_ecn=0

W celu wył ˛aczeniaECN podczas ka˙zdegorestartu, wyedytuj plik /etc/sysctl.conf i do- daj:

net.ipv4.tcp_ecn = 0 Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 45

3.7.6 Konfiguracja poł ˛aczeniamodemowego (Dialup PPP)

Zainstaluj pakiet pppconfig w celu skonfigurowania poł ˛aczeniaz Internetem za pomoc ˛a modemu.

# apt-get install pppconfig # pppconfig ... stosuj si˛edo wskazówek by skonfigurowac´ poł ˛aczeniemodemowe # adduser nazwa_u˙zytkownika dip ... pozwól u˙zytkownikowi >nazwa_u˙zytkownika na dost˛epdo modemu

Poł ˛aczeniemodemowe mo˙zeby´czainicjowane przez u˙zytkownika(>nazwa_u˙zytkownika):

$ pon nazwa_ISP # rozpocz˛eciedost˛epupoprzez modem do Twojego ISP ... mo˙zeszcieszyc´ si˛eInternetem $ poff nazwa_ISP # zatrzymuje dost˛ep, nazwa_ISP dowolna.

Wi˛ecejinformacji znajdziesz na /usr/share/doc/ppp/README.Debian.gz. Do skonfigurowania poł ˛aczeniamodemowego mo˙zeby´cte˙zu˙zytypakiet wvdial.

3.7.7 Inne pliki konfiguracyjne do dostrojenia w /etc

Mo˙zeszchcie´cdoda´cplik /etc/cron.deny, brakuj ˛acypo podstawowej instalacji Debiana (skopiuj /etc/at.deny) Rozdział 3. Wskazówki dotycz ˛aceinstalacji Debiana 46 47

Rozdział 4

Samouczki Debiana

Ten rozdział przedstawia nowym u˙zytkownikompodstawow ˛awiedz˛eo ´swiecieLinuksa. Je´sli u˙zywałe´sju˙zLinuksa, potraktuj go jako przypomnienie wiadomo´sci.

4.1 Zródła´ informacji

Patrz do Debian Documentation Project (DDP) (http://www.debian.org/doc/), gdzie znajduj ˛asi˛enajbardziej wiarygodne informacje o Debianie. Zazwyczaj wiele z tych doku- mentów jest instalowanych w /usr/share/doc/. Spójrz te˙zdo /usr/share/doc-base/, gdzie zamieszczone s ˛aodno´snikido dokumentacji systemu. Dodaj export CDPATH=.:/usr/share/doc:/usr/src/local do ~/.bash_profile, aby mie´cłatwiejszy dost˛epdo katalogów z dokumentacj ˛a. Linux Documentation Project (LDP) (http://www.tldp.org/) posiada najbardziej wiary- godne, ogólne informacje o Linuksie. Zawarto´s´cLDP jest zwykle instalowana w /usr/share /doc/HOWTO/. Poruszaj si˛ew´sróddokumentów na lokalnych i zdalnych FTP, u˙zywaj˛ac F9 w programie Mid- night Commander (zob. ‘Midnight Commander (MC)’ na 50 stronie).

4.2 Konsola Linuksa

4.2.1 Login

W zwykłym systemie Linux znajduje si˛e6 niezale˙znychpseudoterminali. Przeł ˛aczajsi˛emi˛edzy nimi wciskaj ˛acjednocze´snieklawisze Lewy-Alt i klawisze od F1 do F6. Ka˙zdypseudotermi- nal pozwala na niezale˙znelogowanie si˛edo kont u˙zytkownika. Srodowisko´ wielou˙zytkown- ikowe to wspaniała cecha Uniksa, po poznaniu której ci˛e˙zkopracowa´cinaczej. Dobrym nawykiem uniksowym jest logowanie si˛ena konto zwykłego u˙zytkownikado wi˛ek- szo´scizada´n. Musz˛eprzyzna´c, ˙zekiedy´su˙zywałemkonta superu˙zytkownika(konto root) cz˛e´sciej,ni˙zpotrzebowałem, głównie z powodu wygody i mojego niechlujstwa. Rozdział 4. Samouczki Debiana 48

Obecnie, zwykle u˙zywamnormalnego konta oraz polecenia sudo, super czy su -c, aby uzyska´cograniczone przywileje roota.

4.2.2 Dodawanie konta u˙zytkownika

Po instalacji systemu zwykle dodaj˛ekonto zwykłego u˙zytkownika.Je´slinazw ˛au˙zytkownika jest „penguin”,

# adduser penguin utworzy to konto. U˙zywampolecenia vigr do modyfikacji /etc/group jak ni˙zej:

adm:x:4:admin src:x:40:admin, debian, ......

Przy domy´slnejinstalacji systemu, członkowie grupy adm mog ˛aczyta´cwiele plików dziennika z /var/log oraz u˙zywa´c xconsole. Grupa staff b˛ed˛acawła´scicielem /home, sprawia, ˙ze jej członkowie mog ˛azarz ˛adza´ckontami. Grupa src jest wła´scicielem /usr/src, który jest u˙zywanydo kompilacji j ˛adra,itd. By uzyska´cpełniejsze informacje o znaczeniu u˙zytkown- ików i grup, zobacz U˙zytkownicyi grupy (/usr/share/doc/base-passwd/users-and-groups. html). Osobi´scieu˙zywamgrupy staff dla u˙zytkownikówwykonuj ˛acychczynno´sciadministracyjne i maj ˛acychwył ˛acznyprzywilej su (zob.‘„Dlaczego GNU su nie obsługuje grupy wheel”’ na 118 stronie) oraz src dla CVS (zob. ‘CVS’ na 165 stronie). Zobacz adduser, addgroup, vipw, vipw -s, vigr, oraz vigr -s do wła´sciwejkonfiguracji u˙zytkownikówi grup.

4.2.3 Jak zamyka´csystem

Tak jak ka˙zdywspółczesny OS, który cache’uje pliki w pami˛eci,Linux wymaga wła´sciwej procedury zamykania systemu, zanim zasilanie mo˙zezosta´cbezpiecznie wył ˛aczone.Polecenie dla trybu wielou˙zytkownikowego:

# shutdown -h now

Polecenie dla trybu jednego u˙zytkownika:

# poweroff -i -f

Poczekaj na wy´swietlenieprzez system informacji „System halted” i dopiero wtedy wył ˛acz zasilanie. Je´sliAPM zostało wł ˛aczonew BIOSie i Linuksie, komputer wył ˛aczysi˛esam. Zobacz ‘Automatyczne wył ˛aczaniekomputera oraz komputery z wi˛eksz˛ailo´sci˛apami˛eci’na 43 stronie w celu zapoznania si˛eze szczegółami. Rozdział 4. Samouczki Debiana 49

4.2.4 Edycja w linii polece ´n

Domy´slnapowłoka, bash, posiada mo˙zliwo´s´cedycji historii. U˙zyjklawisza kursora „góra”, aby wej´s´cdo historii, a nast˛epnieklawiszy kursora tak, jak oczekujesz. Inne wa˙znekombinacje klawiszy:

Ctrl-U: Usuwa lini˛eprzed kursorem Ctrl-D: Przerwanie wprowadzania Klikni˛ecielewym przyciskiem myszy i przeci ˛agni˛ecie:Zaznacz i skopiuj do schowka (gpm) Klikni˛ecie srodkowym´ przyciskiem myszy: Wklej schowek na miejsce kursora (gpm)

W normalnej konsoli Linuksa tylko lewe klawisze Ctrl i Alt działaj ˛a,jak oczekujesz.

4.2.5 Wykonywanie polece ´n

Typowe wywołanie polecenia korzysta z nast˛epuj˛acegowpisu w powłoce:

$ LC_ALL=fr ls -la

W podanym przykładzie program ls jest uruchamiany w tle ze zmienn ˛a´srodowiskow ˛a LC_ALL ustawion ˛ana fr dla uzyskania j˛ezykafrancuskiego i argumentem linii polece´nustawionym na -la dla wy´swietlaniawszystkiego ze szczegółami. Je´slilinia polece´njest zako´nczonaznakiem &, to polecenie jest uruchamiana w tle. Działanie w tle pozwala u˙zytkownikowina uruchami- anie wielu programów w jednej powłoce. Na wykonywanie polece´nmo˙znawpływa´cnast˛epuj˛acymiskrótami klawiszowymi.

Ctrl-C: Konczy´ program Ctrl-Z: Tymczasowo zatrzymuje program Ctrl-S: Zatrzymuje wyswietlanie´ na ekran Ctrl-Q: Przywraca wyswietlanie´ na ekran Ctrl-Alt-Del: Reboot/zatrzymanie systemu (zob. /etc/inittab)

O zarz ˛adzaniuwykonywaniem programu przeczytaj w bash(1) o jobs, fg, bg i stop.

4.2.6 Najbardziej podstawowe polecenia do zapami˛etania

Poni˙zejznajduj ˛asi˛epodstawowe polecenia Uniksa:

ls, ls -al, ls -d, pwd, cd, cd ~user, cd -, cat /etc/passwd, less, bg, fg, kill, killall, uname -a, type nazwa_polecenia, sync, netstat, ping, traceroute, top, vi, ps aux, tar, zcat, grep, ifconfig, ... Rozdział 4. Samouczki Debiana 50

Sprawd´zznaczenie polece´nprzez wpisanie ich w powłoce albo wpisanie man lub info plus nazwa polecenia. Wiele polece´nlinuksowych wy´swietlaskrócon ˛apomoc po wywołaniu ich w nast˛epuj˛acysposób:

$ nazwa_polecenia --help $ nazwa_polecenia -h whatis nazwa_polecenia wy´swietlajednoliniowe podsumowanie o ka˙zdympoleceniu w systemie, dla którego istnieje wpis w podr˛eczniku(manual).

4.2.7 System X Window

Aby uruchomi´csystem X Window z konsoli w linii polece´nwpisujemy:

# exec startx

Prawe klikni˛eciena głównym oknie spowoduje pojawienie si˛emenu.

4.2.8 Wa˙zneskróty klawiszowe

Oto niektóre wa˙znekombinacje klawiszy do zapami˛etania(plus i minus odnosz ˛asi˛edo klaw- iatury numerycznej):

Alt-F1 do F6: Przeł ˛aczeniemi˛edzypseudoterminalami Ctrl-Alt-F1 do F6: Przeł ˛aczeniemi˛edzypseudoterminalami (z X-window, DOSEMU, itd.) Alt-F7: Przeł ˛aczeniez powrotem do X-window Ctrl-Alt-minus: Zmiana rozdzielczosci´ ekranu w X-window Ctrl-Alt-plus: Zmiana rozdzielczosci´ ekranu w przeciwn ˛astron˛ew X-window Ctrl-Alt-Backspace: Zakonczenie´ X-ów Alt-X, Alt-C, Alt-V: Zwykłe windowsowe/makowe Wytnij, Kopiuj, Wklej, z tym, ˙ze klawisz Ctrl w niektórych programach jest zast ˛apiony przez Alt (np. w Composer).

4.3 Midnight Commander (MC)

Midnight Commander (MC) jest uniwersalnym narz˛edziemdla konsoli Linuksa oraz innych ´srodowisk terminalowych. Rozdział 4. Samouczki Debiana 51

4.3.1 Instalowanie MC

# apt-get install mc

Nast˛epniezmie´nwpisy w ~/.bashrc (lub /etc/bash.bashrc, wywoływanym z .bashrc), tak jak dokładnie opisano to w jego podr˛eczniku, mc(1), w opisie opcji -P. To pozwala MC na zmian˛ekatalogu roboczego na wyj´sciu. Je´sliuruchamiasz MC w terminalu, np. kon i Kterm dla japo´nskiego,który u˙zywapewnych znaków graficznych, dodanie -a do linii polece´nMC mo˙zepomóc w uchronieniu przed prob- lemami.

4.3.2 Uruchamianie MC

$ mc

MC zajmuje si˛ewszystkimi operacjami na plikach wykonywanymi przez jego menu, wyma- gaj ˛acminimalnego wysiłku od u˙zytkownika.

4.3.3 Mened˙zerplików

Domy´slneustawienie to dwa okna zawieraj ˛acelisty plików. Kolejnym u˙zytecznymtrybem jest ustawienie prawego okna w tryb „informacja”, co pozwala zobaczy´cprawa dost˛epuitp. Poni˙zejs ˛aniektóre wa˙zniejszeskróty klawiszowe. Z u˙zyciemuruchomionego demona gpm mo˙znate˙zu˙zywa´cmyszy. (Upewnij si˛e,˙zenaciskasz klawisz Shift w celu uzyskania normal- nego działania Kopiuj i Wklej w MC.) • F1: Menu pomocy • F3: Wewn˛etrznypodgl ˛adpliku • F4: Wewn˛etrznyedytor • F9: Uaktywnienie rozwijanego menu • F10: Wyj´sciez Midnight Commander • : Przeł ˛aczaniepomi˛edzydwoma oknami • Insert: Wybranie pliku do operacji na wielu plikach, np. dla kopiowania • Del: Usuni˛eciepliku (B ˛ad´zostro˙zny—ustawMC w tryb bezpiecznego usuwania.) • Klawisze kursora: Oczywiste

4.3.4 Triki linii polece ´n

• Ka˙zdepolecenie cd zmieni katalog pokazany na wybranym ekranie.

• Ctrl-Enter lub Alt-Enter wkleja nazw˛epliku do linii polece´n. U˙zywajtego ł ˛aczniez poleceniem cp czy mv z edycj ˛aw powłoce.

• Alt-Tab poka˙zedost˛epnepolecenia z linii polece´n. Rozdział 4. Samouczki Debiana 52

• Mo˙zeszokre´sli´ckatalogi startowe dla obu okien podaj ˛acje jako parametry przy wywoły- waniu MC; na przykład mc /etc /root.

• Esc + klawisz numeryczny == Fn (np. Esc + 1 = F1, itd.; Esc + 0 = F10)

• Klawisz Esc == klawisz Alt (= Meta, M-); np. wpisz Esc + c by otrzyma´c Alt-c

4.3.5 Edytor

Wewn˛etrznyedytor ma interesuj ˛acyschemat kopiuj-i-wklej. Naci´sni˛ecie F3 oznacza pocz ˛atek wyboru, kolejne wci´sni˛ecie F3 oznacza koniec wyboru i pod´swietlazaznaczony obszar. Wtedy mo˙zeszrusza´ckursorem. Gdy naci´sniesz F6, zaznaczony obszar zostanie przeniesiony do miejsca, w którym jest kursor. Gdy przyci´sniesz F5, zaznaczony obszar zostanie skopiowany i wklejony w miejsce, w którym jest kursor. F2 zapisuje plik. F10 powoduje zako´nczenieMC. Klawisze kursora zwykle działaj ˛aintuicyjnie. Edytor mo˙zeby´cwywołany dla pliku:

$ mc -e plik_do_edycji $ mcedit plik_do_edycji

Nie jest to edytor wielookienkowy, ale mo˙zeszosi ˛agn˛a´cpodobny efekt u˙zywaj˛acwielu konsoli linuksowych. Aby kopiowa´cpomi˛edzyoknami, u˙zyjklawiszy Alt-Fn do przeł ˛aczaniakonsol wirtualnych, a do wklejania fragmentu pliku do innego pliku, u˙zyj„Plik->Wstaw plik” lub „Plik->Kopiuj do pliku”. Wewn˛etrznyedytor mo˙zeby´czast ˛apionyprzez dowolnie wybrany zewn˛etrzny. Tak˙zewiele programów u˙zywazmiennej ´srodowiskowej EDITOR czy VISUAL by okre´sli´c, którego edytora u˙zy´c.Je´slinie odpowiada Ci vim, ustaw go na mcedit przez dodanie poni˙zszych linii do ~/.bashrc:

... export EDITOR=mcedit export VISUAL=mcedit ...

Zalecam jednak ustawienie ich na vim, je´slito mo˙zliwe.Przywykni˛eciedo polece´nvi(m)a jest dobr ˛arzecz ˛a,gdy˙zs ˛aone nieodł ˛aczn˛acech ˛a´swiataLinuksa/Uniksa.

4.3.6 Podgl ˛ad

Bardzo sprytne narz˛edzie. Jest ´swietnydo wyszukiwania słów w dokumentach. Zawsze u˙zywamgo do przegl ˛adaniaplików w katalogu /usr/share/doc. To najszybszy sposób na przegl ˛adaniemas informacji o Linuksie. Podgl ˛admo˙znauruchomi´cbezpo´srednio w taki sposób: Rozdział 4. Samouczki Debiana 53

$ mc -v nazwa_pliku_do_podgl ˛adu

(Zauwa˙z,˙zeniektóre pakiety łami ˛azasady i wci ˛a˙zprzechowuj ˛aswoje dokumentacje w /usr /doc.)

4.3.7 Własno´sciauto-startu

Wci´snij Enter na pliku i wła´sciwyprogram zajmie si˛ejego zawarto´sci˛a.Jest to bardzo wygodna cecha MC.

wykonywalny: Wykonanie pliku wykonywalnego plik man, html: Przesłanie zawartosci´ pliku przez przegl ˛adark˛e plik tar, gz, rpm: Przegl ˛adaniezawartosci´ pliku jako podkatalogu

W celu umo˙zliwieniadziałania funkcji przegl ˛adania,„przegl ˛adalne”pliki nie mog ˛aby´cokre´slone jako wykonywalne. Zmie´nich status u˙zywaj˛acpolecenia chmod lub przez menu plików w MC.

4.3.8 Wirtualny system plików FTP

MC mo˙zesłu˙zy´cdo dost˛epudo plików przez Internet przy u˙zyciuFTP.Wejd´zdo menu wciska- j ˛ac F9, nast˛epniewpisz T, by aktywowa´cwirtualny system plików FTP. Wpisz URL w formie: nazwa_u˙zytkownika:hasło@nazwa_hosta.nazwa_domeny, co spowoduje pojawienie si˛e katalogu zdalnego, wygl ˛adaj˛acegojak lokalny.

4.4 Podstawy systemu plików GNU/Linux

Ka˙zdyplik i katalog w systemie plików GNU/Linux jest zwi ˛azanyz u˙zytkownikiem,który posiada plik (wła´sciciel),oraz z grup ˛a,do której nale˙zy. Wszystkie informacje o pliku s ˛aprze- chowywane w strukturze danych zwanej iw˛ezłem (inode).

4.4.1 Prawa dost˛epudo plików i katalogów

Prawa dost˛epudo plików i katalogów s ˛adefiniowane oddzielnie dla nast˛epuj˛acychtrzech kategorii u˙zytkowników, których dotycz ˛a: • Wła´sciciel pliku (u), • inni u˙zytkownicyw grupie, do której nale˙zyplik (g), oraz dla • wszystkich pozostałych u˙zytkowników(o). Dla pliku ka˙zdeprawo pozwala odpowiednio na: • odczyt (r): odczyt zawarto´scipliku Rozdział 4. Samouczki Debiana 54

• zapis (w): modyfikacj˛ezawarto´scipliku • wykonanie (x): uruchomienie pliku jako polecenia Dla katalogu ka˙zdeprawo pozwala odpowiednio na: • odczyt (r): wy´swietleniezawarto´scikatalogu • zapis (w): dodawanie i usuwanie plików w katalogu • wykonanie (x): dost˛epdo plików w katalogu Tutaj prawo wykonania dla katalogu oznacza nie tylko prawo do odczytu plików w nim za- wartych, ale tak˙zena przegl ˛adanieatrybutów takich jak rozmiar i czas modyfikacji. Aby otrzyma´cinformacje o uprawnieniach (oraz inne) plików i katalogów, u˙zywasi˛epolecenia ls. Zobacz ls(1). Gdy ls jest wywołane z parametrem -l, wy´swietlanast˛epuj˛aceinformacje w nast˛epuj˛acejkolejno´sci: • Typ pliku (pierwsza litera) – -: zwykły plik – d: katalog – l: dowi ˛azaniesymboliczne (symlink) – c: urz ˛adzenieznakowe – b: urz ˛adzenieblokowe • prawa dost˛epudo pliku (kolejnych 9 znaków, po trzy kolejno dla: wła´sciciela,grupy, oraz pozostałych) • liczba dowi ˛aza´n (hardlink) do pliku • nazwa u˙zytkownika b˛ed˛acegowła´scicielempliku • nazwa grupy, do której nale˙zyplik • rozmiar pliku w znakach (bajtach) • data i czas modyfikacji pliku (mtime) • nazwa pliku. Aby zmieni´cwła´scicielapliku, u˙zywasi˛ez konta root polecenia chown. Zobacz chown(1). Aby zmieni´cgrup˛epliku, u˙zywasi˛epolecenia chgrp z konta wła´scicielapliku lub konta root. Zobacz chgrp(1). Aby zmieni´cprawa dost˛epudo plików czy katalogów, u˙zywasi˛epolecenia chmod, tak˙zez konta u˙zytkownikalub konta root. Zobacz chmod(1). Na przykład w celu uczynienia u˙zytkownika foo wła´scicielemdrzewa katalogów, a grupy bar współwła´scicielem,wykonaj nast˛epuj˛acepolecenia z konta root:

# cd /some/location/ # chown -R foo:bar # chmod -R ug+rwX,o=rX

Istniej ˛ajeszcze trzy specjalne bity uprawnie´n: • ustawia ID u˙zytkownika (s lub S zamiast x u˙zytkownika), • ustawia ID grupy (s lub S zamiast x grupy), oraz • bit lepko´sci (sticky bit) (t lub T zamiast x pozostałych). Na wyj´sciupolecenia ls -l du˙zymiliterami oznaczane s ˛abity, na których miejscu bit wykony- walno´scinie był ustawiony. Ustawienie ID u˙zytkownika dla pliku wykonywalnego pozwala u˙zytkownikowina wyko- nanie tego pliku z ID wła´scicielapliku (na przykład root). Podobnie, ustawienie ID grupy Rozdział 4. Samouczki Debiana 55

dla pliku wykonywalnego, pozwala u˙zytkownikowina wykonanie pliku z ID grupy pliku (na przykład root). Pniewa˙zmo˙zeto powodowa´cryzyko naruszenia bezpiecze´nstwa,wł ˛aczanie tych opcji wymaga szczególnej ostro˙zno´sci.

Ustawienie ID grupy dla katalogu uaktywnia schemat tworzenia plików w stylu BSD, w którym wszystkie pliki tworzone w tym katalogu nale˙z˛ado grupy, maj ˛acejdo niego up- rawnienia.

Ustawienie bitu lepko´sci dla katalogu zapobiega usuwaniu z niego plików przez u˙zytkown- ików, którzy nie s ˛awła´scicielamitych pliku. W celu zabezpieczenia zawarto´scipliku w kata- logach zapisywalnych, takich jak /tmp czy w katalogach, w których prawo zapisu ma grupa, potrzeba nie tylko, by było wył ˛aczoneprawo zapisu dla pliku, ale tak˙zenale˙zyustawi´c sticky bit dla katalogu. W innym przypadku plik mo˙zezosta´cusuni˛ety, a nast˛epniew jego miejsce mo˙zezosta´cutworzony nowy plik, o takiej samej nazwie przez dowolnego u˙zytkownika, który ma prawo zapisu do tego katalogu.

Poni˙zejkilka interesuj ˛acychprzykładów praw do pliku.

$ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/pppd crw-rw---- 1 root dip 108, 0 Jan 18 13:32 /dev/ppp -rw-r--r-- 1 root root 1051 Jan 26 08:29 /etc/passwd -rw-r----- 1 root shadow 746 Jan 26 08:29 /etc/shadow -rwsr-xr-- 1 root dip 234504 Nov 24 03:58 /usr/sbin/pppd $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src drwxrwxrwt 4 root root 4096 Feb 9 16:35 /tmp drwxrwsr-x 10 root staff 4096 Jan 18 13:31 /usr/local drwxrwsr-x 3 root src 4096 Jan 19 08:36 /usr/src drwxrwsr-x 2 root mail 4096 Feb 2 22:19 /var/mail drwxrwxrwt 3 root root 4096 Jan 25 02:48 /var/tmp

4.4.2 Znaczniki czasu

Dla plików GNU/Linux istniej ˛atrzy typy znaczników czasu: • mtime: czas modyfikacji (ls -l), • ctime: czas zmiany statusu (ls -lc), oraz • atime: czas ostatniego dost˛epu(ls -lu). Zauwa˙z,˙ze ctime nie jest czasem utworzenia pliku. • Nadpisanie pliku zmieni wszystkie mtime, ctime i atime pliku. • Zmiana praw lub wła´scicielapliku zmieni ctime oraz atime pliku. • Odczyt pliku zmieni jego atime. Zauwa˙z,˙zenawet zwykły odczyt z pliku w systemie GNU/Linux powoduje normalnie oper- acj˛ezapisu w celu aktualizacji informacji atime w inode. Montowanie systemu plików z opcj ˛a noatime option pozwoli systemowi na omini˛ecietej operacji i zaowocuje szybszym dost˛epem do pliku przy odczycie. Zobacz mount(8). Rozdział 4. Samouczki Debiana 56

4.4.3 Dowi ˛azania(links)

Istniej ˛adwie metody na zwi ˛azaniepliku foo z innym plikiem bar. • dowi ˛azanie (hardlink) jest to inna nazwa dla istniej ˛acegopliku (ln foo bar), • dowi ˛azaniesymboliczne lub „symlink” jest specjalnym plikiem, który wskazuje na inny poprzez nazw˛e(ln -s foo bar). Spójrz na poni˙zszeprzykłady zmian w dowi ˛azaniach,oraz na subtelne ró˙znicew rezultacie polecenia rm.

$ echo "Oryginalna zawartos´c"´ > foo $ ls -l foo -rw-r--r-- 1 osamu osamu 4 Feb 9 22:26 foo $ ln foo bar # dowi ˛azanie(hardlink) $ ln -s foo baz # dowi ˛azaniesymboliczne $ ls -l foo bar baz -rw-r--r-- 2 osamu osamu 4 Feb 9 22:26 bar lrwxrwxrwx 1 osamu osamu 3 Feb 9 22:28 baz -> foo -rw-r--r-- 2 osamu osamu 4 Feb 9 22:26 foo $ rm foo $ echo "Nowa zawartos´c"´ > foo $ cat bar Oryginalna zawartos´c´ $ cat baz Nowa zawartos´c´

Dowi ˛azaniesymboliczne ma, jak wida´cw powy˙zszymprzykładzie, prawa dost˛epu„rwxr- wxrwx”, a jego faktyczne prawa dost˛epus ˛atakie jak wskazywanego pliku. Katalog . jest dowi ˛azaniemdo katalogu, w którym sam si˛epojawia, zatem liczba dowi ˛aza´ndo nowego katalogu rozpoczyna si˛eod 2. Katalog .. jest dowi ˛azaniemdo katalogu nadrz˛ednego, zatem liczba dowi ˛aza´ndo katalogu ro´sniewraz z liczb ˛anowych podkatalogów.

4.5 Dalsza nauka

Jest wiele dobrych ´zródeło Uniksie dla pocz ˛atkuj˛acych.Zwykle ksi ˛a˙zkiO’Reilly’ego s ˛ado- brym wyborem przy szukaniu przewodnika w tematach komputerowych. Dokument LDP The Linux Tips-HOWTO (http://www.tldp.org/HOWTO/Tips-HOWTO.html) jest kole- jnyn ´zródłemwartym sprawdzenia. W celu poszerzenia swoich wiadomo´scizajrzyj do ‘Rozwi ˛azy- wanie problemów’ na 195 stronie. 57

Rozdział 5

Uaktualnianie dystrybucji do wersji testowej

Oficjalne informacje o wydaniach uaktualnie´ns ˛aumieszczone na stronie http://www.debian. org/releases/stable/releasenotes oraz http://www.debian.org/releases/testing/ releasenotes (w przygotowaniu). Aktualizacja systemu do wersji testowej/niestabilnej przebiega według nast˛epuj˛acego schematu:

• aktualizacja systemu APT do wersji Woody, je´slitwój system to Potato, poniewa˙zstara wersja APT nie posiada cech opisanych w apt_preferences(5) w Woodym.

• zmiana pliku /etc/apt/sources.list i /etc/apt/preferences, by odnosiły si˛e do repozytoriów „testing”. Mo˙zeszte˙zdoda´c,je´slitylko chcesz, odniesienia do „unsta- ble”.

• aktualizacja listy pakietów oraz instalacja dowolnego, daj ˛acegosi˛ezaktualizowa´cpaki- etu.

5.1 Przej´sciedo APT z Woodiego

Aktualizacja sieciowa systemu APT i kilka pakietów podstawowych do wersji Woody, je´sli nadal u˙zywaszPotato, mo˙zeby´cwykonana jak poni˙zej,po dodaniu ´zródławersji stabilnej do pliku /etc/apt/sources.list.

# apt-get update # apt-get install libc6 perl libdb2 debconf # apt-get install apt apt-utils dselect dpkg Rozdział 5. Uaktualnianie dystrybucji do wersji testowej 58

5.2 Przygotowanie do przej´scia(z wersji stabilnej na testow ˛a)

Przej´sciena dystrybucj˛e testow ˛a Debiana ma pewien skutek uboczny - trzeba dłu˙zejczeka´c na uaktualnienia bezpiecze´nstwa.Ostrze˙zonoCi˛e- wybór nale˙zydo Ciebie. Aktualizacja sieciowa do wersji testowej mo˙zeprzebiega´cw nast˛epuj˛acysposób (uruchom skrypt go-woody (examples/), by wykona´cponi˙zszeczynno´scijednym poleceniem): Wyczy´s´cistniej ˛acyplik sources.list:

# cd /etc/apt # cp -f sources.list sources.old # :>sources.list

Pobierz czyst ˛alist˛erepozytoriów dla wersji stabilnej:

# cd / # apt-setup noprobe ... wybierz repozytoria dost˛epneprzez HTTP lub FTP

Dodaj sekcj˛ewersji testowej do nowej listy. Linie deb-src s ˛azakomentowane.

# cd /etc/apt # grep -e "^deb " sources.list >sources.deb # grep -e "^deb-" sources.list >sources.src # sed -e "s/stable/testing/" sources.deb \ >>sources.list # sed -e "s/stable/testing/" sources.src | \ sed -e "s/^deb-/#deb-/" >>sources.list

# apt-get update # apt-get install apt apt-utils # cat >preferences <

Package: * Pin: release a=unstable Pin-Priority: 50

EOF

Ewentualnie mo˙zeszdoda´codno´snikido archiwów wersji niestabilnej. Rozdział 5. Uaktualnianie dystrybucji do wersji testowej 59

# sed -e "s/stable/unstable/" sources.deb \ >>sources.list # sed -e "s/stable/unstable/" sources.src | \ sed -e "s/^deb-/#deb-/" >>sources.list

Zobacz ‘Podstawy zarz ˛adzaniapakietami Debiana’ na 62 stronie, gdzie opisana jest sztuka dopieszczania plików /etc/apt/sources.list i /etc/apt/preferences. Mo˙zeszteraz uaktualni´cpakiety, u˙zywaj˛a´cjednego ze sposobów opisanych poni˙zej.

5.3 Aktualizacja systemu

Po prawidłowym ustawieniu plików /etc/apt/sources.list i /etc/apt/preferences, system jest gotowy do przej´sciana wersj˛e testow ˛a. Przeczytaj rozdział ‘Zarz ˛adzaniepaki- etami Debiana’ na 61 stronie, by zapozna´csi˛ez podstawami, oraz ‘Problemy przy aktualizacji APT’ na 68 stronie, je´slib˛edzieszmiał problemy.

5.3.1 Najlepiej do aktualizacji jest u˙zy´cprogramu dselect

Je´slisystem posiada wiele pakietów maj ˛acychw nazwach -dev, itp., poni˙zszametoda z u˙zy- ciem dselect jest zalecana do wła´sciwejkontroli pakietów.

# dselect update # rób to zawsze przed aktualizacj ˛a # dselect select # wybierz pakiety oznaczone ,,suggests’’ i ,,recommends’’

Zaraz po uruchomieniu dselect wybierze aktualnie zainstalowane pakiety. Mo˙zeCi˛ezapy- ta´co dodatkowe pakiety, których nazwy we´zmiez pól depends, suggests oraz recommends. Je´slinie chcesz dodawa´c˙zadnychpakietów, wci´snij Q, by opu´sci´cprogram dselect.

# dselect install

B˛edzieszjeszcze musiał odpowiedzie´cna pytania stawiane przez konfiguratory pakietów pod- czas tego procesu, wi˛ecprzygotuj swoje notatki i po´swi˛e´ctej cz˛e´scitroch˛eczasu. Zobacz te˙z ‘dselect’ na 63 stronie. U˙zywaj dselect. To zawsze działa :).

5.3.2 Niezalecany sposób aktualizacji przy u˙zyciu apt-get

U˙zycie apt-get, które jest opisane poni˙zej,ma du˙zowi˛ekszemo˙zliwo´sci,ale nie jest zale- cane do aktualizacji systemu. Je´slimusisz aktualizowa´cbez u˙zycia dselect, rozwa˙zskorzy- tanie z aptitude oraz z innych programów. Je´sliw systemie znajduje si˛eniewiele pakietów lub w archiwach Debiana nie zaszło du˙zo zmian, poni˙zszepolecenia mog ˛aby´cwystarczaj ˛ace. Rozdział 5. Uaktualnianie dystrybucji do wersji testowej 60

# apt-get update # rób to zawsze przed aktualizacj ˛a ... by uaktualnic´ system z zale˙znosciami´ (,,depends’’): # apt-get upgrade ... by uaktualnic´ cał ˛adystrybucj˛ewraz z zale˙znosciami:´ # apt-get -u dist-upgrade ... lub by uaktualnic´ i zastosowac´ dotychczasowe ustawienia dselect (nowe, lepsze): # apt-get -u dselect-upgrade # u˙zyjustawien´ dselect

Poniewa˙zten sposób aktualizacji u˙zywa apt-get, wybieranie pakietów zalecanych i sugerowanych jest ograniczone. Zobacz ‘Zale˙zno´scimi˛edzypakietami’ na 16 stronie. 61

Rozdział 6

Zarz ˛adzaniepakietami Debiana

By zmniejszy´cobci ˛a˙zeniesieci na serwerach archiwów Debiana, upewnij si˛e,˙zeskonfigurowałe´s lokalnego po´srednika HTTP (np. squid) dla pakietów ´sci˛aganychprzez APT oraz, je´slijest taka potrzeba, zmienn ˛a´srodowiskow ˛a http_proxy lub ustaw warto´s´c http w pliku /etc /apt/apt.conf. To znacz ˛acozwi˛ekszywydajno´s´cuaktualnie´nprzez sie´c,szczególnie wt- edy, gdy posiadasz wiele komputerów z Debianem w sieci lokalnej. Pomimo tego, ˙zemo˙zliwo´sciprzyszpilania w apt_preferences(5) s ˛awr˛ecznieogranic- zone, nie rozwi ˛azujeono wszystkich problemów z zale˙zno´sciami,poniewa˙zzazwyczaj wyma- gaj ˛aone najnowszych wersji innych, podstawowych programów. U˙zyciemetody opisanej w ‘chroot’ na 110 stronie jest po˙z˛adanedo równoczesnego zabez- pieczenia zarówno stabilno´scisystemu jak i dost˛epudo najnowszych wersji oprogramowania. Informacje opisane w tym rozdziale dotycz ˛asystemu Woody, ale wiele z nich tyczy si˛erównie˙z systemu Potato (z wyj ˛atkiem apt_preferences(5) i tematów zwi ˛azanychz /etc/apt /preferences).

6.1 Wprowadzenie

Je´sliczytanie dokumentacji dla deweloperów jest dla ciebie zbyt ci˛e˙zkimzaj˛eciem,przeczytaj poni˙zszyrozdział i zacznij si˛ecieszy´cprawdziw ˛amoc ˛aDebiana w wersji testing/unstable :-).

6.1.1 Podstawowe narz˛edzia

dselect - narz˛edziedo zarz ˛adzaniapakietami z menu dpkg - instaluje pakiet (z pliku) apt-get - instaluje pakiet (z archiwum, CLI APT) tasksel - instaluje zadania (zestawy pakietów) aptitude - instaluje pakiet (pakiet i zadanie, ncurses APT) Rozdział 6. Zarz ˛adzaniepakietami Debiana 62

deity - alternatywny interfejs ncurses dla APT synaptic, gsynaptic - alternatywne graficzne interfejsy dla APT

Powy˙zszenarz˛edzianie działaj ˛ana tym samym poziomie. dselect działa nad APT (polece- nie apt-get) oraz dpkg. APT u˙zywaplików /var/lib/lists/* do ´sledzeniadost˛epnychpakietów, podczas gdy dpkg u˙zywapliku /var/lib/dpkg/available. Je´slizainstalowałe´spakiety u˙zywaj˛acbezpo´sred- nio apt-get lub podobnego programu (jak np. aptitude) upewnij si˛e,˙zeuaktualniłe´splik /var/lib/dpkg/available korzystaj ˛acz opcji [U]pdate w menu dselect lub za po- moc ˛apolecenia „dselect update” przed wywołaniem dselect select, tasksel lub dpkg -l. Je´slichodzi o zale˙zno´scimi˛edzypakietami, apt-get automatycznie ´sci˛agapakiety z jego za- le˙zno´sciami (depends), ale nie rusza pakietów podanych w polach recommends (zaleca) i suggests (proponuje), podczas gdy dselect pozwala wybiera´cmi˛edzyzalecanymi lub pro- ponowanymi pakietami. aptitude pozwala na automatyczne ´sci˛agni˛eciewszystkich paki- etów z pól depends, recommends oraz suggests. Zajrzyj równie˙zdo rozdziału ‘Zale˙zno´sci mi˛edzypakietami’ na 16 stronie.

6.1.2 Wygodne narz˛edzia

apt-cache - przegl ˛adanielokalnej kopii archiwum pakietów dpkg-reconfigure - ponowna konfiguracja ju˙zzainstalowanego pakietu (jesli´ korzysta z debconf) dpkg-source - obsługa pakietów ´zródłowych dpkg-buildpackage - automatyzacja budowania pakietu ...

6.2 Podstawy zarz ˛adzaniapakietami Debiana

Mo˙zeszinstalowa´czestawy pakietów nazywane zadaniami lub instalowa´cpojedyncze paki- ety albo uaktualnia´csystem przy u˙zyciunarz˛edzido zarz ˛adzaniapakietami, które s ˛aopisane poni˙zej. Zajrzyj równie˙zna strony ‘Wskazówki dotycz ˛aceinstalacji Debiana’ na 27 stronie, ‘Uaktualnianie dystrybucji do wersji testowej’ na 57 stronie oraz ‘Edytory awaryjne’ na 160 stronie.

6.2.1 Instalowanie zada´n programem tasksel lub aptitude tasksel to Debian Task Installer (instalator zada´nDebiana), który podczas instalacji sys- temu jest dost˛epnyjako jedna z „prostszych” opcji. Je´slichcesz zainstalowa´ccałe ´srodowisko lub zestaw logicznie ze sob ˛apowi ˛azanychprogramów, które wymaga wielu pakietów, to ta droga jest jedn ˛az najlepszych. Upewnij si˛e,˙zewykonujesz polecenia w nast˛epuj˛acysposób: Rozdział 6. Zarz ˛adzaniepakietami Debiana 63

# dselect update # tasksel aptitude równie˙zdaje dost˛epdo zada´n. Pozwala on jednak nie tylko na ich wybór, ale równie˙zna rezygnacj˛ez instalacji poszczególnych pakietów z danego zadania.

6.2.2 Konfiguracja systemu APT

Dla selektywnej aktualizacji podczas trzymania si˛eci ˛agledystrybucji testowej, system APT (>Woody) musi by´cskonfigurowany jak w ‘Przej´sciedo APT z Woodiego’ na 57 stronie, by móc korzysta´cz opcji apt_preferences(5). Najpierw dodaj ´zródładla stable, testing i unstable do pliku /etc/apt/sources.list, a nast˛epniezmodyfikuj plik /etc/apt/preferences tak, by ustawi´cpoprawne warto´sci Pin-Priority.

Package: * Pin: release a=stable Pin-Priority: 500

Package: * Pin: release a=testing Pin-Priority: 600

Package: * Pin: release a=unstable Pin-Priority: 50

6.2.3 dselect

Zaraz po uruchomieniu dselect automatycznie wybiera pakiety oznaczone jako wymagane (required), wa˙zne(important) oraz standardowe (standard). W Potato, niektóre du˙zeobj˛eto´s- ciowo programy takie jak teTeX czy Emacs były równie˙zwybierane tutaj i najlepiej było je po prostu omija´c(przez r˛eczneodznaczenie - wpisuj ˛ac‘_’) przy wst˛epnejinstalacji. W Woodym, powy˙zszepakiety zostały przeniesione do kategorii „Optional”. dselect w pewnym sensie posiada dziwny interfejs u˙zytkownika.Dost˛epnes ˛acztery dwuz- naczne polecenia (wielko´s´cliter ma znaczenie):

Klawisz Działanie Q Wyjscie.´ Potwierd´zobecny wybór i wyjd´z(zast ˛apzale˙znosci)´ R Powrót! Nie chciałem tego zrobic.´ D Cholera! Zwisa mi co o tym mysli´ dselect. Po prostu wykonaj to! U Ustaw wszystko na stan ,,sugerowane’’ Rozdział 6. Zarz ˛adzaniepakietami Debiana 64

Za pomoc ˛a D i Q mo˙zeszdokona´ckonfliktuj ˛acegowyboru na własne ryzyko. U˙zywajtych polece´nz rozwag ˛a.Obecnie dselect jest dojrzałym narz˛edziem,które daje Ci całkiem du˙z˛a kontrol˛enad wyborem pomi˛edzypakietami sugerowanymi a rekomendowanymi. Je´slichcesz zmniejszy´cilo´s´cpojawiaj ˛acychsi˛eostrze˙ze´ni komunikatów, to dodaj opcj˛e„ex- pert” do pliku /etc/dpkg/dselect.cfg. Je˙zeliposiadasz powolny komputer, to mo˙zesz uruchamia´c dselect na innej, szybszej maszynie do wyszukiwania pakietów, a pó´zniejmo˙zesz skorzysta´cz polecenia apt-get install, by je zainstalowa´c. dselect nie daje dost˛epudo pakietów, które nie s ˛apreferowane przez Pin-Priority.

6.2.4 aptitude aptitude jest nowym programem do instalowania pakietów podobnym do dselect. Mo˙zesz go u˙zywa´cjako zamiennika polecenia tekstowego apt-get. Zobacz te˙z aptitude(1). Wydawanie polece´n aptitude odbywa si˛eza po´srednictwem poszczególnych klawiszy.

Klawisz Działanie F10 Menu ? Sci´ ˛agawkaz klawiszologii u Uaktualnij informacje o archiwum pakietów g Sci´ ˛agniji zainstaluj wybrane pakiety q Wyjd´zz danego ekranu i zapami˛etajzmiany x Wyjd´zz danego ekranu i porzuc´ zmiany Enter Poka˙zinformacje o pakiecie aptitude umo˙zliwiaci automatyczne ´sci˛agni˛ecie wszystkich pakietów bazuj ˛acna polach de- pends, recommends oraz suggests. Mo˙zeszzmieni´cto zachowanie wybieraj ˛acz menu F10 -> Opcje -> Zale˙znosci´ . aptitude daje Ci dost˛epdo wszystkich dost˛epnychwersji pakietów.

6.2.5 Polecenia apt-cache i apt-get

Podczas ´sledzeniadystrybucji testing jak zostało to opisane w powy˙zszymprzykładzie, mo˙zemyzarz ˛adza´cpakietami przy u˙zyciuponi˙zszychpolece´n:

• apt-get -u upgrade Uaktualnia wszystkie pakiety w systemie, wybieraj ˛aczale˙zno´sciz dystrybucji testing.

• apt-get -u dist-upgrade Uaktualnia wszystkie pakiety w systemie, wybieraj ˛aci rozwi ˛azuj˛aczale˙zno´sciz dystry- bucji testing. Rozdział 6. Zarz ˛adzaniepakietami Debiana 65

• apt-get -u dselect-upgrade Uaktualnia wszystkie pakiety w systemie korzystaj ˛acz wyboru dokonanego przez dselect.

• apt-get -u install pakiet Instaluje pakiet wraz z zale˙zno´sciamiz dystrybucji testing.

• apt-get -u install pakiet/unstable Instaluje pakiet z unstable, ale zale˙zno´scipobiera z testing.

• apt-get -u install -t unstable pakiet Instaluje pakiet z unstable wraz z zale˙zno´sciamiz unstable, poprzez ustawienie Pin- Priority unstable na 990.

• apt-cache policy foo bar ... Sprawdza stan pakietów foo bar . . . .

• apt-cache show foo bar ... | less Wy´swietlainformacje o pakietach foo bar . . . .

• apt-get install foo=2.2.4-1 Instaluje wybran ˛awersj˛e 2.2.4-1 pakietu foo.

• apt-get -u install foo bar- Instaluje pakiet foo i usuwa pakiet bar

• apt-get remove bar Usuwa pakiet bar, ale zachowuje zmienione pliki konfiguracyjne.

• apt-get remove --purge bar Usuwa pakiet bar wraz ze wszystkimi jego plikami konfiguracyjnymi.

W powy˙zszychprzykładach opcja -u wymusza, by apt-get pokazał list˛epakietów do ak- tualizacji i poczekał na dalsze decyzje u˙zytkownikaprzez przyst ˛apieniemdo dalszych czyn- no´sci.Poni˙zszedziałania ustawiaj ˛aopcj˛e -u jako domy´sln˛a:

$ cat >> /etc/apt/apt.conf << . // Zawsze pokazuj aktualizowane pakiety (-u) APT::Get::Show-Upgraded "true"; .

U˙zyjopcji -s, by zasymulowa´caktualizacj˛e. Rozdział 6. Zarz ˛adzaniepakietami Debiana 66

6.2.6 Pod ˛a˙zanieza smakiem dystrybucji Debian

W zale˙zno´sciod wyboru smaku dystrybucji, mo˙zeszzmieni´cprzykładowy plik /etc/apt /preference z ‘Konfiguracja systemu APT’ na 63 stronie tak, by odpowiadał twoim potrze- bom:

sledzenie´ stable: zmien´ Pin-Priority testing na 50 sledzenie´ testing: pozostaw bez zmian sledzenie´ testing(unstable): zmien´ Pin-Priority unstable na 500 sledzenie´ unstable(testing): zmien´ Pin-Priority unstable na 800

Zasad ˛aprzy ustawianiu warto´sciPin-Priority powinno by´cprzewijanie warto´sciz góry na dół tabeli wraz z upływem czasu, od chwili po wydaniu dystrybucji, do czasu zamra˙zaniaprzed wydaniem kolejnym. Uwaga: ´sledzeniedystrybucji testing ma jedn ˛awad˛e- poprawki bezpiecze´nstwapojawiaj ˛a si˛edosy´cpó´zno. Je´slimieszasz dystrybucje Debiana, testing z stable lub unstable ze stable, praw- dopodobnie b˛edzieszcz˛estonie´swiadomiepobiera´ckluczowe pakiety z testing lub unstable, które nie zawsze s ˛anajwy˙zszejjako´sci.Miej to na uwadze. Przykłady pliku /etc/apt/preferences, dzi˛ekiktórym pobierane s ˛akluczowe pakiety w dojrzałych wersjach, natomiast pakiety dodatkowe mog ˛aby´cw wersjach niestabilnych, znajduj ˛asi˛ew katalogu z przykładami (examples/) jako pliki preferences.testing i preferences.unstable. Z drugiej strony, preferences.stable wymusza, by wszys- tkie wersje pakietów zostały zmniejszone do wersji stabilnych.

6.2.7 Obni˙zeniewersji wszystkich pakietów do stable

By zmniejszy´cwersj˛ewszystkich pakietów do wydania stable, ustaw plik /etc/apt/preferences jak poni˙zej:

Package: * Pin: release a=stable Pin-Priority: 1001 a nast˛epnieuruchom „apt-get upgrade”, które wymusi zmniejszenie wersji z powodu Pin- Priority > 1000. Pami˛etajjednak, ˙zepodczas tej operacji mog ˛awyst ˛api´cproblemy z zale˙zno´s- ciami.

6.2.8 Przegl ˛adpliku /etc/apt/preferences

W przykładowym pliku /etc/apt/preferences przedstawionym w ‘Konfiguracja systemu APT’ na 63 stronie, pierwsza linia, Package: *, oznacza, ˙zeta regułka odnosi si˛edo wszys- tkich pakietów. Mo˙zeszu˙zy´ckonkretnej nazwy pakietu zamiast gwiazdki, by ustawi´cPin- Priority dla danego pakietu. Rozdział 6. Zarz ˛adzaniepakietami Debiana 67

Nast˛epnalinia, Pin: release a=stable, oznacza, ˙ze apt-get pobiera plik Packages.gz z archiwum zawieraj ˛acegoplik Release, w którym znajduje si˛elinia Archive: stable. Ostatnia linia, Pin-Priority: 500, ustala Pin-Priority na 500. Je´slijest wiele pakietów o tej samej nazwie, to instalowany jest ten z najwy˙zsz˛awarto´sci˛aPin- Priority. Poni˙zejznajduj ˛asi˛eoznaczenia Pin-Priority:

• 1001 i wi˛ecej:priorytety zmniejszaj ˛acewersj˛epakietu. Zmniejszanie wersji pakietu jest dozwolone dla tego przedziału Pin-Priority.

• 100 do 1000: normalne priorytety. Zmniejszanie wersji pakietu jest niedozwolone. Kilka kluczowych warto´sciPin-Priority:

– 990: priorytet ustawiony przez opcj˛e --target-release lub -t programu apt-get(8). – 500: priorytet dla wszystkich domy´slnychplików pakietów. – 100: priorytet dla obecnie zainstalowanych pakietów.

• 0 do 99: nieautomatyczne priorytety. (s ˛aone u˙zywanetylko, je´slipakiet nie jest zain- stalowany i nie ma ˙zadnejdost˛epnejwersji)

• mniej ni˙z0: wersja nigdy nie zostanie wybrana.

Ten sam efekt działania jak przy --target-release mo˙zeby´cosi ˛agni˛etyprzez ustawienie pliku /etc/apt/apt.conf jak poni˙zej:

# echo ’APT::Default-Release "testing";’ >> /etc/apt/apt.conf

Opcja lini polece´n --target-release oraz ustawienia w pliku /etc/apt/apt.conf za- st˛epuj˛austawienia pliku /etc/apt/preferences. Miej to na uwadze podczas zabawy z plikiem /etc/apt/preferences.

6.3 Polecenia zapewniaj ˛aceprzetrwanie w Debianie

Posiadaj ˛act˛ewiedz˛e,mo˙zeszcieszy´csi˛e nie´smiertelnymi aktualizacjami :-).

6.3.1 Sprawdzanie bł˛edóww Debianie i poszukiwanie pomocy

Je´slimasz problemy z konkretnym pakietem, pami˛etajby najpierw sprawdzi´cponi˙zszestrony zanim b˛edzieszszuka´cpomocy lub zgłasza´cbł ˛ad.(lynx, links oraz działaj ˛atak samo dobrze): Rozdział 6. Zarz ˛adzaniepakietami Debiana 68

$ lynx http://bugs.debian.org/ $ lynx http://bugs.debian.org/nazwa pakietu # jesli´ znasz nazw˛epakietu $ lynx http://bugs.debian.org/numer bł˛edu # jesli´ znasz numer bł˛edu

Szukaj z (http://www.google.com/) doł ˛aczaj˛acci ˛ag„site:debian.org”. Je´slimasz w ˛atpliwo´sci,to przeczytaj porz ˛adnypodr˛ecznik.Ustaw zmienn ˛a CDPATH jak poni˙zej:

export CDPATH=.:/usr/local:/usr/share/doc i wpisz

$ cd nazwa pakietu $ pager README.Debian # jesli´ istnieje $ mc

Wi˛ecejpomocnych zasobów podanych jest w rozdziale ‘Rozwi ˛azywanieproblemów’ na 195 stronie.

6.3.2 Problemy przy aktualizacji APT

Podczas aktualizacji w dystrybucji niestabilnej/testowej mog ˛awyst ˛api´cproblemy z zale˙zno´sciamimi˛edzypakietami tak, jak to zostało opisane w rozdziale ‘Aktualizacja systemu’ na 59 stronie. W wi˛ekszo´sciprzypadków jest to spowodowane tym, ˙zeaktualizowany pakiet posiada nowe zale˙zno´sci,które nie s ˛ajeszcze spełnione. W takim przypadku, problem mo˙zesz rozwi ˛aza´cu˙zywaj˛ac

# apt-get dist-upgrade

Je´slito nie działa, powtarzaj jedno z poni˙zszychpolece´ndopóki problem sam si˛enie rozwi ˛a˙ze:

# apt-get upgrade -f # dalej aktualizuj nawet jesli´ wyst ˛apiłybł˛edy ... lub # apt-get dist-upgrade -f # dalej aktualizuj cał ˛adystrybucj˛enawet jesli´ wyst ˛apiłybł˛edy

Niektóre naprawd˛ezepsute skrypty aktualizuj ˛acemog ˛apowodowa´ctrwałe problemy. Na- jlepiej w takim przypadku przyjrze´csi˛eskryptom /var/lib/dpkg/info/nazwapakietu.{post-,pre-}{install,removal} dla danego pakietu, a nast˛epnieuruchomi´c:

# dpkg --configure -a # konfiguruje wszystkie cz˛esciowo´ zainstalowane pakiety Rozdział 6. Zarz ˛adzaniepakietami Debiana 69

Je´sliskrypt mówi o brakuj ˛acympliku konfiguracyjnym, poszukaj odpowiedniego pliku w kat- alogu /etc. Je´sliistnieje szukany plik z rozszerzeniem .new (lub podobnym), zmie´nnazw˛e tego pliku (za pomoc ˛a mv) tak, by usun ˛a´crozszerzenie. Problemy z zale˙zno´sciamimog ˛ate˙zwyst˛epowa´cpodczas instalacji w dystrybucji unstable/testing. S ˛ajednak sposoby na obej´sciezale˙zno´sci.

# apt-get install -f pakiet # pomin´ zepsute zale˙znosci´

Innym sposobem na wyj´sciez tej sytuacji jest u˙zyciepakietu equivs. Zobacz /usr/share /doc/equivs/README.Debian jak równie˙z‘Pakiet equivs’ na 79 stronie.

6.3.3 Ratowanie przy u˙zyciu dpkg

Dora´znyratunek zepsutego dselect (APT) mo˙zeby´cprzeprowadzony na całkowicie zepsu- tym systemie przy u˙zyciutylko dpkg bez APT:

# cd /var/cache/apt/archives # dpkg -i libc6* libdb2* perl* # dpkg -i apt* dpkg* debconf* # dpkg -i * # a˙znie pojawi si˛e˙zadenbł ˛ad

Je´slibrakuje jakiego´spakietu, ´sci˛agnijgo z serwerów lustrzanych (http://www.debian. org/misc/README.mirrors) przy pomocy:

# mc # u˙zyj,,FTP link’’ wskazuj ˛acserwer FTP Debiana

Od niedawna, wła´sciwepakiety na serwerach HTTP/FTP mog ˛anie znajdowa´csi˛ew katalogu /dist, ale raczej w nowym /pool. (Zobacz te˙z‘Katalog pool’ na 9 stronie.) Sci´ ˛agni˛etyplik zainstaluj jak poni˙zej:

# dpkg -i /var/cache/apt/archives/plikpakietu.deb

W przypadku niespełnionych zale˙zno´sci,napraw je lub u˙zyjponi˙zszychpolece´n:

# dpkg --ignore-depends=pakiet1,... -i plikpakietu.deb # dpkg --force-depends -i plikpakietu.deb # dpkg --force-depends --purge pakiet # dpkg --force-confmiss -i plik pakietu.deb # zainstaluj brakuj ˛ace pliki konfiguracyjne Rozdział 6. Zarz ˛adzaniepakietami Debiana 70

6.3.4 Przywracanie danych wyboru pakietów

Je´sliz jakiekogo´spowodu plik /var/lib/dpkg/status zostanie uszkodzony, Debian straci dane wyboru pakietów i przez to stanie si˛enie do ko´ncasprawny. Poszukaj starego pliku /var /lib/dpkg/status w /var/lib/dpkg/status-old lub /var/backups/dpkg.status.*. Umieszczanie /var/backups/ na osobnej partycji jest dobrym pomysłem, poniewa˙zkatalog ten zawiera wiele wa˙znychdla systemu danych. Je´slistary plik /var/lib/dpkg/status nie jest dost˛epny, nadal mo˙zeszprzywróci´cinfor- macje z katalogów w /usr/share/doc/.

# ls /usr/share/doc | \ grep -v [A-Z] | \ grep -v ’^texmf$’ | \ grep -v ’^debian$’ | \ awk ’{print $1 " install"}’ | \ dpkg --set-selections # dselect --expert # przeinstaluj system, odznacz, jesli´ trzeba

6.3.5 Przywracanie systemu po awarii /var

Poniewa˙zkatalog /var zawiera regularnie uaktualniane dane takie, jak poczta, jest on po- datny na wszelkiego rodzaju uszkodzenia. Oddzielenie tego katalogu na innej, niezale˙znej partycji zmniejsza ryzyko wyst ˛apieniaproblemów. Je´slizdarzy si˛ekatastrofa, wtedy mo˙zesz przebudowa´ckatalog /var, by przywróci´csprawno´s´csystemu. Najpierw zdob ˛ad´zszkielet zawarto´sci /var z minimalnego, działaj ˛acegosystemu Debian w tej samej lub starszej wersji, np. z var.tar.gz(http://people.debian.org/~osamu/ pub/), i umie´s´cgo w katalogu głównym zepsutego systemu. Nast˛epniewykonaj poni˙zesze kroki:

# cd / # mv var var-old # jesli´ jakies´ przydatne dane pozostały # tar xvzf var.tar.gz # u˙zyjszkieletu Woody # aptitude # lub dselect

To powinno postawi´csystem na nogi. Mo˙zeszprzyspieszy´cprzywracanie wyborów pakietów u˙zywaj˛acsposobu opisanego w rozdziale ‘Przywracanie danych wyboru pakietów’ na bie˙z˛acej stronie. ([FIXME]: Ta procedura wymaga wi˛ecejtestów do potwierdzenia poprawno´sci.)

6.3.6 Instalowanie pakietu w niestartuj ˛acymsystemie

Uruchom Linuksa u˙zywaj˛acpłyty lub dyskietki ratunkowej Debiana lub alternatywnej partycji w przypadku tzw. multi-bootu. Zobacz ‘Uruchamianie systemu’ na 89 stronie. Zamontuj Rozdział 6. Zarz ˛adzaniepakietami Debiana 71

partycj˛egłówn ˛aniestartuj ˛acegosystemu w /target i skorzystaj z dpkg w trybie instalacji w ´srodowisku chroot.

# dpkg --root /target -i plikpakietu.deb

Nast˛epnieskonfiguruj pakiet i popraw wszelkie problemy. Tak przy okazji - je´slito lilo uniemo˙zliwiastart systemu, mo˙zeszgo uruchomi´cu˙zywaj˛ac standardowego dysku ratunkowego Debiana. W lini zach˛etyprogramu startuj ˛acegowpisz (zakładaj ˛ac,˙zetwoj ˛agłówn ˛apartycj ˛ajest /dev/hda12 i chcesz uruchomi´csystem na poziomie startu (runlevel) 3):

boot: rescue root=/dev/hda12 3

W ten sposób wystartujesz prawie w pełni funkcjonalny system z j ˛adrem ładowanym z dyski- etki (mog ˛ajednak wyst ˛api´cpewne problemy spowodowane brakiem niektórych funkcji j ˛adra lub modułów).

6.3.7 Co robi´c,gdy polecenie dpkg nie działa?

Niedziałaj ˛acy dpkg mo˙zeuniemo˙zliwi´cinstalacj˛ejakiegokolwiek pliku .deb. Poni˙zszapro- cedura pomo˙zeCi naprawi´ct ˛asytuacj˛e(w pierwszej linijce zast ˛ap„links” nazw ˛atwojej ulu- bionej przegl ˛adarkiinternetowej):

$ links http://http.us.debian.org/debian/pool/main/d/dpkg/ ... sci´ ˛agnijdobry plik dpkg_wersja_arch.deb $ su password: ***** # ar x dpkg_version_arch.deb # mv data.tar.gz /data.tar.gz # cd / # tar xzfv data.tar.gz

Dla architektury i386 jako adresu mo˙zeszu˙zy´c http://packages.debian.org/dpkg.

6.4 Polecenia prowadz ˛acedo nirwany w Debianie

Te polecenia uchroni ˛aczłowieka od wiecznego cierpienia w piekle aktualizacji i pozwol ˛aos- i ˛agn˛a´cmu stan nirwany. :-) Rozdział 6. Zarz ˛adzaniepakietami Debiana 72

6.4.1 Informacje o pliku

Aby odnale´z´cnazw˛epakietu, do którego nale˙zydany plik wpisz:

$ dpkg {-S|--search} wzorzec # szukaj wg. wzorca w zainstalowanych pakietach $ zgrep -e wzorzec /lokalna/kopia/debian/woody/Contents-i386.gz # znajd´zwg. wzoru nazw˛eplików w archiwum Debiana

Mo˙zeszte˙zu˙zy´cspecjalnie do tego celu przeznaczonych narz˛edzi:

# apt-get install dlocate # w konflikcie z slocate (bezpieczna wersja locate) $ dlocate nazwa_pliku # szybsza wersja dpkg -L oraz dpkg -S ... # apt-get install auto-apt # narz˛edzieinstaluj ˛acepakiet na ˙zyczenie # auto-apt update # tworzenie pliku bazy dla auto-apt $ auto-apt search wzorzec # szukaj wg. wzorca we wszystkich pakietach

6.4.2 Informacje o pakiecie

APT pozwala na przeszukiwanie i wy´swietlanieinformacji pobranych z archiwum pakietów. Upewnij si˛e, ˙zeAPT pobiera prawidłowe archiwa (plik /etc/apt/sources.list). Je´sli chcesz zobaczy´cjaki jest stosunek pakietów z testing/unstable do tych zainstalowanych, u˙zyj apt-cache policy.

# apt-get check # aktualizuje cache i sprawdza bł˛ednepakiety $ apt-cache search wzorzec # szuka pakietu wg. podanego wzorca (szuka w opisach) $ apt-cache policy pakiet # informacje o priorytecie i dystrybucji pakietu $ apt-cache show -a pakiet # pokazuje opis pakietu ze wszystkich dystrybucji $ apt-cache showsrc pakiet # pokazuje opis pakietu ´zródłowego $ apt-cache showpkg pakiet # informacje o pakiecie dla odpluskiwania # dpkg --audit|-C # szuka cz˛esciowo´ zainstalowanych pakietów $ dpkg {-s|--status} pakiet ... # pokazuje opis zainstalowanego pakietu $ dpkg -l pakiet ... # stan zainstalowanego pakietu (po jednej lini na pakiet) $ dpkg -L pakiet ... # pokazuje list˛eplików zainstalowanych przez pakiet apt-cache showsrc jest nieudokumentowane w Woodym, ale działa :). Mo˙zeszte˙zznale´z´cinformacje o pakiecie w (ja u˙zywam mc do przegl ˛adaniaponi˙zszych):

/var/lib/apt/lists/* /var/lib/dpkg/available Rozdział 6. Zarz ˛adzaniepakietami Debiana 73

Porównanie poni˙zszychplików da Ci informacje o tym, co dokładnie działo si˛ew ci ˛aguostat- nich kilku sesji instalacyjnych.

/var/lib/dpkg/status /var/backups/dpkg.status*

6.4.3 Niepilnowana instalacja przy u˙zyciuAPT

Zeby˙ móc instalowa´cpakiety bez potrzeby pilnowania przebiegu instalacji, dodaj poni˙zsza lini˛edo pliku /etc/apt/apt.conf:

Dpkg::Options {"--force-confold";}

Jest to równowa˙zneuruchomieniu apt-get -q -y pakiet. Korzystaj z tej opcji bardzo os- tro˙znie,poniewa˙zsprawia ona, ˙zeautomatycznie zostaje wybrana odpowied´z„tak” na ka˙zde pytanie, co mo˙zesprawi´cCi wiele problemów. Przeczytaj apt.conf(5) oraz dpkg(1). Mo˙zeszskonfigurowa´cdowolny pakiet pó´zniejza pomoc ˛atechniki opisanej w rozdziale ‘Ponowna konfiguracja zainstalowanych pakietów’ na bie˙z˛acejstronie.

6.4.4 Ponowna konfiguracja zainstalowanych pakietów

Poni˙zszepolecenia ponownie konfiguruj ˛adowolny, ju˙zzainstalowany pakiet.

# dpkg-reconfigure --priority=medium pakiet [...] # dpkg-reconfigure --all # przekonfiguruj wszystkie pakiety # dpkg-reconfigure locales # wygeneruj dodatkowe locale # dpkg-reconfigure --p=low xserver-xfree86 # przekonfiguruj serwer X

Przekonfiguruj debconf, je´slichcesz zmieni´cna stałe typ zapyta´n debconf. Niektóre programy posiadaj ˛arównie˙zwłasne skrypty konfiguracyjne.

apt-setup - tworzy /etc/apt/sources.list install-mbr - instaluje mened˙zeraMaster Boot Record tzconfig - ustawia lokaln ˛astref˛eczasow ˛a gpmconfig - konfiguruje demona myszy gpm sambaconfig - konfiguruje Samb˛ew Potato (Woody u˙zywadebconf) eximconfig - konfiguruje Exim (MTA) texconfig - konfiguruje teTeX apacheconfig - konfiguruje Apache (httpd) cvsconfig - konfiguruje CVS sndconfig - konfiguruje system d´zwi˛eku Rozdział 6. Zarz ˛adzaniepakietami Debiana 74

... update-alternatives - ustawia domyslne´ polecenia, np. vim jako vi update-rc.d - zarz ˛adzaskryptami startowymi System-V update-menus - system menu Debiana ...

6.4.5 Usuwanie i czyszczenie pakietów

Usuni˛eciepakietu pozostawiaj ˛acjego konfiguracj˛e:

# apt-get remove pakiet ... # dpkg --remove pakiet ...

Usuni˛eciepakietu wraz z jego konfiguracj ˛a:

# apt-get remove --purge pakiet ... # dpkg --purge pakiet ...

6.4.6 Wstrzymywanie starszych pakietów

Przykładowe wstrzymanie pakietów libc6 oraz libc6-dev dla programu dselect oraz dla apt-get -u upgrade pakiet odbywa si˛enast˛epuj˛aco:

# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections

Stan “hold” nie powstrzyma polecenia apt-get -u install pakiet. By wstrzyma´cpakiet przez wymuszanie automatycznego zmniejszenia wersji dla polece´n apt-get -u upgrade pakiet lub apt-get -u dist-upgrade, dodaj poni˙zszedo pliku /etc/apt/preferences:

Package: libc6 Pin: release a=stable Pin-Priority: 2000

Tutaj pole Package: nie mo˙zeprzyjmowa´cwpisów takich jak libc6*. Je´slimusisz trzyma´c zsynchronizowane wersje wszystkich pakietów binarnych powi ˛azanychz pakietem ´zródłowym glibc musisz je oddzielnie wypisa´c. Poni˙zszepolecenie wy´swietlilist˛epakietów wstrzymanych:

dpkg --get-selections "*"|grep -e "hold$" Rozdział 6. Zarz ˛adzaniepakietami Debiana 75

6.4.7 Mieszany system - stable/testing/unstable apt-show-versions poka˙zeCi list˛edost˛epnychwersji pakietu wg. dystrybucji, z której pochodzi.

$ apt-show-versions | fgrep /testing | wc ... jak du˙zoposiadasz pakietów z testing $ apt-show-versions -u ... lista pakietów do uaktualnienia $ apt-get install ‘apt-show-versions -u -b | fgrep /unstable‘ ... aktualizacja wszystkich niestabilnych pakietów do ich najnowszych wersji

6.4.8 Wyczy´s´cbuforowane pliki pakietów

Instalacja pakietów przy u˙zyciuAPT pozostawia pliki pakietów w katalogu /var/cache /apt/archives, które musz ˛aby´cusuwane by zwolni´cmiejsce.

# apt-get autoclean # usuwa tylko zb˛ednepliki pakietów # apt-get clean # usuwa wszystkie przetrzymywane pliki pakietów

6.4.9 Zapisanie/kopiowanie konfiguracji systemu

Poni˙zszepolecenie tworzy lokaln ˛akopi˛ewyborów pakietów:

$ dpkg --get-selections "*" > myselections # lub \* zamiast "*"

“*” sprawia, ˙zew pliku myselections znajd ˛asi˛erównie˙zpozycje odnosz ˛acesi˛edo paki- etów ze stanem „purge”. Mo˙zeszskopiowa´cten plik na inny komputer i zainstalowa´cgo za pomoc ˛aponi˙zszychpole- ce´n:

# dselect update # dpkg --set-selections < myselections # apt-get -u dselect-upgrade # lub dselect install

6.4.10 Przeniesienie pakietu do systemu stabilnego

W przypadku cz˛e´sciowychuaktualnie´nsystemu stable, po˙z˛adanejest przebudowywanie pakietów w jego własnym ´srodowisku korzystaj ˛acz pakietu ´zródłowego.Pozwala to unikn ˛a´c masowych uaktualnie´nspowodowanych ich zale˙zno´sciami.Przede wszystkim dodaj poni˙zsze linie do pliku /etc/apt/sources.list: Rozdział 6. Zarz ˛adzaniepakietami Debiana 76

deb-src http://http.us.debian.org/debian testing \ main contrib non-free deb-src http://non-us.debian.org/debian-non-US testing/non-US \ main contrib non-free deb-src http://http.us.debian.org/debian unstable \ main contrib non-free deb-src http://non-us.debian.org/debian-non-US unstable/non-US \ main contrib non-free

W tym przykładzie ka˙zdywpis deb-src został rozbity na dwie linie z powodu ograniczonego rozmiaru papieru podczas drukowania. Sam wpis w sources.list powinien składa´csi˛ez jednej lini. Przyszła kolej na ´sci˛agni˛ecie´zródełi zbudowanie lokalnego pakietu:

$ apt-get update # uaktualnij list˛eze ´zródłamipakietów $ apt-get source pakiet $ dpkg-source -x pakiet.dsc $ cd pakiet-wersja ... przejrzyj wymagane pakiety (Build-depends w pliku .dsc) i równie˙zje zainstaluj. Potrzebujesz tak˙zepakietu ’fakeroot’.

$ dpkg-buildpackage -rfakeroot

...lub (bez sygnatury) $ dpkg-buildpackage -rfakeroot -us -uc # jesli´ trzeba, u˙zyjpó´zniej,,debsign’’

...Nast˛epniezainstaluj pakiet $ su -c "dpkg -i plikpakietu.deb"

Zazwyczaj nale˙zyte˙zzainstalowa´ckilka pakietow z ko´ncówk˛a„-dev”, by spełni´czale˙zno´sci pakietów. debsign znajduje si˛ew pakiecie devscripts. auto-apt mo˙zepomóc przy speł- nianiu tych zale˙zno´sci. U˙zycie fakeroot pozwala unikn ˛a´cniepotrzebnego korzystania z konta roota. W Woodym, sprawy zwi ˛azanez zale˙zno´sciamimog ˛aby´cułatwione. Przykładowo, by skom- pilowa´cwyst˛epuj˛acytylko w formie ´zródłowejpakiet pine:

# apt-get build-dep pine # apt-get source -b pine

6.4.11 Lokalne archiwum pakietów

Aby utworzy´czgodne z systemem APT i dselect lokalne archiwum pakietów, nale˙zyut- worzy´cplik Packages, a same pliki pakietów musz ˛aby´cumieszczone w specjalnym drzewie katalogów. Rozdział 6. Zarz ˛adzaniepakietami Debiana 77

Lokalne archiwum pakietów deb podobne do oficjalnego archiwum Debiana tworzy si˛ew nast˛epuj˛acysposób:

# apt-get install dpkg-dev # cd /usr/local # install -d pool # tutaj umieszczane s ˛apakiety # install -d dists/unstable/main/binary-i386 # ls -1 pool | sed ’s/_.*$/ priority section/’ | uniq > override # editor override # zmien´ priority oraz section # dpkg-scanpackages pool override /usr/local/\ > dists/unstable/main/binary-i386/Packages # cat > dists/unstable/main/Release << EOF Archive: unstable Version: 3.0 Component: main Origin: Local Label: Local Architecture: i386 EOF # echo "deb file:/usr/local unstable main"\ >> /etc/apt/sources.list

Mo˙znate˙zu˙zy´cszybszego sposobu:

# apt-get install dpkg-dev # mkdir /usr/local/debian # mv /scie˙zka/do/pakietu.deb/usr/local/debian´ # dpkg-scanpackages /usr/local/debian /dev/null | \ gzip - > /usr/local/debian/Packages.gz # echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list

Zdalny dost˛epdo utworzonych archiwów jest mo˙zliwyza po´srednictwem HTTP lub FTP. Nale˙zywówczas odpowiednio ustawi´cwpisy w pliku /etc/apt/sources.list.

6.4.12 Zmiana lub instalacja obcego pakietu binarnego pozwala na konwersj˛epakietów binarnych z formatów rpm Redhata, slp Stampede, tgz Slackware oraz pkg Solarisa na format pakietu deb Debiana. Je´slichcesz u˙zy´cpakietu z innej dystrybucji Linuksa, mo˙zeszu˙zy´cprogramu alien do zmiany go na twój preferowany format i pó´zniejszejinstalacji. alien obsługuje równie˙zpakiety LSB. Rozdział 6. Zarz ˛adzaniepakietami Debiana 78

6.4.13 Sprawdzanie poprawno´scizainstalowanych plików debsums sprawdza poprawno´s´czainstalowanych plików pakietów na podstawie sum kon- trolnych MD5. Niektóre z pakietów nie posiadaj ˛asum MD5. W takim przypadku tymcza- sowym rozwi ˛azaniemdla administratorów jest:

# cat >>/etc/apt/apt.conf.d/90debsums DPkg::Post-Install-Pkgs {"xargs /usr/bin/debsums -sg";}; ^D wg. pomysłu Joerga Wendlanda (nieprzetestowane).

6.4.14 Zoptymalizowane sources.list

Wymy´slnesposoby optymalizacji pliku sources.list nie spowodowały u mnie (w USA), znacz ˛acejpoprawy. R˛eczniewybrałem najbli˙zszeserwery przy u˙zyciu apt-setup. apt-spy automatycznie tworzy sources.list, kieruj ˛acsi˛eopó´znieniamii przepustowo´s- ci ˛a. netselect-apt tworzy bardziej kompletny sources.list, ale u˙zywagorszej metody do wybrania najlepszego serwera lustrzanego (porównanie czasów odpowiedzi na pingi).

# apt-get install apt-spy # cd /etc/apt ; mv sources.list sources.list.org # apt-spy -d testing -l sources.apt

6.5 Inne osobliwo´sciDebiana

6.5.1 Polecenie dpkg-divert

Objazdy (diversions) s ˛ametod ˛azmuszenia dpkg w zmienionej, w stosunku do domy´slnej lokalizacji. Objazdy mog ˛aby´cu˙zywaneprzez skrypty pakietu Debiana do przeniesienia pliku, gdy ten powoduje konflikt. Administrator systemu mo˙zete˙zu˙zy´cdywersji do zast ˛api- enia pliku konfiguracyjnego pakietu lub gdy pewne pliki (nieoznaczone jako conffiles) musz ˛a by´czachowane przez dpkg, podczas instalacji nowej wersji pakietu je zawieraj ˛acego(zobacz ‘Ochrona lokalnych plików konfiguracyjnych’ na 14 stronie).

# dpkg-divert [--add] filename # dodaj ,,dywersj˛e’’ # dpkg-divert --remove filename # usun´ ,,dywersj˛e’’

Zazwyczaj nie nale˙zystosowa´c dpkg-divert, gdy nie jest to absolutnie potrzebne. Rozdział 6. Zarz ˛adzaniepakietami Debiana 79

6.5.2 Pakiet equivs

Je´sliwłasnor˛eczniekompilujesz program, najlepiej jest uczyni´cgo prawdziwym, lokalnym pakietem zdebianizowanym (*.deb). W ostateczno´sciu˙zyj equivs.

Package: equivs Priority: extra Section: admin Description: Circumventing Debian package dependencies This is a dummy package which can be used to create Debian packages, which only contain dependency information.

6.5.3 Alternatywne polecenia

U˙zyjprogramu update-alternatives, je´slichcesz, by polecenie vi uruchamiało program vim:

# update-alternatives --display vi ... # update-alternatives --config vi Selection Command ------1 /usr/bin/elvis-tiny 2 /usr/bin/vim *+ 3 /usr/bin/nvi

Enter to keep the default[*], or type selection number: 2

Poszczególne pozycje w systemie alternatyw Debiana s ˛atrzymane jako dowi ˛azaniasymbol- iczne w katalogu /etc/alternatives. Je´slichcesz ustawi´cswoje ulubione ´srodowisko graficzne X, u˙zyj update-alternatives na /usr/bin/x-session-manager oraz /usr/bin/x-window-manager. Szczegóły w ‘Personalizowanie sesji X.’ na 130 stronie. /bin/sh jest bezpo´srednim dowi ˛azaniemdo /bin/bash lub /bin/dash. Bezpieczniej jest u˙zy´c /bin/bash, by zachowa´ckompatybilno´s´cze skryptami ska˙zonymistar ˛askładni ˛aBasha. Lepiej jednak zdyscyplinowa´csi˛edo u˙zywania /bin/dash, w celu wymuszenia zgodno´sciz norm ˛aPOSIX. /bin/dash. Aktualizacja j ˛adraLinuksa do wersji 2.4 skłania si˛edo u˙zycia /bin/dash.

6.5.4 System-V init i poziomy startu (runlevels)

W pliku /etc/inittab mo˙znaustawi´cdomy´slnypoziom startu. Rozdział 6. Zarz ˛adzaniepakietami Debiana 80

W przeciwie´nstwiedo innych dystrybucji, Debian w pełni pozostawia zarz ˛adzaniepoziomami startu administratori systemu. Zarz ˛adzanieskryptami init w stylu System-V w Debianie powinno odbywa´csi˛eza po´srednictwem skryptu update-rc.d. Poni˙zejznajduje si˛eprzykład polecenia, które tak ustawi skrypty startowe (skrypty init), by skrypt /etc/init.d/nazwa był uruchamiany na poziomach startu (runlevel) 1,2,3, a za- trzymywany na poziomach 4 i 5 z priorytetem równym 20 (normalnym).

# update-rc.d nazwa start 20 1 2 3 . stop 20 4 5 .

Usuni˛eciedowi ˛aza´nsymbolicznych z pozostawieniem skryptu w init.d:

# update-rc.d -f nazwa remove

Je´slichodzi o edycj˛epoziomów startu, nigdy nie u˙zywamnarz˛edzido tego celu. Poszczególne elementy zmieniam r˛ecznieza pomoc ˛a mv w lini polece´n mc, kopiuj ˛acdowi ˛azaniaza pomoc ˛a Alt-Enter. Przykład:

# mv S99xdm K99xdm # wył ˛aczxdm (X display manager)

Równie˙zwył ˛aczamdemony przez wstawienie exit 0 na pocz ˛atkuskryptu w init.d. Ot, takie szybkie rozwi ˛azanie.W ko´ncus ˛ato pliki oznaczone jako conffile.

6.5.5 Wył ˛aczoneusługi demonów

Bezpiecze´nstwosystemu jest bardzo wa˙zn˛arzecz ˛aw Debianie, który zakłada, ˙zeadministrator jest osob ˛akompetentn ˛a.Dlatego czasami łatwo´s´cu˙zyciastoi na drugim miejscu, a wiele usług demonów domy´slniema ustawiony najwy˙zszypoziom bezpiecze´nstwaz wł ˛aczonymitylko nielicznymi usługami (lub nawet ˙zadnymi). Uruchom ps aux lub przejrzyj zawarto´s´c /etc/init.d/* oraz /etc/inetd.conf, je´sli masz jakiekolwiek w ˛atpliwo´sci(odno´snieExima, DHCP, . . . ). Sprawd´zrównie˙zopisany w ‘Kontrola dost˛epupoprzez PAM oraz login’ na 117 stronie plik /etc/hosts.deny. Pomocne mo˙zesi˛ete˙zokaza´cpolecenie pidof (patrz pidof(8)). W ostatnich wersjach Debiana, X11 domy´slnienie zezwala na (zdalne) poł ˛aczeniaTCP/IP. Patrz te˙z‘Poł ˛aczenieTCP/IP z X’ na 133 stronie. Przekazywanie X przez SSH równie˙zjest wył ˛aczone.Patrz ‘Zdalne poł ˛aczeniez X: ssh’ na 134 stronie. 81

Rozdział 7

J ˛adrosystemu Linux w Debianie

Debian posiada swoj ˛awłasn ˛ametod˛ekompilacji j ˛adrai powi ˛azanychz nim modułów. Zobacz równie˙z‘Debian i kernel’ na 24 stronie.

7.1 Kompilacja j ˛adra

U˙zycie gcc, binutils i modutils z Debiana unstable mo˙zepomóc przy kompilacji na- jnowszych wyda´nj ˛adrasystemu Linux. Zobacz /usr/share/doc/kernel-package/README.gz, szczególnie koniec, aby uzyska´coficjalne informacje. Od zawsze kompilacja j ˛adrabyła trudnym tematem, który nawet najbardziej zaawansowanych developerów mo˙zewprowadzi´cw zakłopotanie: Manoj Srivastava napisał: --initrd wymaga specjalnej łatki dla Debiana: cramfs. Herbert Xu napisał: Nie, wcale nie, wszystko co musisz zrobi´caby u˙zy´cinnego systemu plików ni˙zCRAMFS, to ustawienie MKIMAGE w /etc/mkinitrd/mkinitrd.conf. B ˛ad´zostro˙znyi zawsze polegaj na /usr/share/doc/kernel-package/README.gz napisanym przez Manoj i Kent’a. Upewnij si˛e,˙zezdobyłe´snajnowsz ˛awersj˛epakietu unstable kernel-package, je´slichcesz kompilowa´cnajnowsz ˛awersj˛ej ˛adra. initrd nie jest wymagane dla j ˛adrakompilowanego tylko dla jednej maszyny. U˙zywamtego od czasu, kiedy chc˛eaby moje j ˛adro było niemal takie samo, jak to dostarczane przez pakiety kernel-image. Je´sliu˙zywasz initrd, powiniene´sprzeczyta´c mkinitrd(8) i mkinitrd.conf(5). Zobacz równie˙z http://bugs.debian.org/149236.

7.1.1 Standardowa metoda Debiana

Sled´zuwa˙znieraporty´ o bł˛edachw kernel-package, gcc, binutils i modutils. W miar˛e mo˙zliwo´sciu˙zywajich nowych wersji. Kompilacja spersonalizowanego j ˛adraze ´zródełpod Debianem wymaga specjalnej uwagi. U˙zyjnowego --append_to_version wraz z make-kpkg, aby zbudowa´cobrazy j ˛adrawielokrot- nego u˙zytku. Rozdział 7. J ˛adro systemu Linux w Debianie 82

# apt-get install debhelper modutils kernel-package libncurses5-dev # apt-get install kernel-source-2.4.18 # u˙zyjnajnowszej wersji # apt-get install fakeroot # vi /etc/kernel-pkg.conf # wpisz nazwisko i e-mail $ cd /usr/src # stwórz katalog $ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2 $ cd kernel-source-2.4.18 # je˙zelis ˛ato ´zródłaTwojego j ˛adra $ cp /boot/config-2.4.18-386 .config # ustaw obecny plik konfiguracyjny jako domyslny´ $ make menuconfig # wybierz potrzebne Ci opcje $ make-kpkg clean # musi byc´ uruchomione (per: man make-kpkg) $ fakeroot make-kpkg --append_to_version -486 --initrd \ --revision=rev.01 kernel_image \ modules_image # modules_image u˙zywasi˛edla pcmcia-cs* itd. $ cd .. # dpkg -i kernel-image*.deb pcmcia-cs*.deb # instalacja make-kpkg kernel_image wła´sciwiewykonuje make oldconfig i make dep. Nie u˙zy- waj --initrd je˙zeliinitrd nie jest u˙zywane. Je˙zelikto´schce u˙zywa´cmodułów z pcmcia-cs lub bez pcmcia, powinien wybra´c„General setup —>”, nast˛epnie„PCMCIA/CardBus support —>” przy make menuconfig i ustawi´c konfiguracj˛ena „< > PCMCIA/CardBus support” (np. odznaczy´cpole). Na maszynie z SMP (Simetric Multi processing), ustaw CONCURRENCY_LEVEL zgodnie z kernel-pkg.conf(5).

7.1.2 Metoda klasyczna

Pobierz ´zródłaz: • Linux: http://www.kernel.org/ • pcmcia-cs: http://pcmcia-cs.sourceforge.net/ lub u˙zyjrównowa˙znych´zródełz Debiana i post˛epujnast˛epuj˛aco:

# cd /usr/src # tar xfvz linux-whatever.tar.gz # rm -rf linux # ln -s linux-whatever linux # tar xfvz pcmcia-cs-whatever.tar.gz # ln -s pcmcia-cs-whatever pcmcia # cd linux # make menuconfig ... konfiguracja j ˛adra... # make dep # make bzImage ... edycja lilo / grub ... Rozdział 7. J ˛adro systemu Linux w Debianie 83

... przeniesienie /usr/src/linux/arch/i386/boot/bzImage do /boot ...... uruchomienie /sbin/lilo lub równowa˙znegopolecenia dla grub # make modules; make modules_install # cd ../pcmcia # make config # make all # make install ... dodanie niezb˛ednychnazw modułów do /etc/modules # shutdown -r now ... wystartowanie systemu z nowym j ˛adrem...

7.1.3 Pliki nagłówkowe j ˛adra

Wi˛ekszo´s´c„zwykłych” programów nie potrzebuje plików nagłówkowych j ˛adra,a nawet mo˙ze si˛epopsu´cje´sliu˙zyjeszich bezpo´srednio; zamiast tego powinny by´cskompilowane z plikami nagłówkowymi, z którymi zbudowano/skompilowano glibc, które s ˛awersjami z /usr/include /linux i /usr/include/asm systemu Debian. Nie twórz wi˛ecdowi ˛aza´nsymbolicznych do katalogów w /usr/src/linux z /usr/include /linux i /usr/include/asm, jak jest to sugerowane w pewnych przestarzałych dokumen- tach. Je˙zeliszczególnie potrzebujesz plików nagłówkowych j ˛adradla aplikacji zale˙znychod j ˛adra, zmie´nplik/pliki Makefile. tak aby ich ´scie˙zkido plików doł ˛aczanych(include) wskazywały na katalog-specjalnych-plików-nagłówkowych-j ˛adra/include/linux i katalog-specjalnych-plików-nagłókowych-j ˛adra /include/asm.

7.2 Zmodularyzowane j ˛adro2.4

Nowe j ˛adra2.4 w Debianie, dostarczone przez kernel-image-2.4.NN s ˛abardzo zmodu- laryzowane. Musisz si˛eupewni´cczy moduły te s ˛aaktywne, aby j ˛adro działało tak, jak za- mierzałe´s. W nast˛epnejcz˛e´sci,jako szybkie rozwi ˛azania,prezentuj˛ewiele przykładów pliku /etc/modules. Jednak˙ze,lepsz ˛ametod ˛arozwi ˛azywaniaproblemów z modułami jest przypisanie ich, jako nazw zast˛epczych(aliasów) dla urz ˛adze´n,w plikach w /etc/modutils/ Zobacz Documentation/*.txt w ´zródłachLinuksa aby zdoby´cszczegółowe informacje.

7.2.1 PCMCIA

/etc/modules musi zawiera´cnast˛epuj˛acewpisy, aby urz ˛adzeniaPCMCIA mogły działa´c:

# sterownik ISA PnP Rozdział 7. J ˛adro systemu Linux w Debianie 84

isa-pnp # Niskopoziomowy sterownik PCMCIA # yenta_socket # w moim przypadku nie jest potrzebny

O reszt˛ezadbaj ˛askrypty PCMCIA (z pakietu pcmcia-cs), depmod i kmod. Wydaje mi si˛e,˙ze potrzebowałem isa-pnp poniewa˙zmój laptop jest starym ISA-PCMCIA. Nowsze laptopy z CardBus/PCMCIA by´cmo˙zetego nie wymagaj ˛a. Zdanie wspaniałomy´slnegoMiquela van Smoorenburga : „Po prostu wyrzuciłem cało´s´cpcmcia z laptopa w pracy, wł ˛aczniez cardmgr itd. Nast˛epnie zainstalowałem j ˛adro 2.4 ze wsparciem dla CardBus, i nowy pakiet hotplug z woody’ego. Je´slimasz 32-bitowe karty, nie potrzebujesz pakietu pcmcia ; 2.4 ma wbudowan ˛aobsług˛etych kart. Zwykły sterownik tulip powinien pracowa´cdobrze z Twoj ˛akart ˛adlink. —Mike.”

7.2.2 SCSI

[NIE SPRAWDZANE] /etc/modules musi zawiera´cnast˛epuj˛acewpisy, aby urz ˛adzeniaSCSI mogły działa´c:

# rdzen´ SCSI scsi_mod # ogólny sterownik SCSI sg # dysk SCSI sd_mod # wszystkie inne niezb˛ednemoduły ... depmod zajmie si˛eniektórymi z powy˙zszychmodułów.

7.2.3 Obsługa sieci

/etc/modules musi zawiera´cnastepuj ˛acewpisy dla działania dodatkowych funkcji sieciowych:

# net/ipv-4 ip_gre ipip

# net/ipv-4/netfilter # iptable (in order) ip_tables Rozdział 7. J ˛adro systemu Linux w Debianie 85

ip_conntrack ip_conntrack_ftp iptable_nat iptable_filter iptable_mangle # ip_nat_ftp ip_queue # ipt_LOG ipt_MARK ipt_MASQUERADE ipt_MIRROR ipt_REDIRECT ipt_REJECT ipt_TCPMSS ipt_TOS ipt_limit ipt_mac ipt_mark ipt_multiport ipt_owner ipt_state ipt_tcpmss ipt_tos ipt_unclean # #ipchains #ipfwadm

Powy˙zszewpisymog ˛anie by´czoptymalizowane. depmod zajmie si˛ecze´sci˛az wy˙zejwymienionych modułów.

7.2.4 System plików EXT3 ( > 2.4.17)

Umo˙zliwienieksi˛egowaniasystemu plików z EXT3 FS przy u˙zyciuDebianowego pakietu prekompilowanego obrazu j ˛adra( > 2.4.17) wymaga nast˛epuj˛acychkroków:

# cd /etc; mv fstab fstab.old # sed ’s/ext2/ext3,ext2/g’ fstab # vi /etc/fstab ... ustaw typ głównego systemu plików na ,,auto’’ zamiast ,,ext3,ext2’’ # cd /etc/mkinitrd # echo jbd >>modules Rozdział 7. J ˛adro systemu Linux w Debianie 86

# echo ext3 >>modules # echo ext2 >>modules # cd / # apt-get update; apt-get install kernel-image-2.4.17-686-smp ... zainstaluj najnowsze j ˛adroi ustaw bootowanie (uruchom tu lilo) # tune2fs -j -i 0 /dev/hda1 # tune2fs -j -i 0 /dev/hda2 ... dla wszystkich, którzy przekonwertowali EXT2 FS do EXT3 # shutdown -r now

Teraz ksi˛egowanieEXT3 ju˙zdziała. U˙zywaj˛ac ext3,ext2 jako wpis „typ” w fstab zapewni- asz bezpieczny powrót do EXT2, je˙zelij ˛adro nie wspiera EXT3 dla partycji innych ni˙zgłówna.

Je˙zeliwcze´sniejzainstalowałe´ssobie j ˛adro 2.4 i nie chcesz go przeinstalowywa´c, wykonaj powy˙zszekroki a˙zdo polece´n apt-get, nast˛epnie:

# mkinitrd -o /boot/initrd.img-2.4.17-686-smp /lib/modules/2.4.17-686-smp # lilo # tune2fs -j -i 0 /dev/hda1 # tune2fs -j -i 0 /dev/hda2 ... dla wszystkich, którzy przekonwertowali EXT2 FS do EXT3 # shutdown -r now

Teraz ksi˛egowanieEXT3 ju˙zdziała.

Je˙zeli /etc/mkinitrd/modules nie zostało ustawione, podczas uruchomienia mkinitrd i chciałby´sdoda´cjakie´smoduły w czasie startu to :

... przy zgłoszeniu initrd, aby uzyskac´ powłok˛e(5 sek.), wcisnij´ RETURN # insmod jbd # insmod ext3 # modprobe ext3 zajmie si˛ewszystkim # insmod ext2 # ^D ... kontynuuj uruchamianie.

Na ekranie uruchamiania pojawia si˛e(dmesg), „cramfs: wrong magic”, ale jest to uznawane za nieszkodliwe. To wyj´sciezostało uchwalone w Sarge (2002/10). Zobacz http://bugs. debian.org/135537 i EXT3 mini-HOWTO (http://www.symonds.net/~rajesh/ howto/ext3/index.html) lub /usr/share/doc/HOWTO/en-txt/mini/extra/ext3-mini-HOWTO.gz w celu uzyskania dalszych informacji.

W niektórych systemach donoszone jest o do´swiadczaniupowa˙znychblokad j ˛adra,gdy u˙zy- wane jest EXT3, ale ja nie miałem problemów (przynajmniej z 2.4.17). Rozdział 7. J ˛adro systemu Linux w Debianie 87

7.2.5 Wsparcie układu Realtek RTL-8139 w j ˛adrze2.4

Z nieznanych przyczyn, wsparcie dla modułu RTL-8139 nie nazywa si˛eju˙zrtl8139, tylko 8139too. Po prostu wyedytuj swój /etc/modules by uwzgl˛edni´ct˛ezmian˛eprzy zmianie j ˛adra2.2 na 2.4.

7.2.6 Wsparcie dla portów równoległych

Dla kernel-image-2.4.*, wsparcie portu równoległego jest udost˛epnianejako moduł. Uak- tywniasz je przez:

# modprobe lp # echo lp >> /etc/modules

Zobacz Documentation/parport.txt w ´zródłachLinuksa.

7.3 Dostrajanie j ˛adraprzy pomocy systemu plików proc

Zachowanie j ˛adrasystemu Linux mo˙zeby´czmieniane „w locie” przy pomocy systemu plików proc. Podstawowych informacji o zmianach parametrów j ˛adraprzez system plików /proc szukaj w ´zródłachLinuksa w Documentation/sysctl/*. Zobacz kilka przykładów dla modyfikacji parametrów j ˛adraw /etc/init.d/networking i ‘Dziwne kłopoty z dost˛epemdo witryn WWW.’ na 44 stronie.

7.3.1 Za du˙zootwartych plików

J ˛adro Linuksa mo˙zezgłasza´cproblem „Za du˙zootwartych plików”. Spowodowane jest to mał ˛adomy´sln˛awarto´sci˛a(8096) dla file-max. Aby naprawi´cten problem, wywołaj nast˛epu- j ˛acepolecenie jako root (albo umie´s´cto w w skrypcie w /etc/rcS.d/*.

# echo "65536" > /proc/sys/fs/file-max # dla j ˛ader2.2 i 2.4 # echo "131072" > /proc/sys/fs/inode-max # tylko dla j ˛ader2.2

7.3.2 Przedziały czasu mi˛edzyoperacjami dyskowymi

Mo˙zeszzmieni´cprzedziały czasu mi˛edzyoperacjami dyskowymi przy pomocy systemu plików proc. Nast˛epuj˛acoskrócimy je z domy´slnych5 sekund do 1 sekundy.

# echo "40 0 0 0 100 30000 60 0 0" > /proc/sys/vm/bdflush Rozdział 7. J ˛adro systemu Linux w Debianie 88

Mo˙zeto troch˛enegatywnie wpływa´cna osi ˛agipliku wej´scia/wyj´scia.Ale zabezpiecza to za- warto´s´cpliku, z wyj ˛atkiemostatniej sekundy, co i tak jest krótszym czasem, ni˙zdomy´slne5 sekund. Działa to nawet dla systemu plików z ksi˛egowaniem.

7.3.3 Stare, powolne maszyny z mał ˛ailo´sci˛apami˛eci

Dla niektórych starych systemów z mał ˛ailo´sci˛apami˛eci, u˙zytecznewci ˛a˙zmo˙zeby´curu- chomienie, przy pomocy systemu plików proc, przydzielania nieosi ˛agalnejw danym momen- cie pami˛eci:

# echo 1 > /proc/sys/vm/overcommit_memory 89

Rozdział 8

Debianowe porady

8.1 Uruchamianie systemu

Zajrzyj do LDP BootPrompt-HOWTO (http://www.tldp.org/HOWTO/BootPrompt-HOWTO. html) w celu uzyskania szczegółowych informacji na temat boot prompt.

8.1.1 „Zapomniałem hasła roota!” (1)

Mo˙zliwejest uruchomienie systemu i zalogowanie si˛ena konto administratora (root) bez zna- jomo´scihasła, je˙zelitylko posiadamy dost˛epdo lokalnej konsoli (zakładaj ˛ac,˙zenie zostało zało˙zonehasło na BIOS lub program ładuj ˛acysystem taki jak lilo). Poni˙zejprzedstawiono procedur˛epost˛epowaniaw takim przypadku, która nie wymaga posi- adania dodatkowych narz˛edzi,jak cho´cbydyskietek czy płyt z systemem, ani modyfikacji ustawie´nBIOSu. Zakładamy, ˙ze„Linux” to etykieta podstawowego j ˛adrasystemu w domy´sl- nej instalacji Debiana. Gdy tylko pojawi si˛eekran startowy lilo oraz napis boot: (by´cmo˙zemusisz przytrzyma´c klawisz shift podczas uruchamiania lilo aby zapobiec automatycznemu startowi systemu) wpisz:

boot: Linux init=/bin/sh

To wymusza załadowanie j ˛adraoraz uruchomienie /bin/sh w miejsce standardowego pro- gramu init. Dzi˛ekitemu uzyskujesz przywileje administratora oraz dost˛epdo konta root. Poniewa˙zsystem plików / jest zamontowany w trybie „tylko do odczytu”, a inne nie s ˛aza- montowane w ogóle, trzeba wykona´ckilka operacji, aby uzyska´cw pełni funkcjonuj ˛acysys- tem.

init-2.03# mount -n -o remount,rw / init-2.03# mount -avt nonfs,noproc,nosmbfs Rozdział 8. Debianowe porady 90

init-2.03# cd /etc init-2.03# vi passwd init-2.03# vi shadow

(Je˙zelidrugie pole danych zapisanych w /etc/passwd zawiera tylko literk˛e„x” dla ka˙zdego u˙zytkownika,oznacza to, ˙zeTwój system u˙zywaosobnego pliku do przechowywania haseł i musisz edytowa´c /etc/shadow.) Aby wył ˛aczy´chasło dla konta root, wykasuj cał ˛azawarto´s´c pola odpowiedzialnego za hasło (jest to drugie pole w pliku /etc/passwd lub /etc/shadow, je˙zelisystem go u˙zywa).Teraz mo˙zeszprzeładowa´csystem i zalogowa´csi˛ena konto root bez hasła. Podczas inicjowania na poziomie startu równym 1 („runlevel 1”), Debian (od wersji Potato) wymaga hasła, czego niektóre starsze dystrybucje nie czyni ˛a. Dobrym pomysłem jest mie´cjaki´sprosty edytor w /bin na wypadek, gdyby /usr było niedost˛epne (zobacz tak˙ze‘Edytory awaryjne’ na 160 stronie). Mo˙zesztak˙zerozwa˙zy´cinstalacj˛epakietu sash. Je´slisystem przestanie si˛euruchamia´c,wykonaj:

boot: Linux init=/bin/sash sash jest interaktywnym zamiennikiem dla sh, nawet gdy /bin/sh jest niezdatny do u˙zytku. sash jest ł ˛aczonystatycznie i zawiera wbudowane wiele typowych funkcji (wpisz „help” w linii polece´n,aby pozna´cjego mo˙zliwo´sci).

8.1.2 „Zapomniałem hasła roota!” (2)

Uruchom system z zestawu dyskietek ratunkowych lub z płyty CD. Załó˙zmy, ˙ze /dev/hda3 to oryginalna, główna partycja (root). Poni˙zszepolecenia pozwol ˛ana równie łatwe, jak w poprzednim punkcie, wyedytowanie plików z u˙zytkownikamii hasłami.

# mkdir fixit # mount /dev/hda3 fixit # cd fixit/etc # vi shadow # vi passwd

Przewag ˛atej metody nad poprzedni ˛ajest to, ˙zenie trzeba zna´chasła do lilo (je˙zelijest takowe uaktywnione). Aczkolwiek wymaga to ingerencji w ustawienia BIOSu i wł ˛aczenie mo˙zliwo´scistartu systemu z CD czy te˙zdyskietek.

8.1.3 System si˛enie uruchamia

To ˙zadenproblem, nawet je´slizaniedbano przygotowawania dystkietki startowej. Je´sli lilo jest uszkodzone, u˙zyjpłyty startowej z zestawu płyt instalacyjnych Debiana (lub utwórz dyski- etk˛estartow ˛az obrazów zawartych na tej˙zepłycie) i uruchom system przy jej pomocy. Rozdział 8. Debianowe porady 91

Zakładamy, ˙zegłówna partycja Twojej instalacji Linuksa to /dev/hda12 oraz ˙zechcesz ustawi´c 3 poziom startu. Gdy pojawi si˛ekomunikat startowy, wpisz:

boot: rescue root=/dev/hda12 3

Po chwili otrzymujesz prawie w pełni funkcjonalny system wykorzystuj ˛acyj ˛adro z płytki/dyskietki startowej. Mog ˛ajednak wyst ˛api´cpewne problemy wynikaj ˛acez braku pewnych mo˙zliwo´sci lub modułów w dystrybucyjnym j ˛adrze. Je´slimasz uszkodzony system zainteresuj si˛ete˙zrozdziałem ‘Instalowanie pakietu w niestar- tuj ˛acymsystemie’ na 70 stronie. Je˙zelipotrzebujesz specjalnie dostosowanej dyskietki startowej, przejrzyj plik readme.txt umieszczony na dysku ratunkowym.

8.1.4 Jak wył ˛aczy´cautomatyczne uruchamianie Xów przy starcie?!

Ujarzmianie wersji unstable/sid mo˙zeby´czabawne, ale zawieraj ˛acybł˛edy xdm, gdm, kdm oraz wdm staruj ˛acyprzy uruchamianiu systemu mo˙zeCi dopiec. Na pocz ˛atekzdob ˛ad´zdost˛epdo konta administratora (root) wpisuj ˛acponi˙zszepolecenie pod- czas startu lilo:

boot: Linux vga=normal s

Zakładamy, ˙ze Linux to etykieta j ˛adra,które zazwyczaj uruchamiasz. Natomiast „vga=normal” sprawi, ˙ze lilo wystartuje w normalnym trybie VGA. Ostatni parametr – „s” (lub „S”) sprawia, ˙ze init uruchamia system w trybie pojedynczego u˙zytkownika. Teraz wystarczy wpisa´c hasło administratora (konto root). Istnieje kilka sposobów na wył ˛aczeniewszystkich demonów systemu X:

• uruchom update-rc.d ?dm stop 99 1 2 3 4 5 6

• wstaw „exit 0” na pocz ˛atekwszystkich plików /etc/init.d/?dm.

• zmie´nnazw˛ewszystkich plików /etc/rc2.d/S99?dm na /etc/rc2.d/K99?dm.

• usu´nwszystkie pliki /etc/rc2.d/S99?dm.

• uruchom :>/etc/X11/default-display-manager

W przykładach rc2.d oznacza aktualny poziom startu (runlevel) ustalony w /etc/inittab, za´s ?dm ka˙zdyz xdm, gdm, kdm czy te˙z wdm Rozdział 8. Debianowe porady 92

Tylko pierwsze z rozwi ˛aza´nwymienionych na li´scie,jest „jedynie słuszn ˛adrog ˛a”w systemie Debian. Ostatni ze sposobów jest łatwy, ale wymaga ponownego ustawienia mened˙zeraekranu u˙zywaj˛acpó´zniej dpkg-reconfigure. Pozostałe to ró˙znemetody na wył ˛aczeniedemonów. Po tych czynno´sciachnadal mo˙zeszuruchomi´c´srodowisko graficzne poleceniem startx wydanym na dowolnej konsoli tekstowej.

8.1.5 Inne triki stosowane podczas startu systemu

System mo˙zeby´curuchamiany w wybranym poziomie startu (runlevel) oraz z okre´slon˛aprzez u˙zytkownikakonfiguracj ˛a.Wystarczy wykorzysta´cudost˛epnian˛aprzez lilo mo˙zliwo´s´cpo- dania parametrów przy uruchamianiu systemu. Szczegóły znajdziesz w BootPrompt-HOWTO (http://www.tldp.org/HOWTO/BootPrompt-HOWTO.html) (LDP). Je˙zelichcesz uzyska´c4 poziom startu, spróbuj poni˙zszego:

boot: Linux 4

Je´slinatomiast chcesz uzyska´ctryb pojedynczego u˙zytkownika(single-user), a znasz hasło administratora, mo˙zeszu˙zy´c:

boot: Linux S boot: Linux 1 boot: Linux -s

W przypadku, gdy chcesz uruchomi´csystem tak, aby wykorzystywał mniej pami˛eci,ni˙zjest w rzeczywisto´sciw komputerze (powiedzmy 48MB, podczas gdy komputer ma 64MB), u˙zyj:

boot: Linux mem=48M

Upewnij si˛e, ˙zenie podajesz warto´sciprzewy˙zszaj˛acejdost˛epn˛apami˛e´c,gdy˙zwtedy j ˛adro mo˙zeulec katastrofie! Je˙zeliposiadamy wi˛ecejni˙z64MB (przykładowo 128MB), do czasu a˙z podamy mem=128M podczas startu lub w /etc/lilo.conf, starsze j ˛adrai/lub płyty główne ze starszym BIOSem mog ˛anie u˙zywa´cpami˛ecipowy˙zej64MB.

8.1.6 Ustawianie parametrów uruchomieniowych GRUB

GRUB jest to nowy zarz ˛adcastartu systemu wywodz ˛acysi˛ez projektu GNU Hurd. Jest on bardziej elastyczny ni˙z lilo, jednak˙zewyst˛epuj˛atu drobne ró˙znicew zakresie manipulowa- nia parametrami startu systemu.

grub> find /vmlinuz grub> root (hd0,0) grub> kernel /vmlinuz root=/dev/hda1 grub> initrd /initrd grub> boot Rozdział 8. Debianowe porady 93

Musisz by´c´swiadomnazw urz ˛adze´npochodz ˛acychz Hurda:

HURD/GRUB Linux MSDOS/Windows (fd0) /dev/fd0 A: (hd0,1) /dev/hda1 C: (zazwyczaj) (hd0,4) /dev/hda4 F: (zazwyczaj) (hd1,4) /dev/hdb4 ?

Zajrzyj do /usr/share/doc/grub/README.Debian oraz /usr/share/doc/grub-doc /html/ po dokładniejsze informacje.

8.2 Rejestrowanie działa ´n

8.2.1 Rejestrowanie polece ´npowłoki

Administracja systemem poci ˛agaza sob ˛ao wiele wi˛ecejdrobiazgowych zada´nw Uniksie ni˙z w zwykłych ´srodowiskach komputerów osobistych. Upewnij si˛e,˙zeznasz przynajmniej pod- stawowe sposoby konfiguracji, na wypadek gdyby zaszła potrzeba odratowania systemu z problemów. Bazuj ˛acena graficznym interfejsie narz˛edziakonfiguracyjne wygl ˛adaj˛aprzyjem- nie i wygodnie, jednak˙zezazwyczaj nie nadaj ˛asi˛edo u˙zyciaw stanie zagro˙zenia. Tak wi˛ec,rejestrowanie działa´npoleceniami powłoki jest dobrym zwyczajem, szczególnie pod- czas pracy jako administrator (root). Emacs: U˙zyj M-x shell aby rozpocz ˛a´cnagrywanie do bufora oraz C-x C-w aby zapisa´c bufor na dysk. Powłoka: U˙zyjpolecenia screen oraz „^A H” jak opisano w ‘Zmiana konsoli przy pomocy screena’ na 107 stronie lub skorzystaj z script.

$ script nagranie Script started, file is nagranie $ ...... Rób cokolwiek ...... Na zakonczenie´ nacisnij´ Ctrl+D ... Script done, file is nagranie $ col -bx raport $ vi raport

Poni˙zszepolecenie mo˙zeby´cu˙zytezamiast polecenia script:

$ bash -i 2>&1 | tee nagranie Rozdział 8. Debianowe porady 94

8.2.2 Rejestrowanie obrazu w Xach.

Je˙zelichcesz zarejestrowa´cgraficzny obraz aplikacji w ´srodowisku X-Window, mo˙zeszu˙zy´c programu gimp (GUI). Potrafi on przechwytywa´cokre´sloneokna z osobna lub cały ekran. In- nym rozwi ˛azaniemjest zastosowanie programów takich jak: xwd (z pakietu xbase-clients), import (z pakietu imagemagick) oraz scrot (z pakietu scrot).

8.3 Kopiowanie oraz archiwizacja całych katalogów

8.3.1 Podstawowe polecenia do kopiowania całych podkatalogów

Je˙zelichcesz przearan˙zowa´cstruktur˛epoło˙zeniaplików, skorzystaj na przykład z:

Typowa metoda: # cp -a /pocz ˛atkowy/katalog/docelowy/katalog # wymaga narz˛edziaGNU cp # (cd /pocz ˛atkowy/katalog&& tar cf - . ) | \ (cd /docelowy/katalog && tar xvfp - ) Je˙zelitwarde dowi ˛azanias ˛awymagane, przydatna oka˙zesi˛emetoda: # cd /scie˙zka/do/starego/katalogu´ # find . -depth -print0 | afio -p -xv -0a /punkt/montowania/nowego/katalogu Jesli´ cel jest na odległej maszynie: # (cd /pocz ˛atkowy/katalog&& tar cf - . ) | \ ssh u˙[email protected]ły(cd /docelowy/katalog && tar xvfp - ) Je˙zelinie ma dowi ˛azan´ do plików, wystarczy: # scp -pr u˙[email protected]:/pocz˛atkowy/katalog\ u˙[email protected]:/docelowy/katalog

W przykładach scp <==> rcp oraz ssh <==> rsh. Powy˙zszesposoby kopiowania całych katalogów zostały zaprezentowane przez Manoja Sri- vastav˛e na li´sciedyskusyjnej [email protected].

8.3.2 cp

Tradycyjne narz˛edzie cp nie było dobrym kandydatem do takich zada´n,gdy˙znie wyłuskiwało symbolicznych dowi ˛aza´nani nie chroniło dowi ˛aza´ntwardych. Kolejn ˛arzecz ˛awymagaj ˛ac˛a rozwa˙zeniabyły tzw. rzadkie (sparse) pliki (pliki z dziurami). GNU cp przezwyci˛e˙zyłote ograniczenia, jednak˙zena systemach niezgodnych z GNU, cp mo˙zewci ˛a˙zsprawia´cproblemy. Mo˙zeszrównie˙znie móc tworzy´cmałych, przeno´snycharchi- wów u˙zywaj˛ac cp.

% cp -a . newdir Rozdział 8. Debianowe porady 95

8.3.3 tar

Tar przezwyci˛e˙zakilka z problemów, które cp ma z symbolicznymi dowi ˛azaniami.Jednak˙ze, jakkolwiek cpio obsługuje specjalne pliki, to konwencjonalny tar nie. W przypadku wielu dowi ˛aza´n(hardlink) do jednego pliku, tar umieszcza na ta´smietylko jedn ˛akopi˛e; cpio umieszcza jedn ˛akopi˛edla ka˙zdegodowi ˛azania. Polecenie tar zmieniło swoj ˛aopcj˛eu˙zywan˛adla plików .bz2 pomi˛edzyPotato a Woody, wi˛ec u˙zywajw skryptach --bzip2 zamiast ich krótkiej formy -I (Potato) czy te˙z -j (Woody).

8.3.4 pax

Nowe, wypasione narz˛edziePOSIX (IEEE Std 1003.2-1992, strony 380–388 (rozdział 4.48) oraz strony 936–940 (rozdział E.4.48)) o nazwie Portable ArchiveInterchange. pax potrafi czyta´c,za- pisywa´ci wy´swietla´czawarto´s´cpliku archiwum, jak równie˙zkopiowa´chierarchie katalogów. Operacje narz˛edzi pax s ˛aniezale˙zneod okre´slonegorodzaju archiwum i obsługuj ˛aszerok ˛a gam˛eró˙znorodnych formatów. Implementacje programu pax s ˛aci ˛aglenowe i siermi˛e˙zne.

# apt-get install pax $ pax -rw -p e . nowy_katalog lub $ find . -depth | pax -rw -p e nowy_katalog

8.3.5 cpio cpio kopiuje pliki do lub z archiwum programu cpio albo programu tar. Archiwum mo˙ze by´cplikiem na dysku, ta´sm˛amagnetyczn ˛aczy te˙zpotokiem.

$ find . -depth -print0 | cpio --null --sparse -pvd new-dir

8.3.6 afio afio jest lepszym wyborem w zakresie obsługi archiwów w formacie cpio. Jest zdecy- dowanie szybszy ni˙z cpio, udost˛epniawi˛ecejopcji obsługi ta´smymagnetycznej oraz za- chowuje si˛eo wiele wdzi˛eczniejw przypadku uszkodzenia danych wej´sciowych. Obsługuje wielocz˛e´sciowearchiwa podczas interaktywnych operacji. afio mo˙zetworzy´ckompresowane archiwa, które s ˛ao wiele bezpieczniejsze ni˙zkompresowane produkty tara lub cpio. afio jest u˙zywanejako „archiwizuj ˛acysilnik” w skryptach do tworzenia kopii zapasowych.

$ find . -depth -print0 | afio -px -0a new-dir Rozdział 8. Debianowe porady 96

8.4 Kopia ró˙znicowaoraz synchronizacja danych

Kopie ró˙znicoweoraz synchronizacja danych mog ˛aby´cwykonane ró˙znymimetodami:

• rcs: kopia oraz historia, tylko tekst

• rdiff-backup: kopia oraz historia. symboliczne dowi ˛azania.

• pdumpfs: kopia oraz historia w granicach systemu plików. symlink OK

• rsync: jednokierunkowa synchronizacja

• unison: dwukierunkowa synchronizacja

• cvs: wielotorowa synchronizacja z serwerem, kopia oraz historia, tylko tekst, dojrzałe rozwi ˛azanie.Zobacz te˙ztutaj: ‘CVS’ na 165 stronie.

• arch: wielotorowa synchronizacja z serwerem, kopia oraz historia, brak takich rzeczy jak „roboczy katalog”.

• subversion: wielotorowa synchronizacja z serwerem, kopia oraz historia, Apache.

Poł ˛aczeniejednej z tych metod z archiwizacj ˛aopisan ˛atutaj: ‘Kopiowanie oraz archiwizacja całych katalogów’ na 94 stronie oraz automatycznym wykonywaniem zada´no okre´slonym czasie (‘Harmonogram działa´n(cron, at)’ na 106 stronie) pozwoli stworzy´cmiły system kopii bezpiecze´nstwa. Poni˙zejopisz˛etrzy łatwe w u˙zyciunarz˛edzia.

8.4.1 Kopia ró˙znicowaz u˙zyciemrdiff rdiff-backup pozwala przyjemnie i prosto utworzy´ckopi˛ebezpiecze´nstwawraz z histori ˛a zmian, obsługuj ˛acdowolne typy plików, wł ˛aczaj˛acw to dowi ˛azaniasymboliczne. Aby zarchi- wizowa´c ~/ do /mnt/kopia, zastosuj:

$ rdiff-backup --include ~/tmp/keep --exclude ~/tmp ~/ /mnt/kopia

Aby przywróci´cdane sprzed trzech dni do ~/stare, u˙zyj:

$ rdiff-backup -r 3D /mnt/kopia ~/stare

Poczytaj te˙zpodr˛eczniksystemowy: rdiff-backup(1). Rozdział 8. Debianowe porady 97

8.4.2 Codzienna kopia z u˙zyciem pdumpfs pdumpfs to prosty system tworzenia codziennych kopii zapasowych, zbliony do dumpfs. Mo˙zeszkorzysta´cz dost˛epudo wcze´sniejszychkopii w dowolnym momencie. Spróbuj uru- chomi´ckopi˛ebezpiecze´nstwaswojego katalogu domowego z wykorzystaniem pdumpfs oraz crona! pdumpfs tworzy archiwum YYYY/MM/DD w docelowym katalogu. Przy pierwszym uruchomie- niu pdumpfs wszystkie ´zródłowepliki s ˛akopiowane do docelowego katalogu. Za kolejnymi uruchomieniami kopiowane s ˛ajedynie te pliki, które zostały zmodyfikowane lub utworzone od ostatniego uruchomienia programu pdumpfs, natomiast pozostaj ˛acebez zmian s ˛aprzed- stawiane w postaci dowi ˛azaniado ich odpowiedników we wcze´sniejszychkopiach celem za- oszcz˛edzeniamiejsca na dysku.

$ pdumpfs kat_´zródłowy kat_docelowy [nazwa docelowa]

Zobacz tak˙ze: pdumpfs(8).

8.4.3 Regularne kopie ró˙znicowewykonywane z u˙zyciemRCS

Changetrack regularnie rejestruje zmiany w tekstowych plikach konfiguracyjnych. Zobacz tak˙ze: changetrack(1).

# apt-get install changetrack # vi changetrack.conf

8.5 Przywracanie po zawieszeniu systemu

8.5.1 Usuwanie procesów

Uruchom top aby zobaczy´c,które procesy zu˙zywaj˛anajwi˛eksz˛ailo´s´czasobów. Naci´snij„P” aby posortowa´cwg zu˙zyciamocy procesora, „M” wg zu˙zyciapami˛ecioraz „k” aby usun ˛a´c proces. Alternatywnie, mo˙zeszu˙zy´c ps aux | less (sposób BSD) lub ps -efH | less (sposób System-V). Ta druga składnia pokazuje identyfikatory procesów nadrz˛ednych.(PPID), co pozwala na ubicie zombie (niefunkcjonuj ˛acychprocesów potomnych). U˙zyjpolecenia kill aby usun ˛a´cproces (lub wysła´cdo niego sygnał) według ID procesu. killall działa analogicznie, ale mo˙zliwejest podanie nazwy procesu. Najcz˛e´scieju˙zywane sygnały:

1: HUP, uruchom ponownie demona 15: TERM, normalne zakonczenie´ pracy 9: KILL, bezkompromisowe usuni˛ecie Rozdział 8. Debianowe porady 98

8.5.2 Alt-SysRq

J ˛adro pozwala si˛ezabezpieczy´cprzed wadliwym działaniem systemu za pomoc ˛aopcji „Magic SysRq key” podawanej przy jego kompilacji. Wci´sni˛eciena architekturze i386 Alt-SysRq, a za nim jeden z klawiszy r 0 k e i s u b czyni cuda. Klawisz ‘r’ przywróci stan klawiatury po takich niespodziankach jak zawieszenie si˛eserwera X. Zmiana poziomu logowania na konsoli na ‘0’ zmniejsza ilo´s´cwy´swietlanychkomunikatów o bł˛edach.sa’k’ (z ang. system attention key) zabija wszystkie procesy na danej konsoli wirtu- alnej. ‘e’ zabija wszystkie procesy na danym terminalu poza procesem init. ‘i’ zabija wszystkie procesy poza procesem init. ‘S’ync, ‘u’mount i re‘b’oot słu˙z˛ado wychodzenia z najci˛e˙zszychkłopotów. W momencie powstawania tego dokumentu, domy´slnej ˛adro dystrybucyjne Debiana nie było kompilowane z t ˛aopcj ˛a,musisz wi˛ecskompilowa´cje samodzielnie, je˙zelichcesz j ˛aakty- wowa´c.Szczegółowe instrukcje znajdziesz w pliku: /usr/share/doc/kernel-doc-version /Documentation/sysrq.txt.gz lub /usr/src/kernel-version/Documentation/sysrq.txt.gz.

8.6 Warte zapami˛etaniapolecenia

8.6.1 Przegl ˛adarkatre´scitekstowych less jest domy´sln˛aprzegl ˛adark˛azawarto´sciplików. Klawisz „h” przywołuje pomoc. Pro- gram potrafi o wiele wi˛ecejni˙z more. less mo˙zeby´c„podrasowany” przez wykonanie polecenia eval $(lesspipe) lub eval $(lessfile) w skryptach startowych powłoki. Zobacz wi˛ecej: /usr/share/doc/lessf/LESSOPEN. Opcja -R umo˙zliwiawykorzysty- wanie nieobrobionego wyj´sciaoraz wł ˛aczasekwencje ANSI steruj ˛acekolorami. Zobacz tak˙ze: less(1). w3m mo˙zeby´cu˙zytecznyjako alternatywna przegl ˛adarkaw przypadku niektórych systemów kodowania (np. EUC).

8.6.2 Wolna pami˛e´c free oraz top stanowi ˛adobry sposób uzyskania informacji na temat pami˛eci. Nie zwracaj uwagi na warto´s´c„used” w linii „Mem:”, ale skorzystaj z liczby umieszczonej poni˙zej(w przykładzie jest to 38792).

$ free -k # dla komputera z pami˛eci˛ao rozmiarze 256MB total used free shared buffers cached Mem: 257136 230456 26680 45736 116136 75528 -/+ buffers/cache: 38792 218344 Swap: 264996 0 264996 Rozdział 8. Debianowe porady 99

Scisły´ rozmiar fizycznej pami˛ecimo˙zeby´csprawdzony poleceniem grep ’^Memory’ /var/log/dmesg, które w przypadku z przykładu powy˙zejdaje komunikat: „Memory: 256984k/262144k avail- able (1652k kernel code, 412k reserved, 2944k data, 152k init)”.

Total = 262144k = 256M (1k=1024, 1M=1024k) Free to dmesg = 256984k = Total - kernel - reserved - data - init Free to shell = 257136k = Total - kernel - reserved - data

Około 5MB jest nieu˙zytecznedla systemu, poniewa˙zj ˛adro tego u˙zywa.

8.6.3 Ustawianie czasu (BIOS)

# date MMDDhhmmCCYY # hwclock --utc # hwclock --systohc # hwclock --show

Powy˙zszepolecenia ustawiaj ˛asprz˛etowyzegar na warto´s´c: MM/DD hh:mm, CCYY. Czas jest pokazywany zgodnie z lokaln ˛astref ˛aczasow ˛a,jednak sprz˛etowyzegar jest ustawiany według czasu uniwersalnego (UTC).

8.6.4 Ustawianie czasu (NTP)

Zagl ˛adnijte˙zdo: Managing Accurate Date and Time HOWTO (http://www.tldp.org/ HOWTO/TimePrecision-HOWTO/index.html).

Ustawianie czasu w przypadku stałego ł ˛aczaz Internetem

Ustaw czas systemu automatycznie według odległego serwera:

# ntpdate serwer

Dobrym rozwi ˛azaniejest umieszczenie tego w pliku /etc/cron.daily je˙zeliTwój system ma stałe ł ˛aczez Internetem, a dokładniej, z wskazanym serwerem.

Ustawianie czasu przy czasowych poł ˛aczeniachz sieci ˛a

U˙zyjpakietu chrony. Rozdział 8. Debianowe porady 100

8.6.5 Jak wył ˛aczy´cwygaszacz ekranu

W konsoli tekstowej:

# setterm -powersave off

Mo˙zeszuruchomi´ckonsol˛ekon2(kanji) u˙zywaj˛ac:

# kon -SaveTime 0

Maj ˛acuruchomieny X Window System:

# xset s off lub # xset -dpms lub # xscreensaver-command -prefs

Przeczytaj odpowiednie strony podr˛ecznikasystemowego.

8.6.6 Przeszukiwanie administracyjnych baz danych

Glibc umo˙zliwiawykorzystanie: getent(1) do wyszukiwania wpisów w administracyjnych bazach danych, takich jak passwd, group, hosts, services, protocols czy networks. getent baza_danych [klucz ...]

8.6.7 Wył ˛aczeniad´zwi˛eków(brz˛eczyk)

Najpro´sciejodł ˛aczy´cgło´sniczek;-). Albo, dla basha:

echo "set bell-style none">> ~/.inputrc

8.6.8 Komunikaty o bł˛edachna ekranie konsoli

Aby wył ˛aczy´ckomunikaty o bł˛edachwysyłane na konsol˛etekstow ˛a,zagl ˛adnijdo /etc/init.d /klogd. Ustaw KLOGD=“-c 3” w tym skrypcie oraz uruchom /etc/init.d/klogd restart. Inna metoda, to uruchomienie dmesg -n3. Poziomy raportowania bł˛edóws ˛anast˛epuj˛ace: • 0: KERN_EMERG, system jest bezu˙zyteczny • 1: KERN_ALERT, reakcja musi by´cnatychmiastowa Rozdział 8. Debianowe porady 101

• 2: KERN_CRIT, krytyczna sytuacja (critical conditions) • 3: KERN_ERR, bł˛ednasytuacja (error conditions) • 4: KERN_WARNING, ostrze˙zenie(warning conditions) • 5: KERN_NOTICE, normalna, cho´cwa˙znasytuacja (significant condition) • 6: KERN_INFO, informacyjne • 7: KERN_DEBUG, komunikaty odpluskwiania Je´slidenerwuje Ci˛ejeden, specyficzny, bezu˙zytecznykomunikat o bł˛edzie,zastanów si˛enad zastosowaniem trywialnej łatki na j ˛adro, takiej jak shutup-abit-bp6 (dost˛epnaw podkata- logu z przykładami (examples/)). Mo˙zesztak˙zezagl ˛adn˛a´cdo /etc/syslog.conf; sprawd´zczy jakie´skomunikaty nie s ˛awysyłane do urz ˛adzeniapowi ˛azanegoz konsol ˛a.

8.6.9 Ustawienie wła´sciwegotypu konsoli

Ekran konsoli w systemach uniksowych jest zazwyczaj obsługiwany przez bilioteki (n)curses. Zapewniaj ˛aone niezale˙zneod rodzaju terminala metody obsługi ekranu. Sprawd´z: ncurses(3X) oraz terminfo(5). W systemie Debian, jest nieco wst˛epniezdefiniowanych warto´sci:

$ toe | less # wszystkie wartosci´ $ toe /etc/terminfo/ | less # wartosci´ daj ˛acesi˛emodyfikowac´ przez u˙zytkowników

Wyeksportuj Twój wybór jako zmienn ˛a´srodowiskow ˛a TERM. Je˙zeliwarto´s´cterminfo dla xterm nie działa wła´sciwiez xtermami nie pochodz ˛acymiz De- biana, zmie´nrodzaj terminala z „xterm” na jedn ˛az wersji posiadaj ˛acychograniczenia funkcjon- alno´sci,jak np.„xterm-r6” podczas zdalnego logowania do Debiana. Zobacz tak˙ze: /usr /share/doc/libncurses5/FAQ. „dumb” jest najni˙zsz˛awspóln ˛adefinicj ˛adla terminfo.

8.6.10 Przywracanie konsoli do rozs ˛adnegostanu

Je´sliekran stanie si˛enieczytelny po wykonaniu polecenia $ cat jakis-plik-binarny´ (mo˙zesznie widzie´cpolece´n,jakie wpisujesz), zastosuj:

$ reset

8.6.11 Konwersja plików ze stylu dosowego na uniksowy

Przekształcanie dosowego pliku tekstowego (koniec-linii = ^M^J) na format uniksowy (koniec- linii = ^J):

# apt-get install sysutils $ dos2unix plik_dosowy Rozdział 8. Debianowe porady 102

8.6.12 Zast˛epowanieprzy pomocy wyra˙ze´nregularnych

Zamiana wszystkich wyst ˛apie´n WYRAZENIE_POCZ˙ ˛ATKOWE na WYRAZENIE_KO˙ NCOWE´ we wszystkich plikach PLIKI ...:

$ perl -i -p -e ’s/WYRAZENIE_POCZ˙ ˛ATKOWE/WYRAZENIE_KO˙ NCOWE´ /g;’ PLIKI ...

-i słu˙zydo „in-place editing”, -p wymusza przetwarzanie w p˛etli,ka˙zdyplik z podanych jako PLIKI . . . Je´slizast˛epowaniejest zło˙zone,mo˙zeszzabezpieczy´csi˛eprzed bł˛edamiu˙zywa- j ˛acparametru -i.bak zamiast -i; to zachowa oryginalne pliki dodaj ˛acdo ich nazwy .bak.

8.6.13 Edytowanie plików przez skrypt

Poni˙zszyskrypt usunie linie 5–10 oraz 16–20.

#!/bin/bash ed $1 <

Polecenia ed s ˛atakie same jak polecenia vi w trybie wydawania polece´n.Modyfikacja pliku od tyłu ułatwia jego edycj˛ew skryptach.

8.6.14 Odnajdywanie ró˙znici scalanie uaktualnie ´nw pliku ´zródłowym

Poni˙zszaprocedura odnajduje ró˙znicepomi˛edzydwoma plikami i tworzy zunifikowane pliki „diff”: plik.łatka0 lub plik.łatka1:

$ diff -u plik.stary plik.nowy1 > plik.łatka0 $ diff -u stary/plik nowy1/plik > plik.łatka1

Pliki „diff”, nazywane tak˙zełatkami (patch) s ˛au˙zywanedo przesyłania uaktualnie´nkodów ´zródłowychprogramów. Po odebraniu takiego pliku, mo˙znago zaaplikowa´cna posiadany stary plik u˙zywaj˛acpolece´n:

$ patch -p0 plik.stary < plik.łatka0 $ patch -p1 plik.stary < plik.łatka1

Je´slimasz wszystkie trzy wersje kodów ´zródłowych,mo˙zeszje poł ˛aczy´cu˙zywaj˛acnarz˛edzia diff3:

$ diff3 -m plik.mój plik.stary plik.twój > plik Rozdział 8. Debianowe porady 103

8.6.15 Przekształcanie du˙zegopliku w kilka małych

$ split -b 650m plik # podział pliku na kawałki 650 MB $ cat x* > duzyplik # ł ˛aczenieplików w jeden du˙zy

8.6.16 Wyłuskiwanie danych z tekstowych tabel

Rozpatrzymy plik nazwany DPL w którym zachowywane s ˛awszystkie nazwiska przywódców projektu Debian oraz daty rozpocz˛eciaich działalno´sci.Dane oddzielone s ˛aprzerwami.

Ian Murdock August 1993 April 1996 January 1998 Wichert Akkerman January 1999 Ben Collins April 2001 April 2002 March 2003

Najcz˛escieju˙zywanymnarz˛edziemdo takich zada´njest AWK.

$ awk ’{ print $3 }’

8.6.17 Kawałki kodu przekierowywania polece ´n

Poni˙zszeskrypty wspólnie tworz ˛api˛ekn˛acało´s´cje´slis ˛apoł ˛aczonepotokiem (ang. pipe).

find /usr | egrep -v "/usr/var|/usr/tmp|/usr/local" # znajduje wszystkie pliki w /usr z wył ˛aczeniempewnych plików xargs -n 1 polecenie # uruchamia polecenia dla ka˙zdegoz elementu ze standardowego wejscia´ xargs -n 1 echo | # dzieli elementy oddzielone białymi znakami na linie Rozdział 8. Debianowe porady 104

xargs echo | # ł ˛aczywszystkie linie w jedn ˛a grep -e wzorzec| # wyci ˛agalinie zawieraj ˛acedany wzorzec cut -d: -f3 -| # wyci ˛agatrzecie pole oddzielone znakiem : (np. plik passwd) awk ’{ print $3 }’ | # wyci ˛agatrzecie pole oddzielone białymi znakami awk -F’\t’ ’{ print $3 }’ | # wyci ˛agatrzecie pole oddzielone tabulatorem col -bx | # usuwa backspace i rozwija tabulacje na spacje expand -| # rozwija tabulacje sort -u| # sortuje i usuwa powtórzenia

tr ’\n’ ’ ’| # usuwa znaki LF (wysun´ wiersz) tr ’\r’ ''| # usuwa znaki CR (powrót karetki) tr ’A-Z’ ’a-z’| # przekształca wielkie litery w małe sed ’s/^/# /’| # zmienia ka˙zd˛alini˛ena komentarz (zaczyna si˛eod #) sed ’s/\.ext//g’| # usuwa .ext sed -n -e 2p| # wypisuje drug ˛alini˛e head -n 2 -| # wypiuje pierwsze 2 linie tail -n 2 -| # wypiuje ostatnie 2 linie

8.6.18 Szale ´nstwokrótkich skryptów Perla

Kazdy skprypt Awk mo˙zeby´cnapisany w Perlu. Przykładowo:

awk ’($2=="1957") { print $3 }’ | moze by´czapisany jak poni˙zej:

perl -ne ’@f=split; if ($f[1] eq "1957") { print "$f[2]\n"}’ | perl -ne ’if ((@f=split)[1] eq "1957") { print "$f[2]\n"}’ | perl -ne ’@f=split; print $f[2] if ( $f[1]==1957 )’ | perl -lane ’print $F[2] if $F[1] eq "1957"’ |

Teraz usuwamy wszystkie białe znaki oraz wykorzystujemy przewag˛eautomatycznej konwer- sji pomi˛edzyliczbami a ci ˛agamitekstowymi:

perl -lane ’print$F[2]if$F[1]eq+1957’ |

Zobacz te˙zdo: perlrun(1). Wiele równie, lub bardziej szalonych skrytów Perla znajdziesz tutaj: http://perlgolf.sourceforge.net.

8.6.19 Pobieranie tekstu oraz archiwów list dyskusyjnych ze stron WWW

Poni˙zszepolecenia zczytaj ˛astron˛eWWW do pliku tekstowego. Przydatne na przykład do skopiowania konfiguracji ze strony WWW. Rozdział 8. Debianowe porady 105

$ lynx -dump http://www.odległa-strona.pl/plik.html >plik.txt links i w3m mog ˛aby´crównie˙zanalogicznie u˙zyte,z dokładno´sci˛ado niewielkich ró˙znic. Je´slito jest archiwum listy dyskusyjnej, u˙zyj munpack aby uzyska´czawarto´s´cmime.

8.6.20 Estetyczne wydruki stron WWW

Poni˙zszepolecenia wydrukuj ˛astron˛eWWW do drukarki/pliku PostScript:

$ apt-get install html2ps $ html2ps URL | lpr

Zobacz tak˙ze‘lpr/lpd’ na 40 stronie oraz sprawd´zpakiety: a2ps oraz mpage słu˙z˛acedo tworzenia PostScriptu.

8.6.21 Estetyczne wydruki stron podr˛ecznikasystemowego

Poni˙zszepolecenia wydrukuj ˛astron˛epodr˛ecznikasystemowego do drukarki/pliku PostScript:

$ man -Tps jakas-strona-podr˛ecznika´ | lpr $ man -Tps jakas-strona-podr˛ecznika´ | mpage -2 | lpr

8.6.22 Ł ˛aczeniedwóch plików w formacie PostScript lub PDF

Mo˙zeszpoł ˛aczy´cpliki w formacie PostScript lub PDF:

$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite \ -sOutputFile=bla.ps -f foo1.ps foo2.ps $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \ -sOutputFile=bla.pdf -f foo1.pdffoo2.pdf

8.6.23 Czas trwania

Wy´swietlanieczasu trwania danego polecenia.

# time jakies-polecenie´ >/dev/null real 0m0.035s # czas, jaki upłyn ˛ałna zegarku sciennym´ (czas rzeczywisty) user 0m0.000s # czas sp˛edzonyw trybie u˙zytkownika sys 0m0.020s # czas sp˛edzonyw trybie j ˛adra Rozdział 8. Debianowe porady 106

8.6.24 Polecenie nice

U˙zyjpolecenia nice (z pakietu GNU shellutils) by ustawi´cpodczas startu „przyjazno´s´c” programu w stosunku do innych. renice (z bsdutils) lub top mo˙zezmieni´ct ˛awarto´s´c. Warto´s´crówna 19 oznacza najni˙zszypriorytet procesu. Warto´s´cujemna jest uwa˙zanaza „nieprzy- jazn ˛a”- warto´s´c-20 oznacza wysoki priorytet procesu. Tylko superu˙zytkownikmo˙zeustawia´c ujemne warto´scinice.

# nice -19 top # bardzo ,,miły’’ dla innych procesów # nice --20 cdrecord -v -eject speed=2 dev=0,0 disk.img #bardzo szybki

Czasami ekstremalne warto´scinice sprawiaj ˛awi˛ecejkłopotu ni˙zpo˙zytku,dlatego u˙zywajtego polecenia bardzo uwa˙znie.

8.6.25 Harmonogram działa ´n(cron, at)

U˙zyjpakietu cron lub at aby zaplanowa´czadania w systemie GNU/Linux. Zobacz: at(1), crontab(5), crontab(8). Wykonaj polecenie crontab -e edytuj ˛acezawarto´s´cspisu zada´n(„crontab”). Przykładowa zawarto´s´ctakiego pliku:

# u˙zyj/bin/sh do wykonywania polecen,´ niezale˙znieod zapisu w /etc/passwd SHELL=/bin/sh # przeslij´ standardowe wyjscie´ polecen´ do ‘pawel’, niezale˙znieod tego, czyj zestaw polecen´ jest wykonywany MAILTO=pawel # Min Godzina DzienMiesi´ ˛acaMiesi ˛acDzienTygodnia´ polecenie #(DzienTygodnia´ i DzienMiesi´ ˛acas ˛apoł ˛aczonespójnikiem LUB) # wykonaj o 00:05 ka˙zdegodnia 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # wykonaj o 14:15 pierwszego dnia ka˙zdegomiesi ˛aca-- wynik wysylany do Pawła 15 14 1 * * $HOME/bin/monthly # wykonaj o 22:00 ka˙zdegodnia tygodnia (1-5), wkurzamy Joe. # % to nowa linia, ostatni % to cc: 0 22 * * 1-5 mail -s "Jest 10 wieczór" joe%Joe,%%Czy wiesz, gdzie s ˛atwoje dzieciaki?%.%% 23 */2 1 2 * echo "wykonane 23 minuty po godzinie 0, 2, 4 ..., dnia 1 lutego" 5 4 * * sun echo "wykonane 04:05 ka˙zdejniedzieli" # Wykonaj o 03:40 w pierwszy poniedziałek miesi ˛aca 40 3 1-7 * * [ "$(date +%a)" == "Mon" ] && command -args

Uruchom polecenie at aby wykona´cjednorazowe zadanie:

$ echo ’polecenie -argumenty’| at 3:40 monday Rozdział 8. Debianowe porady 107

8.6.26 Zmiana konsoli przy pomocy screena

Program screen umo˙zliwiauruchomienie wielu pozornych terminali, ka˙zdyze swoj ˛awłasn ˛a powłok ˛a, na pojedynczym fizycznym terminalu lub emulatorze terminala. Nawet je´sliu˙zy- wasz wirtualnych konsoli Linuksa lub wielu x-terminali, program screen jest wart zaintere- sowania z uwagi na bogaty zbiór mo˙zliwo´sci,takich jak np.: • przewijany dost˛epdo historii polece´n, • kopiowanie i wklejanie, • zapisywanie stanu wyj´scia(logowanie), • digraph entry oraz • mo˙zliwo´s´c odł ˛aczenia sesji całego programu screen od terminala i ponowne jej przył ˛acze- nie pó´zniej.Pozwala to na zdalne uruchomienie czasochłonnego zadania, rozłaczenie i powrócenie do niego, gdy ju˙zsi˛ewykona.

Scenariusz zdalnego dost˛epu

Je´slicz˛estopodł ˛aczaszsi˛edo systemu ze zdalnego terminala lub korzystaj ˛acz programu emu- luj ˛acegoterminal w trybie VT100, screen uczyni Twoje ˙zyciełatwiejszym :-) dzi˛ekiopcji de- tach. 1. jeste´społ ˛aczonyprzez ł ˛aczewdzwaniane i masz uruchomiony program screen ze spor ˛a ilo´sci˛asesji zawieraj ˛acychró˙zneprogramy 2. nagle musisz porzuci´cterminal, ale nie chcesz straci´cswojej dotychczasowej pracy po rozł ˛aczeniu 3. wpisujesz wi˛ec Ctrl+A d aby odł ˛aczy´c sesje od terminala, a nast˛epnieprzerywasz podł ˛acze- nie do systemu. (lub szybciej: wpisuj ˛ac Ctrl+A DD zmuszaj ˛acprogram screen jed- nocze´sniedo odł ˛aczeniasesji i zako´nczeniapoł ˛aczenia) 4. gdy ponownie przył ˛aczyszsi˛edo systemu, wpisz polecenie screen -r, a screen mag- icznie przył ˛aczysi˛eponownie i wszystkie sesje zostan ˛aprzywrócone.

Podstawowe polecenia screena

Gdy uruchomisz program screen, wszystkie naciskane klawisze s ˛awysyłane do aktualnej sesji, za wyj ˛atkiemkombinacji wywołuj ˛acejsystem polece´n screena. Domy´slniejest to Ctrl+A. Wszystkie polecenia programu screen s ˛awpisywane przy u˙zyciu Ctrl+A a nast˛epniepoje- dynczych klawiszy. U˙zytecznepolecenia:

^A ? pomoc do programu ^A c utwórz now ˛asesj˛ei przeł ˛aczsi˛edo niej ^A n nast˛epnasesja ^A p poprzednia sesja ^A 0 id´zdo sesji numer 0 ^A w wyswietl´ list˛esesji ^A a Wyslij´ Ctrl+A do aktualnej sesji (normalne Ctrl+A jest przechwytywane) ^A h zapisz kopi˛eaktualnej sesji do pliku Rozdział 8. Debianowe porady 108

^A H rozpocznij/zakoncz´ przechwytywanie aktualnej sesji do pliku ^A ^X zabezpiecz terminal (ochrona hasłem) ^A d odł ˛aczsesje od terminala ^A DD odł ˛aczsesje od terminala, a terminal od systemu

To tylko niewielki podzbiór polece´nprogramu screen. Je´sliistnieje co´s,co chciał(a)by´swykona´c przy u˙zyciu screena zapewne jest to mo˙zliwe!

Zobacz tak˙ze: screen(1).

Backspace i/lub Ctrl+H w sesji screena

Je´slizauwa˙zysz, ˙zebackspace i/lib Ctrl+H nie działaj ˛adobrze podczas działania programu screen, wyedytuj plik /etc/screenrc, znajd´zlini˛e:

bindkey -k kb stuff "\177" i zakomentuj j ˛a(np. dodaj „#” jako pierwszy znak tej linii).

Zast˛epca screena w X Window System

Sprawd´z xmove. Poczytaj xmove(1).

8.6.27 Podstawy testowania sieci

Zainstaluj pakiety: netkit-ping, traceroute, dnsutils, ipchains (dla j ˛adra2.2), iptables (dla j ˛adra2.4), oraz net-tools i wykonaj:

$ ping www.google.com # sprawd´zpoł ˛aczeniez www.google.com $ traceroute www.google.com # sprawd´ztras˛epakietów $ ifconfig # sprawd´zustawienia komputera $ route -n # sprawd´zustawienia tras pakietów $ dig [@serwer-dns.pl] host.dom [{a|mx|any}] |less # sprawd´zwpisy DNS dla host.dom zapisane w dns-server.com # typy rekorów to: {a|mx|dowolne} $ ipchains -L -n |less # sprawd´zfiltry pakietów (j ˛adro2.2) $ iptables -L -n |less # check packet filter (j ˛adro2.4) $ netstat -a # znajd´zwszystkie otwarte porty $ netstat -l --inet # znajd´znasłuchuj ˛aceporty $ netstat -ln --tcp # znajd´znasłuchuj ˛aceporty TCP (numerycznie) Rozdział 8. Debianowe porady 109

8.6.28 Wypychanie przesyłek z lokalnej kolejki

Aby wypchn ˛a´clisty z lokalnej kolejki, mo˙zeszu˙zy´c:

# exim -q # wypchnij czekaj ˛acelisty # exim -qf # wypchnij wszystkie listy # exim -qff # wypchnij nawet zamro˙zoneprzesyłki

-qff mo˙zeby´cu˙zyteczn˛aopcj ˛aw skrypcie /etc/ppp/ip-up.d/exim.

8.6.29 Usuwanie zamro˙zonychprzesyłek z lokalnej kolejki

Aby usun ˛a´czamro˙zoneprzesyłki z lokalnej kolejki, wysyłaj ˛acjednocze´sniekomunikat o bł˛edzie, wykonaj:

# exim -Mg ‘mailq | grep frozen | awk ’{ print $3 }’‘

8.6.30 Ponownie dostarczanie zawarto´scimboksa

Je´sliTwój katalog domowy został zapełniony i procmailowi nie udało si˛edokona´cswego dzieła, musisz r˛ecznieprzenie´s´cpoczt˛edo posortowanych skrzynek w Twoim katalogu do- mowym z pliku /var/mail/nazwa_u˙zytkownika. Po zwolnieniu miejsca w katalogu do- mowym wykonaj poni˙zszeczynno´sci:

# /etc/init.d/exim stop # formail -s procmail

8.6.31 Usuwanie zawarto´sciplików

W celu usuni˛eciazawarto´sciplików takich jak dzienniki systemowe, nie u˙zywajpolecenia rm do usuni˛eciapliku i nie twórz pustego od nowa, poniewa˙zpomi˛edzytymi operacjami, jaka´s cz˛e´s´csystemu mo˙zechcie´cdokona´czapisków do takiego pliku. Poni˙zejpokazano sposób na bezpieczne usuwanie zawarto´scipliku:

$ :>plik-do-wyczyszczenia Rozdział 8. Debianowe porady 110

8.6.32 Sztuczne pliki

Poni˙zszepolecenia utworz ˛asztuczne lub puste pliki:

$ dd if=/dev/zero of=nazwa_pliku bs=1k count=5 # 5KB samych zer $ dd if=/dev/urandom of=nazwa_pliku bs=1m count=7 # 7MB losowej zawartosci´ $ touch nazwa_pliku # pusty plik, jesli´ nie istnieje

Przykładowo, poni˙zszepolecenie, wykonane z powłoki dyskietki startowej systemu Debian usunie całkowicie zawarto´s´cdysku twardego /dev/hda:

# dd if=/dev/urandom of=/dev/hda ; dd if=/dev/zero of=/dev/hda

8.6.33 chroot

Program chroot, chroot(8), pozwala na uruchomienie ró˙znychinstancji ´srodowiska GNU/Linux na jednym systemie bez ponownego uruchomiania go. Mo˙znate˙zuruchamia´czasobo˙zerneprogramy takie jak apt-get czy dselect w ´srodowisku chroot na szybkim komputerze maj ˛aczamontowane na wolniejszym komputerze zasób NFS na prawach r/w, który to zasób jest głównym punktem montowania na wolniejszym komput- erze.

Uruchamianie innej dystrybucji Debiana przy u˙zyciu chroot

Debianowe ´srodowisko chroot mo˙znałatwo stworzy´cprzy pomocy debootstrap w Woodym. Na przykład je´slichcesz utworzy´cchroota z Sidem w katalogu /sid-root maj ˛acszybki dost˛ep do Internetu:

main # cd / ; mkdir /sid-root main # debootstrap woody /sid-root http://ftp.debian.org/debian/ ... obserwuj jak program sci´ ˛agacał ˛apodstaw˛esystemu main # echo "proc-sid /sid-root/proc proc none 0 0" >> /etc/fstab main # mount proc-sid /sid-root/proc -t proc main # cp /etc/hosts /sid-root/etc/hosts main # chroot /sid-root /bin/bash chroot # apt-setup # ustawianie /etc/apt/sources.list chroot # vi /etc/apt/sources.list # wska´z´zródłana unstable chroot # dselect # mo˙zeszte˙zu˙zyc´ aptitude, zainstaluj mc i vima :-)

W tej chwili powiniene´sposiada´cw pełni funkcjonalny system Debian, w którym mo˙zesz miesza´cbez strachu, ˙zeco´spopsujesz w Twojej głównej dystrybucji. Ta sztuczka z debootstrap mo˙zete˙zby´cu˙zytado instalcji Debiana bez u˙zyciadysku in- stalacyjnego Debiana lecz przy wykorzystaniu innej dystrybucji GNU/Linux. Zobacz te˙z http://people.debian.org/~blade/install/. Rozdział 8. Debianowe porady 111

Ustawianie loginu dla chroot

Wpisanie chroot /sid-root /bin/bash jest proste, ale zostawia to wiele zmiennych ´srodowiskowych walaj ˛acychsi˛epo pami˛eci,a które nie s ˛apotrzebne lub nawet s ˛aniepo˙z˛adane.Du˙zolepszym sposobem jest uruchomienie kolejnego procesu login na oddzielnym terminalu wirtualnym, z którego mo˙zeszsi˛ebezpo´srednio logowa´cdo systemu chroot. Poniewa˙zdomy´slniew systemie Debian terminale tty1 do tty6 s ˛aprzeznaczone na konsole Linuksa, a tty7 na sesj˛eX Window System, u˙zyjemykonsoli tty8 jako konsoi chroot. Po utworzeniu ´srodowiska chroot tak jak to zostało opisane w ‘Uruchamianie innej dystrybucji Debiana przy u˙zyciu chroot’ na s ˛asiedniejstronie, wpisz b˛ed˛acrootem w głównym systemie:

main # echo "8:23:respawn:/usr/sbin/chroot /sid-root "\ "/sbin/getty 38400 tty8" >> /etc/inittab main # init q # przeładowanie init

Ustawianie Xów do działania w chroot

Chcesz bezpiecznie uruchamia´cnajnowesze Xy i GNOME w ´srodowisku chroot? Jest to mo˙zliwe! Poni˙zszyprzykład uruchomi GDM na wirtualnym terminalu vt9. Najpierw zainstaluj system chroot wg. opisu w ‘Uruchamianie innej dystrybucji Debiana przy u˙zyciu chroot’ na poprzedniej stronie. Z głównego systemu skopiuj kluczowe pliki konfigu- racyjne do systemu chroot.

main # cp /etc/X11/XF86Config-4 /sid-root/etc/X11/XF86Config-4 main # chroot /sid-root # lub u˙zyjkonsoli chroot chroot # apt-get install gdm gnome x-window-system chroot # vi /etc/gdm/gdm.conf # wykonaj s/vt7/vt9/ w sekcji [servers] chroot # /etc/init.d/gdm start

Plik /etc/gdm/gdm.conf został tak zmieniony, by pierwsz ˛akonsol ˛abyła konsola vt9, a nie vt7. Teraz mo˙zeszbez problemu przeł ˛acza´csi˛emi˛edzyfunkcjonalnymi ´srodowiskami X systemu głównego i systemu chroot przez proste przeł ˛aczaniewirtualnych terminali Linuksa, np. za pomoc ˛akombinacji klawiszy Ctrl-Alt-F7 i Ctrl-Alt-F9. Miłej zabawy! [FIXME] Dodaj komentarz i dowi ˛azaniedo skryptu init z chrootowanego gdm.

Uruchamianie innych dystrybucji w ´srodowisku chroot

Srodowisko´ chroot dla innej dystrybucji mo˙znautworzy´ccałkiem prosto. Instalujesz sys- tem na oddzielnej partycji korzystaj ˛acz instalatora danej dystrybucji, i wykonujesz poni˙zsze polecenia (przy zało˙zeniu,˙zegłówna partycja innej dystrybucji to /dev/hda9): Rozdział 8. Debianowe porady 112

main # cd / ; mkdir /other-dist main # mount -t ext3 /dev/hda9 /other-dist main # chroot /other-dist /bin/bash

Nast˛epniepost˛epujtak jak opisano to w ‘Uruchamianie innej dystrybucji Debiana przy u˙zyciu chroot’ na 110 stronie, ‘Ustawianie loginu dla chroot’ na poprzedniej stronie oraz ‘Ustaw- ianie Xów do działania w chroot’ na poprzedniej stronie.

Budowanie pakietu w ´srodowisku chroot pbuilder jest bardziej wyspecjalizowanym narz˛edziemprzygotowuj ˛acycm´srodowisko ch- root i buduj ˛acymw nim pakiet. Jest to idealny system sprawdzaj ˛acy, czy zale˙zno´sci budowa- nia s ˛apoprawne oraz do upewnienia si˛e,˙zeniepotrzebne i niepoprawne zale˙zno´scibudowa- nia nie znajd ˛asi˛ew pakiecie wynikowym.

8.6.34 Jak weryfikowa´cdowi ˛azania(hardlink)

Mo˙zeszsprawdzi´cczy dwa pliki s ˛atym samym plikiem z dwoma dowi ˛azaniami:

$ ls -li plik_1 plik_2

8.6.35 Montowanie obrazów systemów plików

Je˙zeli plik.img zawiera obraz zawarto´scitwardego dysku, za´soryginalny twardy dysk ma konfiguracj˛edaj ˛ac˛a: xxxx = (bajtów/sektor) * (sektorów/cylinder), wtedy mo˙zesztaki obraz zamontowa´cdo katalogu /mnt poleceniem:

# mount -o loop,offset=xxxx plik.img /mnt

Zauwa˙z,˙zewi˛ekszo´s´ctwardych dysków ma 512 bajtów/sektor.

8.6.36 Samba

Przykładowy dost˛epdo plików serwowanych przez Windows: • montowanie zasobów Windows do Linuksa # mount -t smbfs -o username=moja_nazwa,uid=mój_uid,gid=mój_gid \ //serwer/dzielony_zasób /mnt/smb • inny sposób na montowanie zasobów Windows do Linuksa: # smbmount //serwer/dzielony_zasób /mnt/smb \ -o "username=moja_nazwa,uid=mój_uid,gid=mój_gid" • lista udost˛epnianychzasobów na wskazanym serwerze Rozdział 8. Debianowe porady 113

# smbclient -L 192.168.1.2 Otoczenie sieciowe Samby mo˙zeby´csprawdzane spod GNU/Linuksa:

# smbclient -N -L adres_ip_twojego_komputera | less # nmblookup -T "*"

8.6.37 Narz˛edziado obsługi obcych systemów plików

Obsługa wielu obcych systemów plików jest wspierana obecnie przez linuksowe j ˛adro, a wi˛ec mog ˛aby´cone dost˛epnew prosty sposób, poprzez zamontowanie urz ˛adze´nje zawieraj ˛acych. Dla niektórych systemów plików s ˛adost˛epnetak˙zespecjalne narz˛edziaumo˙zliwiaj˛acedost˛ep do nich bez montowania urz ˛adze´n.S ˛aone dost˛epnejako programy pracuj ˛acew przestrzeni u˙zytkownika,a zatem wsparcie ze strony j ˛adranie jest potrzebne. • mtools: system plików MSDOS (MS-DOS, Windows) • cpmtools: system plików CP-M • hfsutils: system plików HFS (native Macintosh) • hfsplus: system plików HFS+ (modern Macintosh) Do tworzenia i weryfikacji systemu plików MS-DOS FAT u˙zytecznemo˙zeby´cnarz˛edzie: dosfstools. Rozdział 8. Debianowe porady 114 115

Rozdział 9

Dostrajanie systemu Debian

Ten rozdział opisuje tylko podstawy konfiguracji systemu, z u˙zyciemnarz˛edzitekstowych. Warunkiem wst˛epnymzrozumienia tego rozdziału jest przeczytanie ‘Wskazówki dotycz ˛ace instalacji Debiana’ na 27 stronie. Maj ˛acna uwadze bezpiecze´nstwo,wysoce wskazane jest przeczytanie Securing Debian Man- ual (http://www.debian.org/doc/manuals/securing-debian-howto/), który mo˙ze by´ctak˙zeznaleziony w pakiecie harden-doc.

9.1 Wskazówki dotycz ˛aceinicjalizacji systemu.

Przeczytaj ‘Program init’ na 22 stronie aby uzyska´cpodstawowe informacje o skryptach star- towych systemu Debian.

9.1.1 Dostosowywanie skryptów startowych do własnych potrzeb.

Debian wykorzystuje skrypty startowe System V. Chocia˙zwszystkie skrypty startowe znaj- duj ˛acesi˛ew /etc/init.d/* s ˛aokre´slanejako pliki konfiguracyjne i administrator mo˙zeje modyfikowa´c,to jednak zalecanym podej´sciemjest modyfikacja plików /etc/defaults/*. Na przykład, /etc/init.d/rcS mo˙zeby´cu˙zytydo zmodyfikowania ustawie´ndla motd, sulogin, itp. podczas startu systemu.

9.1.2 Logowanie komunikatów systemowych

Zachowanie programu loguj ˛acegomo˙zeby´cmodyfikowane poprzez /etc/syslog.conf. Sprawd´zpakiet colorize je´sliszukasz programu do kolorowania logów systemowych. Zobacz tak˙ze syslogd(8) oraz syslog.conf(5). Rozdział 9. Dostrajanie systemu Debian 116

9.1.3 Optymalizacja ustawie ´nsprz˛etowych

Istnieje kilka ustawie´nsprz˛etowych,których optymalizacj˛eDebian pozostawia w gestii ad- ministratora.

• hdparm – Optymalizacja dost˛epudysku twardego. Bardzo skuteczna. – Niebezpieczne. Przeczytaj hdparm(8) przed u˙zyciem. – hdparm -tT /dev/hda, aby sprawdzi´cszybko´s´cdost˛epudo dysku. – hdparm -q -c3 -d1 -u1 -m16 /dev/hda, aby przyspieszy´cdziałanie nowoczes- nego dysku IDE. (Mo˙zeby´cniebezpieczne.)

• setcd – Optymalizacja dost˛epunap˛edupłyt kompaktowych. – setcd -x 2, aby zmniejszy´cpr˛edko´s´cdo 2x. – Zobacz setcd(1).

• setserial – Zbiór narz˛edzido konfiguracji portu szeregowego.

• scsitools – Zbiór narz˛edzido konfiguracji urz ˛adze´nSCSI.

• memtest86 – Zbiór narz˛edzido testowania pami˛eciRAM.

• hwtools – Zbiór narz˛edzido niskopoziomowej konfiguracji sprz˛etu. * irqtune: zmienia priorytet IRQ, aby zapewni´cgo tym urz ˛adzeniom,które wymagaj ˛awy˙zszegopriorytetu i szybkiego obsłu˙zenia( np. porty szeregowe, modemy). Mo˙zliwejest nawet trzykrotne zwi˛ekszenieprzepustowo´scimodemu/portu szeregowego. * scanport: skanuje adresy I/O od 0x100 do 0x3ff w celu znalezienia zain- stalowanych urz ˛adze´nISA. * inb: narz˛edzieodczytuj ˛aceporty I/O i wy´swietlaj˛aceotrzymane wyniki w for- macie binarnym i szesnastkowym.

• schedutils – Narz˛edziedo zmiany ustawie´nprogramu szereguj ˛acegoj ˛adraLinuksa (scheduler). – Zawiera taskset, irqset, lsrt, oraz rt. – W poł ˛aczeniuz nice i renice (nie b˛ed˛acymicz˛e´sci˛atego pakietu), pozwalaj ˛ana pełn ˛akontrol˛eparametrów programu szereguj ˛acego.

Montowanie systemu plików z opcj ˛a noatime jest tak˙zebardzo skutecznym rozwi ˛azaniemw przyspieszaniu odczytu plików. Zobacz fstab(5) i mount(8). Rozdział 9. Dostrajanie systemu Debian 117

Niektóre urz ˛adzeniamog ˛aby´ckonfigurowane bezpo´srednio przez j ˛adro Linuksa, poprzez system plików proc. Zobacz ‘Dostrajanie j ˛adraprzy pomocy systemu plików proc’ na 87 stronie. W Debianie istnieje wiele narz˛edziprzeznaczonych dla konkretnego sprz˛etu. Wiele z nich zwi ˛azanychjest z laptopami. Oto lista interesuj ˛acychpakietów dost˛epnychw Debianie: • tpconfig - Program do konfiguracji urz ˛adze´ntypu touchpad • apmd - Konfiguracja zaawansowanego zarz ˛adzaniaenergi ˛a(APM) • acpi - Wy´swietlainformacje o urz ˛adzeniachz ACPI • acpid - Narz˛edziekonfiguracji ACPI • lphdisk - Przygotowuje partycj˛ehibernacyjn ˛adla Phoenix NoteBIOS • sleepd - Usypia laptopa, gdy jest nieu˙zywany • noflushd - Pozwala bezczynnym dyskom na wolniejszy obrót • big-cursor - Wi˛ekszykursor w X-ach • acme - Obsługa „multimedialnych przycisków” w laptopie • tpctl - Narz˛edziekonfiguracji IBM ThinkPad • mwavem - Obsługa modemów Mwave/ACP • toshset - Umo˙zliwiadost˛epdo wi˛ekszo´sciustawie´nsprz˛etowychlaptopów Toshiba • toshutils - Narz˛edziadla laptopów Toshiba • sjog - Program do obsługi „Jog Dial” na laptopach Sony Vaio • spicctrl - Program do ustawiania parametrów ekranu LCD w laptopach Sony Vaio ACPI jest nowszym systemem zarz ˛adzaniaenergi ˛ani˙zAPM. Niektóre z wymienionych pakietów wymagaj ˛aspecjalnych modułów j ˛adra. W wi˛ekszo´sci wypadków s ˛aone doł ˛aczonedo najnowszych ´zródełj ˛adra.Jednak w razie problemów b˛edziesz musiał zainstalowa´cnajnowsz ˛ałatk˛edla j ˛adra.

9.2 Kontrola dost˛epu

9.2.1 Kontrola dost˛epupoprzez PAM oraz login

PAM (Pluggable Authentication Modules) udost˛epniakontrol˛elogowania.

/etc/pam.d/* # pliki konfiguracyjne PAM /etc/pam.d/login # plik konfiguracyjny PAM dla programu login /etc/security/* # ustawienia modułów PAM /etc/securetty # terminale, na których mo˙zepracowac´ root (login) /etc/login.defs # ustawienia programu login (login)

Zmie´nzawarto´s´c /etc/pam.d/login tak, jak poni˙zej,je´slichcesz aby dost˛epdo terminala (równie˙zkonsoli) nie był warunkowany hasłem. U˙zywajna własn ˛aodpowiedzialno´s´c.

#auth required pam_unix.so nullok auth required pam_permit.so Rozdział 9. Dostrajanie systemu Debian 118

Podobne sztuczki mog ˛aby´czastosowane dla xdm, gdm, . . . , aby uzyska´canalogiczn ˛afunkcjon- alno´s´cw X-ach. Z drugiej strony, je´slichcesz wymusi´cna u˙zytkownikachpolityk˛ewyboru bezpiecznych haseł, zainstaluj cracklib2 i ustaw parametry w pliku /etc/pam.d/passwd nast˛epuj˛aco:

password required pam_cracklib.so retry=3 minlen=6 difok=3

Mo˙zesztak˙ze,podczas aktywacji konta, ustawi´chasło jednokrotnego u˙zytku,co zmusi u˙zytkown- ika do jego zmiany przy pierwszym logowaniu. Aby uzyska´ctaki efekt, u˙zyjpolecenia passwd z opcj ˛a -e. Zobacz passwd(1). Maksymalna ilo´s´cprocesów mo˙zeby´custalona poprzez ulimit -u 1000 w powłoce Bash albo poprzez edycj˛e /etc/security/limits.conf, elementu PAM. Inne limity, jak np core mog ˛aby´custawione w sposób analogiczny. Pocz ˛atkowawarto´s´czmiennej PATH mo˙ze by´custawiona w pliku /etc/login.defs zanim jeszcze zostan ˛auruchomione skrypty star- towe danej powłoki. Dokumentacja dla PAM jest dost˛epnaw pakiecie libpam-doc.Linux-PAM System Administra- ’s Guide zawiera informacje dotycz ˛acekonfiguracji PAM, dost˛epnychmodułów itp. Doku- mentacja zawiera tak˙ze The Linux-PAM Application Developers’ Guide oraz The Linux-PAM Mod- ule Writers’ Guide.

9.2.2 „Dlaczego GNU su nie obsługuje grupy wheel”

Jest to słynne zdanie w dokumentacji info su , napisane przez Richarda M. Stallmana. Ale nie obawiaj si˛e,obecne su w Debianie u˙zywaPAM, wi˛ecmo˙znaograniczy´cmo˙zliwo´s´cu˙zy- wania su do dowolnej grupy u˙zywaj˛ac pam_wheel.so w pliku /etc/pam.d/su. Poni˙zszy przykład ilustruje ustawienie grupy adm analogicznie do wheel z systemów BSD oraz umo˙zli- wia u˙zywanie su bez podawania hasła dla członków tej grupy.

# konfiguracja anty-RMS w /etc/pam.d/su auth required pam_wheel.so group=adm

# Członkowie grupy wheel mog ˛awywoływac´ su bez podawania hasła auth sufficient pam_wheel.so trust group=adm

9.2.3 Znaczenie ró˙znychgrup

Oto kilka interesuj ˛acychgrup: • root grupa jest domy´slnymodpowiednikiem grupy wheel dla su, je´sli pam_wheel.so jest u˙zytebez podania argumentu group=. • adm członkowie grupy mog ˛aczyta´clogi systemowe. • cdrom grupa mo˙zezosta´cu˙zyta,aby nada´cu˙zytkownikomprawa dost˛epudo nap˛edu CD-ROM. Rozdział 9. Dostrajanie systemu Debian 119

• floppy grupa mo˙zezosta´cu˙zyta,aby nada´cu˙zytkownikomprawa dost˛epudo nap˛edu dyskietek. • audio grupa mo˙zezosta´cu˙zyta,aby nada´cu˙zytkownikomprawa dost˛epudo urz ˛adze´n audio. • src grupa jest wła´scicielemkodu ´zródłowegoumieszczonego w /usr/src. Mo˙zeby´c u˙zyta,aby nada´cu˙zytkownikommo˙zliwo´s´czarz ˛adzaniakodem ´zródłowymsystemu. • staff grupa słu˙z˛acado nauki administracji systemem. Aby uzyska´ckompletn ˛alist˛ezobacz cz˛e´s´cFAQ w Securing Debian Manual (http://www. debian.org/doc/manuals/securing-debian-howto/), który w Woodym mo˙zeby´ctak˙ze znaleziony w pakiecie harden-doc. Tak˙zenowe base-passwd (>3.4.6) zawieraj ˛awiary- godn ˛alist˛e: /usr/share/doc/base-passwd/users-and-groups.html.

9.2.4 sudo – bezpieczniejsze ´srodowiskopracy

U˙zywam sudo do ochrony przed własn ˛agłupot ˛a.Osobi´scieuwa˙zam,˙zeu˙zywanie sudo jest lepsz ˛aalternatyw ˛ani˙zci ˛agłapraca w systemie na koncie u˙zytkownikaroot. Zainstaluj sudo i skonfiguruj go poprzez edycj˛e /etc/sudoers(examples/). Zapoznaj si˛e tak˙zez mo˙zliwo´sciami sudo w pliku /usr/share/doc/sudo/OPTIONS. Przykładowa konfiguracja zapewnia członkom grupy staff uprawnienia do wykonywania dowol- nych polece´njako root poprzez sudo, natomiast członkom grupy src prawo do wykonywania jedynie niektórych polece´nz takimi uprawnieniami. Zalet ˛a sudo jest to, ˙zedo zalogowania potrzebuje jedynie podania hasła u˙zytkownika,a do- datkowo monitoruje aktywno´s´cu˙zytkownika. Jest to dobry sposób, aby da´cpewn ˛awładz˛e młodym administratorom. Na przykład:

$ sudo chown -R myself:mygrp .

Oczywi´scie,je˙zeliznasz hasło root-a (jak wi˛ekszo´s´cdomowych u˙zytkowników),dowolne polece- nie mo˙zezosta´cwydane jako root z Twojego konta u˙zytkownika:

$ su -c "shutdown -h now" Password:

(Wiem, ˙zepowinienem ograniczy´cprzywileje sudo konta admin, ale poniewa˙zjest to mój domowy serwer, jeszcze si˛etym nie przejmowałem.) Inny program umo˙zliwiaj˛acyzwykłym u˙zytkownikomuruchamianie polece´nz uprawnieni- ami root-a mo˙zeszznale´z´cw pakiecie super.

9.2.5 Kontrola dost˛epudo demonów

Internetowy super-serwer, inetd, jest uruchamiany podczas startu systemu z /etc/rc2.d /S20inetd (dla RUNLEVEL=2), który jest dowi ˛azaniemsymbolicznym do pliku /etc/init.d Rozdział 9. Dostrajanie systemu Debian 120

/inetd. W skrócie, inetd umo˙zliwiauruchomienie jednego demona, który w razie potrzeby uruchamia inne, zmniejszaj ˛acw ten sposób obci ˛a˙zeniesystemu. Gdy inetd przyjmuje zgłoszenie, sprawdza protokół i nazw˛e ˙z˛adanejusługi przeszukuj ˛ac baz˛edanych w plikach /etc/protocols oraz /etc/services. Nast˛epnie,wyszukuje odpowiedzialn ˛a za obsług˛ezgłoszenia usług˛ew /etc/inetd.conf je´slijest to zwyczajna usługa internetowa, natomiast w /etc/rpc.conf je´slijest to usługa Sun-RPC. Maj ˛acna wzgl˛edziebezpiecze´nstwo,wył ˛aczzb˛edneusługi w pliku /etc/inetd.conf. Usługi Sun-RPC s ˛awykorzystywane przez NFS oraz inne programy oparte na RPC. Czasami inetd nie przekazuje kontroli do ˙z˛adanejusługi bezpo´srednio, lecz uruchamia de- mona TCP/IP tcpd przekazuj ˛acmu nazw˛eusługi jako argument. W tym wypadku tcpd uru- chomi ˙z˛adan˛ausług˛edopiero po zgłoszeniu tego do logów systemowych oraz zanalizowaniu plików /etc/host.deny i /etc/host.allow. Je´slimasz problemy ze zdalnym dost˛epemw aktualnej dystrybucji Debian, skomentuj zapis „ALL: PARANOID” w /etc/host.deny, je´slitaki zapis si˛etam znajduje. Aby uzyska´cbardziej szczegółowe informacje zobacz inetd(8), inetd.conf(5), protocols(5), services(5), tcpd(8), hosts_access(5), i hosts_options(5). Aby uzyska´cinformacje o Sun-RPC zobacz rpcinfo(8) , portmap(8), i /usr/share/doc /portmap/portmapper.txt.gz.

9.2.6 Lightweight Directory Access Protocol

Zasoby: • OpenLDAP (http://www.openldap.org/) • OpenLDAP Admin Guide w pakiecie openldap-guide • LDP: LDAP Linux HOWTO (http://www.tldp.org/HOWTO/LDAP-HOWTO/index. html) • LDP: LDAP Implementation HOWTO (http://www.tldp.org/HOWTO/LDAP-Implementation-HOWTO/ index.html) • OpenLDAP,extensive use reports (http://portal.aphroland.org/~aphro/ldap-docs/ ldap.html) • Open LDAP with Courier IMAP and Postfix (http://annapolislinux.org/docs/ plc/postfix-courier-howto.txt)

9.3 Nagrywarki CD

Nagrywarki CD z interfejsem ATAPI/IDE stały si˛ew ostatnim czasie bardzo popularne. S ˛a miłym rozwi ˛azaniemarchiwizowania danych i wykonywania kopii zapasowych w sytuacji, gdy wystarcza < 640MB pojemno´scino´snika.Aby uzyska´cnajbardziej wiarygodne informacje, zobacz LDP CD-Writing-HOWTO (http://www.tldp.org/HOWTO/CD-Writing-HOWTO. html). Rozdział 9. Dostrajanie systemu Debian 121

9.3.1 Wst˛ep

Po pierwsze, ka˙zdezakłócenie danych wysłanych do nagrywarki mo˙zespowodowa´cnieod- wracalne uszkodzenie płyty CD. Zaopatrz si˛ew nagrywark˛ez jak najwi˛ekszymrozmiarem bufora. Je´slipieni ˛adzenie s ˛aproblemem, zamiast wersji ATAPI/IDE zdecyduj si˛ena wersj˛e SCSI. Je´slimo˙zeszwybiera´cpomi˛edzyIDE, zdecyduj si˛ena wersj˛epodł ˛aczan˛ado slotu PCI (na płycie głównej) zamiast do slotu ISA (jak karta SB16 itp.). W j ˛adrachLinuksa 2.2 i 2.4 nagrywarka IDE musi by´cuzupełniona sterownikami IDE-SCSI, zamiast zwykłego sterownika IDE dla nap˛edówCD. Równie˙zogólny sterownik SCSI ( SCSI generic driver) musi zosta´cuaktywniony. S ˛ana to dwa sposoby, zakładaj ˛ac˙zej ˛adrarozpowszech- niane były z aktualnymi dystrybucjami (jak te z marca 2001).

9.3.2 Sposób 1: moduły j ˛adra+ lilo

Dodaj poni˙zszelinie do pliku /etc/lilo.conf je´sliu˙zywaszstandardowego j ˛adrarozpowszech- nianego z systemem Debian. Je´sliu˙zytychjest kilka opcji, pozostaw mi˛edzynimi znak spacji.

append="hdx=ide-scsi ignore=hdx"

W tym przykładzie nagrywarka jest dost˛epnapoprzez sterownik ide-scsi, a oznaczony parame- trem hdx, gdzie x oznacza jedno z poni˙zszych:

hda master na pierwszym porcie IDE hdb slave na pierwszym porcie IDE hdc master na drugim porcie IDE hdd slave na drugim porcie IDE hde ... hdh nap˛edna zewn˛etrznymporcie IDE lub ATA66/100 IDE

Wpisz nast˛epuj˛acepolecenia jako root po zako´nczeniukonfiguracji.

# lilo # shutdown -r now

9.3.3 Sposób 2: ponowna kompilacja j ˛adra

Debian u˙zywa make-kpkg do tworzenia j ˛adra. U˙zyjró˙znych --append_to_version z make-kpkg aby zbudowa´cwiele obrazów j ˛adra.Zobacz ‘J ˛adro systemu Linux w Debianie’ na 81 stronie. U˙zyjnast˛epuj˛acychustawie´npodczas make menuconfig:

• bzImage • Wył ˛aczsterownik IDE CD, (niekoniecznie, ale to prostsze rozwi ˛azanie) • Doł ˛aczdo j ˛adraobsług˛eide-scsi i sg lub ustaw je jako moduły Rozdział 9. Dostrajanie systemu Debian 122

9.3.4 Czynno´scipo konfiguracji

Wsparcie j ˛adradla nagrywarki mo˙zeby´cuaktywnione podczas startu systemu poprzez nast˛epu- j ˛acepolecenia:

# echo ide-scsi >>/etc/modules # echo sg >>/etc/modules # cd /dev; ln -sf scd0 cdrom

R˛ecznainicjalizacja mo˙zeby´cwykonana przez:

# modprobe ide-scsi # modprobe sg

Po restarcie mo˙zeszsprawdzi´cswoj ˛akonfiguracj˛e:

$ dmesg|less # apt-get install cdrecord # cdrecord -scanbus

[Per Warren Dodge] Czasami mo˙zewyst ˛api´ckonflikt mi˛edzy ide-scsi i ide-cd, je´slimasz zarówno CD-ROM jak i nap˛edCD-R/RW. Mo˙zeszwtedy spróbowa´cdoda´cponi˙zsz˛alini˛edo swojego /etc/modutils/aliases, uruchomi´c update-modules i zrestartowa´csystem.

pre-install ide-scsi modprobe ide-cd

Polecenie to nakazuje załadowanie sterownika IDE przed ide-scsi. Sterownik IDE ide-cd przejmuje kontrol˛enad urz ˛adzeniemATAPI CD-ROM — wszystkim, co nie zostało mu nakazane do zignorowania. W ten sposób ide-scsi przejmuje kontrol˛etylko nad zignorowanymi urz ˛adzeniami.

9.3.5 Obrazy startowe płyt CD

Aby nagra´ckatalog target-directory jako cd-image.raw (startowy, Joliet z TRANS.TBL; je´slipłyta nie ma by´cbootowalna, usu´nopcje -b i -c), włó˙zdyskietk˛estartow ˛ado stacji dyski- etek i:

# dd if=/dev/fd0 target-directory/boot.img # mkisofs -r -V volume_id -b boot.img -c bootcatalog -J -T \ -o cd-image.raw target_directory/ Rozdział 9. Dostrajanie systemu Debian 123

Smiesznym´ kruczkiem mo˙zeby´czrobienie startowego CD-ROM z systemem DOS. Je´sliobraz zwyczajnej dyskietki startowej jest we wspomnianym pliku boot.img, przy restarcie płyta zadziała jak gdyby dosowa dyskietka startowa była w nap˛edziedyskietek. Mo˙zeby´cto jeszcze ciekawsze, je´sliwykorzystasz freeDOS. Zawarto´s´cobrazu tej płyty mo˙zeby´csprawdzona poprzez zamontowanie jej jako urz ˛adzenie loop.

# mount -t iso9660 -o ro,loop cd-image.raw /cdrom # cd /cdrom # mc # umount /cdrom

9.3.6 Wypalanie płyty (R, RW):

Najpierw porównajmy (zakładaj ˛acpodwójn ˛apr˛edko´s´cnap˛edu)z:

# nice --10 cdrecord -dummy speed=2 dev=0,0 disk.img

Nast˛epnie,je´sliwszystko poszło OK, wypalimy płyt˛eCD-R:

# nice --10 cdrecord -v -eject speed=2 dev=0,0 disk.img

Albo CD-RW:

# nice --10 cdrecord -v -eject blank=fast speed=2 dev=0,0 disk.img

Niektóre nap˛edyCD-RW działaj ˛alepiej z:

# nice --10 cdrecord -v blank=all speed=2 dev=0,0 disk.img i nast˛epnie:

# nice --10 cdrecord -v -eject speed=2 dev=0,0 disk.img

Te dwa kroki s ˛aniezb˛edne,aby zapobiec pokrywaniu si˛efaz zerowania płyty i wypalania. Warto´s´cargumentów dla nice mo˙zetak˙zewymaga´cpewnej regulacji. Rozdział 9. Dostrajanie systemu Debian 124

9.3.7 Wykonanie obrazu z posiadanej płyty CD

Niektóre płyty CD-R i komercyjne CD zawieraj ˛aspecjalne, bł˛ednesektory, które uniemo˙zli- wiaj ˛aich kopiowanie przez dd (płyta Windows 98 jest jedn ˛az nich). Pakiet cdrecord udost˛ep- nia polecenie readcd. U˙zyjgo do skopiowania zawarto´scipłyty do pliku. Je´slito plik z danymi, zamontuj go i wykonaj df aby uzyska´cjego rzeczywisty rozmiar. Podziel liczb˛e bloków przez 2 ( 1 blok = 1024 bajty) aby uzyska´cilo´s´csektorów na CD ( 1 sektor = 2048 bajty). Uruchom readcd z niezb˛ednymiopcjami i u˙zyjobrazu płyty do wypalenia nast˛epnej.

# readcd dev=target,lun,scsibusno # select function 11

Zwykle mo˙znaustawi´cwszystkie trzy parametry jako 0. Ilo´s´csektorów podana przez readcd jest zazwyczaj zbyt du˙za,u˙zyjpodanej powy˙zejmetody aby uzyska´cdokładniejsze wyniki.

Powinno zosta´czauwa˙zone,˙zeu˙zycie dd z płytami CD-ROM stwarza pewne problemy. Pier- wsze uruchomienie dd spowoduje komunikat bł˛edui mo˙zewytworzy´ckrótszy obraz dysku, utraciwszy ko´ncow˛ajego cz˛e´s´c.Drugie uruchomienie dd mo˙zeutworzy´cwi˛ekszyobraz płyty ze „´smieciami”doł ˛aczonymina ko´ncu,je´slirozmiar danych nie został podany. Tylko drugie uruchomienie dd wraz z podaniem poprawnego rozmiaru danych, bez wyci ˛aganiaCD, po otrzymaniu komunikatu bł˛eduwydaje si˛edziała´cpoprawnie. Je´slina przykład rozmiar obrazu płyty wy´swietlonyprzez df wynosi 46301184 bloki, u˙zyjdwukrotnie nast˛epuj˛acegopolece- nia aby otrzyma´cprawidłowy obraz (jest to informacja, uzyskana przeze mnie empirycznie):

# dd if=/dev/cdrom of=cd.img bs=2048 count=$((46301184/2))

9.3.8 Obrazy Debian CD

Aby otrzyma´cnajnowsze informacje na temat płyt z Debianem, odwied´zstron˛eDebian CD (http://www.debian.org/CD/).

Je´sliposiadasz szybkie poł ˛aczenieinternetowe, pomy´slo instalacji poprzez sie´c,u˙zywaj˛ac: • kilku obrazów dyskietek (http://www.debian.org/distrib/floppyinst). • małego startowego obrazu CD (http://www.debian.org/CD/netinst/).

Je´slinie posiadasz szybkiego poł ˛aczeniaz Internetem, pomy´slo zakupie płyt CD od dystryb- utora CD (http://www.debian.org/CD/vendors/).

Prosz˛e,nie zajmuj niepotrzebnie ł ˛acza´sci˛agaj˛acobraz standardowego CD, chyba ˙zejeste´s testerem płyt (nawet now ˛ametod ˛ajigdo).

Jedn ˛az niewielu, godn ˛auwagi płyt ˛ajest KNOPPIX - Live Linux Filesystem On CD (http: //www.knopper.net/knoppix/index-en.html). Z t ˛apłyt ˛auruchomisz w pełni działa- j ˛acegoDebiana bez potrzeby instalowania go na twardym dysku. Rozdział 9. Dostrajanie systemu Debian 125

9.3.9 Wykonywanie kopii systemu na płytach CD-R

Aby skopiowa´ckluczowe pliki konfiguracyjne i dane na płyty CD-R, u˙zyjprzykładowego skryptu backup backup (examples/). Zobacz tak˙ze‘Kopiowanie oraz archiwizacja całych katalogów’ na 94 stronie i ‘Kopia ró˙znicowaoraz synchronizacja danych’ na 96 stronie.

9.3.10 Kopiowanie CD z muzyk ˛a

Nie testowane przeze mnie:

# apt-get install cdrecord cdparanoia # cdparanoia -s -B # cdrecord dev=0,0,0 speed=2 -v -dao -eject defpregap=1 -audio *.wav albo,

# apt-get install cdrdao #disk at once # cdrdao read-cd --device /dev/cdrom --paranoia-mode 3 my_cd # read cd # cdrdao write --device /dev/cdrom --speed 8 my_cd # wypal nowy CD cdrdao wykonuje prawdziw ˛akopi˛e(˙zadnychprzerw, itp. . . )

9.4 X Window System

Srodowisko´ X jest zapewnione dzi˛ekiXfree86 (http://www.xfree86.org/). Istniej ˛adwie główne wersje serwera X dost˛epnedla Debiana: Xfree86 Version 3.3 (XF3) i XFree86 Version serii 4.x (XF4), obie oparte o specyfikacj˛eX11R6 wg. X.Org (http://www.x.org/). Podstawowe informacje nt. X mo˙zeszuzyska´cz X(7), LDP XWindow-User-HOWTO (http: //www.tldp.org/HOWTO/XWindow-User-HOWTO.html), oraz Remote X Apps mini-HOWTO (http://www.tldp.org/HOWTO/mini/Remote-X-Apps.html). Informacje specyficzne dla Debiana, przeznaczone dla jego u˙zytkowników, przeczytaj w /usr/share/doc/xfree86-common /FAQ.gz dostarczanym w pakiecie xfree86-common. Zawiera interesuj ˛aceuwagi na temat przypisywania ró˙znychfunkcji do klawiszy autorstwa Brandena Robinsona.

‘X serwer’ na 127 stronie program na lokalnym ho´scie,zajmuj ˛acysi˛ewy´swietlaniem X-ów na monitorze u˙zytkownika,jest tak˙zeodpowiedzialny za obsług˛epolece´nz klawiatury i myszy.

‘Klient X’ na 129 stronie program na (zdalnym lub lokalnym) ho´scie,który uruchamia opro- gramowanie zgodne z X. Rozdział 9. Dostrajanie systemu Debian 126

Zauwa˙z,˙zejest to odwrócenie rozumienia słowa serwer i klient przyj˛etegow innych kontek- stach. Istnieje kilka dróg, aby „X serwer” (strona wy´swietlaj˛aca)przyj ˛ałzdalne poł ˛aczenieod „klienta X” (strona oprogramowania).

• Wykorzystanie xhost – mechanizm listy hostów (bardzo niebezpieczny). – niezaszyfrowany protokół (nara˙zonyna podsłuchiwanie). – Nie u˙zywajgo, je´slimo˙zesz. – Zobacz ‘Zdalne poł ˛aczeniez X: xhost’ na 134 stronie i xhost(1x).

• Wykorzystanie xauth – mechanizm cookies (niebezpieczny, ale lepszy ni˙z xhost). – niezaszyfrowany protokół (nara˙zonyna podsłuchiwanie). – u˙zywajgo jedynie dla poł ˛acze´nlokalnych, gdy˙znie obci ˛a˙zaprocesora tak jak ssh -X. – Zobacz ‘Uprawnienia administratora w X’ na 135 stronie i xauth(1x).

• Wykorzystanie xdm, wdm, gdm, kdm,... – mechanizm cookies (równie niebezpieczny jak xauth). – Zobacz xdm(1x) i Xsecurity(7), aby zdoby´cpodstawowe informacje nt. kon- troli dost˛epudo X. – Zobacz wdm(1x), gdm(8), i kdm.options(5) dla dalszych informacji, je´slite pro- gramy s ˛azainstalowane. – Zobacz ‘System-V init i poziomy startu (runlevels)’ na 79 stronie aby zorientowa´c si˛ejak wył ˛aczy´c xdm, by logowa´csi˛ew trybie tekstowym bez usuwania pakietu xdm.

• Wykorzystanie ssh -X – mechanizm podł ˛aczaniaportów poprzez secure shell (bezpieczne). – zaszyfrowany protokół (strata zasobów, gdy u˙zywanelokalnie). – u˙zywajw poł ˛aczeniachzdalnych. – Zobacz ‘Zdalne poł ˛aczeniez X: ssh’ na 134 stronie.

Wszystkie metody poł ˛acze´nzdalnych, za wyj ˛atkiemwykorzystywania ssh, wymagaj ˛awł ˛ac- zonych poł ˛acze´nTCP/IP w X serwerze. Zobacz ‘Poł ˛aczenieTCP/IP z X’ na 133 stronie.

9.4.1 Pakiety zwi ˛azanez X system

Istnieje kilka (meta)pakietów, które zapewniaj ˛aprost ˛ainstalacj˛eX Window System w Woodym. x-window-system-core Ten metapakiet dostarcza kluczowe składniki dla pojedynczej stacji roboczej, na której uruchomiony ma by´cX Window System. Dostarcza biblioteki, X ser- wer (xserver-xfree86), zestaw czcionek, jak równie˙zkilka podstawowych klientów X i programów u˙zytkowych. Rozdział 9. Dostrajanie systemu Debian 127

x-window-system Ten metapakiet dostarcza praktycznie wszystkich składników X Window System rozwijanych przez XFree86 Project, jak równie˙zzbiór popularnych kiedy´sdo- datkowych programów. (Zauwa˙z, ˙zeten pakiet zale˙zyod x-window-system-core, twm oraz xdm, tak wi˛ecw przypadku jego instalacji x-window-system-core nie musi zosta´coddzielnie wyznaczony do zainstalowania) xserver-common-v3 Pliki i programy u˙zytkowewspólne dla serwerów X XFree86 3.x (XF3) xserver-* Dodano pakiety serwera XF3, aby obsłu˙zy´csprz˛etz ró˙znychpowodów nie ob- sługiwany przez nowy serwer XF4. Niektóre stare karty ATI mach64 nie s ˛aobsługi- wane przez XF4, za´sinne karty graficzne zawieszaj ˛asi˛ew wersji XF4 dost˛epnejwraz z Woodym, itp. (Aby obejrze´cdost˛epnepakiety wykonaj apt-cache search xserver-|less. Wszystkie z tych serwerów XF3 zale˙z˛aod pakietu xserver-common-v3.)

W wi˛ekszo´sciprzypadków x-window-system jest odpowiednim pakietem do zainstalowa- nia. (Je´slichcesz logowa´csi˛ew trybie tekstowym, upewnij si˛e˙zewył ˛aczyłe´susług˛e xdm tak, jak opisano to w cz˛e´sci‘Jak wył ˛aczy´cautomatyczne uruchamianie Xów przy starcie?!’ na 91 stronie.)

9.4.2 Pakiety ułatwiaj ˛acewykrywanie sprz˛etudla X Window

Aby wykry´cswój sprz˛etpodczas konfiguracji X-ów, zainstaluj nast˛epuj˛acepakiety przed in- stalacj ˛aX Window System:

• discover – narz˛edzieidentyfikacji sprz˛etu.

• mdetect – autodetekcja myszy.

• read-edid – gromadzenie informacji sprz˛etowejo monitorach VESA PnP.

9.4.3 X serwer

Zobacz XFree86(1x) aby uzyska´cinformacj˛eo X serwerze. Uruchom X serwer z lokalnej konsoli:

$ startx -- : vtXX e.g.: $ startx -- :1 vt8 -bpp 16 ... uruchom na vt8 podł ˛aczonymdo localhost:1 w trybie 16 bpp

Argumenty podane po -- s ˛aprzekazywane X serwerowi. Je´sliu˙zywaszskryptu ~/.xserverrc do konfigurowania uruchomienia X, pami˛etajaby wykona´c exec na prawidłowym X serwerze. W przeciwnym wypadku mo˙zeon wolno si˛euruchamia´c i zamyka´c.Na przykład: Rozdział 9. Dostrajanie systemu Debian 128

#!/bin/sh exec /usr/bin/X11/X -dpi 100 -nolisten tcp

Konfiguracja serwera XF4

Aby z(re)konfigurowa´cserwer XF4,

# dpkg-reconfigure --priority=low xserver-common # dpkg-reconfigure --priority=low xserver-xfree86 co utworzy plik /etc/X11/XF86Config-4, po czym skonfiguruj X-y u˙zywaj˛acskryptu dexconf.

Konfiguracja serwera XF3

Aby z(re)konfigurowa´cserwer XF3,

# dpkg-reconfigure --priority=low xserver-common-v3 # dpkg-reconfigure --priority=low xserver-mach64 co utworzy plik /etc/X11/XF86Config, po czym skonfiguruj X-y u˙zywaj˛acskryptu xf86config-v3.

R˛ecznakonfiguracja X serwera.

Modyfikuj ˛acustawienia w zale˙zno´sciod swoich potrzeb nie zmieniaj zawarto´scipliku kon- figuracyjnego pomi˛edzyliniami (XF4):

### BEGIN DEBCONF SECTION [ciach] ### END DEBCONF SECTION

Zamiast tego dodaj własne opcje przed tym tekstem. Na przykład, aby u˙zy´cinnej karty graficznej dodaj podobne linie na pocz ˛atku pliku:

Section "Device" Identifier "Moje Urzadzenie" Driver "ati" Option "NoAccel" EndSection

Section "Screen" Identifier "Mój Ekran" Rozdział 9. Dostrajanie systemu Debian 129

Device "Moje Urz ˛adzenie" Monitor "Generic Monitor" DefaultDepth 24 Subsection "Display" Depth 8 Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubsection Subsection "Display" Depth 16 Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubsection Subsection "Display" Depth 24 Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480" EndSubsection EndSection

Section "ServerLayout" Identifier "Custom" Screen "Mój Ekran" InputDevice "Generic Keyboard" "CoreKeyboard" InputDevice "Configured Mouse" "CorePointer" EndSection

9.4.4 Klient X

Wi˛ekszo´s´cklientów X mo˙zeby´curuchomiona poleceniem podobnym do:

client $ xterm -geometry 80x24+30+200 -fn 6x10 -display hostname:0 &

Dodatkowe argumenty oznaczaj ˛a:

• -geometry SZERxWYS+XOFF+YOFF: pocz ˛atkowyrozmiar i pozycj˛eokna programu.

• -fn NAZWAFONTU: czcionk˛esłu˙z˛ac ˛ado wy´swietlaniatekstu. NAZWAFONTU mo˙zeprzyj- mowa´cwarto´s´c: – a14: Normalny rozmiar – a24: Du˙zyrozmiar czcionki – . . . (sprawd´zdost˛epneczcionki za pomoc ˛a xlsfont.)

• -display displayname: nazwa X serwera, który ma zosta´cu˙zyty. displayname mo˙zeprzyjmowa´cwarto´s´c: – hostname:D.S oznacza ekran S na monitorze D komputera hostname; X serwer dla tego monitora nasłuchuje na porcie TCP 6000+D Rozdział 9. Dostrajanie systemu Debian 130

– host/unix:D.S oznacza ekran S na monitorze D hosta host; X-serwer dla tego monitora nasłuchuje na porcie typu UNIX. /tmp/.X11-unix/XD (wi˛ecjest dost˛epny tylko z host). – :D.S jest równowa˙znedo host/unix:D.S, gdzie host to nazwa lokalnego hosta.

Domy´slnawarto´s´czmiennej displayname dla klientów X (oprogramowanie), mo˙zeby´custaw- iona poprzez zmienn ˛a´srodowiskow ˛aDISPLAY. Mo˙znato osi ˛agn˛a´cprzez np. uruchomienie nast˛epuj˛acychskryptów przed klientem X:

$ export DISPLAY=:0 # Domyslne´ ustawienie, lokalna maszyna, pierwszy screen $ export DISPLAY=hostname.fulldomain.name:0.2 $ export DISPLAY=localhost:0

Start Xów mo˙zeby´cdostosowany do własnych potrzeb za pomoc ˛a ~/.xinitrc. Np:

xrdb -load $HOME/.Xresources xsetroot -solid gray & xclock -g 50x50-0+0 -bw 0 & xload -g 50x50-50+0 -bw 0 & xterm -g 80x24+0+0 & xterm -g 80x24+0-0 & twm

Tak jak opisano to w ‘Personalizowanie sesji X.’ na bie˙z˛acejstronie, zast˛epujeto wszystko, co dzieje si˛epodczas uruchomienia Xsession przez startx. U˙zywaj ~/.xsession, a z powy˙zszegosposobu korzystaj jedynie w ostateczno´sci.

9.4.5 X session

Sesja X (X-serwer + klient X) mo˙zeby´crozpocz˛etapoprzez: • startx: skrypt obudowuj ˛acy initx, słu˙z˛acydo uruchomienia sesji z terminala tek- stowego. Je´sliplik ~/.xinitrc nie istnieje, /etc/X11/Xsession jest wywoływany przez /etc/X11/xinit/xinitrc. • xdm, gdm, kdm, lub wdm: demon uruchamiaj ˛acyX-serwer i klientów, umo˙zliwiaj˛acylo- gowanie w GUI. /etc/X11/Xsession jest uruchamiany bezpo´srednio. Tryb tekstowy mo˙zeby´cudost˛epniony, jak to opisano w ‘Jak wył ˛aczy´cautomatyczne uruchami- anie Xów przy starcie?!’ na 91 stronie.

Personalizowanie sesji X.

Domy´slnyskrypt startowy /etc/X11/Xsession jest kombinacj ˛a /etc/X11/Xsession.d /50xfree86-common_determine-startup oraz /etc/X11/Xsession.d/99xfree86-common_start. Rozdział 9. Dostrajanie systemu Debian 131

Na przebieg wykonania /etc/X11/Xsession wpływaj ˛austawienia z /etc/X11/Xsession.options. Jego głównym zadaniem jest uruchomienie za pomoc ˛a exec pierwszego istniej ˛acegopro- gramu znajduj ˛acegosi˛ena nast˛epuj˛acejli´scie: 1. ~/.xsession lub ~/.Xsession, je´sliistnieje. 2. /usr/bin/x-session-manager, je´sliistnieje. 3. /usr/bin/x-window-manager, je´sliistnieje. 4. /usr/bin/x-terminal-emulator, je´sliistnieje. Dokładne znaczenie tych polece´njest uzale˙znioneod alternatywnych ustawie´nsystemu De- bian, opisanych w ‘Alternatywne polecenia’ na 79 stronie. Na przykład:

# update-alternatives --config x-session-manager ... lub # update-alternatives --config x-window-manager

Aby wybra´cdomy´slnymened˙zerokien X, jednocze´sniezachowuj ˛acGNOME i KDE, zamie´n plik /etc/X11/Xsession.d/50xfree86-common_determine-startup z plikiem dostar- czonym w drugim raporcie o bł˛edziena http://bugs.debian.org/168347 (mam nadziej˛e, ˙zezostanie to szybko naprawione) i wyedytuj /etc/X11/Xsession.options jak nast˛epuje:

# /etc/X11/Xsession.options # # opcje konfiguracyjne dla /etc/X11/Xsession # Wyjasnienie´ dost˛epnychopcji znajdziesz w Xsession.options(5) # Default enabled allow-failsafe allow-user-resources allow-user-xsession use-ssh-agent # Domyslnie´ wył ˛aczone(wł ˛aczodkomentowuj ˛ac) do-not-use-x-session-manager #do-not-use-x-window-manager

Bez wspomnianych powy˙zejzmian w systemie pakiety gnome-session i kdebase zapew- niaj ˛afunkcjonalno´s´cmened˙zerasesji. Usuni˛ecieich, umo˙zliwiaustawienie jako domy´slnego innego mened˙zeraokien. W systemie, gdzie /etc/X11/Xsession.options zawiera lini˛e allow-user-xsession bez poprzedzaj ˛acychjej znaków, ka˙zdyu˙zytkownik,który stworzy ~/.xsession lub ~/.Xsession b˛edziemógł dostosowa´cdziałanie /etc/X11/Xsession. Ostatnie polecenie w pliku ~/.xsession powinno przyjmowa´cform˛e: exec some-window/session-manager, aby uruchomi´culubiony mened˙zersesji. Dobry przykład skryptu ~/.xsession jest podany w /usr/share/doc/xfree86-common /examples/xsession.gz. Rozdział 9. Dostrajanie systemu Debian 132

U˙zywamtego skryptu do wybierania mened˙zeraokien, dost˛epudo ekranu i obsługiwanego j˛ezykadla poszczególnych u˙zytkowników. Przeczytaj tak˙ze‘Uruchamianie konkretnych mened˙zerów okien/sesji.’ na tej samej stronie, ‘Uprawnienia administratora w X’ na 135 stronie i ‘Przykład systemu dwuj˛ezycznego(japo´nskiEUC i ISO-8859-1)’ na 149 stronie. Dodatkowe zasoby X dla poszczególnych u˙zytkownikóws ˛aprzechowywane w ~/.Xresources, podczas gdy zasoby o zasi˛egucałego systemu s ˛awymienione w /etc/X11/Xresources/*. Przeczytaj xrdb(1x). Chc ˛acdostosowa´cdo swoich upodoba´nmap˛eklawiatury i funkcje klawiszy myszy w Xach, edytuj ~/.xmodmaprc. Przeczytaj xmodmap(1x).

Uruchamianie konkretnych mened˙zerówokien/sesji.

Pod ˛a˙zaj˛acza wytycznymi, opisanymi w ‘Personalizowanie sesji X.’ na 130 stronie, wybrany przez u˙zytkownikamened˙zersesji/okien mo˙zeby´cuaktywniony poprzez zainstalowanie odpowied- niego pakietu i odpowiednie zmiany pod koniec pliku ~/.xsession. (Osobi´scielubi˛e blackbox/fluxbox z powodu ich prostego stylu i szybko´sci.):

• domy´slnymened˙zersesji X – Przeczytaj ‘Alternatywne polecenia’ na 79 stronie – exec /usr/bin/x-session-manager

• domy´slnymened˙zerokien X – Przeczytaj ‘Alternatywne polecenia’ na 79 stronie. – exec /usr/bin/x-window-manager

• Menad˙zersesji GNOME (przeładowany) – Zainstaluj pakiet: gnome-session – exec /usr/bin/gnome-session

• Menad˙zersesji KDE (przeładowany) – Zainstaluj pakiet: kdebase (lub kdebase3 dla KDE3) – exec /usr/bin/kde2

• Blackbox window manager (lekki, szybki). – Zainstaluj pakiet: blackbox – exec /usr/bin/blackbox

• Fluxbox window manager (lekki, nowy blackbox). – Zainstaluj pakiet: fluxbox – exec /usr/bin/fluxbox

• Xfce window manager (podobny do Mac OS-X, SUN CDE). – Zainstaluj pakiet: xfce – exec /usr/bin/xfwm Rozdział 9. Dostrajanie systemu Debian 133

• IceWM window manager (mały, alternatywa dla GNOME) – Zainstaluj pakiet: icewm – exec /usr/bin/X11/icewm

• FVWM2 virtual window manager (mały, podobny do Win95) – Zainstaluj pakiet: fvwm – exec /usr/bin/fvwm2

• Windowmaker window manager (troch˛ejak NexT) – Zainstaluj pakiet: wmaker – exec /usr/bin/wmaker

• Enlightenment window manager (przeładowany) – Zainstaluj pakiet: enlightenment – exec /usr/bin/enlightenment

Przeczytaj Window Managers for X (http://www.xwinman.org).

Ustawianie ´srodowiskKDE/GNOME

Aby otrzyma´cw pełni funkcjonalne ´srodowiska KDE lub GNOME, przydatne s ˛aponi˙zsze metapakiety:

• KDE: zainstaluj pakiet kde • GNOME: zainstaluj pakiet gnome

Instalacja tych pakietów za pomoc ˛anarz˛edzikorzystaj ˛acychze zmiennych recommends, ta- kich jak dselect i aptitude, zaopatrzy Ci˛ew wi˛ekszywybór oprogramowania ni˙zinstalacja tylko za pomoc ˛a apt-get. Je´slichcesz logowa´csi˛ew trybie tekstowym wył ˛aczmened˙zerawy´swietlaniaX, takiego jak kdm, gdm, i wdm, które mog ˛azosta´czainstalowane poprzez zale˙zno´sci,jak opisano to w ‘Jak wył ˛aczy´cautomatyczne uruchamianie Xów przy starcie?!’ na 91 stronie. Je´sliGNOME ma si˛euruchamia´cdomy´slnie,zamiast KDE, upewnij si˛ejak wła´sciwieskonfig- urowa´c x-session-manager, co opisano w ‘Alternatywne polecenia’ na 79 stronie.

9.4.6 Poł ˛aczenieTCP/IP z X

Poniewa˙zzdalne poł ˛aczenieTCP/IP bez szyfrowania mo˙znastosunkowo łatwo podsłuchi- wa´c,domy´slneustawienia X w aktualnej wersji systemu Debian nie udost˛epniagniazda TCP/IP. Rozwa˙zu˙zycie ssh, je´slizale˙zyCi na zdalnym poł ˛aczeniu( zobacz ‘Zdalne poł ˛aczeniez X: ssh’ na nast˛epnejstronie). Metoda opisana tutaj nie jest zalecana, chyba ˙zestosowana jest w bardzo bezpiecznym ´srodowisku, za dobrym firewallem i tylko wtedy je´sliwszyscy u˙zytkownicys ˛agodni zaufania. U˙zyjtego polecenia, aby sprawdzi´cobecne ustawienia X serwera dotycz ˛acegniazd TCP/IP: Rozdział 9. Dostrajanie systemu Debian 134

# find /etc/X11 -type f -print0 | xargs -0 grep nolisten /etc/X11/xinit/xserverrc:exec /usr/bin/X11/X -dpi 100 -nolisten tcp

Usu´n -nolisten aby przywróci´cnasłuch poprzez TCP/IP.

9.4.7 Zdalne poł ˛aczeniez X: xhost xhost umo˙zliwiadost˛epwyznaczonym hostom. Jest to bardzo niebezpieczne. Poni˙zsza linia wył ˛aczasprawdzanie hostów i pozwala na poł ˛aczeniesk ˛adkolwiek,je´slidozwolone s ˛a poł ˛aczeniaTCP/IP ( przeczytaj ‘Poł ˛aczenieTCP/IP z X’ na poprzedniej stronie):

$ xhost +

Mo˙zeszponownie uaktywni´csprawdzanie hostów poprzez:

$ xhost - xhost nie rozró˙zniau˙zytkownikówna zdalnych maszynach. Oprócz tego adresy hostów mog ˛aby´coszukane (spoofing). Powinno unika´csi˛etej metody, szczególnie je´slijeste´spodł ˛aczonydo sieci niegodnej zaufania (np. PPP dialup ). Przeczytaj xhost(1x).

9.4.8 Zdalne poł ˛aczeniez X: ssh ssh zapewnia bezpieczny sposób poł ˛aczenialokalnego X serwera z programem uruchomionym na zdalnej maszynie.

• Ustaw pozycje X11Forwarding i AllowTcpForwarding na yes w pliku /etc/ssh /sshd_config zdalnego hosta, je´slichcesz unikn ˛a´cpodawania tych opcji w lini pole- ce´n. • Uruchom X serwer na zdalnej maszynie. • Otwórz xterm na lokalnym komputerze. • Uruchom ssh, aby ustanowi´cpoł ˛aczenieze stron ˛azdaln ˛a.

localname @ localhost $ ssh -q -X -l loginname remotehost.domain Password: .....

• Uruchom aplikacje X po stronie zdalnej.

loginname @ remotehost $ gimp &

Metoda ta umo˙zliwiawy´swietlaniewyj´sciazdalnego klienta X, jak gdyby komunikował si˛eon lokalnie poprzez gniazda UNIX. Rozdział 9. Dostrajanie systemu Debian 135

9.4.9 xterm

Dowiedz si˛ewszystkiego o xterm: http://dickey.his.com/xterm/xterm.faq.html.

9.4.10 Baza danych zasobów X

Du˙zostarszych programów dla X, jak xterm, u˙zywabazy danych zasobów X do konfiguracji własnego wygl ˛adu.Plik ~/.Xresources jest u˙zywanydo przechowywania specyfikacji za- sobów u˙zytkownika.Jego zawarto´s´cjest automatycznie doł ˛aczanado domy´slnychzasobów X podczas logowania. Oto par˛eprzydatnych ustawie´ndla twojego pliku ~/.Xresources:

! Ustaw czcionk˛edo bardziej czytelnego rozmiaru 9x15 XTerm*font: 9x15

! Wyswietl´ pasek przewijania XTerm*scrollBar: true

! Ustaw rozmiar bufora na 1000 linii XTerm*saveLines: 1000

Aby zmiany te weszły w ˙zycienatychmiast, dodaj je do bazy danych zasobów poleceniem:

xrdb -merge ~/.Xresources

9.4.11 Uprawnienia administratora w X

Je´sliprogram z GUI musi by´curuchomiony z uprawnieniami administratora u˙zyjnast˛epu- j ˛acejprocedury.Nigdy nie uruchamiaj X serwera bezpo´srednioz konta roota, aby unikn ˛a´c problemów z bezpiecze´nstwem. Uruchom X serwer jako zwykły u˙zytkowniki otwórz okno programu xterm. Potem:

$ XAUTHORITY=$HOME/.Xauthority $ export XAUTHORITY $ su root Password:***** # printtool &

U˙zywaj˛actego sposobu by zyska´cprawa u˙zytkownikainnego ni˙zroot, upewnij si˛e, ˙ze ~ /.Xauthority jest dost˛epnydo odczytu dla grupy tego u˙zytkownika. Aby zautomatyzowa´cte sekwencje polece´n,utwórz plik ~/.xsession na koncie u˙zytkown- ika zawieraj ˛acylinie: Rozdział 9. Dostrajanie systemu Debian 136

# To sprawia, ˙zeX-y działaj ˛a,kiedy za pomoc ˛asu staj˛esi˛eroot’em. if [ -z "$XAUTHORITY" ]; then XAUTHORITY=$HOME/.Xauthority export XAUTHORITY fi unset XSTARTUP # Jesli´ jakies´ mened˙zeryokien/sesji s ˛awybrane, odkomentuj nast˛epuj˛ace # linie i dostosuj je do swoich potrzeb. #XSTARTUP=/usr/bin/blackbox # To uruchomi program x-window/session-manager if [ -z "$XSTARTUP" ]; then if [ -x /usr/bin/x-session-manager ]; then XSTARTUP=x-session-manager elif [ -x /usr/bin/x-window-manager ]; then XSTARTUP=x-window-manager elif [ -x /usr/bin/x-terminal-emulator ]; then XSTARTUP=x-terminal-emulator fi fi # Uruchom automatycznie wybrany mened˙zerokien/sesji X exec $XSTARTUP

Nast˛epnieuruchom su (nie su -) w oknie programu xterm. Teraz programy uruchami- ane z tego xterma b˛ed˛awy´swietla´csi˛etemu u˙zytkownikowi,podczas gdy pracowa´cb˛ed˛az prawami administratora. Działa to tak długo, jak długo domy´slnyplik /etc/X11/Xsession jest wykonywany. Je´sliu˙zytkownikzmienił swoje ´srodowisko edytuj ˛ac ~/.xinit lub ~/.xsession, to wymieniona zmienna ´srodowiskowa XAUTHORITY musi by´cw nich odpowiednio zmieniona. Opcjonalnie, sudo mo˙zeby´cwykorzystane dla zautomatyzowania tej sekwencji polece´n:

$ sudo xterm ... lub $ sudo -H -s

W tym wypadku plik /root/.bashrc powinien zawiera´c:

if [ $SUDO_USER ]; then sudo -H -u $SUDO_USER xauth extract - $DISPLAY | xauth merge - fi

Działa to poprawnie nawet gdy katalog domowy u˙zytkownikajest na NFS, poniewa˙zroot nie odczytuje jego .Xauthority. Jest kilka pakietów przeznaczonych specjalnie dla tego celu: kdesu, gksu, gksudo, gnome-sudo, i xsu. Par˛einnych metod mo˙zeby´cu˙zytychdo osi ˛agni˛eciapodobnych rezultatów: utworzenie Rozdział 9. Dostrajanie systemu Debian 137

dowi ˛azaniasymbolicznego z pliku /root/.Xauthority do u˙zytkownika,u˙zycieskryptu sux (http://fgouget.free.fr/sux/sux-readme.shtml); lub wpisanie „xauth merge ~USER_RUNNING_X/.Xauthority” w plikach startowych administratora. Przeczytaj wi˛ecejna debian-devel mailing list (http://lists.debian.org/debian-devel/ 2002/debian-devel-200207/msg00259.html).

9.4.12 Czcionki TrueType dla X

Standardowy xfs z XFree86-4 poprawnie współpracuje z czcionkami TrueType. Je´slinatomi- ast korzystasz z XFree86-3 musisz zainstalowa´cosobny pakiet, taki jak xfs-xtt. Musisz upewni´csi˛e,˙zewszystkie programy, które maj ˛akorzysta´cz czcionek TrueType zostały poł ˛aczonez libXft lub libfreetype (prawdopobnie nie musisz si˛eo to martwi´c,je´slikorzystasz z prekompilowanych pakietów .deb). Pami˛etajaby zainstalowa´cwymagane czcionki i wygenerowa´cpliki fonts.{scale,dir}, aby mogły zosta´czaindeksowane i u˙zyte. Poniewa˙zwybór Wolnych czcionek jest dosy´cograniczony, dobrym rozwi ˛azaniemmo˙zeby´c równoczesna instalacja ich komercyjnych odpowiedników. Aby uczyni´cich instalacj˛ełatwiejsz ˛a, stworzono kilka pakietów: • ttf-commercial • msttcorefonts (>1.1.0) (Pakiet w Woodym nie działa z powodu zmiany w dniu 8/2002 strony internetowej Microsoftu.) B˛edzieszmiał naprawd˛edu˙zywybór czcionek, je´slipoł ˛aczyszu˙zycieswoich Wolnych cz- cionek z innymi, komercyjnymi.

9.4.13 Przegl ˛adarkaWWW (graficzna)

Jest kilka graficznych przegl ˛adarek stron WWW w Woodym: • mozilla The Mozilla (nowa) • przegl ˛adarkaoparta o Mozill˛ez Gnome UI (nowa) • przegl ˛adarkadla KDE • przegl ˛adarkaw GTK • -gtk przegl ˛adarkawzorcowa W3C • amaya-lesstif przegl ˛adarkawzorcowa W3C • netscape-... (du˙zo,stare) • communicator-... (du˙zo,stare) • ... Wersja pakietu mozilla musi odpowiada´cwersji wymaganej przez pakiet galeon. Chocia˙z ró˙zni˛asi˛eone interfejsem u˙zytkownika,to korzystaj ˛az tego samego mechanizmu renderowa- nia stron HTML . Wtyczki dla przegl ˛adarek takich, jak mozilla i galeon mog ˛aby´cuaktywnione poprzez r˛eczn˛ainstalacj˛eodpowiednich plikow „*.so” w katalogu z wtyczkami i ponowne uruchomie- nie przegl ˛adarki. Rozdział 9. Dostrajanie systemu Debian 138

Popularne wtyczki: • wtyczka Javy: zaistaluj „J2SE” z http://java.sun.com. • wtyczka Flash: zainstaluj „Macromedia Flash Player 5” z http://www.macromedia. com/software/flashplayer/. • freewrl: przegl ˛adarkaVRML i wtyczka dla Netscape’a • ...

9.5 SSH

SSH (Secure SHell) zapewnia bezpieczny sposób poł ˛acze´ninternetowych. Wersja SSH stanow- i ˛acawolne oprogramowanie nazywa si˛eOpenSSH i jest dost˛epnaw systemie Debian jako pakiet ssh.

9.5.1 Podstawy.

Najpierw zainstaluj serwer i klienta OpenSSH.

# apt-get update && apt-get install ssh

Wymagany jest wpis non-US w /etc/apt/source.list. Je´sliserwer OpenSSH ma by´c uruchamiany, to nie mo˙zeistnie´cplik /etc/ssh/sshd_not_to_be_run. SSH zapewnia dwa protokoły identyfikacji:

• Pierwszy protokół SSH: – Jedynie Potato obsługuje ten protokół. – dost˛epnemetody identyfikacji: * RSAAuthentication: oparta na kluczu RSA u˙zytkownika * RhostsAuthentication: oparta na .rhosts (niebezpieczna, wył ˛aczona) * RhostsRSAAuthentication: oparta na kombinacji .rhosts i kluczy RSA (wył ˛ac- zona) * ChallengeResponseAuthentication: oparta o mechanizm RSA challenge-response * PasswordAuthentication: oparta na hasłach

• Drugi protokół SSH: – podstawowy dla systemów post-Woody – dost˛epnemetody identyfikacji: * PubkeyAuthentication: oparta o klucz publiczny * HostbasedAuthentication: oparta o .rhosts lub /etc/hosts.equiv, w poł ˛acze- niu z metod ˛aklucza publicznego (wył ˛aczona). * ChallengeResponseAuthentication: oparta o mechanizm challenge-response * PasswordAuthentication: oparta na hasłach Rozdział 9. Dostrajanie systemu Debian 139

Je´sliu˙zywaszWoodiego lub systemu innego ni˙zDebian, to zwró´cuwag˛ena te ró˙znice.

Przeczytaj /usr/share/doc/ssh/README.Debian.gz, ssh(1), sshd(8), ssh-agent(1), i ssh-keygen(1) dla dalszych informacji.

Główne pliki konfiguracyjne to:

• /etc/ssh/ssh_config: Ustawienia domy´slneklienta SSH. Przeczytaj ssh(1). Wa˙zne uwagi, pozycje: – Host: Ogranicza nast˛epuj˛acepo nim deklaracje ( a˙zdo nast˛epnegowyst ˛apienia Host) jedynie do komputerów pasuj ˛acychdo wzorca podanego po danym słowie kluczowym. – Protocol: Okre´slawersje protokołu SSH. Domy´slnieto „2,1”. – PreferredAuthentications: Okre´slametod˛eidentyfikacji klienta SSH2. Domy´slna warto´s´cto „hostbased,publickkey,keyboard-interactive,password”. – PasswordAuthentication: Je´slichcesz logowa´csi˛eu˙zywaj˛achasła, upewnij si˛e, ˙zepole to nie jest ustawione na no. – ForwardX11: Domy´slniewył ˛aczone.Nadrz˛ednawobec tego ustawienia jest opcja wiersza polece´n„-X”.

• /etc/ssh/sshd_config: Domy´slneustawienia serwera SSH. Przejrzyj te˙z sshd(8). Pozycje godne uwagi: – ListenAddress: okre´slalokalny adres, na którym sshd powinien nasłuchiwa´c. Dozwolona jest wi˛ecejni˙zjedna opcja. – AllowTcpForwarding: Domy´slniewył ˛aczone. – X11Forwarding: Domy´slniewył ˛aczone.

• $HOME/.ssh/authorized_keys: lista domy´slnychkluczy publicznych, które zostały u˙zyteprzez klientów do poł ˛aczeniana dane konto na tym komputerze. Zobacz ssh-keygen(1).

• $HOME/.ssh/identity: Zobacz ssh-add(1) oraz ssh-agent(1).

Rozpocz˛eciepoł ˛aczeniaprzez klienta ssh.

$ ssh [email protected] $ ssh -1 [email protected] # Wymusza u˙zywanieSSH w wersji 1 $ ssh -1 -o RSAAuthentication=no -l username foo.host # wymusza u˙zywaniehaseł SSH1 $ ssh -o PreferredAuthentications=password -l username foo.host # wumusza u˙zywaniehaseł SSH2

Z punktu widzenia u˙zytkownika ssh działa jako sprytniejszy i bezpieczniejszy odpowiednik programu telnet ( nie zarzuci nas np. ^]). Rozdział 9. Dostrajanie systemu Debian 140

9.5.2 Przekierowywanie portów – tunelowanie dla SMTP/POP3

Aby utworzy´cpotok ł ˛acz˛acyport 25 komputera zdalny-serwer i port 4025 na komputerze lokalnym, oraz potok ł ˛acz˛acyport 110 komputera zdalny-serwer z portem 4110 lokalnej maszyny, poprzez ssh, wykonaj na lokalnej maszynie:

# ssh -q -L 4025:zdalny-serwer:25 4110:zdalny-serwer:110 \ u˙zytkownik@zdalny-serwer

Jest to bezpieczny sposób na nawi ˛azywaniepoł ˛aczeniaz serwerami SMTP/POP3 w Internecie. Ustaw AllowTcpForwarding na yes w pliku /etc/ssh/sshd_config zdalnego komput- era.

9.5.3 Poł ˛aczeniaz mniejsz ˛ailo´sci˛ahaseł

Mo˙znaunikn ˛ackonieczno´scipami˛etaniahasła dla ka˙zdegou˙zywanegozdalnego komputera u˙zywaj˛acRSAAuthentication (protokół SSH1) lub PubkeyAuthentication (protokół SSH2). Na zdalnym systemie ustaw odpowiednio pozycje „RSAAuthentication yes” lub „PubkeyAu- thentication yes”, w /etc/ssh/sshd_config. Nast˛epniewygeneruj klucze identyfikacyjne lokalnie i zainstaluj klucz publiczny na zdalnym systemie:

$ ssh-keygen # RSAAuthentication: klucz RSA1 dla SSH1 $ cat .ssh/identity | ssh u˙zytkownik1@zdalny\ "cat - >>.ssh/authorized_keys" ... $ ssh-keygen -t rsa # PubkeyAuthentication: Klucz RSA dla SSH2 $ cat .ssh/id_rsa.pub | ssh u˙zytkownik1@zdalny\ "cat - >>.ssh/authorized_keys" ... $ ssh-keygen -t dsa # PubkeyAuthentication: klucz DSA dla SSH2 $ cat .ssh/id_dsa.pub | ssh u˙zytkownik1@zdalny\ "cat - >>.ssh/authorized_keys"

Mo˙znapó´zniejzmieni´chasło za pomoc ˛apolecenia „ssh-keygen -p”. Sprawd´zustawienia testuj ˛acpoł ˛aczenie.W razie nieprawidłowo´sciskorzystaj z polecenia „ssh -v”. Mo˙zeszdoda´copcje do pozycji w authorized_keys, aby ograniczy´cuprawnienia hostów i u˙zy´codpowiedniego polecenia. Po dalsze informacje si˛egnijdo sshd(8). Zauwa˙z,˙zeSSH2 obsługuje HostbasedAuthentication. Aby uaktywni´cten mechanizm, musisz zmieni´cwarto´s´czmiennej HostbasedAuthentication na yes zarówno w pliku /etc/ssh/sshd_config po stronie serwera, jak i w plikach /etc/ssh/ssh_config lub $HOME/.ssh/config na komputerze klienta. Rozdział 9. Dostrajanie systemu Debian 141

9.5.4 Inne klienty SSH

Istnieje par˛eklientów SSH na platformy inne ni˙zUnix.

Windows puTTY (http://www.chiak.greenend.org.uk/~sgtatham/putty/) (GPL)

Windows (cygwin) SSH w cygwin (http://www.cygwin.com/) (GPL)

Macintosh Classic macSSH (http://www.macssh.com/) (GPL) [Zauwa˙z,˙zeMac OS X za- wiera OpenSSH; u˙zyj ssh w aplikacji Terminala]

Zobacz tak˙zeSourceForge.net, site documentation (http://www.sourceforge.net/docman/ ?group_id=1), „6. CVS Instructions”.

9.5.5 SSH agent

Bezpieczniej jest chroni´cswój klucz SSH hasłem. Je´slinie zostało ono ustawione, u˙zyjpolece- nia ssh-keygen -p aby to zmieni´c. Umie´s´cswój klucz publiczny (np ~/.ssh/id_rsa.pub) w pliku ~/.ssh/authorized_keys na zdalnym ho´scie,u˙zywaj˛acpoł ˛aczeniaopartego o hasła, tak jak to opisano w ‘Poł ˛aczeniaz mniejsz ˛ailo´sci˛ahaseł’ na s ˛asiedniejstronie.

$ ssh-agent bash # lub uruchom zamiast tego zsh/tcsh/pdksh $ ssh-add ~/.ssh/id_rsa Enter passphrase for /home/osamu/.ssh/id_rsa: Identity added: /home/osamu/.ssh/id_rsa (/home/osamu/.ssh/id_rsa) $ scp foo [email protected]:foo ... nie potrzebne tu jest moje hasło :-) $^D ... przerywanie sesji ssh-agent

Dla X-serwera, standardowe skrypty startowe systemu Debian uruchamiaj ˛a ssh-agent jako proces macierzysty. Musisz wi˛ecjedynie uruchomi´cjednokrotnie ssh-add. Dla dalszych informacji przeczytaj ssh-agent(1) i ssh-add(1).

9.5.6 Problemy

Je´slimasz problemy, sprawd´zprawa dost˛epudo plików konfiguracyjnych i uruchom ssh z opcj ˛a„-v”. U˙zyjparametru „-P” je´slijeste´srootem i masz problem z firewallem; pozwala to unikn ˛a´c korzystania z portów 1–1023. Rozdział 9. Dostrajanie systemu Debian 142

Je´slizdalne poł ˛aczenie ssh nagle przestaje działa´c,mo˙zeby´cto spowodowane działaniami ad- ministratora, a najbardziej, prawdopodobn ˛azmian ˛aw host_key. Po upewnieniu si˛e,˙zenie jest to jednak sprytna próba włamania poprzez podszywanie si˛eza zdalnej maszyny, mo˙zesz odzyska´cpoł ˛aczenieusuwaj ˛acpozycje host_key z $HOME/.ssh/known_hosts na lokalnej maszynie.

9.6 Programy pocztowe

Konfiguracja poczty dzieli si˛ena 3 kategorie:

• mail transfer agent (program przesyłaj ˛acypoczt˛e- MTA): exim, postfix, sendmail, qmail, ssmtp, nullmailer,... • pocztowe programy u˙zytkowe: procmail, fetchmail, mailx,... • mail (klient poczty - MUA): mutt, emacs+gnus,. . .

9.6.1 Mail transport agent (MTA)

Aby mie´cw pełni wyposa˙zonyMTA u˙zyj exim. Zasoby: • pakiety exim-doc i exim-doc-html • http://www.exim.org/ Je´slitroszczysz si˛eo bezpiecze´nstwo,to jedyn ˛arozs ˛adn˛aalternatyw ˛ajest postfix. sendmail i qmail, s ˛arównie˙zdost˛epnejako pakiety systemu Debian, ale ich u˙zywanienie jest polecane. Je´slinie potrzebujesz „relay capability” MTA, jak to jest w przypadku np. laptopów, mo˙zesz rozwa˙zy´cu˙zycierozwi ˛aza´nmniejszego kalibru: • ssmtp: wymaga poł ˛aczeniaSMTP i obsługuje aliasy, lub • nullmailer: potrafi kolejkowa´c,ale nie obsługuje aliasów. Obecnie uwa˙zam, ˙ze exim jest bardziej odpowiedni nawet dla mojej stacji roboczej, b˛ed˛acej wła´snielaptopem. Musisz usun ˛a´c exim aby zainstalowa´cw/w pakiety, gdy˙zzachodzi pomi˛edzynimi konflikt:

# dpkg -P --force-depends exim # apt-get install nullmailer # lub ssmtp

Podstawowa konfiguracja Exima

Aby u˙zywa´c exim jako MTA, ustaw odpowiednie opcje w:

/etc/exim/exim.conf ,,eximconfig’’ tworzenie i edycja /etc/inetd.conf zakomentuj smtp by u˙zywac´ serwera exim w trybie demon /etc/email-addresses Dodawanie listy fałszywych adresów sprawd´zfiltry, u˙zywaj˛acexim -brw, -bf, -bF, -bV, ... etc. Rozdział 9. Dostrajanie systemu Debian 143

Wyłapywanie poczty adresowanej do nie istniej ˛acychadresów (Exim)

W /etc/exim/exim.conf (Woody lub pó´zniej),w cz˛e´sciDIRECTORS, pod koniec (za ’lokalny u˙zytkownik: przekierowanie’) dodaj przekierowanie pasuj ˛acedo wszystkich adresów, które poprzednie przekierowania nie mogły obj ˛a´c(przez Miquela van Smoorenburga):

catchall: driver = smartuser new_address = [email protected]

Je´slichce si˛emie´cbardziej szczegółowy opis ka˙zdejwirtualnej domeny itp. dodaj nast˛epuj˛ace linie pod koniec pliku /etc/exim/exim.conf (nie sprawdzone).

*@yourdomain.com ${lookup{$1}lsearch*{/etc/email-addresses} \ {$value}fail} T

Nast˛epnieumie´s´cpozycje „*” w pliku /etc/email-addresses.

Zamiana adresów dla wychodz ˛acejpoczty (Exim)

Selektywna zamiana adresów dla wychodz ˛acejpoczty, aby otrzyma´cpoprawnie nagłówki „From: ”, mo˙zeby´cosi ˛agni˛etaw programie exim dzi˛ekiodpowiedniej konfiguracji pod koniec pliku /etc/exim/exim.conf:

*@komp1.gdzies.dyndns.org´ \ "${if eq {${lookup{$1}lsearch{/etc/passwd}{1}{0}}} {1} \ {$0}{[email protected]}}"´ frFs

Ta regułka zamienia wszystkie adresy pasuj ˛acedo *@komp1.gdzies.dyndns.org´ .

1. Najpierw sprawdza w pliku /etc/password czy cz˛e´s´clokalna ($1) jest u˙zytkownikiem czy nie.

2. Je´slito lokalny u˙zytkownik,przepisuje adres w takiej postaci w jakiej wyst˛epował.

3. Je´slinie, podmienia nazw˛edomeny.

Autoryzacja SMTP w Eximie

Niektórzy usługodawcy SMTP, jak np. yahoo.com, wymagaj ˛aautoryzacji SMTP. Skonfiguruj /etc/exim/exim.conf nast˛epuj˛aco: Rozdział 9. Dostrajanie systemu Debian 144

remote_smtp: driver = smtp authenticate_hosts = smtp.mail.yahoo.com ...

smarthost: driver = domainlist transport = remote_smtp route_list = "* smtp.mail.yahoo.com bydns_a" ...

plain: driver = plaintext public_name = PLAIN client_send = "^cmatheson3^this_is_my_password"

Nie zapomnij o dwóch znakach cudzysłowia w ostatniej lini

9.6.2 Fetchmail fetchmail jest uruchamiany w trybie demona, aby pobra´cpoczt˛ez konta POP3 u ISP do lokalnego systemu pocztowego. Konfiguracja:

/etc/init.d/fetchmail /etc/rc?.d/???fetchmail uruchom update-rc.d fetchmail default priority 30 /etc/fetchmailrc plik konfiguracyjny (chown 600, własnos´c´ fetchmaila)

Uruchomienie fetchmaila jako demona wywoływanego ze skryptu init.d w Potato mo˙ze by´ckłopotliwe (w Woodym jest ju˙zinaczej). Zobacz przykładowe skrypty (examples/).

Je´slinagłówki poczty elektronicznej s ˛azanieczyszczone znakiem ^M z winy Twojego ISP, do- daj „stripcr” do opcji w pliku $HOME/.fetchmailrc:

options fetchall no keep stripcr

9.6.3 Procmail procmail spełnia rol˛elokalnego MDA oraz programu filtruj ˛acego. Nale˙zystworzy´cplik $HOME/.procmailrc dla ka˙zdegokonta, które z niego korzysta. Przykłady _procmailrc (examples/) Rozdział 9. Dostrajanie systemu Debian 145

9.6.4 Mutt

U˙zyj mutt jako czytnika poczty ( mail user agent (MUA)) w poł ˛aczeniuz vim. Dostosuj do własnych potrzeb edytuj ˛acplik~/.muttrc; na przykład:

# u˙zywajtrybu wizualnego i ,,gq’’ do formatowania cytatów set editor="vim -c ’set tw=72 et ft=mail’" # # usuwanie nagłówków wzi˛etez podr˛ecznika(Sven’s Draconian header weeding) # ignore * unignore from: date subject to cc unignore user-agent x-mailer hdr_order from subject to cc date user-agent x-mailer auto_view application/msword ....

U˙zyjnast˛epuj˛acychwpisów w plikach /etc/mailcap lub $HOME/.mailcap, aby przegl ˛a- da´czał ˛acznikiw formatach HTML i MS Word.

text/html; lynx -force_html %s; needsterminal; application/msword; /usr/bin/antiword ’%s’; copiousoutput; description="Microsoft Word Text"; nametemplate=%s.doc

9.7 Lokalizacja i obsługa obcych j˛ezyków.

Debian jest projektem mi˛edzynarodowym, obsługuj ˛acymrosn ˛ac˛ailo´s´cj˛ezykówitp. Ta cz˛e´s´c wymieni kilka obszarów ró˙znicj˛ezykowych,które Debian obecnie obsługuje. Nast˛epneza´s skupi ˛asi˛ena lokalizacji, procesie uzyskania wej´sciai wyj´sciaprogramów w wybranym j˛ezyku, jak równie˙zstosowania wybranych konwencji drukowania daty, liczb i symboli monetarnych, jak równie˙zinnych ró˙znic,jakie mog ˛awyst˛epowa´cna skutek stosowania systemu Debian w Twoim regionie.

9.7.1 Podstawy

Jest kilka aspektów lokalizowania systemu Debian i obsługi j˛ezykównarodowych.

Klawiatura

Debian jest rozpowszechniany z blisko dwoma tuzinami map klawiatur. W Woodym mo˙zesz zmieni´custawienia klawiatury poprzez: • dpkg-reconfigure --priority=low console-data # console • dpkg-reconfigure --priority=low xserver-xfree86 # XF4 • dpkg-reconfigure --priority=low xserver-common-v3 # XF3 Rozdział 9. Dostrajanie systemu Debian 146

Dane

Szeroka gama oprogramowania dost˛epnegojako pakiety Debiana wspiera obsług˛eznaków graficznych ró˙znychod standardu US-ASCII poprzez zmienn ˛a´srodowiskow ˛aLC_CTYPE, udost˛epnian˛aprzez mechanizm locale w glibc • 8-bit clean: praktycznie wszystkie programy • inne zestawy znaków Latin (np. ISO-8859-1 lub ISO-8859-2): wi˛ekszo´s´cprogramów • wielobajtowe j˛ezyki,jak Chi´nski,Japo´nskiczy Korea´nski:wiele nowych programów

Wy´swietlanie

X-y mog ˛awy´swietla´cka˙zdekodowanie, wł ˛aczaj˛acUTF-8, i obsługuj ˛awszystkie czcionki. Za- wieraj ˛asi˛ew tym nie tylko wszystkie czcionki 8-bitowe, ale tak˙ze16-bitowe - np. chi´nska, japo´nskaczy korea´nska. Obsługa wielobajtowych zestawów znaków przy wprowadzaniu danych jest zapewniona przez mechanizm XIM. Zobacz ‘Przykład systemu dwuj˛ezycznego (japo´nskiEUC i ISO-8859-1)’ na 149 stronie. Wy´swietlaniejapo´nskiegokodu EUC jest tak˙zemo˙zliwew konsoli graficznej, poprzez pakiet kon2. Jest tak˙zealternatywny program, u˙zywaj˛acykonsoli framebuffera, pakiet jfbterm.W tych ´srodowiskach sposób zapewnienia wej´sciakompatybilnego z j˛ezykiemjapo´nskimmusi by´czapewniony przez programy u˙zytkowe.U˙zyjpakietu egg dla Emacsa lub jvim dla Vima.

Tłumaczenie

Dost˛epnes ˛atłumaczenia wielu komunikatów i dokumentów wy´swietlanychw systemie De- bian takich, jak komunikaty bł˛edów, standardowe wyj´scieprogramów, menu oraz strony po- dr˛ecznikasystemowego. Obecnie istniej ˛astrony podr˛ecznikaw j˛ezykuniemieckim, hisz- pa´nskim,fi´nskim,francuskim, w˛egierskim,włoskim, japo´nskim,korea´nskim,polskim, por- tugalskim, chi´nskimoraz rosyjskim - wszystkie one s ˛adost˛epnew pakietach manpages-LANG (gdzie LANG jest dwuliterowym kodem ISO kraju. U˙zyj apt-cache search manpages-|less aby otrzyma´clist˛edost˛epnychpakietów.) Aby korzysta´cz przetłumaczonych stron podr˛ecznika,u˙zytkownikmusi ustawi´czmienn ˛a ´srodowiskow ˛aLC_MESSAGES na odpowiedni ˛awarto´s´c. W przypadku j˛ezykawłoskiego LC_MESSAGES musi zosta´custawione na it. Wtedy man b˛edzieszukał włoskiego tłumaczenia w pliku /usr/share/man/it/.

9.7.2 Locales

Debian oferuje mechanizm locale. Pozwala on programom na dostosowanie wyj´sciai mo˙zli- wo´sciw zale˙zno´sciod ustawie´nsystemowych takich, jak u˙zywanyzestaw znaków, format wy´swietlaniadaty i godziny, symbol waluty itp. Na przykład, zakładaj ˛acwyst˛epowaniezarówno American English oraz French locales w Twoim systemie, komunikat bł˛edumo˙zeby´cwy´swi- etlany w wielu j˛ezykach: Rozdział 9. Dostrajanie systemu Debian 147

$ LANG="en_US" cat foo cat: foo: No such file or directory $ LANG="fr_FR" cat foo cat: foo: Aucun fichier ou répertoire de ce type

Glibc oferuje t ˛afunkcjonalno´s´cdla programów jako bibliotek˛e.Zobacz locale(7).

9.7.3 Aktywacja wsparcia locale

Debian nie jest instalowany z wszystkimi mo˙zliwymiprekompilowanymi wersjami locales . Sprawd´zplik /usr/lib/locale, aby zobaczy´c,które locale (poza domy´slnym„C”), s ˛a obecne w Twoim systemie. Je´slipotrzebujesz takiego, który nie jest dost˛epnymasz dwie mo˙zli- wo´sci: • Dodaj po˙z˛adanelocale do pliku /etc/locale.gen, nast˛epnieuruchom locale-gen jako root aby je skompilowa´c.Przeczytaj locale-gen(8) i strony wymienione w jego cz˛e´sci„SEE ALSO”. • Uruchom dpkg-reconfigure locales, aby ponownie skonfigurowa´cpakiet locales. A je´slinie jest jeszcze zainstalowany, to instalacja wywoła interfejs programu debconf, aby pozwoli´cCi wybra´cpotrzebne locale i skompilowa´cbaz˛edanych.

9.7.4 Uaktywnienie okre´slonegolocale.

Nast˛epuj˛acezmienne ´srodowiskowe s ˛au˙zywane, aby dostarczy´custawie´nlocale dla pro- gramów:

1. LANGUAGE: Ta zmienna składa si˛ez oddzielonej dwukropkami listy locale w porz ˛adku wa˙zno´sci.U˙zywajwył ˛acznie,je´sliPOSIX locale jest ustawione do warto´sciinnej ni˙z„C” [w Woodym; wersja Potato jest zawsze wa˙zniejszaod POSIX locale]. (rozszerzenie GNU)

2. LC_ALL: Je´slinie przyjmuje warto´sciNULL, warto´s´cta jest u˙zytadla categories. (POSIX.1) Zwykle „” (null).

3. LC_*: Je´slinie przyjmuje warto´sciNULL, warto´s´cta jest u˙zytadla odpowiedniej kate- gorii (POSIX.1). Zwykle „C”. Dost˛epnezmienne LC_*: • LC_CTYPE: Konwersja czcionki i wielko´sciliter. • LC_COLLATE: Porz ˛adeksortowania. • LC_TIME: Format wy´swietlaniadaty i godziny. • LC_NUMERIC: Wy´swietlanieliczb nie zwi ˛azanychz walut ˛a • LC_MONETARY: Formaty walutowe. • LC_MESSAGES: Format wiadomo´sciinformacyjnych, diagnostycznych oraz okre´sla- j ˛acychinterakcje programu. • LC_PAPER: Rozmiar papieru. • LC_NAME: Format nazw. Rozdział 9. Dostrajanie systemu Debian 148

• LC_ADDRESS: Format wy´swietlaniaadresu i lokalizacji. • LC_TELEPHONE: Format wy´swietlanianumeru telefonu. • LC_MEASUREMENT: Jednostki miary (metryczna lub inna) • LC_IDENTIFICATION: Metadata o ustawieniach locale.

4. LANG: Je´slinie przyjmuje warto´sciNULL i LC_ALL jest niezdefiniowane, warto´s´cwszys- tkich niezdefiniowanych kategorii LC_* jest ustawiana na t ˛awarto´s´c.(POSIX.1) Zwykle „C”.

Zauwa˙z,˙zeniektóre programy (np. Netscape 4) ignoruj ˛austawienia LC_*. Program locale mo˙zewy´swietla´custawienia locale i dost˛epnelocale; przeczytaj locale(1). (Zapami˛etaj: locale -a podaje wszystkie locale, o których istnieniu wie; nie oznacza to, ˙ze wszystkie s ˛adost˛epne!Zobacz ‘Aktywacja wsparcia locale’ na poprzedniej stronie.)

9.7.5 Format daty ISO 8601

Locale obsługuje mi˛edzynarodowy standard formatu daty yyyy-mm-dd (ISO 8601) poprzez locale en_DK, — Angielski w Danii, co jest ˙zartem:-) Wydaje si˛edziała´cjedynie w trybie tek- stowym w ls.

9.7.6 Przykład dla US (ISO-8859-2)

Dodaj poni˙zszelinie do pliku ~/.bash_profile:

LC_CTYPE=en_US.ISO-8859-1 export LC_CTYPE

9.7.7 Przykład dla Francji, z walut ˛aEuro (ISO-8859-15)

Dodaj poni˙zszelinie do pliku ~/.bash_profile:

LANG=fr_FR@euro export LANG LC_CTYPE=fr_FR@euro export LC_CTYPE

Skonfiguruj klawiatur˛ejako francuskie „AZERTY”, jak to opisano w ‘Klawiatura’ na 145 stronie i dodaj francuskie strony podr˛ecznikasystemowego instaluj ˛ac manpages-fr. Prawy Alt w US to Alt-Gr w Europie. Naci´sni˛ecietych klawiszy razem z innymi tworzy liczne znaki diakryty- czne oraz znaki specjalne. Np Alt-Gr+E odpowiada za znak Euro. Wi˛ekszo´s´cj˛ezykówzachodnio-europejskich mo˙zeby´cskonfigurowana podobnie. Rozdział 9. Dostrajanie systemu Debian 149

Zobacz Debian Euro HOWTO (http://www.debian.org/doc/manuals/debian-euro-support/), jak doda´cobsług˛enowej waluty Euro oraz Utiliser et configurer Debian pour le franciçais (http://www.debian.org/doc/manuals/fr/debian-fr-howto/) po wi˛ecejinforma- cji w j˛ezykufrancuskim.

9.7.8 Przykład systemu dwuj˛ezycznego(japo ´nskiEUC i ISO-8859-1)

Postawmy system dwuj˛ezyczny:ja_JP.eucJP (japo´nskiEUC, tradycyjne japo´nskie´srodowisko uniksowe) w X-ach z angielskimi komunikatami oraz datami w formacie ISO, oraz en_US.ISO- 8859-1 (prawie wszystkie ASCII z obsług ˛aakcentowanych znaków) w trybie tekstowym.

• dodaj obsług˛ejapo´nskiegolocale ja_JP.eucJP metod ˛aopisan ˛aw ‘Lokalizacja i obsługa obcych j˛ezyków.’ na 145 stronie.

• zainstaluj system konwersji oraz słownik Kana-to-Kanji: – canna — lokalny serwer (licencja „free beer”), lub – freewnn-jserver — sieciowy serwer (Public Domain)

• zainstaluj mechanizmy japo´nskiegowej´scia: – kinput2-canna— dla X-ów, lub – kinput2-canna-wnn— dla X-ów, i – egg— działa bezpo´srednio z Emacsem nawet w trybie tekstowym (opcjonalnie).

• terminal przystosowany do japo´nskiego: – kterm— X (klasyczny), – mlterm— X (ładny, czcionki zmiennej wielko´sci),oraz

• dodaj wszystkie japo´nskieczcionki

• Skonfiguruj, jak opisano w ‘Personalizowanie sesji X.’ na 130 stronie. Pozwoli to na ´srodowisko X, niezale˙zneod sposobu uruchamiania X (startx, xdm,...)

• stwórz plik ~/.session dla ustawie´nzale˙znychod u˙zytkownika:

#!/bin/sh # To sprawia, ˙zeX-y działaj ˛agdy przeloguj˛esi˛ena roota za pomoc ˛asu. if [ -z "$XAUTHORITY" ]; then XAUTHORITY=$HOME/.Xauthority export XAUTHORITY fi

# japonskie´ ustawienia jako domyslne,´ locale C jako zapasowe export LANG=ja_JP.eucJP # upewnij si˛e,˙zenadpisujesz en_US.ISO-8859-1 u˙zywanew konsoli export LC_CTYPE=ja_JP.eucJP # chc˛e,by opisy menu były w j˛ezykuangielskim w ASCII :-) Rozdział 9. Dostrajanie systemu Debian 150

export LC_MESSAGES=C # aktywuj metod˛ewejsciow´ ˛a kinput2 & XMODIFIERS=@im=kinput2 export XMODIFIERS # A mo˙zeblackbox window manager (leciutki) exec /usr/bin/blackbox

• dodaj nast˛epuj˛acelinie w pliku ~/.bashrc:

# Zmien´ srodowisko´ j˛ezykowew zale˙znosci´ od programu do emulacji konsoli. # Powłoki dost˛epnew X-ach uruchamiaj ˛ajedynie .bashrc (nie s ˛apowłokami # logowania). Ogólne ustawienia srodowiska´ dla X znajduj ˛asi˛ew .xsession if [ $TERM = kterm ] || [ $TERM = mlterm ]; then unset LC_ALL export LANG=C #export LANG=ja_JP.eucJP # Dla formatu wyswietlania´ daty ISO rrrr-mm-dd, bardziej naturalnego dla # Japonczyków´ :-) export LC_TIME=en_DK.ISO-8859-1 export LC_MESSAGES=C export LANGUAGE=ja_JP.eucJP:en_US.ISO-8859-1:C export LC_CTYPE=ja_JP.eucJP else unset LC_ALL export LANG=C export LC_TIME=en_DK.ISO-8859-1 export LANGUAGE=en_US.ISO-8859-1:C export LC_CTYPE=en_US.ISO-8859-1 fi

• dodaj nast˛epuj˛acelinie w pliku ~/.muttrc:

# Obsługa UTF-8 nie jest popularna w powszechnym japonskim´ srodowisku´ EMACS # 7 bitowe kodowanie iso-2002-jp jest prostsze dla wszystkich # domyslna´ kolejnos´c´ kodowan´ = us-ascii --> iso-8859-1 --> utf-8 #set send_charset="us-ascii:iso-8859-1:utf-8" #set allow_8bit=yes set send_charset="us-ascii:iso-8859-1:iso-2022-jp" set allow_8bit=no

• uaktywnij XIM kinput2 dla aplikacji w X-ach – dodaj *inputMethod: kinput2 do Twojego pliku ~/.Xresources (wygl ˛ada na to, ˙zeDebian załatwia to jako´sautomatycznie). Rozdział 9. Dostrajanie systemu Debian 151

– Niektóre programy, jak np. mlterm pozwalaj ˛atak˙zena ustawianie *inputMethod: i innych informacji dynamicznie, podczas działania (naci´snij Ctrl-MouseButton-3 w mlterm).

• uruchom X poprzez startx lub mened˙zerwy´swietlania(xdm, gdm, kdm, wdm,...)

• uruchom program kompatybilne z j˛ezykiemjapo´nskimtakie, jak VIM6, (x)emacs21, mc- 4.5, mutt-1.4, . . . (Emacs wydaje si˛enajpopularniejszy, aczkolwiek osobi´sciego nie u˙zy- wam).

• naci´snij Shift+Space aby wł ˛aczy´c/wył˛aczy´cjapo´nskitryb wej´scia.

Zobacz tak˙zeSuSE pages for CJK (http://www.suse.de/~mfabian/suse-cjk/suse-cjk. html).

9.7.9 Przykład UTF-8 w X

Ka˙zdyb˛edzietego potrzebował w przyszło´sci.Zobacz The Unicode HOWTO (http://www. tldp.org/HOWTO/Unicode-HOWTO.html).

9.7.10 Przykład UTF-8 w terminalu framebuffer

Wsparcie UTF-8 na terminalu FB jest zapewnione przez bterm u˙zywanyw debian-installer.

9.7.11 Poza locale

Kiedy po raz pierwszy starasz si˛eskonfigurowa´c narodowe ´srodowiskoj˛ezykowe zastanów si˛enad u˙zyciem tasksel lub aptitude, aby dowiedzie´csi˛ejakie pakiety s ˛ainstalowane, wybieraj ˛acodpowiadaj ˛aceim funkcje lokalizacyjne. Wybór pakietów jest przydatny nawet w systemie wieloj˛ezycznym. Je´slinapotkasz konflikty podczas instalacji z Twoim ostro˙znie skonfigurowanym systemem, unikaj instalowania pakietu powoduj ˛acegokonflikt. Mo˙zliwe, ˙zeb˛edzieszmusiał u˙zy´c update-alternative aby przywróci´coryginalny stan dla niek- tórych polece´n,gdy˙zinstalowane mogły mie´cwy˙zszypriorytet od istniej ˛acych. Wa˙znenowe programy u˙zywaj˛aglibc 2.2 i przewa˙znies ˛aumi˛edzynarodowione. Wi˛ecspec- jalnie zlokalizowane wersje, jak jvim dla VIM, mog ˛anie by´cpotrzebne, gdy˙zwymagana funkcjonalno´s´cjest oferowana przez wersj˛e6.0 vima w X-ach. Chocia˙zz tym ró˙zniebywa. Np. jvim posiada wersj˛eskompilowan ˛az bezpo´srednim wsparciem dla japo´nskiejmetody wej´s- ciowej (canna) nawet w terminalu tekstowym i lepiej rozwi ˛azujeniektóre problemy specy- ficzne dla japo´nskiego,wi˛ecwci ˛a˙zmo˙zeszna niego reflektowa´c:-) Programy mog ˛apotrzebowa´ckonfiguracji wykraczaj ˛acejpoza locale aby zapewni´ckom- fortowe ´srodowisko pracy. Pakiet language-env i jego polecenie set-language-env w istotny sposób ułatwiaj ˛aten proces. Rozdział 9. Dostrajanie systemu Debian 152

Zobacz tak˙zedokument o internacjonalizacji, Introduction to i18n (http://www.debian. org/doc/manuals/intro-i18n/). Przeznaczony jest głównie dla programistów, ale przy- datny mo˙zeby´crównie˙zdla administratorów. 153

Rozdział 10

Tworzenie bramy sieciowej z systemem Debian

Debian oferuje oprogramowanie ogólnego przeznaczenia do uruchomienia bramki sieciowej, która obsługuje NAT, poczt˛e,DHCP, buforowanie DNS, buforowanie zapyta´nHTTP (proxy), CVS, NFS i zasoby Samba dla domowej sieci lokalnej. Przeczytaj Netfilter (http://www. netfilter.org/), gdzie jest opisanych wiele problemów z konfiguracj ˛asieci.

10.1 Konfiguracja sieci

10.1.1 Konfiguracja stacji sieciowej przeznaczonej na bram˛e

Sie´clokalna u˙zywaadresów IP z puli prywatnych adresów sieciowych po to, by zapobiec kolizjom adresów z tymi u˙zywanymiw Internecie.

Klasa A: 10.0.0.0 z mask ˛a255.0.0.0 Klasa B: 172.16.0.0 - 172.31.0.0 z mask ˛a255.255.0.0 Klasa C: 192.168.0.0 - 192.168.255.0 z mask ˛a255.255.255.0

Debian u˙zywapliku /etc/network/interfaces do konfiguracji IP. Na przykład, je´sli eth0 ł ˛aczyCi˛ez Internetem z wykorzystaniem adresu IP pobieranego przez DHCP, a eth1 ł ˛aczyCi˛ez sieci ˛alokaln ˛a(LAN), plik /etc/network/interfaces wygl ˛ada nast˛epuj˛aco(w przypadku Woodiego lub nowszej dystrybucji):

auto eth0 iface eth0 inet dhcp

auto eth1 iface eth1 inet static Rozdział 10. Tworzenie bramy sieciowej z systemem Debian 154

address 192.168.1.1 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255

Wprowad´zponi˙zszepolecenie, by uaktualni´ckonfiguracj˛esieciow ˛au˙zywaj˛acnowego pliku /etc/network/interfaces:

# /etc/init.d/networking restart

Pami˛etaj:Plik /etc/network/interfaces z Woodiego (i pó´zniejszychwersji) nie jest kom- patybilny z podobnym plikiem z Potato. (Taka sama sytuacja mo˙zezaistnie´cmi˛edzyWoody a Sarge.) Je´slisystem u˙zywakarty sieciowej PCMCIA, nale˙zyskonfigurowa´csie´cw pliku /etc/pcmcia /network.opts (dotyczy tylko Potato). W Woodym ten problem został rozwi ˛azany. Je´slinie jeste´spewien, przyjrzyj si˛ewynikowi poni˙zszychpolece´n:

# ifconfig # cat /proc/pci # cat /proc/interrupts # dmesg|more

Czasami przy ł ˛aczachDSL (PPPoE) s ˛aproblemy z MTU. Szczegółowe informacje znajduj ˛asi˛e w LDP DSL-HOWTO (http://www.tldp.org/HOWTO/DSL-HOWTO/). Je´slimasz problemy z niektórymi stronami, zobacz ‘Dziwne kłopoty z dost˛epemdo witryn WWW.’ na 44 stronie.

10.1.2 Lista „do zrobienia” konfiguracji sieci

Typowy zestaw programów:

# apt-get install nfs samba dhcpd dhcp-client bind squid procmail fetchmail # apt-get install ssh cvs

Nast˛epnieprzyjrzyj si˛enast˛epuj˛acymplikom:

/etc/init.d/dhcpd (zmodyfikuj, by miec´ tylko LAN = eth1) /etc/host.allow (ALL: 192.168.0.0/16 127.0.0.0/8) dla NFS /etc/exports (potrzebny dla NFS) /etc/bind/db.192.168.1 (dodaj) /etc/bind/db.lan (dodaj) /etc/bind/named.conf (zmodyfikuj) Rozdział 10. Tworzenie bramy sieciowej z systemem Debian 155

/etc/resolv.conf (zmodyfikuj) /etc/hosts /etc/dhcpd.conf (zmodyfikuj dla LAN = eth1) /etc/dhclient.conf (zmodyfikuj by wymusic´ lokalny DNS) /etc/samba/smb.conf /etc/exim/exim.conf /etc/mailname /etc/aliases /etc/squid.conf (dodaj adresy IP wszystkich dozwolonych hostów) bind tworzy lokalny serwer buforuj ˛acyDNS i zmienia adres serwera DNS na localhost. Przyjrzyj si˛eplikowi /etc/resolv.conf:

nameserver 127.0.0.1 search lan.aokiconsulting.com

10.2 Konfiguracja Netfilter

Projekt netfilter/iptables jest podsystemem ´scianyogniowej dla Linuksa 2.4 i nowszych. Udaj si˛ena stron˛eNetfilter (http://www.netfilter.org/), gdzie opisano i wyja´snionowiele zagadnie´ndotycz ˛acychkonfiguracji sieciowej.

10.2.1 Netfilter - podstawy

Netfilter przetwarza pakiety przy u˙zyciupi˛eciuwbudowanych ła´ncuchów:PREROUTING, INPUT, FORWARD, OUTPUT i POSTROUTING.

decyzja routingu IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT interfejs ROUTING \ sledzenie´ / ROUTING interfejs DNAT | poł ˛aczen´ ^ SNAT REDIRECT | | MASQUERADE v | INPUT OUTPUT | filtrowanie ^ filtrowanie,DNAT v | \--> Lokalny Proces--/ program przestrzeni u˙zytkownika

10.2.2 Tablice Netfilter

Pakiety s ˛aprzetwarzane w ka˙zdymła´ncuchuw poszczególnych tablicach. Rozdział 10. Tworzenie bramy sieciowej z systemem Debian 156

• filter (filtrowanie pakietów, domy´slna) – INPUT (tylko dla pakietów wchodz ˛acychdo hosta) – FORWARD (tylko dla pakietów przekazywanych przez hosta) – OUTPUT (tylko dla lokalnie generowanych pakietów). • nat (network address translation - translacja adresów sieciowych) – PREROUTING (do zmiany zawarto´scipakietów podczas ich wej´scia) – OUTPUT (do zmiany zawarto´scipakietów generowanych lokalnie, przed routingiem) – POSTROUTING (do zmiany zawarto´scipakietów, gdy wychodz ˛aone z hosta) • mangle (network address mangling, sprawne tylko w j ˛adrachnowszych ni˙z2.4.18) – wszystkie 5 wbudowanych ła´ncuchów.

10.2.3 Cele Netfilter

Reguły ´scianyogniowej maj ˛awiele celów (miejsc przeznaczenia): • 4 podstawowe cele: – ACCEPT przepuszcza pakiet (zezwala na dost˛ep). – DROP po cichu odrzuca pakiet (nie informuje o tym nikogo). – QUEUE przekazuje pakiet programowi działaj ˛acemuw przestrzeni u˙zytkownika (je´slijest to obsługiwane przez j ˛adro). – RETURN zatrzymuje przetwarzanie danego ła´ncuchai wznawia przetwarzanie w nast˛epnejregułce poprzedniego (z którego nast ˛apiłowywołanie) ła´ncucha. • rozszerzone cele: – LOG wł ˛aczalogowanie j ˛adra. – REJECT zwraca informacj˛eo bł˛edzienadawcy i odrzuca pakiet. – SNAT zmienia adres ´zródłowypakietu i jest u˙zywanytylko w ła´ncuchuPOSTROUT- ING (tablica nat). --to-source ipaddr[-ipaddr][:port-port] – MASQUERADE działa tak samo jak SNAT, ale jest przeznaczona dla poł ˛acze´nz dynamicznie przypisywanym numerem IP (poł ˛aczeniemodemowe) (tablica nat). --to-ports port[-port] – DNAT zmienia adres docelowy pakietu, jest u˙zywanyw ła´ncuchachPREROUT- ING i OUTPUT oraz w zdefiniowanych przez u˙zytkownikała´ncuchach,które s ˛a wywoływane z dwóch powy˙zszychła´ncuchów(tablica nat). --to-destination ipaddr[-ipaddr][:port-port] – REDIRECT zmienia adres docelowy tak, by pakiet otrzymał komputer, na którym działa ogniomurek (czyli ten komputer). --to-ports port[-port]

10.2.4 Polecenia Netfiltera

Podstawowe polecenia iptables: iptables -N łancuch´ # tworzy łancuch´

iptables -A łancuch´ \ # dodaje regułk˛edo łancuch´ Rozdział 10. Tworzenie bramy sieciowej z systemem Debian 157

-t tablica \ # w tablica (filter, nat, mangle) -p protokół \ # tcp, udp, icmp lub all -s adres-´zródłowy[/maska] \ --sport port[:port] \ # port ´zródłowy,jesli´ -p jest tcp lub udp -d adres-docelowy[/maska] \ --dport port[:port] \ # port docelowy, jesli´ -p jest tcp lub udp -j cel \ # co zrobic,´ jesli´ regułka pasuje -i interfejs-wejsciowy´ \ # dla INPUT, FORWARD, PREROUTING -o interfejs-wyjsciowy´ # dla FORWARD, OUTPUT, POSTROUTING

10.2.5 Maskarada IP

Komputery w sieci lokalnej mog ˛amie´cdost˛epdo Internetu przez bramk˛esieciow ˛a,na której działa maskarada IP (NAT) dziel ˛acpojedynczy, osi ˛agalnyz zewn ˛atrzadres IP.

# apt-get install ipmasq

Zastosuj przykładowe reguły, by zwi˛ekszy´czabezpieczenia ipmasq. Przeczytaj /usr/share /doc/ipmasq/examples/stronger/README. W przypadku debianowego kernel-image- 2.4 upewnij si˛e, ˙zezaładowałe´sodpowiednie moduły. Opis potrzebnej konfiguracji jest w ‘Obsługa sieci’ na 84 stronie. W przypadku debianowego kernel-image-2.2, modyfikuj plik Z92timeouts.rul w katalogu /etc/masq/rules tak, jak pokazano poni˙zej,by zapewni´cdłu˙zszepoł ˛aczeniaze zdalnymi serwerami (dobre dla du˙zychlistów elektronicznych, itp.):

# tcp, tcp-fin, udp # 2hr, 10 sec, 160 sec - domyslnie´ # 1 day, 10 min, 10 min - przykład dłu˙zszegoczasu ˙zycia $IPCHAINS -M -S 86400 600 600

Równie˙zje´slisie´cjest osi ˛agalnaprzez kart˛ePCMCIA, ipmasq musi by´cwystartowane z pliku /etc/pcmcia/network.opts. Przeczytaj plik /usr/share/doc/ipmasq/ipmasq.txt.gz.

10.2.6 Przekierowanie poł ˛acze´nSMTP (2.4)

Załó˙zmy, ˙zemasz notebooka, który jest tak skonfigurowany, ˙zeu˙zywaró˙znych´srodowisk sieciowych i chcesz u˙zywa´cswojego agenta (serwer) poczty bez potrzeby ci ˛agłejzmiany jego konfiguracji. Dodaj ˛acponi˙zsz˛aregułk˛e iptables na bramce sieciowej przekierujesz poł ˛aczeniaSMTP do komputera pełni ˛acegofunkcj˛ebramki.

# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \ -p tcp --dport smtp --to-port 25 # smtp=25, INPUT is open Rozdział 10. Tworzenie bramy sieciowej z systemem Debian 158

Je´slioczekujesz dokładniejszych zestawów regułek, rozwa˙zzainstalowanie pakietu ipmasq i dodanie M30redirect.def (examples/) do katalogu /etc/ipmasq/rules/.

10.3 Zarz ˛adzaniewieloma poł ˛aczeniamiz sieci ˛a

[FIXME] Routing rozszerzony (policy routing) (autor: Phil Brutsche ): Zobacz iproute manual (http://lartc.org/), je´sliinteresuj ˛aCi˛eszczegóły. Kształ- towanie ruchu (tc, ang. Traffic control) mo˙zeby´crównie interesuj ˛ace. Srodowisko:´

eth0: 192.168.1.2/24; brama 192.168.1.1 eth1: 10.0.0.2/24; brama 10.0.0.1 Brak maskarady na tym komputerze.

Magiczne zakl˛ecia: 1. ip rule add from 192.168.1.2 lookup 1 2. ip rule add from 10.0.0.2 lookup 2 3. ip route add to default via 10.0.0.1 metric 0 4. ip route add to default via 192.168.1.1 metric 1 5. ip route add table 1 to 192.168.1.0/24 via eth0 6. ip route add table 1 to 10.0.0.2/24 via eth1 7. ip route add table 1 to default via 192.168.1.1 8. ip route add table 2 to 192.168.1.0/24 via eth0 9. ip route add table 2 to 10.0.0.2/24 via eth1 10. ip route add table 2 to default via 10.0.0.2 [FIXME] Nigdy tego nie robiłem. Jak ustawi´cpoł ˛aczeniewdzwaniane jako poł ˛aczenieza- pasowe szybkiego ł ˛acza,u˙zywaj˛acwła´sciwo´sciautomatycznego ł ˛aczeniana ˙z˛adanie?Wy´slij łatk˛etutaj :) 159

Rozdział 11

Edytory

11.1 Popularne edytory

Linux oferuje wiele alternatyw dla konsolowych edytorów tekstu. W´sródnich: • vim: Pot˛e˙znyi lekki edytor, wywodz ˛acysi˛ez BSD. VI iMproved. • emacs: Podstawowy i ci˛e˙zkiedytor, wywodz ˛acysi˛ez projektu GNU. Autentyk RMS-a (Richarda M. Stallmana). • xemacs: Emacs: Nast˛epnepokolenie, pochodz ˛acyod Lucid. • mcedit: GNU edytor dla pocz ˛atkuj˛acych.Identyczny z wewn˛etrznymedytorem z mc. Zobacz ‘Edytor’ na 52 stronie. • ae: Domy´slnymały edytor (Potato). Nale˙zygo unika´c. • nano: Domy´slnymały edytor (Woody). Na´sladuje pico. • joe: Dla fanów czasów WordStara lub TurboPascala. • jed: Szybki, w pełni wyposa˙zony, obsługiwany przez menu, ze skrótami klawiszowymi Emacsa. • jove: Bardzo mały edytor ze skrótami klawiszowymi Emacsa. • nvi: Nowy vi. Bł ˛adw bł ˛adkompatybilny z oryginalnym vi.

Aby zmieni´cdomy´slnyedytor, u˙zyj update-alternatives --config editor. Wiele programów u˙zywarównie˙zzmiennych ´srodowiskowych takich jak EDITOR lub VISUAL aby zdecydowa´c,którego edytora u˙zy´c.Zobacz ‘Edytor’ na 52 stronie.

Tak˙zekilka edytorów ´srodowiska X Window jest godnych uwagi: • gvim: Vim z interfejsem graficznym (Pakiety vim i vim-gtk). • emacs: Jedyny prawdziwy Emacs (automatycznie wykrywa X Window). • xemacs: Emacs nast˛epnejgeneracji (automatycznie wykrywa X Window). Wywołania tych klentów X zawieraj ˛astandardowe opcje, takie jak -fn a24, które ułatwiaj ˛a ˙zyciestarszym u˙zytkownikom,takim jak ja :) Zobacz ‘Klient X’ na 129 stronie. Rozdział 11. Edytory 160

11.2 Edytory awaryjne

Istnieje kilka edytorów umieszczonych w katalogu /bin. Jeden z nich powinien by´czain- stalowany do prostego edytowania plików, gdy /usr jest nieosi ˛agalne. • elvis-tiny: Minimalny edytor vi (vi aby uruchomi´c) • nano-tiny: Minimalny edytor ró˙znyod vi (nano-tiny aby uruchomi´c) • ed: Minimalny edytor (zawsze obecny, ale trudny w u˙zyciu)

11.3 Emacs i Vim

11.3.1 Wskazówki do Vima

Przeczytaj dokument „VIM - main help file” wciskaj ˛ac podczas pracy programu.

Pomoc Powrót do normalnego trybu V Tryb wizualny i Tryb wprowadzania : Polecenia linii polecen´ :set tw=72 Ustawia szerokos´c´ tekstu na 72 Tryb wprowadzania (wklejania) :r! date -R Wstaw dat˛ezgodn ˛az RFC-822 qa Zapisz sekwencj˛eklawiszy w rejestrze a q Zatrzymaj zapisywanie sekwencji klawiszy @a Wykonaj sekwencj˛eklawiszy z rejestru a :edit foo.txt Edytuj inny plik przez wczytanie foo.txt :wnext Zapisz bie˙z˛acyplik i edytuj nast˛epnyplik q i @ mog ˛aby´cu˙zywanedo zapisywania i odtwarzania prostych makr. Na przykład, aby ut- worzy´cmakro, które wstawia znaczniki pochyło´sciHTML wokół słowa pod kursorem, mo˙zesz wpisa´c qii^[ea^[q (gdzie ^[ jest klawiszem ESC). Gdy pó´zniejustawisz kursor na pocz ˛atkusłowa i wpiszesz @i, zostan ˛adodane znaczniki i .

Zobacz równie˙z‘U˙zywanieGnuPG z Vimem’ na 193 stronie.

11.3.2 Wskazówki do Emacsa

Pomoc Menu C-u M-! date -R Wstaw dat˛ezgodn ˛az RFC-822 Rozdział 11. Edytory 161

11.3.3 Uruchamianie edytora

uruchom edytor: emacs plik vim plik uruchom w trybie zgodnosci´ z vi: vim -C uruchom w trybie niezupełnie zgodnym z vi: vim -N uruchom z opcjami domyslnymi:´ emacs -q vim -N -u NONE

11.3.4 Podsumowanie polece ´nedytorów (Emacs, Vim)

wyjscie:´ C-x C-c :qa /:wq /:xa /:q! Powrót/tryb polecen:´ C-g Do tyłu (w lewo): C-b h Do przodu (w prawo): C-f l W dół: C-n j W gór˛e: C-p k pocz ˛ateklinii(^): C-a 0 koniec linii($): C-e $ Polecenia wielokrotne: C-u nnn polec nnn polecenie Polecenia wielokrotne: M-cyfra polecenie zapisz plik: C-x C-s :w plik pocz ˛atekbufora: M-< 1G koniec bufora: M-> G przewin´ 1 ekran do przodu: C-v ^F przewin´ 1/2 ekranu do przodu: ^D przewin´ 1 lini˛edo przodu: ^E przewin´ 1 ekran do tyłu: M-v ^B przewin´ 1/2 ekranu do tyłu: ^U przewin´ 1 lini˛edo tyłu: ^Y przewin´ inne okno: M-C-v skasuj w miejscu kursora: C-d x skasuj od kurs. do konca´ linii: C-k D przeszukiwanie w przód: C-s przeszukiwanie wstecz: C-r wyszukaj w przód: C-s enter / wyszukaj wstecz: C-r enter ? szukanie wyra˙zen´ regularnych: M-C-s szukanie wyra˙zen´ reg. wstecz: M-C-r znajd´zwyra˙zenieregularne: M-C-s enter / znajd´zwyra˙zeniereg. wstecz: M-C-r enter ? Pomoc: C-h C-h :help Pomoc Apropos: C-h a objasnienia´ klawiszy: C-h b :help [klawisz] Pomoc (Info): C-h i Pomoc Główny tryb: C-h m Pomoc samouczek: C-h t :help howto Rozdział 11. Edytory 162

Cofnij (Undo): C-_ u Anuluj cofni˛ecie(Redo): C-f ^R Zaznacz pozycj˛ekursora: C-@ m{a-zA-Z} Zmien´ zaznaczenie i pozycj˛e: C-x C-x Id´zdo znacznika w bie˙z˛acympliku: ’{a-z} Id´zdo znacznika w dowolnym pliku: ’{A-Z} kopiuj obszar: M-w {w wizualnym}y usun´ obszar: C-w {w wizualnym}d Wklej i zachowaj bufor: C-y Wklej z bufora usuni˛etych: M-y p zmien´ obszar na du˙zelitery: C-x C-u {w wizualnym}U zmien´ obszar na małe litery: C-x C-l {w wizualnym}u Wstaw znak specjalny: C-q numer ósemkowo/sekwencja klawiszy ^V dziesi˛etnie/sekwencjaklawiszy zast ˛ap: M-x replace-string :%s/aaa/bbb/g zast ˛apwyra˙zenieregularne: M-x replace-regexp :%s/aaa/bbb/g zast ˛apz potwierdzeniem: M-% :%s/aaa/bbb/gc zast ˛apz potwierdzeniem: M-x query-replace zast ˛apwyra˙zeniereg. z potwierdzeniem: M-x query-replace-regexp Otwórz plik: C-x C-f :r plik Zapisz plik: C-x C-s :w Zapisz wszystkie bufory: C-x s :wa Zapisz jako: C-x C-w plik :w plik zmien´ bufor: C-x b wyswietl´ bufory: C-x C-b :buffers Przeł ˛aczna tylko-do-odczytu: C-x C-q :set ro zapytaj i usun´ bufor: C-x k Podziel pionowo: C-x 2 :split Podziel poziomo: C-x 3 :vsplit (wersja 6) Przenies´ do innego okna: C-x o ^Wp Usun´ to okno: C-x 0 :q Skasuj inne okno (okna): C-x 1 ^Wo uruchom kompilacj˛ew tle: M-x compile usun´ kompilacj˛ew tle: M-x kill-compilation uruchom make :make Makefile sprawd´zinformacje o bł˛edach: C-x‘ :echo errmsg uruchom powłok˛eloguj ˛acwyjscie:´ M-x shell :!script -a tmp ...wyczys´c´ znaki backspace, ... :!col -b record ...zapisz/przywołaj zapis powłoki: C-x C-w record :r record uruchom powłok˛e: M-! sh :sh uruchom polecenie: M-! cmd :!cmd uruchom polecenie i wstaw: C-u M-! cmd :r!cmd uruchom filtr: M-| plik {wizualny}:w file uruchom filtr i wstaw: C-u M-| filter {wizualny}:!filter poka˙zopcj˛e: :se[t] {opcja}? przywróc´ wartos´c´ domysln´ ˛aopcji :se[t] {opcja}& Rozdział 11. Edytory 163

ustaw opcj˛elogiczn ˛a(boolean) :se[t] no{opcja} przeł ˛aczopcj˛elogiczn ˛a(boolean) :se[t] inv{option} zawin´ tekst na 72. kolumnie :se tw=72 nie zawijaj :se tw=0 automatycznie wcinaj :se ai rozwijaj tabulator :se et ustaw znaki komentarza (mail) :se comments=n:>,n:\|

uruchom GDB M-x gdb opisz tryb GDB C-h m rusz si˛eo jedn ˛alini˛e M-s nast˛epnalinia M-n rusz si˛eo jedn ˛ainstrukcj˛e M-i zakoncz´ bie˙z˛ac˛aramk˛estosu C-c C-f kontynuuj M-c podnies´ ramki argumentów M-u upus´c´ ramki argumentów M-d skopiuj ilos´c´ od punktu, wstaw na koncu:´ C-x & ustaw pułapk˛e C-x SPC

11.3.5 Konfiguracja Vima

W celu u˙zyciawszystkich funkcji Vima oraz pod´swietlaniaskładni, nale˙zydoda´cnast˛epuj˛ace linie do ~/.vimrc lub /etc/vimrc:

set nocompatible set nopaste set pastetoggle= syn on

Tryb wklejania umo˙zliwiaunikanie wpływu automatycznego wcinania przy operacjach wytnij- i-wklej w terminalu. Robi on wi˛ecejni˙zproste „:set noai”.

Je˙zeliinteresuje Ci˛eintegracja z GnuPG, zobacz ‘U˙zywanieGnuPG z Vimem’ na 193 stronie.

11.3.6 Ctags apt-get install exuberant-ctags i uruchom ctags na plikach ´zródłowych. Wpisz :tag nazwa_funkcji w Vimie, aby przeskoczy´cdo linii w której nazwa_funkcji si˛ezaczyna. Znaczniki działaj ˛adla C, C++, Javy, Pythona i wielu innych j˛ezyków.

Emacs posiada te same mo˙zliwo´scictags. Rozdział 11. Edytory 164

11.3.7 Konwersja ekranu z pod´swietlaniemskładni do kodu HTML so \$VIMRUNTIME/syntax/2html.vim wywołane z linii polece´nVima zamieni pod´swi- etlany tekst na kod HTML. Zapisz u˙zywaj˛ac :w plik.html i :q. U˙zyteczniedla kodu w j˛ezykuC itd.

11.3.8 Rozdzielanie ekranu w vimie vim mo˙zeedytowa´cwiele plików w ´srodowisku z wielokrotnie podzielonym ekranem. W celu uzyskania szczegółowych informacji, wpisz :help usr_08.txt. Aby rozdzieli´cekran mi˛edzyró˙znepliki, wpisz w lini polece´nvi:

:split inny-plik :vsplit inny-plik

Lub w linii polece´npowłoki:

$ vi -o file1.txt file2.txt # Podział poziomy $ vi -O file1.txt file2.txt # Podział pionowy wywoła to vi podzielonego na wiele okien.

$ vimdiff file.txt~ file.txt # sprawdza ostatnie zmiany w file.txt $ vimdiff file.en.sgml file.fr.sgml # sprawdza zamiany w przekładzie/tłumaczeniu $ gvimdiff file.txt~ file.txt # w srodowisku´ X Window spowoduje wy´swietlenieładnego widoku zmian mi˛edzyoryginałem i kopi ˛azapasow ˛a. W przypadku SGML-a dopasowuje znaczniki, wi˛ecporównywanie tłumacze´nw tym trybie dzi- ała bardzo dobrze. Specjalne ruchy kursora wywoływane przez Ctrl-W:

Ctrl-W + zwi˛ekszarozmiar okna Ctrl+W - zmniejsza rozmiar okna Ctrl-W h przejd´zdo okna po lewej Ctrl-W j przejd´zdo okna poni˙zej Ctrl-W k przejd´zdo okna powy˙zej Ctrl-W l przejd´zdo okna po prawej ...

Aby kontrolowa´cprzewijanie ekranu u˙zyjnast˛epuj˛acychopcji:

:set scrollbind :set noscrollbind 165

Rozdział 12

Systemy kontroli wersji

12.1 CVS

Przeczytaj (np. przegl ˛adark˛a lynx) pliki: /usr/share/doc/cvs/html-cvsclient, /usr /share/doc/cvs/html-info, /usr/share/doc/cvsbook lub wykonaj polecenia: info cvs oraz man cvs w celu uzyskania dokładnych informacji.

12.1.1 Instalacja serwera CVS

Poni˙zszeustawienia pozwalaj ˛ana wprowadzanie zmian w repozytorium wył ˛acznieu˙zytkown- ikom nale˙z˛acymdo grupy „src”, a na administracj˛eCVS wył ˛acznieczłonkowi grupy „staff”, redukuj ˛acw ten sposób szanse zastrzelenia samego siebie.

# cd /var/lib; umask 002 ; sudo mkdir cvs # [Woody] FSH # apt-get install cvs cvs-doc cvsbook # export CVSROOT=/var/lib/cvs # cd $CVSROOT # chown root:src . # ,,staff’’ dla wi˛ekszychograniczen´ rozpoczynania projektów # chmod 3775 . # Jesli´ w powy˙zszymwyst˛epuje,,staff’’, u˙zyj2775 # cvs -d /var/lib/cvs init # bezpieczniej jest okresli´ c´ -d tutaj! # cd CVSROOT # chown -R root:staff . # chmod 2775 . # touch val-tags # chmod 664 history val-tags # chown root:src history val-tags

12.1.2 Przykładowe sesje CVS

Poni˙zejznajduj ˛asi˛eprzykłady konfiguracji ´srodowiska powłoki dla dost˛epudo repozytoriów CVS. Rozdział 12. Systemy kontroli wersji 166

Anonimowy CVS (tylko pobieranie)

Zdalny dost˛eptylko do odczytu:

$ export CVSROOT=:pserver:[email protected]:/cvsroot/qref $ cvs login $ cvs -z3 co qref

U˙zycielokalnego serwera CVS

Dost˛eplokalny z powłoki na tej samej maszynie:

$ export CVSROOT=/var/lib/cvs

U˙zycieodległego pservera CVS

Zdalny dost˛epbez SSH (u˙zywaj˛acobsługi RSH w cvs):

$ export CVSROOT=:pserver:[email protected]:/var/lib/cvs $ cvs login

Jest to metoda podatna na podsłuch.

U˙zyciezdalnego CVS przez ssh

Zdalny dost˛epz SSH:

$ export CVSROOT=:ext:[email protected]:/var/lib/cvs lub dla Sourceforge:

$ export CVSROOT=:ext:[email protected]:/cvsroot/qref

Mo˙zeszrównie˙zu˙zy´cuwierzytelnienia RSA (‘Poł ˛aczeniaz mniejsz ˛ailo´sci˛ahaseł’ na 140 stronie), które eliminuje pytanie o hasło. Rozdział 12. Systemy kontroli wersji 167

Tworzenie nowego archiwum CVS

Dla,

OBIEKT WARTOS´C´ ZNACZENIE Drzewo ´zródeł: ~/project-x Wszystkie kody ´zródłowe Nazwa projektu: project-x Nazwa projektu Zródło´ modułu: Main-branch Nazwa całego modułu (vendortag) Etykieta wydania: Release-original Nazwa wydania (releasetag)

Wykonaj,

$ cd ~/project-x # przejd´zdo katalogu ze ´zródłami ... stwórz drzewo ´zródeł... $ cvs import -m "Start project-x" project-x Main-branch Release-original $ cd ..; rm -R ~/project-x

Praca z CVS

Praca nad projektem project-x przy u˙zyciulokalnego repozytorium:

$ cd # przejscie´ do przestrzeni roboczej $ cvs co project-x # pobranie ´zródełz CVS-u $ cd project-x ... wprowadzanie zmian w zawartosci´ ... $ cvs diff -u # podobne do diff -u repozytorium/ lokalne/ $ cvs up -C modyfikowany_plik # cofni˛eciezmian w pliku $ cvs ci -m "Opisz zmiany" # wysłanie modyfikacji do CVS $ vi nowy_plik $ cvs add nowy_plik $ cvs ci -m "Dodano nowy_plik" $ cvs up # pobranie najnowszych wersji z CVS ... uwa˙zajna linie zaczynaj ˛acesi˛eod ,,C nazwa_pliku’’ ... kod niezmodyfikowany przeniesiony jest do ‘.#nazwa_pliku.wersja’. ... Szukaj "<<<<<<<" i ">>>>>>>" w nazwa_pliku. $ cvs tag Release-1 # dodaj symboliczn ˛anazw˛ewydania ... edytuj dalej ... $ cvs tag -d Release-1 # usun´ nazw˛ewydania $ cvs ci -m "nast˛epnekomentarze" $ cvs tag Release-1 # ponownie dodaj nazw˛ewydania $ cd # wróc´ do przestrzeni roboczej $ cvs co -r Release-initial -d old project-x ... pobierz wersj˛eoryginaln ˛ado katalogu old $ cd old Rozdział 12. Systemy kontroli wersji 168

$ cvs tag -b Release-initial-bugfixes # stwórz nazw˛eodgał˛ezienia(-b) ... Mo˙zeszteraz pracowac´ na starej wersji (Tag=sticky) $ cvs update ... Drzewo ´zródełma teraz trwał ˛a(sticky) nazw˛e,,Release-initial-bugfixes’’ ... Pracuj na tym odgał˛ezieniu $ cvs up # zsynchronizuj z plikami modyfikowanymi przez innych w tej gał˛ezi $ cvs ci -m "check into this branch" $ cvs update -kk -A ... Usun´ trwał ˛anazw˛ei zapomnij zawartos´c´ ... Aktualizuj z głównego pnia bez rozwijania słów kluczowych $ cvs update -kk -j Release-initial-bugfixes ... Wł ˛aczeniez odgał˛ezienia Release-initial-bugfixes do drzewa ... głównego. Napraw konflikty edytorem. $ cvs ci -m "wł ˛aczonoRelease-initial-bugfixes" $ cd $ tar -cvzf old-project-x.tar.gz old # stwórz archiwum, -j dla bz2 $ cvs release -d old # usun´ lokalne ´zródła(opcjonalne)

Miłe opcje do zapami˛etania(u˙zywajjako pierwszych opcji dla cvs):

-n pusty przebieg, ˙zadnychefektów -t wyswietl´ komunikaty pokazuj ˛aceetapy pracy cvs

Eksport plików z CVS

Aby pobra´cnajnowsz ˛awersj˛ez CVS u˙zyj„tomorrow”:

$ cvs ex -D tomorrow nazwa_modułu

Zarz ˛adzanieCVS

Dodaj alias dla projektu (serwer lokalny):

$ su - admin # członek grupy staff $ export CVSROOT=/var/lib/cvs $ cvs co CVSROOT/modules $ cd CVSROOT $ echo "px -a project-x" >>modules $ cvs ci -m "px jest teraz aliasem project-x" $ cvs release -d . $ exit # control-D aby wyjs´c´ z su $ cvs co -d project px ... pobierz project-x (alias:px) z CVS to katalogu project $ cd project ... wprowad´zzmiany w zawartosci´ ... Rozdział 12. Systemy kontroli wersji 169

0

12.1.3 Rozwi ˛azywanieproblemów z CVS

Uprawnienia plików w repozytorium

CVS nie nadpisuje aktualnych plików w repozytorium, tylko zast˛epujeje innymi. Z tego powodu, pozwolenie na pisanie do katalogu z repozytorium ma kluczowe znaczenie. Dla ka˙zdego nowego repozytorium, wykonaj nast˛epuj˛aceczynno´sciaby zapewni´cten warunek.

# cd /var/lib/cvs # chown -R root:src repozytorium # chmod -R ug+rwX repozytorium # chmod 2775 repozytorium # jesli´ potrzebne, w podkatalogu

Bit wykonywalno´sci

Bit wykonywalno´scipliku jest zachowany przy pobieraniu z CVS. Kiedy tylko zobaczysz prob- lem z prawem do wykonywania w pobranych plikach, zmie´nuprawnienia pliku w repozyto- rium nast˛epuj˛acympoleceniem.

# chmod ugo-x nazwa_pliku

12.1.4 Polecenia CVS

Oto polecenia CVS wraz ze skrótami.

{add|ad|new} [-k kflag] [-m ’komunikat’] pliki... {admin|adm|rcs} [opcje-rcs] pliki... {annotate|ann} [opcje] [pliki...] {checkout|co|get} [opcje] moduły... {commit|ci|com} [-lnR] [-m ’podsumowanie_zmian’ | -f file] \ [-r rewizja] [pliki...] {diff|di|dif} [-kl] [opcje_rcsdiff] [[-r rev1 | -D data1] \ [-r rev2 | -D data2]] [pliki...] {export|ex|exp} [-flNn] -r rev|-D data [-d katalog] [-k kflag] moduł... {history|hi|his} [-report] [-flags] [-options args] [pliki...] {import|im|imp} [-opcje] repozytorium vendortag releasetag... {login|logon|lgn} {log|lo|rlog} [-l] opcje-rlog [pliki...] {rdiff|patch|pa} [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] moduły... {release|re|rel} [-d] katalogi... Rozdział 12. Systemy kontroli wersji 170

{remove|rm|delete} [-lR] [pliki...] {rtag|rt|rfreeze} [-falnR] [-b] [-d] [-r tag | -D data] \ nazwa_symboliczna moduły... {status|st|stat} [-lR] [-v] [pliki...] {tag|ta|freeze} [-lR] [-F] [-b] [-d] [-r tag | -D data] [-f] \ nazwa_symboliczna [pliki...] {update|up|upd} [-AdflPpR] [-d] [-r tag|-D data] pliki...

12.2 Subversion

Subversion jest systemem kontroli wersji nowej generacji, który tworzony był z my´sl˛ao za- st ˛apieniuCVS. Według twórców jest on obecnie w stanie „alpha”, jednak prawdopodobnie jest wystarczaj ˛acostabilny dla wi˛ekszo´sciu˙zytkowników. W momencie powstawania tego tekstu, Subversion dost˛epnyjest wył ˛aczniew niestabilnej gał˛eziDebiana.

12.2.1 Instalacja serwera Subversion

Meta-pakiet subversion-server jest zale˙znyod wymaganych do u˙zyciasystemu Subver- sion pakietów (libapache2-dav-svn oraz subversion-tools).

Tworzenie repozytorium

Aktualnie, pakiet subversion nie tworzy repozytorium, wi˛ecmusi by´cono utworzone r˛ecznie. Jednym z mo˙zliwychmiejsc dla repozytorium jest /var/local/repos.

Utwórz katalog:

# mkdir -p /var/local/repos

Utwórz baz˛edanych repozytorium:

# svnadmin create /var/local/repos

Daj prawo do zapisu w repozytorium serwerowi WWW:

# chown -R www-data:www-data /var/local/repos Rozdział 12. Systemy kontroli wersji 171

Konfiguracja Apache2

Aby umo˙zliwi´cdost˛epdo repozytorium przez uwierzytelnienie u˙zytkownika,dodaj (lub usu´n komentarz) nast˛epuj˛acewpisy do /etc/apache2/mods-available/dav_svn.conf:

DAV svn SVNPath /var/local/repos AuthType Basic AuthName "Repozytorium Subversion" AuthUserFile /etc/subversion/passwd Require valid-user

Nast˛epniestwórz plik z hasłami u˙zytkownikówu˙zywaj˛acpolecenia:

htpasswd2 -c /etc/subversion/passwd jakis-u˙zytkownik´

Przeładuj Apache2, a Twoje nowe repozytorium Subversion b˛edziedost˛epnepod adresem http://nazwa_hosta/repos.

12.2.2 Przenoszenie repozytorium CVS do Subversion

12.2.3 Przykłady u˙zyciaSubversion

Poni˙zszecz˛e´scipokazuj ˛ajak u˙zywa´cró˙znychpolece´nw Subversion.

Tworzenie nowego archiwum

Aby stworzy´cnowe archiwum Subversion, napisz poni˙zszepolecenia:

$ cd ~/twój-projekt # przejd´zdo katalogu ´zródeł $ svn import http://localhost/repos twój-projekt \ nazwa-projektu -m "pocz ˛atkowyimport projektu"

Tworzy to katalog o nazwie nazwa-projektu w Twoim repozytorium. Katalog ten zawiera pliki Twojego projektu. Sprawd´zpod adresem http://localhost/repos/ czy si˛etam znalazł. Rozdział 12. Systemy kontroli wersji 172

Praca z Subversion

Praca z project-y przy u˙zyciuSubversion:

$ cd # przejd´zdo przestrzeni roboczej $ svn co http://localhost/repos/project-y # pobierz ´zródła $ cd project-y ... wykonaj prac˛e... $ svn diff # podobne do diff -u repozytorium/ lokalne/ $ svn revert modyfikowany_plik # cofnij zmiany w pliku $ svn ci -m "Opisz zmiany" # wyslij´ pliki do repozytorium $ vi dodany_plik $ svn add dodany_plik $ svn add nowy_katalog # rekursywnie dodaj pliki z nowy_katalog $ svn add -N new_dir2 # nierekursywnie dodaj nowy katalog $ svn ci -m "Dodano nowy_plik, nowy_katalog, nowy_katalog2" $ svn up # pobranie najnowszej wersji z repozytorium $ svn log # pokazuje wszystkie wprowadzone zmiany $ svn copy http://localhost/repos/project-y \ http://localhost/repos/project-y-branch \ -m "Tworz˛ewłasn ˛agał ˛a´z project-y" # rozgał˛ezienie project-y $ svn copy http://localhost/repos/project-y \ http://localhost/repos/proj-y_release1.0 \ -m "project-y 1.0 release" # dodanie tagu release ... zauwa˙z,˙zeodgał˛ezianiei tagowanie s ˛atym samym. Jedyn ˛aró˙znic˛ajest to, ... ˙zegał˛eziemo˙znauaktualniac,´ a tagów nie.

... wprowadzaj zmiany w gał˛ezi...

$ # poł ˛aczodgał˛ezieniez gał˛ezi˛agłówn ˛a $ svn merge http://localhost/repos/project-y \ http://localhost/repos/project-y-branch $ svn co -r 4 http://localhost/repos/project-y # pobierz rewizj˛e4 173

Rozdział 13

Programowanie

Pami˛etaj,by nie u˙zywa´cnazwy „test” do oznaczania pliku wynikowego, poniewa˙z test jest wbudowanym poleceniem powłoki.

13.1 Gdzie zacz ˛a´c?

Odno´sniki: • Dokumentacja i przykłady w katalogu /usr/share/doc/pakiet • Unix / Programming Information (http://arioch.unomaha.edu/~jclark/#info) • Linux Programming Bible (John Goerzen/IDG books) Wiele długich dokumentów info mo˙znaotrzyma´cw postaci wydrukowanej z GNU (http: //www.gnu.org/). W nast˛epnychczterech rozdziałach znajdziesz przykładowe skrypty, ka˙zdynapisany w in- nym j˛ezyku,które tworz ˛aplik tekstowy zawieraj ˛acyinformacje o koncie, które z kolei mog ˛a by´cwstawione do pliku /etc/passwd za pomoc ˛aprzetwarzania wsadowego np. programem newusers. Ka˙zdyze skryptów oczekuje na wej´sciupliku, którego linie s ˛anast˛epuj˛acegofor- matu imi˛enazwisko hasło. (Katalogi domowe u˙zytkownikównie b˛ed˛atworzone przez te skrypty.)

13.2 Powłoka

Najlepszym sposobem na zrozumienie działania systemów uniksowych jest przegl ˛adaniei czytanie skryptów powłoki. Poni˙zejpodam pewne wskazówki i materiały przypominaj ˛ace programowanie w powłoce.

13.2.1 Bash – interaktywna powłoka zgodna z GNU

Odno´snikido informacji na temat Bash-a: Rozdział 13. Programowanie 174

• bash(1) • info bash • LDP BASH Programming - Introduction HOWTO (http://www.tldp.org/HOWTO/ Bash-Prog-Intro-HOWTO.html) (Programowanie w BASH-u - Wprowadzenie JTZ) - informacje dla pocz ˛atkuj˛acych • mc /usr/share/doc/bash/examples/ /usr/share/doc/bash/ (Zainstaluj najpierw pakiet bash-doc, aby zobaczy´cprzykłady.) • Learning the bash Shell, 2nd edition (O’Reilly) - (Nauka powłoki bash - drugie wydanie) Oto krótki, przykładowy program (tworzy on wpisy dt. kont na podstawie danych ze stan- dardowego wej´sciadla programu newusers):

#!/bin/bash # (C) Osamu Aoki Sun Aug 26 16:53:55 UTC 2001 Public Domain pid=1000; while read n1 n2 n3 ; do if [ ${n1:0:1} != "#" ]; then let pid=$pid+1 echo ${n1}_${n2}:password:${pid}:${pid}:,,,/home/${n1}_${n2}:/bin/bash fi done

13.2.2 Powłoki zgodne z POSIX

W systemie Debian powłoki zgodne z POSIX znajduj ˛asi˛ew kilku pakietach: • dash (Sarge) – Priority: optional – Installed-Size: 176 – Najmniejszy i jak dot ˛adnajszybszy. – najlepszy dla pocz ˛atkowegorozruchu. • ash (Woody) – Priority: optional – Installed-Size: 180 – Mniejszy i o wiele szybszy – dobry dla pocz ˛atkowegorozruchu. • bash – Essential: yes – Priority: required – Installed-Size: 580 – Wi˛ekszyi z wi˛ekszymimo˙zliwo´sciami– napisanych zostało ju˙zwiele rozszerze´n. • pdksh – Priority: optional – Installed-Size: 408 – Kompletny klon powłoki AT&T ksh. Je´slipiszesz skrypty powłoki, które maj ˛aby´cprzenoszone na inne powłoki/systemy to na- jlepiej pisa´cje jako skrypty powłoki POSIX. U˙zyj /bin/sh dowi ˛azanegodo ash lub (dash) Rozdział 13. Programowanie 175

aby sprawdzi´czgodno´s´cz POSIX. Unikaj pisania skryptów z naleciało´sciami bashowymi lub zshsowymi, które przypominaj ˛askładni˛e csh. Na przykład, staraj si˛eunika´c: • if [ foo == bar ] ; then ... • diff -u file.c{.orig,} • mkdir /foo{bar,baz}

13.2.3 Parametry powłoki

Kilka parametrów specjalnych do zapami˛etania: $0 = nazwa powłoki lub skryptu $1 = pierwszy(1) argument powłoki ... $9 = dziewi ˛aty(9)argument powłoki $# = ilos´c´ parametrów pozycyjnych "$*" = "$1 $2 $3 $4 ... $n" "$@" = "$1" "$2" "$3" "$4" ... "$n" $? = kod zakonczenia´ ostatnio wykonywanego polecenia $$ = PID aktualnie wykonywanego skryptu powłoki $! = PID ostatnio rozpocz˛etegozadania w tle

Podstawowe rozwini˛eciaparametrów(parameter expansion) do zapami˛etania: Forma Jesli´ parametr Jesli´ parametr nie jest ustawiony jest ustawiony ${parametr:-słowo} $parametr słowo ${parametr:+słowo} słowo null ${parametr:=słowo} $parametr słowo (i wykonuje parametr=słowo) ${parametr:?słowo} $parametr (wyswietla´ słowo i konczy´ działanie)

Dwukropek (‘:’) we wszystkich powy˙zszychoperatorach nie jest tak naprawd˛epotrzebny. • Z ‘:’ = operator sprawdza czy zmienna „istnieje” i „nie jest pusta”. • Bez ‘:’ = operator sprawdza tylko czy zmienna „istnieje”. Podstawowe podstawienia parametrów(parameter substitutions) do zapami˛etania: Forma Wynik ${parametr%koncówka´ } Usuni˛ecienajmniejszego wzorca koncówka´ ${parametr%%koncówka´ } Usuni˛ecienajwi˛ekszegowzorca koncówka´ ${parametr#przedrostek} Usuni˛ecienajmniejszego wzorca przedrostek ${parametr##przedrostek} Usuni˛ecienajwi˛ekszegowzorca przedrostek

13.2.4 Przekierowywanie powłoki

Podstawowe operatory przekierowywania do zapami˛etania([n] jest opcjonaln ˛aliczb ˛a): Rozdział 13. Programowanie 176

[n]> plik Przekieruj standardowe wyjscie´ (lub n) do pliku. [n]>> plik Doł ˛aczstandardowe wyjscie´ (lub n) do pliku. [n]< plik Przekieruj standardowe wejscie´ (lub n) z pliku. [n1]>&n2 Przekieruj standardowe wyjscie´ (lub n1) do n2. > plik >&2 Przekieruj standardowe wyjscie´ i strumien´ bł˛edówdo pliku. | polecenie Przekieruj standardowe wyjscie´ na wejscie´ polecenia. >&2 | polecenie Przekieruj standardowe wyjscie´ i strumien´ bł˛edów na wejscie´ polecenia.

13.2.5 Polecenia warunkowe powłoki

Ka˙zdepolecenie zwraca kod wyj´scia (exit status), który mo˙zezosta´cu˙zytyw wyra˙zeniu warunkowym: • Sukces: 0 (Prawda) • Bł ˛ad:1–255 (Fałsz) Zauwa˙z, ˙zeu˙zyciewarto´sci0 w celu wyra˙zenia„prawdy” ró˙znisi˛eod zwykłej konwencji w innych obszarach przetwarzania. Poza tym ‘[’ jest odpowiednikiem polecenia test, które traktuje argumenty a˙zdo ‘]’ jako wyra˙zeniewarunkowe. Podstawowe idiomy warunkowe (conditional idioms) do zapami˛etaniato: polecenie && jesli_sukces_uruchom_równie˙z_to_polecenie´ polecenie || jesli_nie_sukces_uruchom_w_zamian_to_polecenie´

if [ wyra˙zenie_warunkowe ]; then jesli_sukces_uruchom_to_polecenie´ else jesli_nie_sukces_uruchom_to_polecenie´ fi

Operatory porównywania plików w wyra˙zeniachwarunkowych to: -e plik Prawda, jesli´ plik istnieje. -d plik Prawda, jesli´ plik istnieje i jest katalogiem. -f plik Prawda, jesli´ plik istnieje i jest normalnym plikiem. -w plik Prawda, jesli´ plik istnieje i jest zapisywalny. -x plik Prawda, jesli´ plik istnieje i jest wykonywalny. plik1 -nt plik2 Prawda, jesli´ plik1 jest nowszy ni˙z plik2. (modyfikacja) plik1 -ot plik2 Prawda, jesli´ plik1 jest starszy ni˙z plik2. (modyfikacja) plik1 -ef plik2 Prawda, jesli´ maj ˛atakie same numery urz ˛adzen´ i iw˛ezłów.

Operatory porównywania ła ´ncuchówznaków w wyra˙zeniachwarunkowych: -z słowo Prawda, jesli´ długos´c´ słowo wynosi zero. -n słowo Prawda, jesli´ długos´c´ słowo jest ró˙znaod zera. słowo1 == słowo2 Prawda, jesli´ słowa s ˛arówne. Rozdział 13. Programowanie 177

słowo1 = słowo2 Prawda, jesli´ słowa s ˛arówne. (dla scisłej´ zgodnosci´ z POSIX, zamiast ,,==’’ nale˙zyu˙zywac´ ,,=’’) słowo1 != słowo2 Prawda, jesli´ słowa nie s ˛arówne. słowo1 < słowo2 Prawda, jesli´ słowo1 sortuje si˛eprzed słowo2 (zle˙zneod lokalizacji (locale)). słowo1 > słowo2 Prawda, jesli´ słowo1 sortuje si˛epo słowo2 (zale˙zneod lokalizacji (locale) ).

Operatory arytmetycznego porównywania liczb całkowitych Wyra˙zeniawarunkowe to: -eq, -ne, -lt, -le, -gt, i -ge.

13.2.6 Przetwarzanie linii polece ´n

Powłoka przetwarza skrypt tak: • rozbicie na ˙zetony (tokens) przez meta-znaki: SPACJA, TAB, NOWA_LINIA, ;, (, ), <, >, |, & • sprawdzenie słów kluczowych (keyword), je´slinie s ˛apomi˛edzy“. . . ” lub ’. . . ’ (p˛etla) • rozwini˛ecie aliasów, je´slinie s ˛apomi˛edzy“. . . ” lub ’. . . ’ (p˛etla) • rozwini˛ecie nawiasów, a{1,2} -> a1 a2, je´slinie s ˛apomi˛edzy“. . . ” lub ’. . . ’ • rozwini˛ecie tyld, ~u˙zytkownik -> katalog domowy u˙zytkownika, je´slinie jest pomi˛edzy “. . . ” lub ’. . . ’ • rozwini˛ecie parametrów, $PARAMETRÓW, je´slinie s ˛apomi˛edzy“. . . ” • rozwini˛ecie podstawienia polecenia, $(polecenie), je´slinie jest pomi˛edzy’. . . ’ • podział na słowa wg. $IFS, je´slinie s ˛apomi˛edzy“. . . ” lub ’. . . ’ • rozszerzenie *?[] na ´sciezki, je´slinie jest pomi˛edzy“. . . ” lub ’. . . ’ • znalezienie polecenia – funkcji – wbudowanego – pliku w $PATH • p˛etla Pojedyncze cudzysłowy pomi˛edzypodwójnymi cudzysłowami nie daj ˛a˙zadnegoefektu.

13.3 Awk

Miejsca, w których mo˙znaznale´z´cinformacje o Awk: • Effective awk Programming, 3rd edition (O’Reilly) - (Efektywne programowanie w awk, trzecie wydanie) • Sed & awk, 2nd edition (O’Reilly) - (Sed i awk, drugie wydanie) • mawk(1) i gawk(1) • info gawk Krótki przykład programu (tworz ˛acegowpisy dla newusers):

#!/usr/bin/awk -f Rozdział 13. Programowanie 178

# Skrypt tworz ˛acyplik przystosowany do u˙zyciaz poleceniem ’newusers’ # z pliku zawieraj ˛acegoID u˙zytkownikówi hasła w formie: # Imi˛eNazwisko hasło # Copyright (c) KMSelf Sat Aug 25 20:47:38 PDT 2001 # Distributed under GNU GPL v 2, or at your option, any later version. # This program is distributed WITHOUT ANY WARRANTY.

BEGIN { # Przydzielenie pocz ˛atkowychUID i GID if ( ARGC > 2 ) { startuid = ARGV[1] delete ARGV[1] } else { printf( "Wywołanie: newusers PoczatkoweUID plik\n" \ " gdzie:\n" " Pocz ˛atkoweUIDjest pocz ˛atkowymidentyfikatorem dodawanego u˙zytkownika,\n"\ " plik jest plikiem wejscia´ w postaci:\n" \ " imi˛enazwisko hasło\n" \ ) exit }

infile = ARGV[1] printf( "Pocz ˛atkoweUID: %s\n\n", startuid ) }

/^#/ { next }

{ ++record first = $1 last = $2 passwd = $3 user= substr( tolower( first ), 1, 1 ) tolower( last ) uid = startuid + record - 1 gid = uid printf( "%s:%s:%d:%d:%s %s,,/home/%s:/bin/bash\n", \ user, passwd, uid, gid, first, last, user \ ) }

Dwa pakiety w systemie Debian dostarczaj ˛a awk zgodnego z POSIX: • mawk – Priority: required – Installed-Size: 228 Rozdział 13. Programowanie 179

– Mniejszy i znacznie szybszy—dobry dla domy´slnejinstalacji – Zawiera ograniczenia ustalane podczas kompilacji * NF = 32767 * sprintf buffer = 1020 • gawk – Priority: optional – Installed-Size: 1708 – Wi˛ekszyi pot˛e˙zniejszy—posiadawiele rozszerze´n * System V Release 4 version of UNIX * Bell Labs awk * GNU-specific

13.4 Perl

To jest prawdziwy interpreter w systemach uniksowych. Miejsca, w których mo˙znaznale´z´cinformacje o Perl’u: • perl(1) • Programming Perl, 3rd edition (O’Reilly) Krótki, przykładowy program (tworzy wpisy dla polecenia newusers)

#!/usr/bin/perl # (C) Osamu Aoki Sun Aug 26 16:53:55 UTC 2001 Public Domain $pid=1000; while () { if (/^#/) { next;} chop; $pid++; ($n1, $n2, $n3) = split / /; print $n1,"_",$n2,":", $n3, ":",$pid, ":",$pid,",,,/home/",$n1,"_",$n2,":/bin/bash\n" }

Instalacja modułu Perla nazwa_modułu:

# perl -MCPAN -e ’install nazwa_modułu’

13.5 Python

Jest to miły, zorientowany obiektowo interpreter. Miejsca, w których mo˙znaznale´z´cinformacje o Pythonie: Rozdział 13. Programowanie 180

• python(1) • Learning Python (O’Reilly). Krótki, przykładowy program (tworzy wpisy dla polecenia newusers):

#! /usr/bin/env python import sys, string

# (C) Osamu Aoki Sun Aug 26 16:53:55 UTC 2001 Public Domain # Ported from awk script by KMSelf Sat Aug 25 20:47:38 PDT 2001 # This program is distributed WITHOUT ANY WARRANTY.

def usages(): print \ "Sposób u˙zycia: ", sys.argv[0], " Pocz ˛atkoweUID[plik]\n" \ "\tPocz ˛atkoweUIDjest pocz ˛atkowymidentyfikatorem dodawanego u˙zytkownika.\n"\ "\tplik jest plikiem wejscia.´ Jesli´ nie okreslony´ to standardowe wejscie.\n\n"´ \ "Format pliku wejsciowego:\n"\´ "\timi˛enazwisko hasło\n" return 1

def parsefile(startuid): # # główne filtrowanie # uid = startuid while 1: line = infile.readline() if not line: break if line[0] == ’#’: continue (first, last, passwd) = string.split(string.lower(line)) # powy˙zszerozsypuje si˛eprzy złej liczbie parametrów :-) user = first[0] + last gid = uid lineout = "%s:%s:%d:%d:%s %s,,/home/%s:/bin/bash\n" % \ (user, passwd, uid, gid, first, last, user) sys.stdout.write(lineout) +uid

if __name__ == ’__main__’: if len(sys.argv) == 1: usages() else: uid = int(sys.argv[1]) Rozdział 13. Programowanie 181

#print "# UID zaczyna si˛eod: %d\n" % uid if len(sys.argv) > 1: infilename = string.join(sys.argv[2:]) infile = open(infilename, ’r’) #print "# Czytaj plik z: %s\n\n" % infilename else: infile = sys.stdin parsefile(uid)

13.6 Make

Miejsca, w których mo˙znaznale´z´cinformacje o Make: • info make • make(1) • Managing Projects with make, 2nd edition (O’Reilly) Proste zmienne automatyczne: Składnia reguł:

Cel:[ warunek wst˛epny ... ] [TAB] polecenie1 [TAB] -polecenie2 # ignoruj bł˛edy [TAB] @polecenie3 # wstrzymaj echo

Gdzie [TAB] jest kodem TAB. Ka˙zdalinia jest intrepretowana przez powłok˛epo podmi- anie zmiennych przez make. U˙zyj \ na ko´nculinii, by kontynuowa´cskrypt. U˙zyj $$, by wprowadzi´c $ dla zmiennych ´srodowiskowych w skrypcie powłoki. Uwikłane reguły dla celu oraz warunki wst˛epne mog ˛aby´c,na przykład, zapisane jako:

%: %.c header.h lub

%.o: %.c header.h

Tutaj cel zawiera znak % (dokładnie jeden z nich). Znak % mo˙zezast˛epowa´cjakikolwiek nie- pusty podci ˛agaktualnych nazw plików danego celu. W warunkach wst˛epnych równie˙zmo˙zna u˙zy´cznaku % by pokaza´cjak ich nazwy maj ˛asi˛edo aktualnej nazwy celu. Reguły przyrostkowe s ˛a przestarzałym sposobem definiowania reguł uwikłanych dla make. S ˛anadal obsługiwane w GNU make dla zgodno´sci,ale u˙zywajodpowiednich reguł wzorców, kiedykolwiek to mo˙zliwe: Rozdział 13. Programowanie 182

stara reguła przyrostkowa --> nowa reguła wzorcowa .c: --> % : %.c .c.o: --> %.o: %.c

Automatyczne zmienne dla reguł:

foo.o: new1.c new2.c old1.c new3.c $@ == foo.o (cel) $< == new1.c (pierwszy) $? == new1.c new2.c new3.c (nowsze) $^ == new1.c new2.c old1.c new3.c (wszystkie) $* == ‘%’ dopasowany rdzen´ we wzorcu celu

Opis zmiennych:

foo1 := bar # Jednorazowe rozszerzenie foo2 = bar # Rekursywne rozszerzenie foo3 += bar # Dopisanie SRCS := $(wildcard *.c) OBJS := $(foo:c=o) OBJS := $(foo:%.c=%.o) OBJS := $(patsubst %.c,%.o,$(foo)) DIRS = $(dir katalog/plik.rozszerzenie) # Wydobywa ,,katalog’’ $(notdir NAZWY...), $(basename NAZWY...), $(suffix NAZWY...) ...

Wprowad´z make -p -f/dev/null,by zobaczy´cautomatyczne reguły wewn˛etrzne.

13.7 C

Przygotowanie:

# apt-get install glibc-doc manpages-dev libc6-dev gcc

Miejsca, w których mo˙znaznale´z´cinformacje o C: • info libc (opis funkcji biblioteki C) • gcc(1) • each_C_library_function_name(3) • Kernighan & Ritchie, The C Programming Language, 2nd edition (Prentice Hall). Rozdział 13. Programowanie 183

13.7.1 Prosty program w C (gcc)

Prosty przykład kompilowania przyklad.c z bibliotek ˛a libm do pliku wykonywalnego uruchom_przyklad:

$ cat > przyklad.c << EOF #include #include #include

int main(int argc, char **argv, char **envp){ double x; char y[11]; x=sqrt(argc+7.5); strncpy(y, argv[0], 10); /* zapobiega przepełnieniu bufora */ y[10] = ’\0’; /* wypełniamy, by upewnic´ si˛e,˙zeci ˛agkonczy´ si˛e’\0’ */ printf("%5i, %5.3f, %10s, %10s\n", argc, x, y, argv[1]); return 0; } EOF $ gcc -Wall -g -o uruchom_przyklad przyklad.c -lm $ ./uruchom_przyklad 1, 2.915, ./uruchom_, (null) $ ./uruchom_przyklad 1234567890qwerty 2, 3.082, ./uruchom_, 1234567890qwerty

W przykładzie -lm jest potrzebne, by zlinkowa´cbibliotek˛e libm dla sqrt(). Faktycznie bib- lioteka znajduje si˛ew /lib pod nazw ˛a libm.so.6, która jest dowi ˛azaniemsymbolicznym do libm-2.1.3.so. Spójrz na ostatni parametr w wyj´sciowymtek´scie.Jest tam wi˛ecejni˙zdziesi˛e´cznaków mimo, ˙zeu˙zyli´smy %10s. U˙zywaniefunkcji ze wska´znikamido operacji na pami˛ecibez sprawdzania obszarów granicznych, zwłaszcza takich jak sprintf lub strcpy, jest uznawane za przestarzałe, co ma zapobiega´c bł˛edomprzepełnienia buforu. Zamiast nich nale˙zyu˙zywa´c sprintf oraz strncpy.

13.7.2 Odpluskwianie

Uruchamianie i testowanie programów przy pomocy gdb

Przygotowanie:

# apt-get install gdb

Miejsca, w których mo˙znaznale´z´cinformacje o gdb: Rozdział 13. Programowanie 184

• info gdb (samouczek) • gdb(1) Do prze´sledzeniadziałania programu skompilowanego z opcj ˛a -g u˙zyjprogramu gdb. Wiele polece´nma swoje kilkuznakowe skróty. Dopełnianie tabulatorem działa tak samo jak w powłoce.

$ gdb program (gdb) b 1 # ustaw punkt wstrzymania w linii 1 (gdb) run arg1 arg2 arg3 # uruchom program (gdb) next # nast˛epnalinia ... (gdb) step # krok do przodu ... (gdb) p parm # wyswietl´ parm ... (gdb) p parm=12 # ustaw wartos´c´ na 12

Je´slichcesz si˛edowiedzie´c,jak przeprowadzi´codpluskwianie przy pomocy Emacsa, zerknij do ‘Podsumowanie polece´nedytorów (Emacs, Vim)’ na 161 stronie.

Sprawdzanie zale˙zno´sciod bibliotek

Aby znale´z´cwymagane przez program biblioteki skorzystaj z ldd:

$ ldd /bin/ls librt.so.1 => /lib/librt.so.1 (0x4001e000) libc.so.6 => /lib/libc.so.6 (0x40030000) libpthread.so.0 => /lib/libpthread.so.0 (0x40153000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

By ls mogło pracowa´cw ´srodowisku chroot, musz ˛asi˛ew nim znale´z´cpowy˙zszebiblioteki. Nast˛epuj˛acepolecenia mog ˛aby´crównie˙zu˙zyteczne: • strace: ´sledziwywołania systemowe oraz sygnały • ltrace: ´sledziwywołania biblioteczne

Odpluskwianie z u˙zyciemnarz˛edzido wykrywania wycieków pami˛eci

Istnieje wiele narz˛edzido wykrywania wycieków pami˛eciw Debianie. • njamd • valgrind • dmalloc • electric-fence • memprof Rozdział 13. Programowanie 185

• memwatch (niedost˛epnyw pakiecie, pobierz z GNU memwatch (http://www.gnu. org/directory/devel/debug/memwatch.html).) • mpatrol • leaktracer • libgc6 • Insure++ z Parasoft (http://www.parasoft.com). (non-free, komercyjnie za opłat ˛a) Sprawd´zrównie˙zDebugging Tools for Dynamic Storage Allocation and Memory Management (http://www.cs.colorado.edu/homes/zorn/public_html/MallocDebug.html).

13.7.3 Flex – lepszy Lex flex jest szybkim generatorem analizatorów leksykalnych. Miejsca, w których mo˙znaznale´z´cinformacje o flex: • info flex (samouczek) • flex(1) Musisz utworzy´cwłasn ˛afunkcj˛e main() i yywrap(), lub program.l powinien wygl ˛ada´c tak, jak poni˙zej,by kompilował si˛ebez biblioteki (yywrap jest makrem; %option main uak- tywnia bezwarunkowo %option noyywrap):

%option main %% .|\n ECHO ; %%

Zamiast tego mo˙zeszskompilowa´cprogram podaj ˛acna ko´ncupolecenia cc opcj˛e-lfl (tak jak przy AT&T-Lex opcj˛e -ll). Nie potrzeba wtedy u˙zywa´c%option.

13.7.4 Bison – lepszy Yacc

Kilka pakietów w Debianie dostarcza zgodny z Yacc generator analizatorów składniowych: • bison: GNU LALR parser generator • byacc: The Berkeley LALR parser generator • byyacc: Backtracking parser generator oparty na byacc Miejsca, w których mo˙znaznale´z´cinformacje o bison: • info bison (samouczek) • bison(1) Musisz utworzy´cwłasne funkcje main() i yyerror(). main() wywołuje yyparse(), która z kolei wywołuje yylex(), zazwyczaj stworzon ˛aprzez FleX.

%%

%% Rozdział 13. Programowanie 186

13.7.5 Autoconf autoconf jest narz˛edziemtworz ˛acymskrypty powłoki, które automatycznie konfiguruj ˛a´zródła oprogramowania by dostosowa´cje do wielu systemów uniksopodobnych u˙zywaj˛acsystemu budowania GNU. autoconf tworzy skrypt konfiguruj ˛acy configure, a configure automatycznie dostosowany Makefile u˙zywaj˛acwzorca Makefile.in.

Kompilacja i instalacja programu

Debian nie dotyka plików znajduj ˛acychsi˛ew /usr/local (zobacz ‘Wsparcie dla ró˙znorod- no´sci’na 24 stronie). W zwi ˛azkuz tym, je´sliskompilujesz program ze ´zródełoraz zainstalujesz go w /usr/local nie b˛edzieon kolidował z Debianem.

$ cd src $ ./configure --prefix=/usr/local $ make $ make install # to polecenie przekopiuje pliki do systemu

Odinstalowywanie programu

Je´slinadal posiadasz ´zródłai u˙zywaj˛aone autoconf/automake oraz pami˛etaszparametry z jakimi je konfigurowałe´sspróbuj:

$ ./configure wszelkie-opcje-jakie-podałes-przy-konfiguracji´ # make uninstall

Zamiast tego, je´slijeste´sabsolutnie pewien, ˙zepodczas instalacji pliki kopiowane s ˛atylko do /usr/local i nie ma tam niczego wa˙znego,mo˙zeszusun ˛a´cjego zawarto´s´cwprowadzaj ˛ac:

# find /usr/local -type f -print0 | xargs -0 rm -f

Je´slinatomiast nie jeste´spewien gdzie zostały przekopiowane pliki podczas instalacji, rozwa˙z zastosowanie checkinstall, który pozwala w łatwy sposób odinstalowa´cprogramy.

13.8 Przygotowanie dokumentu

13.8.1 Skład tekstu roff

Tradycyjnie ju˙z, roff jest głównym systemem procesu tekstu w systemach Unix. Rozdział 13. Programowanie 187

Zobacz roff(7), groff(7), groff(1), grotty(1), troff(1), groff_mdoc(7), groff_man(7), groff_ms(7), groff_me(7), groff_mm(7) oraz info groff. Istnieje dobre wprowadzenie do makr -me. Je´sliposiadasz groff (w wersji 1.18 lub nowszej), znajd´z /usr/share/doc/groff/meintro.me.gz i wprowad´zponi˙zszepolecenie:

$ zcat /usr/share/doc/groff/meintro.me.gz | \ groff -Tascii -me - | less -R

Kolejne polecenie utworzy zwykły plik tekstowy:

$ zcat /usr/share/doc/groff/meintro.me.gz | \ GROFF_NO_SGR=1 groff -Tascii -me - | col -b -x > meintro.txt

Dla drukowania skorzystaj z wyj´sciaPostScript.

$ groff -Tps meintro.txt | lpr $ groff -Tps meintro.txt | mpage -2 | lpr

13.8.2 SGML

Przygotowanie:

# apt-get install debiandoc-sgml debiandoc-sgml-doc

Miejsca, w których mo˙znaznale´z´cinformacje o debiandoc-sgml: • /usr/share/doc/debiandoc-sgml-doc • debiandoc-sgml(1) • DocBook: The Definitive Guide, by Walsh and Muellner (O’Reilly) SGML umo˙zliwiazarz ˛adzaniewieloma formatami dokumentu. Jednym z prostszych sys- temów SGML jest Debiandoc, który jest tutaj u˙zywany. Wymaga on pewnych konwersji plików tekstowych dla nast˛epuj˛acychznaków: • „<” –> < • „>” –> > • „ ” –>   (niełamana spacja) • „&” –> & • „%” –> % • „©” –> © • „–” –> – • „—” –> — W celu oznaczenia cz˛e´scijako niedrukowalny komentarz wprowad´z:

Rozdział 13. Programowanie 188

Do oznaczenia miejsca, z którym mamy problemy (brak wiedzy, do´swiadczeniaz danego za- kresu) u˙zyjponi˙zszejformy:

W SGMLu pierwsza definicja entitki wygrywa. Przykład:

]]> ¶m;

W dokumencie wynikowym b˛edzie“Data 1”. Je´sliw pierwszej linii byłoby “IGNORE” zamiast “INCLUDE”, pojawiłoby si˛e“Data 2” (druga linia jest wyra˙zeniemwarunkowym). Równie˙z powtórzone zwroty, wyra˙zeniamog ˛aby´cz góry oddzielone od kontekstu.

Witaj &czyjtojest; przyjacielu. To jest &czyjtojest; podr˛ecznik.

Efektem b˛edzie:

Witaj mój przyjacielu. To jest mój podr˛ecznik.

Przyjrzyj si˛eprostemu przykładowi SGML sample.sgml, znajduj ˛acegosi˛ew examples (examples/). Niekiedy, gdy dokument SGML rozrasta si˛e,TeX mo˙zezacz ˛a´cgenerowa´cbł˛edy. Zeby˙ upo- ra´csi˛ez tym problemem, musisz zwi˛ekszy´cparametr pool size w /etc/texmf/texmf.cnf (lub, co bardziej zalecane, zmodyfikowa´c /etc/texmf/texfm.d/95NonPath i uruchomi´c update-texmf).

13.9 Pakietowanie

Przygotowanie:

# apt-get install debian-policy developers-reference \ maint-guide dh-make debhelper # apt-get install packaging-manual # dla Potato

Miejsca, w których mo˙znaznale´z´cinformacje o pakietowaniu: • ‘System zarz ˛adzaniapakietami w Debianie’ na 12 stronie (podstawy) Rozdział 13. Programowanie 189

• Debian New Maintainers’ Guide (samouczek) • dh-make(1) • Debian Developer’s Reference (najlepsza praktyka) • Debian Policy Manual (autorytatywny) • Packaging Manual (Potato)

13.9.1 Pakietowanie pojedy ´nczegopliku binarnego

Szybka i brzydka metoda pakietowania podesłana przez Joey Hessa.

# mkdir -p mypkg/usr/bin mypkg/DEBIAN # cp binary mypkg/usr/bin # cat > mypkg/DEBIAN/control Package: mojpakiet Version: 1 Architecture: i386 Maintainer: Joey Hess Description: mój mały pakiecik Nie spodziewaj si˛ezbyt wiele. ^D # dpkg-deb -b mypkg

13.9.2 Pakietowanie z u˙zyciemnarz˛edzi

W celu utworzenia podstawowego pakietu mo˙zeszskorzysta´cz dh_make dost˛epnegow pakiecie dh-make. Nast˛epniepost˛epujwedług instrukcji z dh-make(1). Ten sposób wykorzystuje debhelper w debian/rules. Starszym sposobem jest u˙zycie deb-make z pakietu debmake. Wtedy korzysta si˛ejedynie z powłoki, zamiast z debhelper. Przykładem wielo´zródłowegopakietu mo˙zeby´c„mc” (dpkg-source -x mc_4.5.54.dsc), korzystaj ˛acyz „sys-build.mk” Adama Heatha (), oraz „glibc” (dpkg-source -x glibc_2.2.4-1.dsc), który korzysta z innego systemu Joela Kleckera (). Rozdział 13. Programowanie 190 191

Rozdział 14

GnuPG

Odno´sniki: • gpg(1). • /usr/share/doc/gnupg/README.gz • GNU privacy handbook w /usr/share/doc/gnupg-doc/GNU_Privacy_Handbook/ (zainstaluj pakiet gnupg-doc)

14.1 Instalacja GnuPG

$ gpg --gen-key # tworzenie nowej pary kluczy $ gpg --gen-revoke ID_u˙zytk # tworzenie certyfikatu uniewa˙znieniaklucza dla ID_u˙zytkownika $ host -l pgp.net | grep www | less # znajdowanie serwerów kluczy

Jak na razie, dobrymi serwerami kluczy s ˛a:

keyserver wwwkeys.eu.pgp.net keyserver wwwkeys.pgp.net

Musisz uwa˙za´c,aby nie tworzy´cwi˛ecej,ni˙zdwa podklucze. Je´slitak zrobisz, serwery kluczy w pgp.net popsuj ˛a Twój klucz. U˙zyjnowszego gnupg (>1.2.1-2), aby obsłu˙zy´cte popsute podklucze. Zobacz http://fortytwo.ch/gpg/subkeys. Miej równie˙zna uwadze, ˙zew $HOME/.gnupg/options mo˙znaustawi´ctylko jeden serwer kluczy. Niestety, nast˛epuj˛acakonstrukcja ju˙znie działa:

keyserver search.keyserver.net keyserver pgp.ai.mit.edu Rozdział 14. GnuPG 192

14.2 U˙zywanieGnuPG

Obsługa plików:

$ gpg [opcje] polecenie [argumenty] $ gpg {--armor|-a} {--sign|-s} plik # zapisanie podpisanego pliku do pliku tekstowego plik.asc $ gpg --clearsign plik # zło˙zeniepodpisu z zachowaniem czytelnosci´ tekstu $ gpg --clearsign --not-dash-escaped plik_łaty # podpisanie z zachowaniem czytelnosci´ pliku łaty $ gpg --verify plik # sprawdzenie podpisu pliku $ gpg -o plik.sig {-b|--detach-sig} plik # zło˙zeniepodpisu oddzielnego od dokumentu $ gpg --verify plik.sig plik # sprawdzenie oddzielonego podpisu plik.sig $ gpg -o plik_wynik {--recipient|-r} nazwa {--encrypt|-e} plik # zaszyfrowanie pliku kluczem publicznym u˙zytkownikao danej nazwie $ gpg -o plik_wynik {--symmetric|-c} plik # szyfrowanie algorytmem symetrycznym $ gpg -o file --decrypt plik_szyfr # odszyfrowanie danych z plik_szyfr

14.3 Utrzymywanie GnuPG

Zarz ˛adzaniekluczami:

$ gpg --edit-key ID_u˙zytk # ,,help’’ w celu uzyskania pomocy, tryb interaktywny $ gpg -o plik --exports # eksport wszystkich kluczy do pliku $ gpg --imports plik # import wszystkich kluczy z pliku $ gpg --send-keys ID_u˙zytk # eksport klucza o podanym ID_u˙zytkownika do serwera kluczy $ gpg --recv-keys ID_u˙zytk # pobieranie klucza o podanym ID_u˙zytkownika z serwera kluczy $ gpg --list-keys ID_u˙zytk # wypisanie kluczy o podanym ID_u˙zytkownika $ gpg --list-sigs ID_u˙zytk # wypisanie podpisów kluczy o podanym ID_u˙zytkownika $ gpg --check-sigs ID_u˙zytk Rozdział 14. GnuPG 193

# sprawdzenie podpisów na kluczach o podanym ID_u˙zytkownika $ gpg --fingerprint ID_u˙zytk # sprawdzenie odcisku klucza o danym ID_u˙zytkownika $ gpg --list-sigs | grep ’^sig’ | grep ’[User id not found]’ \ | awk ’{print $2}’ | sort -u | xargs gpg --recv-keys # get unknown keys # pobranie kluczy dla ka˙zdegonieznanego podpisu

Kod zaufania:

- Brak przypisanego poziomu zaufania / jeszcze nie obliczony. e Obliczanie poziomu zaufania nie powiodło si˛e. q Zbyt mało informacji do obliczen.´ n Nie ufaj temu kluczowi. m Cz˛esciowo´ zaufany. f W pełni zaufany. u Zaufanie bezgraniczne.

Nast˛epuj˛acepolecenie eksportuje mój klucz „A8061F32” do wielu serwerów:

$ for xx in us es cz de dk uk ch net.uk earth.net.uk; \ $ do gpg --keyserver wwwkeys.$xx.pgp.net --send-keys A8061F32; done

14.4 U˙zywanieGnuPG z innymi programami

14.4.1 U˙zywanieGnuPG z Muttem

Aby powstrzyma´cwolne GnuPG od automatycznego startowania, pozwalaj ˛acjednocze´snie na u˙zyciego przez wpisanie ‘S’, dodaj nast˛epuj˛acywpis do ~/.muttrc.

macro index S ":toggle pgp_verify_sig\n" set pgp_verify_sig=no

14.4.2 U˙zywanieGnuPG z Vimem

Aby w sposób przezroczysty u˙zywa´cGnuPG, dodaj zawarto´s´cpliku vimgpg z katalogu z przykładami (examples/) do ~/.vimrc. Rozdział 14. GnuPG 194 195

Rozdział 15

Rozwi ˛azywanieproblemów

Poni˙zszezasoby dostarczaj ˛apomocy, rad i wsparcia dla u˙zytkowników. Postaraj si˛enajpierw u˙zy´ctych zasobów zanim zaczniesz płaka´cna listach dyskusyjnych :). W swoim systemie masz dostep do obszernej dokumentacji za pomoca programow dhelp, dwww i dowolnej przegladarki WWW.

15.1 Zasoby

Poni˙zszezasoby s ˛apomocne dla rozwi ˛azywaniaproblemów z Debianem i Linuksem w ogól- no´sci. Je´sliich tre´s´cnie pokrywa si˛ew pewnych miejscach, to zawsze bardziej ufaj zasobom oznaczonym jako podstawowe.

• Podr˛ecznikinstalacji (podstawowe) – Przeczytaj przed instalacj ˛alub aktualizacj ˛a. – WWW: http://www.debian.org/releases/stable/installmanual – WWW: http://www.debian.org/releases/testing/installmanual (w przy- gotowaniu, czasami mo˙zenie działa´c) – Pakiet: Not available in install-doc: Bug#155374 – Plik: DebianCDunder/doc/

• Notki o wydaniu (podstawowe) – Koniecznie przeczytaj przed instalacj ˛alub aktualizacj ˛a,nawet je´slijeste´sdo´swiadc- zonym u˙zytkownikiem. – WWW: http://www.debian.org/releases/stable/releasenotes – WWW: http://www.debian.org/releases/testing/releasenotes (w przy- gotowaniu) – Pakiet: Not available in install-doc: Bug#155374 – Plik: DebianCDunder/doc/

• FAQ (dodatkowe) Rozdział 15. Rozwi ˛azywanieproblemów 196

– Najcz˛e´sciejzadawane pytania – WWW: http://www.debian.org/doc/manuals/debian-faq/ – Pakiet: doc-debian – Plik: /usr/share/doc/debian/FAQ/index.html

• Debian Reference (dodatkowe) – Najbardziej szczegółowy, poinstalacyjny podr˛eczniku˙zytkownika. – WWW: http://www.debian.org/doc/manuals/debian-reference/ – Pakiet: debian-reference – Plik: /usr/share/doc/Debian/reference/

• APT HOWTO (dodatkowe) – Szczegółowy podr˛ecznik u˙zytkownikado systemu zarz ˛adzaniapakietami Debiana (Woody). – WWW: http://www.debian.org/doc/manuals/apt-howto/ – Pakiet: apt-howto – Plik: /usr/share/doc/Debian/apt-howto/

• Securing Debian Manual (dodatkowe) – Szczegółowy podr˛eczniku˙zytkownikatraktuj ˛acyo zabezpieczaniu domy´slnejin- stalacji Debiana (Woody). – WWW: http://www.debian.org/doc/manuals/securing-debian-howto/ – Pakiet: harden-doc – Plik: /usr/share/doc/harden-doc/html/securing-debian-howto/

• dselect Dokumentacja dla pocz ˛atkuj˛acych(dodatkowe) – Podr˛ecznik dselecta – WWW: http://www.debian.org/releases/woody/i386/dselect-beginner – Pakiet: Not available in install-doc: Bug#155374 – Plik: DebianCDunder/doc/

• Debian Policy Manual (podstawowe) – Techniczne kulisy Debiana. – WWW: http://www.debian.org/doc/debian-policy/ – Pakiet: debian-policy – Plik: /usr/share/doc/debian-policy/

• Debian Developer’s Reference (podstawowe) – Podstawowa wiedza dla deweloperów. – Wszyscy powinni´smyprzejrze´cten dokument. – WWW: http://www.debian.org/doc/manuals/developers-reference/ – Pakiet: developers-reference – Plik: /usr/share/doc/developers-reference/

• Debian New Maintainers’ Guide (podstawowe) – Praktyczny podr˛ecznikdla deweloperów. – Wprowadzenie do pakietowania dla wszystkich. Rozdział 15. Rozwi ˛azywanieproblemów 197

– WWW: http://www.debian.org/doc/manuals/maint-guide/ – Pakiet: maint-guide – Plik: /usr/share/doc/maint-guide/

• Wprowadzenie do pakietowania (Potato) – Pakiet packaging-manual w Potato. (przeniesiony do dodatków Developer’s Ref- erence)

• Strony podr˛ecznikaman w stylu Uniksa (podstawowe) – man nazwa-pakietu

• Strony podr˛ecznikainfo w stylu GNU (podstawowe) – info nazwa-pakietu

• Dokumenty specyficzne dla poszczególnych pakietów (podstawowe) – Znajdziesz je w /usr/share/doc/nazwa-pakietu

• LDP: Linux Documentation Project (dodatkowe) – Ogólnolinuksowe HOWTO i mini-HOWTO – WWW: http://www.tldp.org/ – Pakiet: doc-linux – Plik: /usr/share/doc/HOWTO/

• DDP: Debian Documentation Project (dodatkowe) – Podr˛ecznikitraktuj ˛aceo Debianie – WWW: http://www.debian.org/doc/

• Debian Developers’ Corner (dodatkowe) – Kluczowe informacje dla deweloperów Debiana – Raczej nie dla zwykłego u˙zytkownika – WWW: http://www.debian.org/devel/

• Kod ´zródłowy(całkowicie podstawowe) – Nikt nie mo˙zetemu zaprzeczy´c:-) – Sci´ ˛agnijkod ´zródłowyz ‘Kod ´zródłowy’na 11 stronie

Poni˙zszezasoby traktuj ˛ao Uniksie w ogólno´sci. Zauwa˙z, ˙zejest wiele kluczowych ró˙znic pomi˛edzyró˙znymisystemami Uniksowymi. Nazwy urz ˛adze´ni sposoby inicjalizacji systemu wymagaj ˛aspecjalnego zainteresowania.

• The UNIX Programming Environment – Ksi ˛a˙zkaopisuj ˛acadziałania Uniksa. – Autorzy: B. W. Kernighan i R. Pike, – Wydana przez Princeton Hall Software Series

• J˛ezykANSI C (wyd. polskie) – Ksi ˛a˙zkatraktuj ˛acao ANSI C Rozdział 15. Rozwi ˛azywanieproblemów 198

– Autorzy: B. W. Kernighan i D. M. Ritchie – Wydana przez Wydawnictwa Naukowo-Techniczne

• UNIX Power Tools – Ksi ˛a˙zkatraktuj ˛acao ró˙znychsztuczkach w systemie Unix. – Autorzy: Jerry Peek, Tim O’Reilly i Mike Loukides – Wydana przez O’Reilly and Associates

• Essential System Administration (second edition) – Ksi ˛a˙zkao administracji systemami Unix – Autor: Aeleen Frisch – Wydana przez O’Reilly and Associates

• Bell Labs: Computing Sciences Research – Bogate archiwum historii Uniksa – Główne: http://cm.bell-labs.com/cm/cs/ – Wybrane raporty techniczne: http://cm.bell-labs.com/cm/cs/cstr.html – Kilka dokumentów: http://cm.bell-labs.com/cm/cs/papers.html

• Dost˛epnew sieci serwisy traktuj ˛aceo Linuksie i Debianie – Debian Planet (http://www.debianplanet.org/) – debianHELP (http://www.debianhelp.org/) – Linux.com (http://linux.com/) – The Linux Home Page at Linux Online (http://www.linux.org/) – Red Hat (commercial Linux vender) (http://www.redhat.com/) (RPM, Sys-V init) – SuSE, Inc. (commercial Linux vender) (http://www.suse.de/) (RPM, Sys-V init) – Slackware (http://www.slackware.com/) (TGZ, BSD-style init)

• Dost˛epnew sieci zasoby traktuj ˛aceo Uniksie – A UNIX Introductory Course from Ohio State University (http://www-wks.acs. ohio-state.edu/unix_course/unix.html) – UNIXhelp from The University of Edinburgh (http://www.ucs.ed.ac.uk/~unixhelp/ servers.html) – Unix / Programming Information (http://arioch.unomaha.edu/~jclark/ #info) – comp.unix.questions FAQ (http://www.faqs.org/faqs/unix-faq/faq/) – comp.unix.user-friendly FAQ (http://www.camelcity.com/~noel/usenet/ cuuf-FAQ.htm) – FreeBSD Documentation (http://www.freebsd.org/docs.html) – The FreeBSD Handbook (http://www.freebsd.org/doc/en_US.ISO8859-1/ books/handbook/index.html) – Matt Chapman’s pages, UNIX GUIDE (http://www.belgarath.demon.co.uk/)

• Strony domowe projektu Free Software – GNU Project (http://www.gnu.org/) – The Linux Documentation Project (http://www.tldp.org/) Rozdział 15. Rozwi ˛azywanieproblemów 199

– The Linux Kernel Archives (http://www.linux.org/) – The XFree86 Project, Inc (http://www.xfree86.org/) – GNOME (http://www.gnome.org/) – K Desktop Environment (http://www.kde.org/) – GNU software at Red Hat (http://sources.redhat.com/) – Mozilla (http://www.mozilla.org) – FreeBSD (http://www.freebsd.org/) – OpenBSD (http://www.openbsd.org/) – NetBSD (http://www.netbsd.org/)

15.2 Znajdowanie znaczenia słowa

Wiele słów u˙zywanychw Debianie to tajemniczy ˙zargon lub akronimy. Poni˙zszepolecenie pomo˙zeCi zrozumie´cwi˛ekszo´s´cz nich:

$ dict wstaw-tu-dziwne-angielskie-słowo

15.3 Sprawdzanie popularno´scipakietu Debiana

W Debianie istnieje wiele pakietów i czasami trudno jest si˛ezdecydowa´c,który chcemy na- jpierw wypróbowa´c.Zobacz Debian Popularity Contest Results (http://www.debian.org/ ~apenwarr/popcon/), by dowiedzie´csi˛e,czego u˙zywaj˛ainni. Mo˙zeszrównie˙zzainstalowa´c pakiet popularity-contest, by mie´cswój wkład w ten serwis.

15.4 System ´sledzeniabł˛edówDebiana

Dystrybucja Debiana posiada system ´sledzeniabł˛edów(BTS) (http://bugs.debian.org/), który zawiera ich list˛ezgłoszonych przez u˙zytkownikówi deweloperów. Ka˙zdybł ˛adma przypisany swój numer i jest przechowywany, dopóki nie zostaje on oznaczony jako rozwi ˛azany. Zanim zgłosisz bł ˛ad,sprawd´zczy kto´sinny tego nie zrobił. Lista aktualnych bł˛edówjest dost˛epnana stronie BTS (http://bugs.debian.org/). Mo˙zliwes ˛arównie˙zinne (http: //www.debian.org/Bugs/Access) sposoby dotarcia do tych informacji . Zobacz tak˙ze ‘Sprawdzanie bł˛edóww Debianie i poszukiwanie pomocy’ na 67 stronie. Sposób zgłaszania bł˛edówjest opisany w http://www.debian.org/Bugs/Reporting.

15.5 Listy dyskusyjne

Aby by´cna bie˙z˛acoz dystrybucj ˛aDebiana, czytaj przynajmniej „debian-devel-announce” (ang- ielska, tylko do odczytu, niewielki ruch). Rozdział 15. Rozwi ˛azywanieproblemów 200

Najbardziej interesuj ˛aceu˙zytkownikówDebiana listy dyskusyjne to „debian-user” (angielska, otwarta dla ka˙zdego,wysoki ruch) oraz listy „debian-user-j˛ezyk” (dla innych j˛ezyków). Wi˛ecejinformacji o tych listach i sposobach ich subskrypcji znajdziesz w http://lists. debian.org/. Przejrzyj archiwa w poszukiwaniu odpowiedzi na stawiane pytanie, zanim je wy´sleszna list˛e.Stosuj si˛erównie˙zdo przyj˛etychzasad pisania na listy dyskusyjne.

15.6 Internet Relay Chat (IRC)

IRC (Internet Relay Chat) jest sposobem na rozmow˛ez innymi lud´zmiz całego ´swiataw czasie rzeczywistym. Kanały IRC po´swi˛econeDebianowi znajduj ˛asi˛ew sieci IRC freenode (http://www.freenode.info/). By si˛epoł ˛aczy´cpotrzebujesz klienta IRC. Kilka z na- jbardziej popularnych klientów to XChat, BitchX, ircII, irssi, epic4, KSirc. Wszystkie te s ˛a dost˛epnew Debianie w postaci pakietów. Gdy ju˙zmasz zainstalowanego klienta IRC, poł ˛acz si˛ez serwerem. W wi˛ekszo´sciklientów nale˙zywyda´cpolecenie:

/server irc.debian.org

Po poł ˛aczeniuwejd´zna kanał #debian wpisuj ˛ac

/join #debian

Uwaga: klienci takie jak XChat cz˛estoposiadaj ˛aró˙znegraficzne interfejsy u˙zytkownikado ł ˛aczeniasi˛ez serwerem i wchodzenia na kanały.

15.7 Wyszukiwarki

Jest wiele wyszukiwarek, które pomagaj ˛aw przeszukiwaniu dokumentacji Debiana:

• Debian WWW search site (http://search.debian.org/).

• Google (http://www.google.com/): w polu tekstowym dodaj na ko´ncu„site:debian.org”.

• Google Groups (http://groups.google.com/): wyszukiwarka grup dyskusyjnych. Dodaj do pola tekstowego „group:linux.debian.*”.

• AltaVista (http://www.altavista.com/)

Szukaj ˛acna przykład ci ˛agu„cgi-perl”, otrzymasz bardziej szczegółowe informacje o tym pakiecie, ni˙zkrótki opis z pliku control. Wi˛ecejrad na stronie ‘Sprawdzanie bł˛edóww Debianie i poszukiwanie pomocy’ na 67 stronie. Rozdział 15. Rozwi ˛azywanieproblemów 201

15.8 Strony w sieci

Poni˙zejznajduje si˛elista kilku wybranych odno´snikówna ró˙zneokazje.

• Adrian Bunk’s packages to run kernel 2.4.x on Potato (http://www.fs.tum.de/~bunk/ kernel-24.html)

• Linux on Laptops (http://www.linux-laptop.net/)

• Xterm FAQ (http://dickey.his.com/xterm/xterm.faq.html)

• EXT3 File System mini-HOWTO (http://www.symonds.net/~rajesh/howto/ext3/ index.html)

• Large File Support in Linux (http://www.suse.de/~aj/linux_lfs.html)

• Window Managers for X (http://www.xwinman.org)

• Linux USB Project (http://www.linux-usb.org/)

• SuSE pages for CJK (http://www.suse.de/~mfabian/suse-cjk/suse-cjk.html)

• LNX-BBC (Business-card-sized boot CD project) (http://www.lnx-bbc.org/)

• Linux info by Karsten Self (partitioning, backup, browsers. . . ) (http://kmself.home. netcom.com/Linux/)

• Backup info HOWTO by Alvin Oga (http://www.Linux-Backup.net/)

• Security info HOWTO by Alvin Oga (http://www.Linux-Sec.net/)

• Various UNOFFICIAL sources for APT (http://www.internatif.org/bortzmeyer/ debian/apt-sources/)

• Laptop Ethernet Configuration (http://www.orthogony.com/gjw/lap/lap-ether-intro. html) Rozdział 15. Rozwi ˛azywanieproblemów 202 203

Dodatek A

Dodatek

A.1 Autorzy

Debian Reference został zapocz ˛atkowanyprzez Osamu Aoki jako os- obisty pami˛etnikz instalacji, który w ko´ncuzostał nazwany „Quick Reference. . . ”. Wiele tre´sci znajduj ˛acychsi˛etutaj pochodzi z archiwum listy dyskusyjnej „debian-user”. Zacytowano równie˙zfragmenty dokumentów „Debian Installation Manual” i „Debian Release Notes”. Zgodnie z sugesti ˛aJosipa Rodina, który jest bardzo aktywnym członkiem Debian Documen- tation Project (http://www.debian.org/doc/ddp) (DDP) i aktualnym opiekunem „The Debian FAQ”, nazwa tego dokumentu została zmieniona na “Debian Reference”, a zawarto´s´c powstała z wybranych cz˛e´sci„The Debian FAQ”. Nast˛epniedokument został przemianowany na „Debian Quick Reference”. Dokument był edytowany, tłumaczony i rozwijany przez nast˛epuj˛acychczłonków zespołu QREF : • Pierwowzory dokumentów dla oryginalnego „Quick Reference. . . ” – Osamu Aoki (główny koordynator) • Angielska korekta i przepisywanie – David Sewell (koordynator tłumaczenia na j˛ezykang- ielski) – Brian Nelson – Daniel Webb – Jan Michael C Alonzo • Tłumaczenie na j˛ezykfrancuski – Guillaume Erbs (koordynator tłumaczenia na j˛ezykfrancuski) – Rénald Casagraude – Jean-Pierre Delange – Daniel Desages • Tłumaczenie na j˛ezykwłoski – Davide Di Lazzaro (koordynator tłumaczenia na j˛ezykwłoski) • Tłumaczenie na j˛ezykportugalski Rozdział A. Dodatek 204

– Paulo Rogério Ormenese (koordynator tłumaczenia na j˛ezykportugalski) – Andre Luis Lopes – Marcio Roberto Teixeira – Rildo Taveira de Oliveira – Raphael Bittencourt Simoes Costa – Gustavo Noronha Silva (koordynator) • Tłumaczenie na j˛ezykhiszpa´nski – Walter Echarri (koordynator tłumaczenia na j˛ezyk hiszpa´nski) – José Carreiro • Tłumaczenie na j˛ezykniemiecki – Jens Seidel (koordynator tłumaczenia na j˛ezykniemiecki) – Willi Dyck – Stefan Schröder – Agon S. Buchholz • Tłumaczenie na j˛ezykpolski — nast˛epuj˛aceosoby z projektu PDDP (http://debian. linux.org.pl): – Marcin Andruszkiewicz – Mariusz Centka – Bartosz Fe´nski(koordynator tłumaczenia na j˛ezykpolski) – Radosław Grzanka – Bartosz ’Xebord’ Janowski – Jacek Lachowicz – Rafał Michaluk – Leonard Milcin, Jr. – Tomasz Z. Napierała – Oskar Ostafin – Tomasz Pi˛eko´s – Jacek Politowski – Mateusz Prichacz – Marcin Rogowski – Paweł Ró˙za´nski – Mariusz Strzelecki – Krzysztof Scierski´ – Przemysław Adam Smiejek´ – Mateusz Tryka – Cezary Uchto – Krzysztof Witkowski – Bartosz Zapałowski QREF była skrócon ˛aform ˛apierwszego tytułu dokumentu, „Quick Reference. . . ” teraz jest równie˙znazw ˛aprojektu na qref.sourceforge.net. Wi˛ekszo´s´c‘Debian – Podstawy’ na 5 stronie pochodzi z „The Debian FAQ” (Marzec 2002): • 5. Archiwa FTP Debiana : ftparchives.sgml (cały rozdział) Rozdział A. Dodatek 205

• 6. Podstawy zarz ˛adzaniasystemem pakietów Debiana : pkg_basics.sgml (cały rozdział) • 7. Narz˛edziado zarz ˛adzaniapakietami w Debianie : pkgtools.sgml (cały rozdział) • 8. Aktualizowanie systemu Debian : uptodate.sgml (cały rozdział) • 9. Debian i j ˛adro systemu : kernel.sgml (cały rozdział) • 10. Dostosowywanie systemu Debian do Twoich potrzeb : customizing.sgml (cz˛e´s´c rozdziału) Powy˙zszecz˛e´sciz „The Debian FAQ” zostały doł ˛aczonedo tego dokumentu po znacznej re- organizacji, aby odzwierciedli´czmiany w systemie Debian. Obecnie obydwa dokumenty s ˛a aktualizowane równolegle. Pierwotnie opiekunami „Debian FAQ”, byli jego twórcy — J. H. M. Dassen (Ray) i Chuck Stick- elman. Autorami przepisanej wersji „Debian FAQ” byli Susan G. Kleinmann i Sven Rudolph. Nast˛epnymopiekunem był Santiago Vila. Aktualnie dokumentem tym zajmuje si˛eJosip Rodin. Informacje zawarte w „The Debian FAQ” pochodz ˛ami˛edzyinnymi z/od: • The Debian-1.1 release announcement, autor Bruce Perens (http://www.perens.com/). • The Linux FAQ, autor Ian Jackson (http://www.chiark.greenend.org.uk/~ijackson/). • Archiwów list dyskusyjnych Debiana (http://lists.debian.org/), • Podr˛ecznikadla programistów dpkg i The Debian Policy manual (zobacz ‘Zasoby’ na 195 stronie) • wielu deweloperów, wolontariuszy i beta testerów, oraz • szcz ˛atkowychzapisków z pami˛etnikaautora tego dokumentu. :-) Autorzy chc ˛apodzi˛ekowa´cwszystkim tym, dzi˛ekiktórym mo˙zliwestało si˛epowstanie tego dokumentu.

A.2 Gwarancje

Poniewa˙znie jestem ekspertem, nie zamierzam nawet sprawia´cwra˙zenia, ˙zewiem wszys- tko o Debianie, jak i Linuksie w ogólno´sci. Moje rady odno´sniebezpiecze´nstwamog ˛aby´cw zasadzie dobre tylko do u˙zytkudomowego. Ten dokument nie ma na celu zast ˛apienia˙zadnegoinnego przewodnika lub innej dokumen- tacji. Autorzy tego dokumentu nie bior ˛ajakiejkolwiek odpowiedzialno´sciza powstałe szkody. Wszelkie znaki handlowe s ˛awłasno´sci˛aich posiadaczy.

A.3 Pomoc

Komentarze i uzupełnienia do tego dokumentu s ˛azawsze mile widziane. Je´slimasz jakie´ssug- estie odno´sniepakietu debian-reference lub jego odpowiedniego tłumaczenia, wy´slijlist na adres Debian BTS system (http://bugs.debian.org/). Mo˙zeszu˙zy´ctak˙ze reportbug, który ułatwia wysyłanie dogł˛ebnychzgłosze´nbł˛edów. Oczywi´sciemo˙zeszrównie˙zwysła´c Rozdział A. Dodatek 206

wiadomo´s´cw j˛ezykuangielskim do Osamu Aoki (http://people.debian.org/~osamu/), na adres , lub do poszczególnych tłumaczy w odpowiednich j˛ezykach.

Autor mówi: „Mimo, i˙zmieszkam w USA, j˛ezykangielski nie jest dla mnie j˛ezykiemojczystym. Tak wi˛ec,jakiekolwiek poprawki gramatyczne s ˛amile widziane.”

Tłumacze na j˛ezykPolan dodaj ˛a:„Mimo, ˙zemieszkamy w Polsce i j˛ezykpolski jest dla nas j˛ezykiemojczystym, to równie˙z,´swiadomiswojej niedoskonało´sci,przyjmiemy pomoc w postaci korekty uchybie´nj˛ezykowych.Jeszcze bardziej za´swdzi˛ecznib˛edziemyza korekt˛eewentual- nych uchybie´nw procesie tłumaczenia.”.

Najmilej widziane s ˛ałatki (wyniki działania programu diff) na wersj˛eSGML, ale łatki na wersj˛e tekstow ˛arównie˙zb˛ed˛aprzyjmowane. Zajrzyj na stron˛e:‘Oficjalny dokument’ na 1 stronie.

Oryginalne pliki SGML u˙zywanedo stworzenia tego dokumentu dost˛epnes ˛arównie˙zprzez CVS na: :pserver:[email protected]/cvsroot/qref lub http://qref. sourceforge.net/Debian/qref.tar.gz.

A.4 Format dokumentu

Dokument ten został napisany przy u˙zyciuDebianDoc SGML DTD (przepisany z LinuxDoc SGML). System DebianDoc SGML pozwala na przetwarzanie plików pochodz ˛acychz jednego ´zródłana ró˙zneformaty, np. ten dokument mo˙zeby´cprzegl ˛adanyjako HTML, zwykły tekst, TeX DVI, PostScript, PDF oraz GNU info.

Narz˛edziakonwertuj ˛aceDebianDoc SGML s ˛adost˛epnew pakiecie debiandoc-sgml.

A.5 Labirynt Debiana

System Linux jest pot˛e˙zn˛aplatform ˛adla komputerów podł ˛aczonychdo sieci. Jednak˙zeopanowanie wszystkich jego mo˙zliwo´sciwcale nie jest łatwe. Dobrym przykładem jest podł ˛aczeniei kon- figuracja drukarki.

Istnieje kompletna i szczegółowa dokumentacja zwana „KODEM ZRÓDŁOWYM”.´ Jest ona dokładna, lecz trudna do zrozumienia. Dost˛epnes ˛arównie˙z ´zródłainformacji w postaci dokumentów HOWTO (HOWTO - Jak To Zrobi´c(JTZ)) i mini-HOWTO. S ˛aprostsze, ale maj ˛a tendencj˛edo opisu zbyt wielu detali, a co za tym idzie, zamglenia praktycznych informacji. Miewam czasem problemy ze znalezieniem po˙z˛adanejcz˛e´scidługiego HOWTO, gdy musz˛e wywoła´ctylko kilka polece´n.

By móc odnale´z´csi˛ew g ˛aszczukonfiguracji systemu, zacz ˛ałemzapisywa´ckrótkie notatki w pliku tekstowym tak, by stanowiły dla mnie szybkie i proste ´zródłoinformacji. Plik ten z czasem zacz ˛ałrosn ˛a´c,a ja w mi˛edzyczasienauczyłem si˛eDebianDoc. Efektem tego jest wła´snie Debian Reference. Rozdział A. Dodatek 207

A.6 Cytaty o Debianie

Tutaj znajduje si˛ekilka interesuj ˛acychcytatów z listy dyskusyjnej Debiana.

• „To jest Unix. Daje Ci wystarczaj ˛acodu˙zoliny, aby´smógł si˛epowiesi´c.”— Miquel van Smoorenburg

• „Unix JEST przyjazny dla u˙zytkownika.. . Jest tylko wybredny w wyborze przyjaciół.” — Tollef Fog Heen