Debian Reference z
założenia stanowić ma podręcznik poinstalacyjny Debiana, będąc
jednocześnie szerokim omówieniem tego systemu. Dokument opisuje wiele aspektów
administracji, ilustrując je przykładowymi poleceniami. Zawarte w nim
samouczki, porady i inne informacje dotyczą tematów takich jak: podstawowe
założenia systemu Debian, wskazówki instalacyjne, zarządzanie pakietami, jądro
Linuksa, dostrajanie systemu, konfiguracja bramy sieciowej, edytory tekstu,
CVS, programowanie oraz GnuPG (dla zwykłych użytkowników).
Copyright © 2001–2003 by Osamu Aoki <osamu@debian.org>.
Copyright (Rozdział 2) © 1996–2001 by Software in the Public Interest.
Udziela się zgody na dystrybuowanie wiernych kopii tego dokumentu pod warunkiem opatrzenia wszystkich kopii informacją o prawach autorskich a także niniejszym pozwoleniem.
Udziela się zgody na tworzenie i dystrybucję zmodyfikowanych wersji tego dokumentu na warunkach takich, jak w przypadku wiernych kopii, pod warunkiem, że całe zmodyfikowane dzieło rozprowadzane jest na zasadach identycznych do zawartych w niniejszym pozwoleniu.
Udziela się zgody na kopiowanie i dystrybucję tłumaczeń tego dokumentu w innym języku, zgodnie z powyższymi warunkami dotyczącymi modyfikowanych wersji dokumentu, z tym wyjątkiem, iż tłumaczenie niniejszego pozwolenia musi zostać zatwierdzone przez Free Software Foundation lub pozostać w brzmieniu oryginalnym.
Powyższe tłumaczenie nie zostało zatwierdzone przez Free Software Fundation i w związku z tym nie jest w żadnym stopniu wiążące. Ma jedynie charakter informacyjny, a w przypadku redystrybucji lub modyfikacji dokumentu należy stosować się do oryginału zamieszczonego poniżej.
Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this document under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this document into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.
poolincoming/dpkgdselect/etc/tasksel lub aptitudedselectaptitudeapt-cache i apt-get/etc/apt/preferencesdpkg/vardpkg nie działa?sources.listcptarpaxcpioafiopdumpfsnicecron, at)screenachrootsu nie obsługuje grupy wheel''sudo – bezpieczniejsze środowisko pracyliloxhostsshxtermgcc)
Celem Debian Reference
jest dostarczenie szerokiego przeglądu systemu Debian w postaci
instrukcji poinstalacyjnej. Docelowym czytelnikiem jest
osoba, która jest skłonna do czytania skryptów powłoki systemowej (ang.
shell). Oczekuję od czytelnika posiadania podstawowych umiejętności poruszania
się w systemach uniksopodobnych.
Podjąłem świadomą decyzję nie wyjaśniania wszystkiego w
szczegółach, jeśli są one do odnalezienia na stronach podręcznika
systemowego, stronach systemu pomocy info lub w
dokumentach Jak to zrobić (HOWTO). Zamiast szczegółowych
wyjaśnień, starałem się raczej udzielić praktycznych porad dostarczając
dokładnych zestawów poleceń w głównym tekście lub
umieszczonych w katalogu examples/
plikach z przykładami. Musisz zrozumieć zawartość przykładów
zanim wykorzystasz je w prawdziwym systemie. Musisz również pamiętać, że w
Twoim systemie mogą występować niewielkie różnice w tych poleceniach.
Wiele zamieszczonych informacji składa się z przypomnień lub odsyłaczy do pozycji z listy Zasoby, Rozdział 15.1. Jest to częściowo spowodowane tym, że ten dokument to krótkie wprowadzenie.
Krótkie i proste (KISS=Keep it short and simple) to moja główna zasada.
W sytuacji zagrożenia dla systemu, po pomoc udaj się natychmiast do rozdziału Polecenia zapewniające przetrwanie w Debianie, Rozdział 6.3.
Najnowszy oficjalny dokument znajduje się w archiwum Debiana, w pakiecie
debian-reference oraz pod adresem http://www.debian.org/doc/manuals/debian-reference/.
Natomiast najnowszą wersję rozwojową możesz znaleźć pod adresem http://qref.sourceforge.net/Debian/.
Strona domowa projektu to http://qref.sourceforge.net/.
Możesz tam znaleźć ten dokument w wersji tekstowej, HTML, PDF, SGML oraz
PostScript.
Dokument o nazwie: ,,Debian Reference'' zawiera informacje przedstawione w postaci krótkich poleceń powłoki systemowej Bash. Użyto następujących konwencji:
# polecenie wykonane z konta administratora
$ polecenie wykonane z konta użytkownika
Jeśli chcesz dowiedzieć się więcej o powłoce systemowej Bash, zerknij do Bash – interaktywna powłoka zgodna z GNU, Rozdział 13.2.1.
Odsyłam również do:
bash(1).
http://www.debian.org/doc/manuals/debian-reference/.
/usr/share/doc/Debian/reference/.
W dokumencie używane są skróty LDP, DDP i oznaczają:
http://www.tldp.org/)
http://www.debian.org/doc/)
Przedstawiono tutaj tylko odwołania do LDP w postaci odsyłaczy URL, ale mogą
być one pozyskane jako pakiet i zainstalowane do
/usr/share/doc/HOWTO/. Zobacz także Zasoby, Rozdział 15.1.
Przykładowe skrypty są dostępne w podkatalogach z
przykładami zainstalowanych w
/usr/share/doc/Debian/reference/; początkowy znak dla ukrytych
plików to : ,,.''. W nazwach plików został on przerobiony na podkreślenie:
,,_''. Dodatkowe rozszerzenia są dodawane w przypadku kilku alternatywnych
wersji skryptów.
Jeśli system został zainstalowany z minimalnym zestawem pakietów, upewnij się, że wykonane 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 \
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że to :)
instalujące główne pakiety i kilka kluczowych dokumentów.
Debian występuje w 3 ,,smakach'':
Zasubskrybuj przynajmniej kluczową listę debian-devel-announce@lists.debian.org informującą o uaktualnieniach Debiana.
W marcu 2002 roku te trzy wersje odpowiadały kodowym nazwom: Potato (jakość produkcyjna), Woody (testy, bardzo stabilna, gdyż nadchodziło kolejne wydanie) oraz Sid (testy alfa). W sierpniu 2002, już po wydaniu wersji Woody, odpowiednie wersje (stabilna, testowa, niestabilna) oznaczają: Woody (jakość produkcyjna), Sarge (testy, będzie w takim stanie jeszcze przez jakiś czas) oraz Sid (jak zwykle testy alfa). Gdy pakiety z wersji niestabilnej nie mają zgłoszonych żadnych krytycznych błędów (RC) po tygodniu, są automatycznie przenoszone do wersji testowej. Zobacz: Archiwa Debiana, Rozdział 2.1.
Są dwa sposoby na używanie najnowszych wersji oprogramowania.
Używanie wersji testowej Debiana niesie ze sobą zagrożenie w postaci wolnego pojawiania się uaktualnień związanych z bezpieczeństwem. Zachowaj więc ostrożność.
Jeśli mieszasz smaki Debiana, używając części testowej lub niestabilnej w wydaniu stabilnym, możesz nieumyślnie zainstalować kluczowe pakiety w wersji, która może zawierać błędy. Również zachowaj ostrożność.
Używanie testowych lub niestabilnych wersji pociąga
za sobą zwiększone ryzyko natknięcia się na istotny błąd. Nad ryzykiem tym
można zapanować instalując dodatkowo wersję stabilną lub korzystając z programu
,,chroot'' (opisano to w chroot,
Rozdział 8.6.34. Ostatni sposób umożliwia uruchamianie różnych smaków
równocześnie, na różnych konsolach.
Po wyjaśnieniu kilku elementarnych sposobów dystrybucji Debiana w Debian – Podstawy, Część 2, zaprezentuję kilka podstawowych informacji ułatwiających posługiwanie się najnowszym oprogramowaniem oraz wykorzystywanie wersji testowej i niestabilnej. Niecierpliwi powinni natychmiast zajrzeć do Polecenia zapewniające przetrwanie w Debianie, Rozdział 6.3. Miłego uaktualniania!
Ten rozdział dostarcza podstawowych informacji o systemie Debian dla osób nie będących deweloperami. Sprawdzone i oficjalne wiadomości należy czerpać z:
wymienionych w Zasoby, Rozdział 15.1.
Jeżeli szukasz mniej szczegółowych ,,jak-to-zrobić'' (,,how-to''), przejdź bezpośrednio do Zarządzanie pakietami Debiana, Część 6 lub innych zasobów.
Niniejszy rozdział zawiera dokumenty wzięte z ,,Debian FAQ'', poddane gruntownej reorganizacji dla ułatwienia startu początkującemu administratorowi systemu Debian.
Pakiety z oprogramowaniem systemu Debian dostępne są poprzez FTP lub HTTP z
katalogów znajdujących się na serwerze lustrzanym
Debiana.
Na każdym z takich serwerów w katalogu debian można znaleźć następujące podkatalogi:
dists/:pool/:tools/:doc/:indices/:project/:project/experimental/:project/orphaned/:
W katalogu dists normalnie znajdują się informacje o trzech
dystrybucjach Debiana. Katalogi z nimi (i same dystrybucje) noszą nazwy
stable (dystrybucja stabilna), testing (dystrybucja
testowa) i unstable (dystrybucja niestabilna). Czasami też
występuje tam dystrybucja frozen (,,zamrożona''). Katalog każdej
dystrybucji stanowi symboliczne dowiązanie do rzeczywistego katalogu o
odpowiednim kryptonimie w katalogu dists.
Dane pakietów należących do dystrybucji stabilnej, Debian Woody
(3.0r0), są zapisywane do katalogu stable (dowiązanie symboliczne
do Woody/):
stable/main/: Ten katalog zawiera pakiety oficjalnie uznawane za
najbardziej aktualne wydanie systemu Debian.
Wszystkie z tych pakietów są zgodne z Wytycznymi Debiana
dotyczącymi Oprogramowania Wolnodostępnego (dokument dostępny
również jako /usr/share/doc/debian/social-contract.txt po
zainstalowaniu pakietu debian-doc) i można ich swobodnie używać, a
także rozpowszechniać.
stable/non-free/: Ten katalog zawiera informacje o pakietach,
których rozpowszechnianie zostało ograniczone przez wymagania stawiane
dystrybutorowi, które mówią o zwróceniu szczególnej uwagi, na kwestie praw
autorskich danego programu.
Na przykład, licencje niektórych pakietów zabraniają komercyjnego rozpowszechniania. Inne znowuż mogą być redystrybuowane, ale stanowią shareware, a nie wolne oprogramowanie. Zanim włączy się którykolwiek z tych pakietów do jakiejś redystrybucji (np. na CD-ROMie), należy przestudiować jego licencję i prawdopodobnie przeprowadzić odpowiednie negocjacje.
stable/contrib/: Ten katalog zawiera informacje o pakietach
wolnych w rozumieniu DFSG (Debian Free Software Guidelines) i podlegających
swobodnemu rozpowszechnianiu, ale w jakiś sposób zależnych od
pakietu, który swobodnemu rozpowszechnianiu nie podlega i z
tej przyczyny jest dostępny w sekcji non-free.
Wyżej wymienione katalogi zawierają informacje o pakietach. Same pakiety zaś
mieszczą się w katalogu pool (Katalog
pool, Rozdział 2.1.10).
Aktualny stan błędów w dystrybucji stabilnej podaje strona WWW
Problemy
ze stabilną dystrybucją (po angielsku) .
Informacja o pakietach zawartych w dystrybucji testowej, czyli
Debian Sarge, jest zapisywana w katalogu testing (dowiązanie
symboliczne do Sarge/) po tym, jak przejdą testowanie wstępne w
dystrybucji niestabilnej. Pakiety, których dotyczą informacje
zapisane w katalogu testing, są umieszczane w katalogu
pool (Katalog pool, Rozdział
2.1.10). Oczywiście, w katalogu testing istnieją również
podkatalogi main, contrib oraz non-free,
pełniące takie same funkcje, jak ich odpowiedniki w stable.
Pakiety w dystrybucji testowej muszą działać na wszystkich
architekturach, na których zostaną zbudowane i nie mogą posiadać zależności
uniemożliwiających instalację; muszą mieć również mniej błędów o priorytecie
release-critical (o znaczeniu krytycznym dla wydania), niż wersje znajdujące
się w unstable. W ten sposób można mieć nadzieję, że dystrybucja
testowa zawsze jest dystrybucją bliską wydania. Więcej informacji
o mechanizmach testowania znajduje się na http://ftp-master.debian.org/testing/
(po angielsku).
Najświeższe informacje o stanie dystrybucji testowej zawierają następujące strony WWW:
update
excuses (wymówki aktualizacyjne)
testing
problems (problemy w dystrybucji testowej)
release-critical bugs
(błędy o znaczeniu krytycznym dla wydania)
base system bugs
(błędy w systemie podstawowym)
bugs in standard
and task packages (błędy w pakietach kategorii standard i task)
other bugs and bug-squashing party
notes (inne błędy i uwagi z sesji tępienia pluskiew)
Informacje o pakietach wchodzących w skład dystrybucji
niestabilnej, zawsze nazywanej ,,Sid'', są zapisywane do katalogu
unstable (dowiązanie symboliczne do sid/) po
umieszczeniu tych pakietów w archiwum Debiana i pozostają tu, aż zostaną
przeniesione do testing/. Odpowiadające wpisom pakiety umieszcza
się w katalogu pool (Katalog pool,
Rozdział 2.1.10). Również istnieją tu podkatalogi main,
contrib i non-free, spełniające te same zadania, co w
katalogu stable/.
Dystrybucja niestabilna jest obrazem systemu w najnowszym stadium jego rozwoju. Nic nie stoi na przeszkodzie w używaniu i testowaniu tych pakietów, trzeba jednak uważać, bo mogą być jeszcze nie w pełni dopracowane. Zaletą korzystania z dystrybucji niestabilnej jest to, że jest się zawsze ,,na czasie'' ze wszystkimi nowinkami w projekcie Debian, ale jeżeli coś nawali, to licz na siebie, a nie na pomoc.
Na stronie WWW Problemy z
dystrybucją niestabilną (po angielsku) można się zapoznać z
aktualnym stanem błędów w dystrybucji niestabilnej.
Gdy dystrybucja testowa osiągnie wystarczającą dojrzałość, zostaje
zamrożona, co oznacza, że nie przyjmuje się do niej już żadnego nowego
oprogramowania z wyjątkiem koniecznych poprawek (bugfixes). W katalogu
dists/ tworzy się nowy podkatalog dla dystrybucji testing,
dowiązany do nowego kryptonimu. Dystrybucja zamrożona przechodzi przez
kilkumiesięczny okres próbny składający się na przemian z aktualizacji i z
okresów głębokiego zamrożenia nazywanych ,,cyklami testowymi''. (Ostatnio
proces wydania dystrybucji woody nie utworzył dowiązania
symbolicznego frozen/, więc frozen nie było
dystrybucją, a tylko etapem rozwoju dystrybucji testowej).
Utrzymujemy rejestr błędów w dystrybucji zamrożonej, które mogą opóźnić wydanie pakietu lub doprowadzić do wstrzymania wydania całej dystrybucji. Gdy liczba błędów spadnie do maksymalnie akceptowalnej wartości, dystrybucja zamrożona staje się dystrybucją stabilną (stable), zostaje wydana, a dotychczasowe wydanie stabilne staje się przestarzałe (obsolete) i zostaje przeniesione do archiwum.
Nazwy rzeczywistych podkatalogów w katalogu dists, na przykład
Woody i Sarge, są tylko ,,kryptonimami''. Kiedy
dystrybucja systemu Debian znajduje się jeszcze w etapie rozwojowym, 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ą nazwę na stable/, niejeden musiałby niepotrzebnie pobierać
ponownie masę oprogramowania).
Aktualnie, stable/ jest dowiązaniem symbolicznym do
Woody/, a testing/ dowiązaniem do
Sarge/. Oznacza to, że Woody jest aktualną
dystrybucją stabilną, a Sarge testową.
unstable/ jest już na zawsze dowiązaniem symbolicznym do
sid/, ponieważ Sid jest zawsze dystrybucją niestabilną.
Inne kryptonimy, których już wcześniej używano, 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.
Jak dotychczas wybierano postaci z filmu Toy Story produkcji Pixar.
pool
Dawniej pakiety przechowywano w podkatalogu katalogu dists,
którego nazwa odpowiadała dystrybucji, w skład której wchodziły. Okazało się
jednak, że wywoływało to różne problemy, jak np. duże obciążenie serwerów
lustrzanych, gdy dokonywano większych zmian.
Obecnie pakiety znajdują się w dużej ,,puli'' (,,pool''), której struktura jest utworzona na podstawie nazw pakietów źródłowych. Dla ułatwienia zarządzania czymś takim, pula - pool jest podzielona według sekcji (main, contrib i non-free) i według pierwszej litery nazwy pakietu źródłowego. Katalogi te zawierają pewną liczbę plików: pakiety binarne dla każdej architektury (platformy sprzętowej) oraz pakiety źródłowe, z których te pierwsze zostały wygenerowane.
Miejsce, gdzie znajduje się jakiś pakiet, można określić wykonując polecenie
apt-cache showsrc nazwa_pakietu i znajdując w jego
wyjściu wiersz zaczynający się od ,,Directory:''. Na przykład pakiety serwera
http apache znajdują się w pool/main/a/apache/.
Pakietów lib* jest bardzo dużo, więc są traktowane szczególnie: na
przykład pakiety libpaper są przechowywane w katalogu
pool/main/libp/libpaper/.
Podkatalogi katalogu dists są w dalszym ciągu używane do
przechowywania plików indeksowych używanych przez programy w rodzaju
apt. Również, w czasie pisania niniejszego dokumentu starsze
dystrybucje nie były przestawione na używanie katalogu pool, więc można
zobaczyć takie nazwy dystrybucji, jak potato czy
woody w wierszach zaczynających się od ,,Directory:'' (przytoczone
powyżej polecenie apt-cache).
Nie jest to powód do zmartwień, ponieważ nowy apt i prawdopodobnie
również starszy dpkg-ftp (zobacz Sposoby
aktualizacji systemu Debian, Rozdział 2.3.1) radzą sobie z taką strukturą
bez problemów. Więcej informacji można znaleźć w Debian Package Pools
FAQ (po angielsku).
Kiedy dzisiejszy Sid jeszcze nie istniał, organizacja sieciowych archiwów
Debiana miała jedną dużą wadę: kiedy dokładano nową architekturę do bieżącej
dystrybucji unstable, pakiety zrobione dla niej mogły być wydane
dopiero wtedy, gdy ta dystrybucja stawała się nową dystrybucją
stable. Dla wielu architektur nie dochodziło do tego i trzeba
było przenosić odpowiadające im katalogi, gdy dochodziło do wydania
dystrybucji. Było to niepraktyczne, ponieważ przenoszenie katalogów silnie
obciążało łącza.
Administratorzy archiwów sieciowych przez kilka lat obchodzili ten problem,
umieszczając binaria dla architektur jeszcze nie wydanych w specjalnym katalogu
o nazwie sid. Dla architektur jeszcze nie wydanych, tworzono w
chwili wydania dowiązanie z aktualnego katalogu stable do
sid i od tej pory tworzono je w drzewie unstable, jak
zwykle. Takie rozwiązanie było trochę mylące dla użytkowników.
Z nadejściem katalogu ,,pool'' (zobacz Katalog
pool, Rozdział 2.1.10) w trakcie powstawania dystrybucji
Woody, zaczęto zapisywać pakiety binarne w lokalizacji kanonicznej w tymże
katalogu, niezależnie od dystrybucji, więc wydanie dystrybucji przestało być
związane z poddawaniem serwerów lustrzanych dużym obciążeniom (natomiast mamy
do czynienia z dość sporymi, rozłożonymi w czasie obciążeniami w trakcie całego
procesu rozwijania dystrybucji).
incoming/
Pakiety umieszczane w archiwum trafiają najpierw do http://incoming.debian.org/, po
sprawdzeniu autentyczności pochodzenia od jednego z deweloperów (w wypadku tzw.
Non-Maintainer Upload -- NMU -- pakiety trafiają do podkatalogu
DELAYED). Raz dziennie pakiety przenosi się z
incoming/ do unstable/.
W nagłych wypadkach można instalować pakiety z incoming/, zanim
jeszcze trafią do unstable.
Podczas gdy najnowsze dystrybucje Debiana trzyma się w podkatalogach katalogu
debian, na każdym z serwerów wymienionych na Stronie serwerów lustrzanych
Debiana, archiwa starszych dystrybucji (np. Slink) znajdują się na
http://archive.debian.org/ lub w
podkatalogach katalogu debian-archive na każdym serwerze
lustrzanym Debiana.
Starsze pakiety z testing i unstable można znaleźć na
http://snapshot.debian.net/.
W obrębie każdego z głównych drzew katalogów (dists/stable/main,
dists/stable/contrib, dists/stable/non-free,
dists/unstable/main/, itd.), informacja o pakietach binarnych
znajduje się w podkatalogach o nazwach wskazujących na platformę sprzętową
(architekturę), dla jakiej zostały skompilowane.
binary-all/, dla pakietów niezależnych od architektury (dotyczy to
np. skryptów Perla lub czystej dokumentacji).
binary-platform/, dla pakietów przeznaczonych dla
konkretnej architektury.
Warto zauważyć, że pakiety binarne dla dystrybucji testing i
unstable nie są już przechowywane w tych katalogach, ale w
katalogu pool. Pliki indeksowe (Packages i
Packages.gz) jednak, dla zachowania kompatybilności z
wcześniejszymi rozwiązaniami, w dalszym ciągu przebywają tam, gdzie były.
Aby poznać faktyczny zestaw wspieranych platform sprzętowych, należy zapoznać
się z Informacjami Wydawniczymi dla danej dystrybucji. Można je odnaleźć na
stronach zajmujących się Uwagami Wydawniczymi dla stable i
testing.
Debian posiada również kod źródłowy każdego ze swoich składników. Co więcej, warunki licencji większości programów w systemie zawierają wymóg dystrybucji kodu źródłowego wraz z programem, lub przynajmniej zadeklarowania gotowości dostarczenia kodu źródłowego wraz z programem.
Normalnie kod źródłowy jest rozpowszechniany za pośrednictwem katalogów
source, istniejących równolegle do wszystkich katalogów
charakterystycznych dla poszczególnych architektur, a obecnie w katalogu
pool directory (zobacz Katalog
pool, Rozdział 2.1.10). Aby pobrać z archiwum kod źródłowy
bez konieczności zaznajamiania się ze strukturą archiwum Debiana należy wykonać
polecenie podobne do tego: apt-get source
mojanazwapakietu.
Niektóre pakiety, na przykład pine, są dostępne wyłącznie w
postaci źródeł wskutek ograniczeń licencyjnych. (Niedawno pojawił się pakiet
pine-tracker ułatwiający instalację Pine). Procedury opisane w Przeniesienie pakietu do systemu stabilnego,
Rozdział 6.4.10 i Pakietowanie, Rozdział 13.9
opisują sposoby tworzenia pakietów samemu.
Dla pakietów z katalogów contrib i non-free, które
oficjalnie nie stanowią części systemu Debian, kod źródłowy może być
niedostępny.
W ogólności pakiety zawierają wszystkie pliki niezbędne do zaimplementowania zestawu odpowiednich poleceń lub właściwości. Są dwa typy pakietów Debiana:
dpkg; ze szczegółami można się zapoznać czytając stronę
podręcznika systemowego poświęconą dpkg.
dpkg-source;
szczegóły są dostępne po zapoznaniu się z poświęconą mu stroną podręcznika
systemowego man
Instalacja oprogramowania przez system pakietów posługuje się pojęciem
,,zależności'' (,,dependencies''), troskliwie określonych przez opiekunów
poszczególnych pakietów. Te zależności są wyszczególnione w pliku
control wchodzącym w skład każdego pakietu. Na przykład, pakiet
zawierający kompilator GNU C (gcc) jest zależny od zawierającego
konsolidator (linker) i asembler pakietu binutils. Jeżeli
użytkownik usiłuje zainstalować gcc nie zainstalowawszy uprzednio
binutils, system zarządzania pakietami (dpkg) drukuje komunikat
mówiący, że trzeba zainstalować binutils, a następnie zatrzymuje
instalację gcc (uparty użytkownik może jednak zmienić to
zachowanie; zobacz dpkg(8)). Z dodatkowymi szczegółami można
zapoznać się w Zależności między pakietami, Rozdział
2.2.8.
Zawartych w Debianie narzędzi obsługujących pakiety można używać do:
,,Pakiet'' Debiana (zwany też archiwum Debiana - nie mylić z umieszczoną na serwerze całą dystrybucją!) zawiera pliki wykonywalne, biblioteki oraz dokumentację związaną z konkretnym programem lub zestawem w jakiś sposób powiązanych ze sobą programów. Z reguły nazwa pakietu Debiana kończy się sufiksem .deb.
Budowę wewnętrzną pakietów binarnych w tym formacie opisuje podręcznik
systemowy deb(5). Z uwagi na możliwość zachodzenia zmian w
specyfikacji formatu (z jednego wydania systemu Debian na kolejne jego
wydanie), przy manipulacji plikami .deb należy zawsze korzystać z
dpkg-deb(8).
Wszystkie pakiety Debiana (co najmniej Woody i wcześniejsze dystrybucje), można
obrabiać używając standardowych poleceń systemu Unix: ar, i
tar, nawet, gdy polecenia dpkg są niedostępne.
Nazwy plików zawierających pakiety w Debianie przestrzegają następujących zasad:
foo_NumerWersji-NumerRewizjiDebiana.deb
gdzie foo stanowi nazwę pakietu. Dla sprawdzenia: mając dany plik .deb można określić nazwę zawartego w nim pakietu w jeden z następujących sposobów:
Składnik VVV jest numerem wersji, nadanym przez programistę zajmującego się danym programem/pakietem poza systemem Debian. Numery wersji nie są ustalane przez żadne normy, dlatego też mogą one mieć najrozmaitsze formaty, jak np. ,,19990513'' czy ,,1.3.8pre1''.
Składnik RRR jest numerem rewizji w Debianie i jest nadawany przez
opiekuna danego pakietu lub przez indywidualnego użytkownika, jeśli ten zechce
zbudować pakiet samodzielnie. Numer ten odpowiada poziomowi rewizji pakietu w
systemie; z tego względu nowy poziom rewizji zwykle oznacza zmiany w plikach
opisujących budowę i instalację pakietu: debian/rules (Debian
makefile), debian/control (Debian control file), skrypcie
instalacyjnym i deinstalacyjnym debian/p*, lub plikach
konfiguracyjnych związanych z pakietem.
Mechanizm ,,conffiles'' istniejący w Debianie pozwala na otoczenie ochroną
plików konfiguracyjnych w systemie. Pliki te, zazwyczaj umieszczone w katalogu
/etc, są wymienione w plikach o nazwach kończących się na
conffiles wchodzących w skład systemu pakietów. Mechanizm ten
gwarantuje, że systemowe pliki konfiguracyjne nie będą nadpisywane podczas
instalacji nowej wersji pakietu.
Jeśli możliwa jest konfiguracja systemu bez dokonywania zmian w plikach należących do różnych pakietów, dobrym pomysłem jest powstrzymanie się od ich modyfikacji nawet jeśli są to pliki ,,conffiles''. Ułatwi to i przyspieszy instalację nowych wersji pakietów.
Aby dowiedzieć się, jakie dokładnie pliki zostaną zachowane podczas instalacji nowej wersji (upgrade'u) pakietu, należy uruchomić polecenie:
dpkg --status pakiet
i szukać ,,Conffiles:''.
Szczegółów na temat zawartości plików conffiles dostarcza dokument
Debian Policy Manual w rozdziale 11.7 (zobacz Zasoby,
Rozdział 15.1).
Są to skrypty automatycznie uruchamiane przed instalacją i po instalacji
pakietu. Wraz z plikiem o nazwie control wchodzą w skład sekcji
,,control'' każdego pakietu w Debianie.
Są to:
Aktualnie wszystkie pliki sterujące pakietu (te z sekcji ,,control'') można
znaleźć w katalogu /var/lib/dpkg/info. Pliki związane z pakietem
foo mają nazwy zaczynające się od ,,foo'' i kończące na
,,preinst'', ,,postinst'', itd. Plik foo.list w tym katalogu
wymienia wszystkie pliki zainstalowane podczas instalacji pakietu
foo. (Położenie tych plików jest wewnętrzną sprawą programu
dpkg i może być zmienione).
Każdemu pakietowi w Debianie opiekunowie dystrybucji przypisali pewien priorytet, mający spełniać pomocnicze funkcje względem systemu zarządzania pakietami. Istnieją następujące rodzaje priorytetów:
W ich skład wchodzą wszystkie narzędzia konieczne do naprawy uszkodzeń systemu.
Nie wolno ich usuwać, bo system może ulec totalnej zapaści, która uniemożliwi
nawet użycie dpkg do próby jego odtworzenia. Systemy zawierające
wyłacznie pakiety o priorytecie Required najprawdopodobniej nie nadają się do
wielu rzeczy, ale posiadają funkcjonalność wystarczającą do ich uruchomienia i
instalacji dodatkowego oprogramowania.
Inne pakiety, bez których system nie będzie dobrze działał, lub nie będzie użyteczny, będą posiadać również ten priorytet. Nie należą do nich Emacs, X11, TeX czy inne duże aplikacje. Pakiety o priorytecie Important tworzą zaledwie gołą infrastrukturę.
Pakiety o tym priorytecie zainstalują się domyślnie, jeżeli użytkownik nie wybierze nic ponadto. Grupa Standard zawiera niewiele dużych aplikacji, ale zawiera Emacs (jest on bardziej elementem infrastruktury, niż aplikacją) i rozsądny wybór z TeX-a i LaTeX-a (to, czego można używać bez X).
W skład tej grupy wchodzą X11, pełna dystrybucja TeX-a i mnóstwo aplikacji.
Zwróć uwagę na różnice pomiędzy "Priority: required", "Section:
base" i "Essential: yes" w opisie pakietu. "Section:
base" oznacza, że ten pakiet jest instalowany w nowym systemie przed
czymkolwiek innym. Większość pakietów z "Section: base" posiada
""Priority: required" lub przynajmniej "Priority:
important" i wiele z nich jest oznaczona jako "Essential: yes".
"Essential: yes" oznacza, że aby taki pakiet usunąć należy użyć
dodatkowych parametrów do polecenia tak by wymusić to usuwanie korzystając z
dpkg. Na przykład libc6, mawk i
makedev posiadają w ustawieniach "Priority: required" i
"Section: base" ale nie "Essential: yes".
Pakiet wirtualny nosi nazwę odnoszącą się do dowolnego z grupy pakietów,
posiadających zbliżoną funkcjonalność. Na przykład zarówno tin
jak i trn są klientami grup dyskusyjnych i każdy z nich powinien
spełniać wymagania innego programu, wymagającego czytnika news do działania. O
obu z nich mówi się więc, że dostarczają ,,wirtualny pakiet'' o nazwie
news-reader.
Podobnie, exim i sendmail są programami
transportującymi pocztę (mail transport agent). Mówi się więc o nich, że
dostarczają wirtualny pakiet o nazwie mail-transport-agent.
Jeżeli jeden z nich zostanie zainstalowany, każdy program zależący od
instalacji mail transport agent zostanie usatysfakcjonowany dzięki istnieniu
tego pakietu wirtualnego.
Debian posiada również mechanizm umożliwiający administratorowi 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 polecenia, Rozdział 6.5.3.
W systemie zarządzania pakietami w Debianie istnieje kategoria ,,zależności'' między pakietami zaprojektowanych tak, aby w prosty sposób, (za pomocą pojedynczej flagi) ukazać poziom niezależności funkcjonowania programu A od istnienia w danym systemie programu B:
Bardziej szczegółowe informacje o wykorzystaniu każdego z powyższych pojęć zawierają dokumenty Packaging Manual i Policy Manual.
Dobrze wiedzieć, że dselect umożliwia bardziej subtelną kontrolę
nad pakietami zalecanymi i sugerowanymi, niż
apt-get, który po prostu pobiera wszystkie pakiety oznaczone
zależy a zostawia w spokoju rekomendowane i
sugerowane. W nowoczesnym wydaniu obydwa programy są
,,nakładką'' na APT.
Pojęcie ,,zależność wstępna'' (,,pre-depend'') stanowi szczególny rodzaj
zależności. W wypadku zwyczajnego pakietu dpkg rozpakuje plik
pakietu (plik .deb) niezależnie od tego, czy pliki, od których
dany pakiet zależy, są już w systemie. Samo rozpakowanie polega na tym, że
dpkg wyciąga z pliku archiwum pliki przeznaczone do instalacji w
systemie użytkownika i umieszcza je we właściwych miejscach w tym systemie.
Jeżeli pakiet właśnie instalowany zależy od obecności w
systemie użytkownika jakichś innych pakietów, dpkg odmówi
dokończenia instalacji (co przejawiłoby się wykonaniem akcji ,,configure'') aż
do czasu zainstalowania tych pakietów.
Istnieje jednak trochę pakietów, których dpkg nie będzie chciał
nawet rozpakować, dopóki nie zostaną spełnione pewne zależności. Mówimy, że
takie pakiety ,,pre-depend'' (zależą wstępnie) od obecności w systemie jakichś
innych pakietów. Mechanizm ten został wprowadzony w projekcie Debian w celu
ułatwienia bezpiecznej instalacji nowych wersji pakietów w dobie przejścia z
formatu a.out na ELF, gdy nawet
kolejność rozpakowywania pakietów była krytyczna. Są też inne
sytuacje związane z dużymi aktualizacjami systemu, w których omawiany mechanizm
okazuje się użyteczny, np. dla pakietów o priorytecie ,,Wymagane'' zależnych
od libc.
Bardziej szczegółowe informacje można znaleźć w dokumencie Packaging Manual.
Status pakietu może przybierać formę: ,,nieznany'' (,,unknown''),
,,zainstalować'' (,,install''), ,,usunąć częściowo'' (,,remove''), ,,usunąć
całkowicie'' (,,purge'') lub ,,zatrzymać'' (,,hold''). Te znaczniki pokazują,
co użytkownik chciałby uczynić z danym pakietem (przez dokonanie wyboru w
sekcji ,,Select'' programu dselect lub przez bezpośrednie
wywołanie dpkg).
Ich znaczenie jest następujące:
Są dwa mechanizmy chroniące pakiety przed instalacją nowej wersji, jeden z nich
oparty jest na dpkg, a drugi od dystrybucji Woody, na
APT.
Wykorzystując ten pierwszy z nich, należy najpierw wyeksportować listę zawierającą nazwy zainstalowanych pakietów i status każdego z nich:
dpkg --get-selections \* > selections.txt
Następnie należy dokonać edycji powstałego pliku
selections.txt, zmieniając odpowiednio wiersz
zawierający nazwę pakietu, który chcemy chronić (np. libc6), z
czegoś takiego:
libc6 install
na coś takiego:
libc6 hold
Plik należy zapisać na dysku i wprowadzić go do bazy danych dpkg
wykonując polecenie:
dpkg --set-selections < selections.txt
Jeżeli dobrze znamy nazwę pakietu, który chcemy chronić, możemy po prostu wykonać:
echo libc6 hold | dpkg --set-selections
Dla każdego potraktowanego w ten sposób pakietu oznacza to, że będzie on chroniony przed zainstalowaniem swojej nowszej wersji.
Taki sam wynik można uzyskać korzystając z programu dselect.
Wystarczy w tym wypadku wejść do sekcji [S]elect, odnaleźć pakiet, który chcemy
chronić przed zmianą i nacisnąć klawisz ,,='' lub ,,H''. Zmiana statusu będzie
obowiązywać od chwili opuszczenia sekcji [S]elect.
Wiodący w dystrybucji Woody, system APT posiada nowy, alternatywny mechanizm
ochrony pakietów podczas ich pobierania z repozytorium, oparty na
Pin-Priority. Więcej szczegółów na ten temat dostarczy
apt_preferences(5), wraz z http://www.debian.org/doc/manuals/apt-howto/
lub pakietem apt-howto; Przegląd
pliku /etc/apt/preferences, Rozdział 6.2.8 również zawiera
krótkie wyjaśnienie.
Pakiety źródłowe są przechowywane w katalogu o nazwie source,
można je pobierać klasycznymi metodami, można też użyć polecenia
apt-get source foo
do ich pobrania (o konfiguracji programu APT do tej operacji szerzej traktuje
podręcznik systemowy: apt-get(8)).
Aby skompilować pliki źródłowe dla pakietu o nazwie
foo, będzie trzeba użyć wszystkich, z następujących
plików: foo_*.dsc, foo_*.tar.gz
oraz foo_*.diff.gz. (ciekawa rzecz: dla rodzimych
pakietów Debiana nie ma plików .diff.gz).
Jeśli pobraliśmy już wszystkie potrzebne pliki i mamy zainstalowany pakiet
dpkg-dev, polecenie
$ dpkg-source -x foo_version-revision.dsc
rozpakuje pakiet do katalogu o nazwie foo-version.
Aby utworzyć pakiet binarny, należy wydać następujące polecenie (tutaj podane w wersji dla zwykłego użytkownika):
$ cd foo-version
$ su -c "apt-get update ; apt-get install fakeroot"
$ dpkg-buildpackage -rfakeroot -us -uc
Następnie,
$ su -c "dpkg -i ../foo_version-revision_arch.deb"
aby zainstalować świeżo utworzony pakiet. Więcej informacji - Przeniesienie pakietu do systemu stabilnego, Rozdział 6.4.10.
Szczegółowych informacji dotyczących tworzenia nowych pakietów dostarczy
lektura New Maintainers' Guide, dostępnego jako pakiet
maint-guide, lub pod adresem http://www.debian.org/doc/manuals/maint-guide/.
Jednym ze strategicznych celów Debiana jest dostarczenie spójnych metod umożliwiających bezpieczną instalację nowego oprogramowania; dokładamy starań, aby proces instalacji nowego wydania na poprzednim przebiegał jak najbardziej gładko. Pakiety będą informować użytkownika o ważnych zdarzeniach podczas instalacji, a często będą proponować rozwiązanie problemu.
Należy przeczytać Uwagi Wydawnicze (Release Notes), dokument opisujący
szczegóły instalacji nowej wersji (upgrade'u) poszczególnych dystrybucji,
dostarczany na każdej płytce z systemem Debian i dostępny na stronach WWW pod
adresem http://www.debian.org/releases/stable/releasenotes
lub http://www.debian.org/releases/testing/releasenotes.
Praktyczny poradnik traktujący o instalacji nowej dystrybucji na poprzednią jest zawarty w Zarządzanie pakietami Debiana, Część 6. Ten rozdział opisuje podstawowe szczegóły.
Zawsze można użyć anonimowego FTP lub programu wget, aby dostać
się do sieciowego archiwum Debiana, przeszukać katalogi, znaleźć żądany plik,
pobrać go i wreszcie zainstalować przy pomocy dpkg
(dpkg instaluje nowe pakiety na właściwym miejscu, również na
działającym systemie). Czasami jednak nowa wersja jednego pakietu wymaga
instalacji nowej wersji innego pakietu, co może prowadzić do uniemożliwienia
instalacji żądanego pakietu do czasu zainstalowania tego drugiego, wymaganego.
Dla wielu osób takie ręczne podejście jest zbyt czasochłonne, ze względu na fakt, że Debian tak szybko ewoluuje - co tydzień dochodzi tuzin lub więcej nowych pakietów. Tuż przed dużymi wydaniami ta liczba jeszcze rośnie. Żeby sobie dać radę z taką lawiną, wiele osób preferuje używanie zautomatyzowanego oprogramowania. Do tego celu powstało kilka wyspecjalizowanych narzędzi do zarządzania pakietami.
System zarządzania pakietami w Debianie posiada dwa cele: manipulacja samymi
pakietami oraz pobieranie plików wraz z pakietami z archiwum pakietów.
Pierwsze zadanie jest wykonywane przez dpkg, drugie - przez APT i
dselect
dpkg
Jest to główny program do manipulacji plikami z pakietami. Pełny opis można
znaleźć w dpkg(8).
dpkg występuje w 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ży pakiet na mniejsze pliki.
dpkg-split(1)
dpkg-ftp i dpkg-mountable zostały zastąpione przez
system APT.
APT (skrót od Advanced Packaging Tool - Zaawansowane Narzędzie Pakietujące)
jest zaawansowanym interfejsem do debianowego systemu zarządzania pakietami
składającym się z kilku programów, których nazwy z reguły zaczynają się od
,,apt-''. apt-get, apt-cache i
apt-cdrom są działającymi w środowisku znakowym narzędziami do
obsługi pakietów. Są również używane jako ,,back end'' (program wykonujący
właściwą pracę pod osłoną interfejsu ułatwiającego użytkownikowi obsługę) dla
innych narzędzi takich, jak dselect i aptitude.
Więcej informacji można uzyskać, instalując pakiet apt i czytając
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 źródłem informacji może być również APT HOWTO,
dostępny po zainstalowaniu pakietu apt-howto jako
/usr/share/doc/Debian/apt-howto/.
apt-get upgrade i apt-get dist-upgrade pobierają
tylko pakiety wymienione w polach ,,Depends:'' i ignorują wszystkie pakiety
wymienione w polach ,,Recommends:'' i ,,Suggests:''. Jeżeli się tego nie lubi,
używa się dselect.
dselect
dselect jest zaopatrzonym w menu, interfejsem systemu zarządzania
pakietami w Debianie. Jest szczególnie użyteczny przy okazji pierwszych
instalacji i większych aktualizacji. Zobacz dselect, Rozdział 6.2.3.
Więcej informacji zawiera dokument
/usr/share/doc/install-doc/dselect-beginner.en.html z pakietu
install-doc lub dselect
Documentation for Beginners (Dokumentacja dselect dla
początkujących).
Kernel i system plików używane w Debianie umożliwiają zastępowanie jednych plików drugimi nawet wtedy, gdy są one właśnie używane.
Dostarczamy również program o nazwie start-stop-daemon, używany do
uruchamiania demonów (pracujących w tle programów użytkowych) przy starcie
systemu i do ich zatrzymywania podczas zmiany trybu pracy kernela (np. z trybu
wieloużytkownikowego na jednoużytkownikowy lub na ,,halt''). Tego samego
programu używają skrypty instalacyjne, gdy instalowany jest nowy pakiet
zawierający demony - do ich zatrzymywania i uruchamiania w miarę potrzeb.
Nawiasem mówiąc, Debian nie wymaga, aby system poddawany aktualizacji pracował w trybie jednoużytkownikowym.
Jeżeli ręcznie pobrałeś pliki pakietów na dysk (co nie jest absolutnie
konieczne, wystarczy zapoznać się z wyżej zamieszczonym opisem
dpkg-ftp lub APT), to po ich zainstalowaniu możesz usunąć ze
swojego systemu pliki .deb.
W wypadku użycia programu APT, pakiety są zapisywane w katalogu
/var/cache/apt/archives/. Można je skasować po zainstalowaniu
(apt-get clean) albo skopiować do katalogu
/var/cache/apt/archives/ na innej maszynie, aby nie ściągać ich
kolejny raz przy powtórnych instalacjach.
dpkg rejestruje pakiety, które rozpakowano, skonfigurowano,
usunięto częściowo lub całkowicie, ale (przynajmniej obecnie) nie przechowuje
rejestru tego, co się działo na konsoli w czasie poddawania pakietów tym
działaniom.
Najprostszym sposobem obejścia tego problemu jest uruchamianie sesji
dpkg, dselect, apt-get itd. przy pomocy
programu script (script(1)).
init
Jak wszystkie Uniksy, Debian ładuje się do pamięci wykonując program
init. W pliku konfiguracyjnym programu init
(/etc/inittab) jest zapisane, że w pierwszej kolejności ma być
wykonany skrypt /etc/init.d/rcS. Uruchamia on wszystkie skrypty
znajdujące się w katalogu /etc/rcS.d/ poprzez nowe podprocesy lub
ich kopie, zależnie od rozszerzenia nazwy pliku, wykonując inicjalizację
systemu, w skład której wchodzi sprawdzanie i montowanie systemów plików,
ładowanie modułów, uruchamianie usług sieciowych, ustawianie zegara i in.
Następnie, dla kompatybilności z innymi systemami, uruchamia skrypty
umieszczone w katalogu /etc/rc.boot/ (z wyjątkiem tych, których
nazwy zawierają ,,.''). Skrypty umieszczone w tym katalogu są zwykle
zarezerwowane do wyłącznego użytku administratora i używanie ich w pakietach
nie jest pochwalane. Więcej informacji można znaleźć w Wskazówki dotyczące inicjalizacji systemu., Rozdział
9.1.
Po załadowaniu systemu, init wykonuje wszystkie skrypty startowe w
katalogu określonym przez domyślny poziom startu (default runlevel, wpis
id w pliku /etc/inittab). Jak większość Uniksów
kompatybilnych z System V, Linux ma 7 poziomów startu:
W Debianie ustawia się id=2, co oznacza, że domyślny poziom startu
po wejściu w tryb wieloużytkownikowy wynosi 2, a uruchomieniu podlegają skrypty
znajdujące się w katalogu /etc/rc2.d/.
W rzeczywistości skrypty w każdym z katalogów
/etc/rcN.d/ są tylko symbolicznymi dowiązaniami
(symlinkami) do skryptów w /etc/init.d/. Ich
nazwy natomiast dobiera się tak, aby odzwierciedlały
sposób, w jaki zostaną uruchomione skrypty znajdujące się w
/etc/init.d/. W szczególności, przed wejściem na którykolwiek
poziom startu uruchomione zostają wszystkie skrypty o nazwach zaczynających się
na ,,K''; są to skrypty wyłączające usługi. Następnie uruchomione zostają
skrypty o nazwach zaczynających się na ,,S'', które są skryptami
uruchamiającymi usługi. Dwucyfrowa liczba występująca po ,,K'' lub ,,S''
określa kolejność, w jakiej skrypty zostaną uruchomione. Skrypty z mniejszymi
liczbami są uruchamiane w pierwszej kolejności.
To wszystko działa, ponieważ skrypty w /etc/init.d/ pobierają
argument, którego wartością może być ,,start'', ,,stop'', ,,reload'',
,,restart'' lub ,,force-reload'' i wykonują zadanie określone przez ten właśnie
argument. Skryptów tych można używać również po załadowaniu systemu, sterując
w ten sposób różnymi procesami.
Na przykład, (z argumentem ,,reload'') polecenie
# /etc/init.d/sendmail reload
wysyła demonowi programu sendmail polecenie powtórnego wczytania pliku konfiguracyjnego.
Debian nie korzysta z pochodzącego z BSD katalogu rc.local w celu dostosowywania procesu ładowania do jakichś szczególnych życzeń użytkownika; zamiast tego oferuje następujący mechanizm.
Załóżmy, że system powinien wykonać skrypt foo przy starcie lub podczas wchodzenia na któryś z poziomów startu. Administrator powinien wtedy:
/etc/init.d/.
update-rc.d z
odpowiednimi argumentami, ustawiając w ten sposób dowiązania między
wymienionymi w wierszu poleceń plikami w katalogach
rc?.d a /etc/init.d/foo, gdzie
? jest liczbą od 0 do 6 odpowiadającą jednemu z poziomów startu
(runlevel) Systemu V.
Polecenie update-rc.d ustawi dowiązania między plikami w
katalogach rc?.d a skryptem w
/etc/init.d/. Nazwa każdego z dowiązań będzie się zaczynać od
litery ,,K'' lub ,,S'', po której wystąpi liczba oraz nazwa skryptu. Gdy
system osiągnie poziom startu N, skrypty z /etc/init.d/
posiadające w katalogu /etc/rcN.d/ dowiązania o nazwach
zaczynających się na ,,K'' są wykonywane z argumentem stop,
następnie są wykonywane skrypty, nazwy odniesień do których zaczynają się na
,,S'', przyjmując za argument start.
Można, na przykład, spowodować uruchomienie skryptu foo w toku
sekwencji startowej umieszczając go w /etc/init.d/ i instalując
dowiązania poleceniem update-rc.d foo defaults 19. Argument
defaults odnosi się do domyślnych poziomów startu (od 2 do 5).
Argument 19 gwarantuje, że foo zostanie uruchomiony
przed którymkolwiek skryptem zawierającym liczbę 20 lub większą.
Debian oferuje wiele sposobów spełniania życzeń administratora systemu bez groźby uszkodzenia systemu.
dpkg-divert, zobacz Polecenie
dpkg-divert, Rozdział 6.5.1.
equivs, zobacz Pakiet equivs,
Rozdział 6.5.2.
update-alternatives, zobacz Alternatywne
polecenia, Rozdział 6.5.3.
make-kpkg może zadowolić wymagania stawiane przez wiele
bootloaderów. Zobacz make-kpkg(1) i Standardowa metoda Debiana, Rozdział 7.1.1.
Wszystkie pliki w podkatalogach katalogu /usr/local/ należą do
administratora systemu i Debian ich nawet nie tknie. Większość (lub wszystkie)
plików w podkatalogach /etc to pliki konfiguracyjne i Debian nie
nadpisze ich w trakcie instalacji nowszych wersji pakietów, chyba, że
administrator wyraźnie sobie tego zażyczy.
System Debian jest zinternacjonalizowany: obsługuje wyświetlanie i wprowadzanie
znaków w wielu językach, tak na konsoli tekstowej, jak i w Xach. Wiele
dokumentów, stron podręcznika systemowego man i komunikatów
systemu przetłumaczono i tłumaczy się na coraz większą liczbę języków. W
trakcie instalacji, Debian zachęca użytkownika do wybrania języka instalacji
(czasem nawet lokalnego dialektu).
Jeżeli zainstalowany przez Ciebie system nie obsługuje wszystkich właściwości językowych, których potrzebujesz, lub jeżeli chcesz zmienić język lub zainstalować inną klawiaturę, która obsługiwałaby Twój język, zapoznaj się z Lokalizacja i obsługa obcych języków., Rozdział 9.7.
Zobacz Jądro systemu Linux w Debianie, Część 7.
Trzeba zrozumieć obowiązujące w Debianie zasady postępowania odnośnie plików nagłówkowych.
Biblioteki C w Debianie buduje się z wykorzystaniem najnowszych stabilnych wydań plików nagłówkowych jądra (kernel) (Na przykład, Debian-1.2 używał plików nagłówkowych jądra w wersji 5.4.13).
Taka praktyka jest w kontraście ze wszystkimi pakietami zawierającymi pliki
źródłowe jądra, które wykorzystują również nowsze wersje plików nagłówkowych.
Pliki nagłówkowe jądra rozpowszechniane z jego źródłami są umieszczone w
katalogu /usr/include/linux/include/.
W razie potrzeby kompilacji programu wymagającego plików nagłówkowych kernela w
wersji nowszej, niż zawarte w pakiecie libc6-dev, trzeba do linii
poleceń w trakcie kompilacji dodać -I/usr/src/linux/include/. Coś
takiego w pewnym momencie przydarzyło się na przykład pakietowi demona
automountera (amd). Gdy nowsze jądro zmieniło trochę funkcji
obsługujących NFS, amd musiał zostać o tym powiadomiony, co
wymagało dołączenia najnowszej wersji plików nagłówkowych jądra.
Użytkowników, którzy chcą (albo muszą) utworzyć własne pakiety kernela,
zachęcamy do instalacji pakietu kernel-package. Zawiera on skrypt
umożliwiający zbudowanie pakietu zawierającego jądro, umożliwiając w ten sposób
utworzenie Debianowego pakietu zawierającego już skompilowane jądro przez
wydanie polecenia
# make-kpkg kernel_image
w katalogu /usr/src/linux/. Bardziej szczegółowych informacji
udostępnia polecenie
# make-kpkg --help
oraz strona podręcznika systemowego make-kpkg(8) i Jądro systemu Linux w Debianie, Część 7.
Użytkownicy chcący skompilować najnowszy kernel (albo po prostu dowolny,
wymarzony) muszą samodzielnie pobrać kod źródłowy ze swojego ulubionego
archiwum sieciowego, o ile nie jest dostępny pakiet
kernel-source-version, gdzie version oznacza wersję
kernela. Skrypt startowy initrd wymaga specjalnej łaty na kernel
o nazwie initrd; zobacz http://bugs.debian.org/149236.
Szczegółową instrukcję użytkowania pakietu kernel-package można
znaleźć w pliku /usr/doc/kernel-package/README.gz.
Aby skorzystać alternatywnych bootloaderów (grub lub
loadlin), należy skopiować skompilowany kernel (plik
bzImage) w inne miejsce, np. do katalogu /boot/grub
lub na partycję MS-DOS.
Wykonywanie własnych dyskietek startowych jest w dużym stopniu ułatwione przez
pakiet boot-floppies. Można go znaleźć w sekcji
admin sieciowych archiwów Debiana. Skrypty zawarte w tym pakiecie
tworzą dyskietki startowe w formacie syslinux. Są to dyskietki
sformatowane w formacie MS-DOS, których główne rekordy ładujące (master boot
records) zmieniono tak, aby bezpośrednio ładowały Linuksa (albo jakikolwiek
inny system operacyjny, który określono w pliku syslinux.cfg na
dyskietce). Inne skrypty z tego pakietu tworzą dyskietki ratunkowe lub nawet
podstawowe dyskietki instalacyjne.
Więcej informacji na ten temat można znaleźć w pliku
/usr/doc/boot-floppies/README po zainstalowaniu pakietu
boot-floppies.
Pakiet modconf zawiera skrypt /usr/sbin/modconf,
którego można używać w celu wprowadzania własnych modyfikacji do konfiguracji
modułów. Skrypt ten wyświetla menu, wypytując użytkownika o szczegóły
dotyczące ładowanych sterowników urządzeń w jego systemie. Na podstawie
udzielonych odpowiedzi przeprowadzana jest modyfikacja pliku
/etc/modules.conf (wyszczególniającego aliasy i inne argumenty,
których należy użyć w połączeniu z różnymi modułami), w powiązaniu z plikami w
/etc/modutils/ i plikiem /etc/modules (zawierającym
spis modułów, które trzeba załadować przy starcie systemu).
Podobnie jak źródła kernela zostały wyposażone w plik
Configure.help, ułatwiający konfigurację kerneli własnej
produkcji, tak i pakiet modconf daje do dyspozycji serię plików
pomocy (w /usr/lib/modules_help/), dostarczających szczegółowych
informacji na temat odpowiednich argumentów dla każdego modułu. Przykłady
można znaleźć w Zmodularyzowane jądro 2.4, Rozdział
7.2.
Skrypt kernel-image-NNN.prerm sprawdza, czy kernel,
który jest aktualnie załadowany, nie jest tym samym, który usiłujemy
odinstalować. Można więc niechciane pakiety kerneli usuwać używając polecenia
dpkg --purge --force-remove-essential kernel-image-NNN
(Oczywiście, w miejsce NNN trzeba wpisać wersję i podwersję usuwanego kernela).
Oficjalna dokumentacja znajduje się na 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ągle nad tym pracujemy).
Pomimo, że ten rozdział został napisany podczas gdy używano instalatora Potato, większość zawartości została zaktualizowana do instalatora z Woodiego, ale są one dość podobne. Ponieważ Sarge będzie używał zupełnie nowego instalatora, używaj tego rozdziału jako wprowadzenie.
Nie zapomnij sprawdzić http://www.debian.org/CD/netinst/
jeśli szukasz skromniejszego obrazu CD instalatora systemu Debian.
Używanie wersji testing lub unstable Debiana zwiększa
ryzyko poważnych błędów. Ryzyko może zostać ograniczone poprzez używanie
wielorozruchowego schematu z bardziej stabilną wersją, lub stosując
chroot tak jak jest to opisane w chroot, Rozdział 8.6.34. Ten drugi sposób
pozwoli na używanie różnych wersji Debiana jednocześnie na różnych konsolach.
Linux współpracuje z większością sprzętu PC i może być zainstalowany prawie na każdej maszynie. Dla mnie było to równie łatwe jak instalacja Windowsa 95/98/Me. Lista wspieranego sprzętu stale się powiększa.
Jeśli masz laptopa, sprawdź Linux
on Laptops w celu uzyskania wskazówek dotyczących modelu i marki.
Moja rekomendacja dla sprzętu PC to:
Jeśli masz wolny komputer to dobrym pomysłem jest podłączenie dysku do szybszej maszyny na czas instalacji.
Podczas instalacji będziesz musiał wybrać rodzaj swojego sprzętu lub układ płyty głównej. Czasami nie jest łatwo znaleźć takie informacje. Proponuję wówczas:
Następujące polecenia powinny Cię naprowadzić na rodzaj sprzętu i jego konfigurację.
$ lspci -v |pager
$ pager /proc/pci
$ pager /proc/interrupts
$ pager /proc/ioports
$ pager /proc/bus/usb/devices
Polecenia te mogą być wydawane podczas instalacji. W celu włączenia konsoli wciśnij Alt-F2.
Urządzenia podłączone do portów USB są wyszczególnione w
/proc/bus/usb/devices jako Cls=nn:
Jeśli klasa urządzenia jest różna od 255 to system je obsłuży.
Informacje o sprzęcie można również uzyskać, używając innego systemu operacyjnego.
Zainstaluj inną komercyjną dystrybucję Linuksa. Wykrywanie sprzętu jest w nich
jak na razie dużo lepsze niż w Debianie. Ta sytuacja powinna się jednak
zmienić wraz z debian-installer wprowadzonym w dystrybucji Sarge.
Zainstaluj Windows. Konfiguracja sprzętowa może być ustalona poprzez kliknięcie prawym klawiszem myszy na ikonę 'Mój komputer' w celu otworzenia właściwości, a następnie 'Menedżera urządzeń'. Spisz wszystkie informacje takie jak IRQ, I/O adresy portów i DMA. Niektóre stare karty ISA muszą być instalowane pod DOSem.
,,Lilo jest ograniczone do 1024 cylindrów''. NIEPRAWDA !
Nowsze lilo używane po Debianie Potato posiada wsparcie dla lba32.
Jeśli BIOS na Twojej płycie głównej obsługuje lba32 to lilo
powinno być w stanie ładować spoza 1024 cylindra.
Tylko upewnij się, że istnieje wpis ,,lba32'' w pliku lilo.conf
jeśli posiadasz stary odpowiednik. Zobacz
/usr/share/doc/lilo/Manual.txt.gz
Nowy program rozruchowy grub z projektu GNU Hurd może być
zainstalowany na Debianie Woody:
# apt-get update
# apt-get install grub-doc
# mc /usr/share/doc/grub-doc/html/
... przeczytaj zawartość
# apt-get install grub
# pager /usr/share/doc/grub/README.Debian
... to też :)
By zmienić menu GRUB wyedytuj /boot/grub/menu.lst. Zobacz Ustawianie parametrów uruchomieniowych GRUB, Rozdział
8.1.6, żeby się dowiedzieć jak to zrobić, ponieważ program ten różni się w
konfiguracji od lilo.
Dla Potato i zwykłej instalacji dla domowego komputera lubię używać zestawu
dyskietek IDEPCI. Dla Woodiego preferuję zestaw dyskietek bf2.4. Obie używają
pakietu boot-floppies do tworzenia dyskietek startowych.
Jeśli posiadasz kartę sieciową PCMCIA, będziesz musiał użyć standardowego zestawu dyskietek (większa ilość, ale wszystkie moduły sterowników są dostępne) i skonfigurować kartę podczas ustawiania PCMCIA; nie próbuj konfigurować karty podczas standardowej konfiguracji sieci.
Dla specyficznych systemów może wystąpić potrzeba stworzenia własnej dyskietki
ratunkowej. Można tego dokonać podmieniając obraz jądra o nazwie ,,linux'' na
standardowej dyskietce ratunkowej Debiana, na inny skompilowany wcześniej na
innej maszynie. Szczegóły są opisane w pliku readme.txt, który
znajduje się na wspomnianej dyskietce. Dyskietka ratunkowa korzysta z systemu
plików MS-DOS, tak więc można użyć dowolnego systemu operacyjnego by ją
odczytać i zmodyfikować. To powinno uprościć życie ludziom posiadającym
specyficzne karty sieciowe itp.
Dla Sarge zalecane jest używanie debian-installer i/lub
pgi do tworzenia dyskietek rozruchowych.
Stosuj się do oficjalnych instrukcji przedstawionych na http://www.debian.org/releases/stable/installmanual
lub http://www.debian.org/releases/testing/installmanual
(ciągle nad tym pracujemy).
Jeśli instalujesz system używając boot-floppies w
testowym wydaniu Debiana możesz być zmuszony do włączenia konsoli
wciskając Alt-F2 i ręcznej edycji pliku /etc/sources.list w celu
zmiany ,,stable'' na ,,testing'' by określić źródła APT.
Zamierzam umieścić lilo na partycji /dev/hda3,
podczas instalowania mbr na dysku /dev/hda. To
zmniejszy ryzyko nadpisania informacji startowych.
Podczas instalacji wybieram:
Zobacz dselect, Rozdział 6.2.3. Nawet
jeśli jesteś przyzwyczajony do Emacsa unikaj go teraz i korzystaj z nano
podczas instalacji. Na razie nie instaluj dużych pakietów takich jak TeX
(miało to miejsce w Potato). Zobacz Edytory awaryjne,
Rozdział 11.2 by dowiedzieć się o instalacji nano-tiny lub elvis-tiny.
exim: wybieram 2 dla maszyn ponieważ wysyłam pocztę poprzez serwer
SMTP mojego dostawcy Internetu.
Więcej informacji na temat dselect znajdziesz tu - dselect, Rozdział 6.2.3.
Przykład konfiguracji sieci LAN (C podsieć: 192.168.1.0/24):
Internet
|
+--- Zewnętrzny ISP zapewnia usługę POP (dostęp poprzez fetchmail)
|
Punkt dostępowy zapewnia usługi DHCP i SMTP
| :
Modem kablowy (Dialup)
| :
Bramka sieciowa, zewnętrzny interfejs: eth0 (numer IP przydzielony przez DHCP)
używa starego notebooka PC (IBM Thinkpad, 486 DX2 50 MHz, 20MB RAM)
uruchomione jądro Linux 2.4 z obsługą systemu 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ępami czasu (fallback)
uruchomiony ,,bind'' jako buforujący serwer nazw z sieci do Internetu
jako autorytatywny serwer nazw dla sieci wewnętrznej
uruchomione ,,ssh'' na portach 22 i 8080 (możliwość połączenia skądkolwiek)
uruchomiony ,,squid'' jako buforujący serwer dla archiwów Debiana (APT)
Bramka sieciowa, wewnętrzny interfejs: 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, Część 10 by uzyskać więcej szczegółów na temat konfiguracji bramki sieciowej.
By mieć poczucie spójności na różnych maszynach, na początku zakładam kilka takich samych kont.
Zawsze pierwsze konto które zakładam nosi nazwę ,,admin'' lub podobną i kieruję
na nie wszystkie listy roota. Konto to przydzielam do grupy adm
(zobacz ,,Dlaczego GNU su nie obsługuje grupy
wheel'', Rozdział 9.2.2), która pozwala na przyznanie wielu
przywilejów administratora poprzez su za pomocą PAM lub polecenia
sudo. Szczegóły znajdziesz w Dodawanie konta
użytkownika, Rozdział 4.2.2.
Wolę zakładać osobne partycje dla poszczególnych katalogów z drzewa ,,/'' by uniknąć utraty 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ży od miejsca jakie zajmują aplikacje i
dokumentacja X Window. /usr może mieć rozmiar 300MB jeśli ktoś
używa tylko trybu tekstowego, ale 2GB–3GB nie jest niczym szczególnym
podczas korzytania z wielu aplikacji Gnome. Gdy katalog /usr
będzie zajmował zbyt dużo miejsca można przenieść pliki z
/usr/share/ na inną partycje. Przy jądrach 2.4 katalog root może
potrzebować ponad 200MB
Obecny stan mojej maszyny wygląda następująco (wydruk uzyskasz wprowadzając polecenie df -h):
System plików rozm. użyte dost. %uż. 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ży obszar zarezerwowany dla /var/spool/squid przeznaczony jest
na serwer pośredniczący dla pobierania pakietów.)
Wprowadzając polecenie 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żywana)
/dev/hda3 * 85 126 317520 83 Linux # Główna
/dev/hda4 127 629 3802680 5 Extended
/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żywanych partycji. Są one założone z myślą o innych systemach operacyjnych, bądź przenoszeniu danych z obciążonych części dysku.
Poprawne montowanie powyższych systemów plików jest realizowane następującym
plikiem /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ża partycja dla serwera pośredniczacego (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 montowań nfs
mickey:/ /mnt/mickey nfs ro,noauto,intr 0 0
goofy:/ /mnt/goofy nfs ro,noauto,intr 0 0
# minnie:/ /mnt/minnie smbfs ro,soft,intr,credentials={filename} 0 2
Przy NFS, używam opcji noauto,intr w połączeniu z domyślną opcją hard. Tym sposobem, istnieje możliwość wciskając kombinację Ctrl-C, uratowania się z sytuacji gdy nie mamy połączenia i proces montowania zawiesi się.
W przypadku maszyny z systemem Windows podłączonej poprzez Sambę (smbfs), opcje rw,auto,soft,intr powinny być odpowiednie. Zobacz Konfiguracja Samby, Rozdział 3.5.
Dla stacji dyskietek użycie opcji noauto,rw,sync,user,exec zapobiega uszkodzeniu plików przy przypadkowym wyjęciu dyskietki przed jej odmontowaniem. Dzieje się to jednak kosztem wolniejszego zapisu.
Wskazówki do automatycznego montowania:
/etc/auto.misc zawierało
-fstype=auto:
# modprobe vfat # przed próbą dostępu do dyskietki
... lub by zautomatyzować tę czynność,
# cat >>/etc/modules
vfat
^D
... następnie uruchom ponownie system.
/etc/auto.misc następująco:
floppy -fstype=auto,sync,nodev,nosuid,gid=100,umask=000 :/dev/fd0
... gdzie gid=100 to ,,users''.
cdrom i floppy w
/home/user, które wskazywać będą na
/var/autofs/misc/cdrom i /var/autofs/misc/floppy.
Zewnętrzny serwer Linux NFS (goofy) znajduje się za ścianą ogniową (bramką
sieciową). Zasady bezpieczeństwa w mojej sieci w stosunku do niego są mniej
restrykcyjne ponieważ jestem jego jedynym użytkownikiem. By umożliwić dostęp
do NFS, trzeba po jego stronie dodać do /etc/exports następujące
wpisy:
# /etc/exports: the access control list for filesystems which may be
# exported to NFS clients. See exports(5).
/ (rw,no_root_squash)
Chcąc uruchomić serwer NFS potrzebne są powyższe wpisy oraz oczywiście instalacja i uruchomienie klienta i serwer NFS.
Dla uproszczenia zazwyczaj tworzę pojedynczą partycję o rozmiarze 2GB na
eksperymentalne instalacje Linuksa. Opcjonalnie współdzielę pomiędzy tymi
instalacjami partycję wymiany oraz /tmp. Schematy zawierające
wiele partycji są również przydatne w takich instalacjach. Jeśli natomiast
potrzeba nam prostego systemu w trybie konsoli, w zupełności powinno wystarczyć
500MB.
Bezwzględne wytyczne dotyczące DRAM.
4MB: Absolutne minimum by jądro Linuksa mogło funkcjonować.
16MB: Minimum dla rozsądnej pracy 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ęcej): Dlaczego nie jeśli jesteś w stanie je zdobyć? DRAM jest tani.
Możesz podczas rozruchu systemu użyć opcji mem=4m (lub w lilo append="mem=4m") by sprawdzić jak zachowa się system z 4MB pamięci operacyjnej. Jeśli posiadasz stary BIOS i więcej niż 64MB pamięci to również musisz użyć odpowiedniego parametru w lilo.
Używam następujących wytycznych dla przestrzeni wymiany:
/etc/fstab. Powoduje to, że jądro
obsługuje przestrzeń wymiany jako paskowany RAID co gwarantuje maksymalną
wydajność.
Nawet jeśli nie potrzebujesz, to i tak pożądane jest ustawienie partycji wymiany (128MB) po to by system zwolnił zanim zawiesi się z powodu programu z wyciekiem pamięci.
Modyfikuję skrypty startowe powłoki znajdujące się w systemie tak by spełniały moje zachcianki:
/etc/bash.bashrc Zastępuję własnym
/etc/profile Pozostawiam bez zmian(\w -> \W)
/etc/skel/.bashrc Zastępuję własnym
/etc/skel/.profile Zastępuję własnym
/etc/skel/.bash_profile Zastępuje własnym
~/.bashrc Zastępuję własnym dla każdego konta
~/.profile Zastępuję własnym dla każdego konta
~/.bash_profile Zastępuję własnym dla każdego konta
Zobacz szczegóły moich przykładowych
skryptów. Lubię mieć przejrzysty system więc ustawiam
umask na 002 lub 022.
PATH jest ustawiany poprzez następujące pliki konfiguracyjne w tej
kolejności:
/etc/login.defs - zanim powłoka ustawi zmienną PATH
/etc/profile (może wywoływać /etc/bash.bashrc)
~/.bash_profile (może wywoływać ~/.bashrc)
W przypadku płyty głównej ATX i myszy podłączonej przez PS/2, przepływ sygnału powinien być następujący:
mysz -> /dev/psaux -> gpm -> /dev/gpmdata = /dev/mouse -> X
W tym przypadku utworzone zostało dowiązanie symboliczne
/dev/mouse wskazujące na /dev/gpmdata po to by
niektóre narzędzia konfiguracyjne były szczęśliwe i by rekonfiguracja była
prostsza. (Jeśli na przykład zrezygnujesz z używania gpm
wystarczy, że po jego usunięciu zmienisz dowiązanie symboliczne
/dev/mouse tak by wskazywało na /dev/psaux).
Taki przepływ sygnału pozwala na wyłączenie klawiatury oraz myszki oraz po
ponownym ich podłączeniu uruchamiając gpm umożliwia jeszcze raz je
zainicjalizować. Serwer X pozostanie uruchomiony!
Protokół sygnału przepływającego pomiędzy wyjściem gpm a wejściem
X może być zaimplementowany na dwa sposoby. Albo jako ,,ms3'' (używa protokołu
dla szeregowych 3 przyciskowych myszek Microsoft) albo jako ,,raw'' (używa tego
samego protokołu co podłączona myszka). Wybór ten determinuje późniejszy wybór
protokołu używanego w konfiguracji X.
By zademonstrować konfigurację, za przykład posłuży mi 3-przyciskowa mysz firmy Logitech (tradycyjna mysz stylu Unix) podłączana do portu PS/2.
Jeśli twoja karta graficzna nie jest wspierana przez nowy X4 i musisz używać starego X3 (niektóre 64 bitowe karty ATI), skonfiguruj /etc/X11/X86Config zamiast /etc/X11/X86Config-4 w następujący sposób podczas instalacji pakietów X3.
/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śli używasz takiego podejścia, konfiguracja myszy odbywa się poprzez edycję
gpm.conf, natomiast konfiguracja X zostaje niezmieniona. Zobacz
przykłady moich skryptów konfiguracyjnych.
/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śli używasz takiego podejścia, konfiguracja myszy odbywa się poprzez edycję
gpm.conf oraz konfigurację Xów.
Urządzenie gpm typu autops2 powinno rozpoznać
większość myszek PS/2 dostępnych na rynku. Niestety nie zawsze działa i nie
jest dostępne w poprzednikach wersji Woody. Spróbuj w takich przypadkach użyć
ps2 lub imps2 w pliku gpm.conf zamiast
autops2. By dowiedzieć się więcej o typach myszy gpm
wpisz :gpm -t help. Zobacz gpm(8).
Jeśli używasz 2-przyciskowej myszy PS/2, ustaw protokół X włączając opcje
Emulate3Buttons. Różnice między protokołami 2-przyciskowej i
3-przyciskowej myszy są automatycznie rozpoznawane i ustawiane przez
gpm po naciśnięciu środkowego przycisku.
Dla protokołu X z Wariant raw, Rozdział 3.3.1.2 lub bez
gpm użyj:
gpm repeater with
,,ms3'')
Zobacz więcej na Mouse Support in
XFree86.
Typowe myszy Microsoft z kółkiem najlepiej pracują z:
/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łączenie gpm przed PCMCIA w
skryptach inicjalizujących System-V może pomóc przy zapobieganiu zawieszenia
systemu. Dziwne ale to prawda.
Upewnij się, że masz wkompilowane w jądro lub jako moduły wszystkie niezbędne funkcje:
input.o),
mousedev.o),
usbcore.o),
usb-uhci.o || uhci.o ||
usb-ohci.o),
hid.o) i
Małymi literami wymienione są nazwy modułów.
Jeśli używasz devfs to stwórz wpis w /dev/input/mice zawierający
major 13 i minor 63 w następujący sposób:
# cd /dev
# mkdir input
# mknod input/mice c 13 63
Dla typowej myszki z kółkiem na USB konfiguracja powinna wyglądać następująco:
/etc/gpm.conf | /etc/X11/X86Config-4
=========================+======================================
device=/dev/input/mice | Section "InputDevice"
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ć się więcej odwiedź Linux USB Project
Pomimo, że touchpad w laptopach emuluje standardowo 2-przyciskową mysz PS/2,
pakiet tpconfig pozwala na pełną kontrolę nad urządzeniem.
Przykładowo ustawienie OPTIONS="--tapmode=0" w
/etc/default/tpconfig wyłączy zachowanie ,,click by tap''. Ustaw
/etc/gpm.conf następująco, by używać jednocześnie touchpada i
myszy na porcie USB pod konsolą:
device=/dev/psaux
responsiveness=
repeat_type=ms3
type=autops2
append="-M -m /dev/input/mice -t autops2"
sample_rate=
Konfiguracja NFS odbywa się poprzez przez ustawienie /etc/exports.
# echo "/ *.nazwa-domeny-dla-lokalnych(rw,no_root_squash,nohide)" \
>> /etc/exports
Szczegóły znajdziesz w moich przykładowych
skryptach.
Szczegółowe informacje:
http://www.samba.org/
samba-doc
Ustawienie serwera Samba w trybie ,,share'' jest dużo prostsze ponieważ tworzy współdzielone napędy typu WindowsForWorkgroups. Ale tryb ,,user'' jest preferowaną metodą.
Samba może zostać skonfigurowana poprzez debconf lub
vi:
# dpkg-reconfigure --priority=low samba # w Woody
# vi /etc/samba/smb.conf
Szczegóły znajdziesz w moich przykładowych
skryptach.
Dodawanie nowego użytkownika do pliku smbpasswd może być wykonane
poprzez smbpasswd:
$ su -c "smbpasswd -a username"
Pamiętaj o użyciu zaszyfrowanych haseł dla optymalnej zgodności.
Ustaw os level zgodnie z następującymi odpowiednikami systemu (im większa liczba, tym większy priorytet jako serwer)
0: Samba ze swobodną pozycją (nigdy nie będzie przeglądarką nadrzędną)
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ężną mocą
Upewnij się, że użytkownicy są członkami grupy do której przynależy katalog umożliwiający współdzielony dostęp, oraz że ścieżka do tego katalogu posiada odpowiednio ustawione uprawnienia bitu wykonywalności.
Tradycyjną metodą jest lpr/lpd. Istnieje nowy system
drukowania CUPS™ (Common UNIX Printing System). Inną możliwością jest
PDQ. Zobacz Linux Printing
HOWTO w celu uzyskania dodatkowych informacji.
lpr/lpd
Dla programów kolejkujących typu lpr/lpd
(lpr, lprng i gnulpr) podłączonych do
drukarek PostScript lub tekstowych ustaw /etc/printcap następująco
(podstawy):
lp|alias:\
:sd=/var/spool/lpd/lp:\
:mx#0:\
:sh:\
:lp=/dev/lp0:
Znaczenie powyższych linii:
To dobra konfiguracja jeśli posiadasz drukarkę PostScript. Jest to również dobre ustawienie do drukowania z maszyny Windows poprzez Sambę, dla każdej drukarki obsługiwanej przez Windows (nie jest obsługiwana komunikacja dwukierunkowa). Musisz wybrać odpowiednie ustawienia drukarki na maszynie z Windows.
Jeśli nie masz drukarki PostScript powinieneś ustawić filtrowanie za pomocą
gs. Istnieje wiele narzędzi automatycznie konfigurujących
/etc/printcap. Każda z tych kombinacji jest właściwa:
gnulpr, (lpr-ppd) i printtool —
Właśnie tego używam.
lpr i apsfilter
lpr i magicfilter
lprng i lprngtool
lprng i apsfilter
lprng i magicfilter
W przypadku uruchamiania narzędzia konfiguracyjnego wykorzystującego graficzny
interfejs użytkownika, jak na przykład printtool, zobacz najpierw
Uprawnienia administratora w X, Rozdział 9.4.11 aby
dowiedzieć się jak uzyskać przywileje administratora. Kolejki wydruku
utworzone przez printtool używają programu gs i
występują jako drukarki PostScript. Dlatego, gdy z nich korzystasz, używaj
sterowników PostScriptowych. W systemie Windows ,,Apple LaserWriter'' jest
standardowym przykładem takiej drukarki..
Zainstaluj Common UNIX Printing System (lub CUPS™):
# apt-get install cupsys foomatic-bin foomatic-db
# apt-get install cupsys-bsd cupsys-driver-gimpprint
Następnie skonfiguruj system używając przeglądarki internetowej:
$ mybrowser http://localhost:631
Przykład w jaki sposób dodać drukarkę do listy dostępnych:
Więcej informacji znajdziesz na http://localhost:631/documentation.html
i http://www.cups.org/cups-help.html.
Dla jądra 2.4 zobacz również Wsparcie dla portów równoległych, Rozdział 7.2.6.
Jeśli wszystko przebiegło bez problemów to posiadasz już mały, funkcjonalny system Debian. Czas na instalację większych pakietów.
tasksel. Zobacz Instalowanie
zadań programem tasksel lub aptitude,
Rozdział 6.2.1.
Możesz wybrać następujące elementy jeśli są Ci potrzebne:
tasksel jako przewodnika po komponentach
wyszczególnionych w <Task Info> i instalować je programem
dselect.
dselect.
Pierwszą rzeczą jaką możesz zrobić jest wybór Twojego ulubionego edytora i
innych programów, które są Ci potrzebne. Możesz zainstalować wiele odmian
Emacsa na raz. Zobacz dselect, Rozdział
6.2.3 i Popularne edytory, Rozdział 11.1.
Możesz również zastąpić niektóre domyślne pakiety takimi z większymi możliwościami.
Zazwyczaj edytuję /etc/inittab w celu łatwego wyłączania
komputera.
...
# Co zrobić gdy wciśnięte są klawisze CTRL-ALT-DEL
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now
...
Moduły dla sterowników urządzeń są konfigurowane podczas podstawowej
instalacji. modconf oferuje możliwość konfiguracji modułów przy
pomocy systemu menu. Jest on bardzo użyteczny, gdy jakieś moduły zostały
opuszczone podczas instalacji nowego jądra.
Nazwy wszystkich wstępnie ładowanych modułów są wyszczególnione w pliku
/etc/modules. Używam również lsmod i
depmod by sterować nimi ręcznie.
Dla jądra 2.4 dodaj wpis w pliku /etc/modules pozwalający obsłużyć
IP masquerading (FTP, itp.). Zobacz Zmodularyzowane jądro 2.4, Rozdział 7.2, a
dokładniej Obsługa sieci, Rozdział 7.2.3.
Wyedytuj następujące pliki:
/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". Jeśli będzie to konieczne to również
"sr".)
Zobacz Nagrywarki CD, Rozdział 9.3 by dowiedzieć się więcej.
Zmodyfikuj /etc/lilo.conf wg instrukcji poniżej aby uwzględnić
obsługę większego rozmiaru pamięci (dla jąder 2.2) oraz automatycznego
wyłączania (dla APM):
append="mem=128M apm=on apm=power-off noapic"
Teraz uruchom lilo aby zainstalować te ustawienia.
apm=power-off jest wymagane dla jąder z obsługą wielu procesorów,
a noapic jest potrzebne by unikać kłopotów z moim wadliwym
sprzętem. Tego samego można dokonać wpisując podane opcje bezpośrednio podczas
ukazania się znaku zachęty programu uruchomieniowego. Zobacz Inne triki stosowane podczas startu systemu, Rozdział
8.1.5.
Jeśli APM jest kompilowany jako moduł, jak to ma miejsce w domyślnym jądrze
Debiana 2.4, uruchom insmod apm power_off=1 po wystartowaniu
systemu lub wpisz odpowiednie opcje do /etc/modules, na przykład
tak:
# echo "apm power_off=1" >>/etc/modules
Kompilując obsługę ACPI można osiągnąć to samo z nowszymi jądrami i wygląda na to, że jest to bardziej przyjazne dla wieloprocesorowych maszyn (wymaga to jednak nowszej płyty głównej). Na jądrach z serii 2.4 i nowszych płytach głównych większe ilości pamięci powinny być wykrywane prawidłowo.
CONFIG_PM=y
CONFIG_ACPI=y
...
CONFIG_ACPI_BUSMGR=m
CONFIG_ACPI_SYS=m
i dodaj w tej kolejności poniższe linie do /etc/modules:
ospm_busmgr
ospm_system
Lub przekompiluj jądro z tymi opcjami ustawionymi na ,,y''. W żadnym z przypadków użycia ACPI, nie są potrzebne żadne parametry podczas uruchamiania.
W nowszych jądrach Linuksa standardowo włączone jest ECN. Może to powodować problemy z dostępem do niektórych witryn WWW. By sprawdzić status ECN:
# cat /proc/sys/net/ipv4/tcp_ecn
... lub
# sysctl net.ipv4.tcp_ecn
Chcąc go wyłączyć, użyj:
# echo "0" > /proc/sys/net/ipv4/tcp_ecn
... lub
# sysctl -w net.ipv4.tcp_ecn=0
W celu wyłączenia ECN podczas każdego restartu, wyedytuj plik
/etc/sysctl.conf i dodaj:
net.ipv4.tcp_ecn = 0
Zainstaluj pakiet pppconfig w celu skonfigurowania połączenia z
Internetem za pomocą modemu.
# apt-get install pppconfig
# pppconfig
... stosuj się do wskazówek by skonfigurować połączenie modemowe
# adduser nazwa_użytkownika dip
... pozwól użytkownikowi >nazwa_użytkownika na dostęp do modemu
Połączenie modemowe może być zainicjowane przez użytkownika (>nazwa_użytkownika):
$ pon nazwa_ISP # rozpoczęcie dostępu poprzez modem do Twojego ISP
... możesz cieszyć się Internetem
$ poff nazwa_ISP # zatrzymuje dostęp, nazwa_ISP dowolna.
Więcej informacji znajdziesz na
/usr/share/doc/ppp/README.Debian.gz.
Do skonfigurowania połączenia modemowego może być też użyty pakiet
wvdial. Zauważ, że jest dobrze znany błąd http://bugs.debian.org/82095,
który czasem powoduje, że nie-administrator nie może się wdzwonić.
Wszystkie te programy używają demona pppd, który uruchamia
programy znalezione w /etc/ppp/ip-up.d/ lub
/etc/ppp/ip-down.d/ po tym gdy się połączy lub rozłączy. Jest to
używane do pobierania i wysyłania poczty.
/etc/
Możesz chcieć dodać plik /etc/cron.deny, brakujący po podstawowej
instalacji Debiana (skopiuj /etc/at.deny)
Ten rozdział przedstawia nowym użytkownikom podstawową wiedzę o świecie Linuksa. Jeśli używałeś już Linuksa, potraktuj go jako przypomnienie wiadomości.
Patrz do Debian Documentation
Project (DDP), gdzie znajdują się najbardziej wiarygodne informacje
o Debianie. Zazwyczaj wiele z tych dokumentów jest instalowanych w
/usr/share/doc/. Spójrz też do /usr/share/doc-base/,
gdzie zamieszczone są odnośniki do dokumentacji systemu. Dodaj export
CDPATH=.:/usr/share/doc:/usr/src/local do ~/.bash_profile,
aby mieć łatwiejszy dostęp do katalogów z dokumentacją.
Linux Documentation Project
(LDP) posiada najbardziej wiarygodne, ogólne informacje o Linuksie.
Zawartość LDP jest zwykle instalowana w /usr/share/doc/HOWTO/.
Poruszaj się wśród dokumentów na lokalnych i zdalnych FTP, używając F9 w programie Midnight Commander (zob. Midnight Commander (MC), Rozdział 4.3).
W zwykłym systemie Linux znajduje się sześć niezależnych pseudoterminali. Przełączaj się między nimi wciskając jednocześnie klawisze Lewy-Alt i klawisze od F1 do F6. Każdy pseudoterminal pozwala na niezależne logowanie się do kont użytkownika. Środowisko wieloużytkownikowe to wspaniała cecha Uniksa, po poznaniu której ciężko pracować inaczej.
Dobrym nawykiem uniksowym jest logowanie się na konto zwykłego użytkownika do większości zadań. Muszę przyznać, że kiedyś używałem konta superużytkownika (konto root) częściej, niż potrzebowałem, głównie z powodu wygody i mojego niechlujstwa.
Obecnie, zwykle używam normalnego konta oraz polecenia sudo, super czy su -c, aby uzyskać ograniczone przywileje roota.
Po instalacji systemu zwykle dodaję konto zwykłego użytkownika. Jeśli nazwą użytkownika jest ,,penguin'',
# adduser penguin
utworzy to konto.
Używam polecenia vigr do modyfikacji /etc/group jak
niżej:
adm:x:4:admin
src:x:40:admin, debian, ...
...
Przy domyślnej instalacji systemu, członkowie grupy adm mogą
czytać wiele plików dziennika z /var/log/ oraz używać
xconsole. Grupa staff będąca właścicielem
/home, sprawia, że jej członkowie mogą zarządzać kontami. Grupa
src jest właścicielem /usr/src/, który jest używany
do kompilacji jądra, itd. By uzyskać pełniejsze informacje o znaczeniu
użytkowników i grup, zobacz Użytkownicy i
grupy.
Osobiście używam grupy staff dla użytkowników wykonujących
czynności administracyjne i mających wyłączny przywilej su (zob.,,Dlaczego GNU su nie obsługuje grupy
wheel'', Rozdział 9.2.2) oraz src dla CVS (zob.
CVS, Rozdział 12.1).
Zobacz adduser, addgroup, vipw,
vipw -s, vigr, oraz vigr -s do właściwej
konfiguracji użytkowników i grup.
Tak jak każdy współczesny OS, który cache'uje pliki w pamięci, Linux wymaga właściwej procedury zamykania systemu, zanim zasilanie może zostać bezpiecznie wyłączone. Polecenie dla trybu wieloużytkownikowego:
# shutdown -h now
Polecenie dla trybu jednego użytkownika:
# poweroff -i -f
Poczekaj na wyświetlenie przez system informacji ,,System halted'' i dopiero wtedy wyłącz zasilanie. Jeśli APM zostało włączone w BIOSie i Linuksie, komputer wyłączy się sam. Zobacz Automatyczne wyłączanie komputera oraz komputery z większą ilością pamięci, Rozdział 3.7.4 w celu zapoznania się ze szczegółami.
Domyślna powłoka, bash, posiada możliwość edycji historii. Użyj
klawisza kursora ,,góra'', aby wejść do historii, a następnie klawiszy kursora
tak, jak oczekujesz. Inne ważne kombinacje klawiszy:
Ctrl-U: Usuwa linię przed kursorem
Ctrl-D: Przerwanie wprowadzania
Kliknięcie lewym przyciskiem myszy i przeciągnięcie: Zaznacz i skopiuj do schowka (gpm)
Kliknięcie środkowym przyciskiem myszy: Wklej schowek na miejsce kursora (gpm)
Ctrl-V TAB: Wstawia TAB bez rozszerzeń.
W normalnej konsoli Linuksa tylko lewe klawisze Ctrl i Alt działają, jak oczekujesz.
Typowe wywołanie polecenia korzysta z następującego wpisu w powłoce:
$ LC_ALL=fr ls -la
W podanym przykładzie program ls jest uruchamiany w tle ze zmienną
środowiskową LC_ALL ustawioną na fr dla uzyskania
języka francuskiego i argumentem linii poleceń ustawionym na -la
dla wyświetlania wszystkiego ze szczegółami. Jeśli linia poleceń jest
zakończona znakiem &, to polecenie jest uruchamiana w tle.
Działanie w tle pozwala użytkownikowi na uruchamianie wielu programów w jednej
powłoce.
Na wykonywanie poleceń można wpływać następującymi skrótami klawiszowymi.
Ctrl-C: Kończy program
Ctrl-Z: Tymczasowo zatrzymuje program
Ctrl-S: Zatrzymuje wyświetlanie na ekran
Ctrl-Q: Przywraca wyświetlanie na ekran
Ctrl-Alt-Del: Reboot/zatrzymanie systemu (zob. /etc/inittab)
O zarządzaniu wykonywaniem programu przeczytaj w bash(1) o
jobs, fg, bg i stop.
Poniżej znajdują się podstawowe 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, ...
Sprawdź znaczenie poleceń przez wpisanie ich w powłoce albo wpisanie man lub info plus nazwa polecenia. Wiele poleceń linuksowych wyświetla skróconą pomoc po wywołaniu ich w następujący sposób:
$ nazwa_polecenia --help
$ nazwa_polecenia -h
whatis nazwa_polecenia wyświetla jednoliniowe podsumowanie o każdym poleceniu w systemie, dla którego istnieje wpis w podręczniku (manual).
Aby uruchomić system X Window z konsoli w linii poleceń wpisujemy:
# exec startx
Prawe kliknięcie na głównym oknie spowoduje pojawienie się menu.
Oto niektóre ważne kombinacje klawiszy do zapamiętania (plus i minus odnoszą się do klawiatury numerycznej):
Alt-F1 do F6: Przełączenie między pseudoterminalami
Ctrl-Alt-F1 do F6: Przełączenie między pseudoterminalami
(z X-window, DOSEMU, itd.)
Alt-F7: Przełączenie z powrotem do X-window
Ctrl-Alt-minus: Zmiana rozdzielczości ekranu w X-window
Ctrl-Alt-plus: Zmiana rozdzielczości ekranu w przeciwną stronę w X-window
Ctrl-Alt-Backspace: Zakończenie X-ów
Alt-X, Alt-C, Alt-V: Zwykłe windowsowe/makowe Wytnij, Kopiuj, Wklej, z tym, że
klawisz Ctrl w niektórych programach jest zastąpiony
przez Alt (np. w Netscape Composer).
Midnight Commander (MC) jest uniwersalnym narzędziem dla konsoli Linuksa oraz innych środowisk terminalowych.
# apt-get install mc
Następnie zmień wpisy w ~/.bashrc (lub
/etc/bash.bashrc, wywoływanym z .bashrc), tak jak
dokładnie opisano to w jego podręczniku, mc(1), w opisie opcji
-P. To pozwala MC na zmianę katalogu roboczego na wyjściu.
Jeśli uruchamiasz MC w terminalu, np. kon i Kterm
dla japońskiego, który używa pewnych znaków graficznych, dodanie
-a do linii poleceń MC może pomóc w uchronieniu przed problemami.
$ mc
MC zajmuje się wszystkimi operacjami na plikach wykonywanymi przez jego menu, wymagając minimalnego wysiłku od użytkownika.
Domyślne ustawienie to dwa okna zawierające listy plików. Kolejnym użytecznym
trybem jest ustawienie prawego okna w tryb ,,informacja'', co pozwala zobaczyć
prawa dostępu itp. Poniżej są niektóre ważniejsze skróty klawiszowe. Z
użyciem uruchomionego demona gpm można też używać myszy. (Upewnij
się, że naciskasz klawisz Shift w celu uzyskania normalnego działania Kopiuj i
Wklej w MC.)
cd zmieni katalog pokazany na wybranym ekranie.
cp czy mv z edycją w powłoce.
Wewnętrzny edytor ma interesujący schemat kopiuj-i-wklej. Naciśnięcie F3 oznacza początek wyboru, kolejne wciśnięcie F3 oznacza koniec wyboru i podświetla zaznaczony obszar. Wtedy możesz ruszać kursorem. Gdy naciśniesz F6, zaznaczony obszar zostanie przeniesiony do miejsca, w którym jest kursor. Gdy przyciśniesz F5, zaznaczony obszar zostanie skopiowany i wklejony w miejsce, w którym jest kursor. F2 zapisuje plik. F10 powoduje zakończenie MC. Klawisze kursora zwykle działają intuicyjnie.
Edytor może być wywołany dla pliku:
$ mc -e plik_do_edycji
$ mcedit plik_do_edycji
Nie jest to edytor wielookienkowy, ale możesz osiągnąć podobny efekt używając wielu konsoli linuksowych. Aby kopiować pomiędzy oknami, użyj klawiszy Alt-Fn do przełączania konsol wirtualnych, a do wklejania fragmentu pliku do innego pliku, użyj ,,Plik->Wstaw plik'' lub ,,Plik->Kopiuj do pliku''.
Wewnętrzny edytor może być zastąpiony przez dowolnie wybrany zewnętrzny.
Także wiele programów używa zmiennej środowiskowej EDITOR czy
VISUAL by określić, którego edytora użyć. Jeśli nie odpowiada Ci
vim, ustaw go na mcedit przez dodanie poniższych
linii do ~/.bashrc:
...
export EDITOR=mcedit
export VISUAL=mcedit
...
Zalecam jednak ustawienie ich na vim, jeśli to możliwe. Przywyknięcie do poleceń vi(m)a jest dobrą rzeczą, gdyż są one nieodłączną cechą świata Linuksa/Uniksa.
Bardzo sprytne narzędzie. Jest świetny do wyszukiwania słów w dokumentach.
Zawsze używam go do przeglądania plików w katalogu /usr/share/doc.
To najszybszy sposób na przeglądanie mas informacji o Linuksie. Podgląd można
uruchomić bezpośrednio w taki sposób:
$ mc -v nazwa_pliku_do_podglądu
(Zauważ, że niektóre pakiety łamią zasady i wciąż przechowują swoje
dokumentacje w /usr/doc.)
Wciśnij Enter na pliku i właściwy program zajmie się jego zawartością. Jest to bardzo wygodna cecha MC.
wykonywalny: Wykonanie pliku wykonywalnego
plik man, html: Przesłanie zawartości pliku przez przeglądarkę
plik tar, gz, rpm: Przeglądanie zawartości pliku jako podkatalogu
W celu umożliwienia działania funkcji przeglądania, ,,przeglądalne'' pliki nie
mogą być określone jako wykonywalne. Zmień ich status używając polecenia
chmod lub przez menu plików w MC.
MC może służyć do dostępu do plików przez Internet przy użyciu FTP. Wejdź do menu wciskając F9, następnie wpisz `p', by aktywować wirtualny system plików FTP. Wpisz URL w formie: nazwa_użytkownika:hasło@nazwa_hosta.nazwa_domeny, co spowoduje pojawienie się katalogu zdalnego, wyglądającego jak lokalny.
Każdy plik i katalog w systemie plików GNU/Linux jest związany z użytkownikiem, który posiada plik (właściciel), oraz z grupą, do której należy. Wszystkie informacje o pliku są przechowywane w strukturze danych zwanej iwęzłem (inode).
Prawa dostępu do plików i katalogów są definiowane oddzielnie dla następujących trzech kategorii użytkowników, których dotyczą:
Dla pliku każde prawo pozwala odpowiednio na:
Dla katalogu każde prawo pozwala odpowiednio na:
Tutaj prawo wykonania dla katalogu oznacza nie tylko prawo do odczytu plików w nim zawartych, ale także na przeglądanie atrybutów takich jak rozmiar i czas modyfikacji.
Aby otrzymać informacje o uprawnieniach (oraz inne) plików i katalogów, używa
się polecenia ls. Zobacz ls(1). Gdy ls
jest wywołane z parametrem -l, wyświetla następujące informacje w
następującej kolejności:
Aby zmienić właściciela pliku, używa się z konta root polecenia
chown. Zobacz chown(1). Aby zmienić grupę pliku,
używa się polecenia chgrp z konta właściciela pliku lub konta
root. Zobacz chgrp(1). Aby zmienić prawa dostępu do plików czy
katalogów, używa się polecenia chmod, także z konta użytkownika
lub konta root. Zobacz chmod(1).
Na przykład w celu uczynienia użytkownika foo właścicielem drzewa katalogów, a grupy bar współwłaścicielem, wykonaj następujące polecenia z konta root:
# cd /some/location/
# chown -R foo:bar
# chmod -R ug+rwX,o=rX
Istnieją jeszcze trzy specjalne bity uprawnień:
Na wyjściu polecenia ls -l dużymi literami oznaczane są bity, na
których miejscu bit wykonywalności nie był ustawiony.
Ustawienie ID użytkownika dla pliku wykonywalnego pozwala użytkownikowi na wykonanie tego pliku z ID właściciela pliku (na przykład root). Podobnie, ustawienie ID grupy dla pliku wykonywalnego, pozwala użytkownikowi na wykonanie pliku z ID grupy pliku (na przykład root). Pnieważ może to powodować ryzyko naruszenia bezpieczeństwa, włączanie tych opcji wymaga szczególnej ostrożności.
Ustawienie ID grupy dla katalogu uaktywnia schemat tworzenia plików w stylu BSD, w którym wszystkie pliki tworzone w tym katalogu należą do grupy, mającej do niego uprawnienia.
Ustawienie bitu lepkości dla katalogu zapobiega usuwaniu z
niego plików przez użytkowników, którzy nie są właścicielami tych pliku. W
celu zabezpieczenia zawartości pliku w katalogach zapisywalnych, takich jak
/tmp czy w katalogach, w których prawo zapisu ma grupa, potrzeba
nie tylko, by było wyłączone prawo zapisu dla pliku, ale także
należy ustawić sticky bit dla katalogu. W innym przypadku
plik może zostać usunięty, a następnie w jego miejsce może zostać utworzony
nowy plik, o takiej samej nazwie przez dowolnego użytkownika, który ma prawo
zapisu do tego katalogu.
Poniżej kilka interesujących przykł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
Dla plików GNU/Linux istnieją trzy typy znaczników czasu:
Zauważ, że ctime nie jest czasem utworzenia pliku.
Zauważ, że nawet zwykły odczyt z pliku w systemie GNU/Linux powoduje normalnie
operację zapisu w celu aktualizacji informacji atime w
inode. Montowanie systemu plików z opcją noatime
option pozwoli systemowi na ominięcie tej operacji i zaowocuje szybszym
dostępem do pliku przy odczycie. Zobacz mount(8).
Istnieją dwie metody na związanie pliku foo z innym plikiem bar.
Spójrz na poniższe przykłady zmian w dowiązaniach, oraz na subtelne różnice w
rezultacie polecenia rm.
$ echo "Oryginalna zawartość" > foo
$ ls -l foo
-rw-r--r-- 1 osamu osamu 4 Feb 9 22:26 foo
$ ln foo bar # dowiązanie (hardlink)
$ ln -s foo baz # dowiązanie symboliczne
$ 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 zawartość" > foo
$ cat bar
Oryginalna zawartość
$ cat baz
Nowa zawartość
Dowiązanie symboliczne ma, jak widać w powyższym przykładzie, prawa dostępu ,,rwxrwxrwx'', a jego faktyczne prawa dostępu są takie jak wskazywanego pliku.
Katalog . jest dowiązaniem do katalogu, w którym sam się pojawia,
zatem liczba dowiązań do nowego katalogu rozpoczyna się od 2. Katalog
.. jest dowiązaniem do katalogu nadrzędnego, zatem liczba dowiązań
do katalogu rośnie wraz z liczbą nowych podkatalogów.
Jest wiele dobrych źródeł o Uniksie dla początkujących. Zwykle książki
O'Reilly'ego są dobrym wyborem przy szukaniu przewodnika w tematach
komputerowych. Dokument LDP The Linux
Tips-HOWTO jest kolejnyn źródłem wartym sprawdzenia. W celu
poszerzenia swoich wiadomości zajrzyj do Rozwiązywanie
problemów, Część 15.
Oficjalne informacje o wydaniach uaktualnień są umieszczone 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ępującego schematu:
apt_preferences(5) w
Woodym.
/etc/apt/sources.list i
/etc/apt/preferences, by odnosiły się do repozytoriów ,,testing''.
Możesz też dodać, jeśli tylko chcesz, odniesienia do ,,unstable''.
Aktualizacja sieciowa systemu APT i kilka pakietów podstawowych do wersji
Woody, jeśli nadal używasz Potato, może być wykonana jak poniżej, po dodaniu
źródła wersji 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
Przejście na dystrybucję testową Debiana ma pewien skutek uboczny - trzeba dłużej czekać na uaktualnienia bezpieczeństwa. Ostrzeżono Cię - wybór należy do Ciebie.
Aktualizacja sieciowa do wersji testowej może przebiegać w
następujący sposób (uruchom skrypt go-woody, by wykonać poniższe czynności jednym
poleceniem):
Wyczyść istniejący plik sources.list:
# cd /etc/apt
# cp -f sources.list sources.old
# :>sources.list
Pobierz czystą listę repozytoriów dla wersji stabilnej:
# cd /
# apt-setup noprobe
... wybierz repozytoria dostępne przez HTTP lub FTP
Dodaj sekcję wersji testowej do nowej listy. Linie deb-src są zakomentowane.
# 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 <<EOF
Package: *
Pin: release a=testing
Pin-Priority: 600
Package: *
Pin: release a=unstable
Pin-Priority: 50
EOF
Ewentualnie możesz dodać odnośniki do archiwów wersji niestabilnej.
# 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ądzania pakietami Debiana,
Rozdział 6.2, gdzie opisana jest sztuka dopieszczania plików
/etc/apt/sources.list i /etc/apt/preferences.
Możesz teraz uaktualnić pakiety, używająć jednego ze sposobów opisanych poniżej.
Po prawidłowym ustawieniu plików /etc/apt/sources.list i
/etc/apt/preferences, system jest gotowy do przejścia na wersję
testową. Przeczytaj rozdział Zarządzanie
pakietami Debiana, Część 6, by zapoznać się z podstawami, oraz Problemy przy aktualizacji APT, Rozdział 6.3.2, jeśli
będziesz miał problemy.
dselect
Jeśli system posiada wiele pakietów mających w nazwach -dev, itp.,
poniższa metoda z użyciem dselect jest zalecana do właściwej
kontroli pakietów.
# dselect update # rób to zawsze przed aktualizacją
# dselect select # wybierz pakiety oznaczone ,,suggests'' i ,,recommends''
Zaraz po uruchomieniu dselect wybierze aktualnie zainstalowane
pakiety. Może Cię zapytać o dodatkowe pakiety, których nazwy weźmie z pól
depends, suggests oraz recommends.
Jeśli nie chcesz dodawać żadnych pakietów, wciśnij Q, by opuścić
program dselect.
# dselect install
Będziesz jeszcze musiał odpowiedzieć na pytania stawiane przez konfiguratory
pakietów podczas tego procesu, więc przygotuj swoje notatki i poświęć tej
części trochę czasu. Zobacz też dselect,
Rozdział 6.2.3.
Używaj dselect. To zawsze działa :).
apt-get
Użycie apt-get, które jest opisane poniżej, ma dużo
większe możliwości, ale nie jest zalecane do aktualizacji
systemu. Jeśli musisz aktualizować bez użycia dselect,
rozważ skorzytanie z aptitude oraz z innych programów.
Jeśli w systemie znajduje się niewiele pakietów lub w archiwach Debiana nie zaszło dużo zmian, poniższe polecenia mogą być wystarczające.
# apt-get update # rób to zawsze przed aktualizacją
... by uaktualnić system z zależnościami (,,depends''):
# apt-get upgrade
... by uaktualnić całą dystrybucję wraz z zależnościami:
# apt-get -u dist-upgrade
... lub by uaktualnić i zastosować dotychczasowe ustawienia dselect (nowe, lepsze):
# apt-get -u dselect-upgrade # użyj ustawień dselect
Ponieważ ten sposób aktualizacji używa apt-get, wybieranie
pakietów zalecanych i sugerowanych jest ograniczone. Zobacz
Zależności między pakietami, Rozdział 2.2.8.
By zmniejszyć obciążenie sieci na serwerach archiwów Debiana, upewnij się, że
skonfigurowałeś lokalnego pośrednika HTTP (np. squid) dla
pakietów ściąganych przez APT oraz, jeśli jest taka potrzeba, zmienną
środowiskową http_proxy lub ustaw wartość http w
pliku /etc/apt/apt.conf. To znacząco zwiększy wydajność
uaktualnień przez sieć, szczególnie wtedy, gdy posiadasz wiele komputerów z
Debianem w sieci lokalnej.
Pomimo tego, że możliwości przyszpilania w apt_preferences(5) są
wręcz nieograniczone, nie rozwiązuje ono wszystkich problemów z zależnościami,
ponieważ zazwyczaj wymagają one najnowszych wersji innych, podstawowych
programów.
Użycie metody opisanej w chroot, Rozdział
8.6.34 jest pożądane do równoczesnego zabezpieczenia zarówno stabilności
systemu jak i dostępu do najnowszych wersji oprogramowania.
Informacje opisane w tym rozdziale dotyczą systemu Woody, ale wiele z nich
tyczy się również systemu Potato (z wyjątkiem apt_preferences(5) i
tematów związanych z /etc/apt/preferences).
Jeśli czytanie dokumentacji dla deweloperów jest dla ciebie zbyt ciężkim zajęciem, przeczytaj poniższy rozdział i zacznij się cieszyć prawdziwą mocą Debiana w wersji testing/unstable :-).
dselect – narzędzie do zarządzania pakietami 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)
deity – alternatywny interfejs ncurses dla APT
synaptic, gsynaptic – alternatywne graficzne interfejsy dla APT
Powyższe narzędzia nie działają na tym samym poziomie. dselect
działa nad APT (polecenie apt-get) oraz dpkg.
APT używa plików /var/lib/lists/* do śledzenia dostępnych
pakietów, podczas gdy dpkg używa pliku
/var/lib/dpkg/available. Jeśli zainstalowałeś pakiety używając
bezpośrednio apt-get lub podobnego programu (jak np.
aptitude) upewnij się, że uaktualniłeś plik
/var/lib/dpkg/available korzystając z opcji [U]pdate
w menu dselect lub za pomocą polecenia ,,dselect
update'' przed wywołaniem dselect select,
tasksel lub dpkg -l.
Jeśli chodzi o zależności między pakietami, apt-get automatycznie
ściąga pakiety z jego zależnościami
(depends), ale nie rusza pakietów podanych w polach
recommends (zaleca) i suggests (proponuje),
podczas gdy dselect pozwala wybierać między zalecanymi lub
proponowanymi pakietami. aptitude pozwala na automatyczne
ściągnięcie wszystkich pakietów z pól depends,
recommends oraz suggests. Zajrzyj również do
rozdziału Zależności między pakietami, Rozdział 2.2.8.
apt-cache - przeglądanie lokalnej kopii archiwum pakietów
dpkg-reconfigure - ponowna konfiguracja już zainstalowanego pakietu
(jeśli korzysta z debconf)
dpkg-source - obsługa pakietów źródłowych
dpkg-buildpackage - automatyzacja budowania pakietu
...
Możesz instalować zestawy pakietów nazywane zadaniami lub instalować pojedyncze pakiety albo uaktualniać system przy użyciu narzędzi do zarządzania pakietami, które są opisane poniżej. Zajrzyj również na strony Wskazówki dotyczące instalacji Debiana, Część 3, Uaktualnianie dystrybucji do wersji testowej, Część 5 oraz Edytory awaryjne, Rozdział 11.2.
tasksel lub aptitude
tasksel to Debian Task Installer (instalator
zadań Debiana), który podczas instalacji systemu jest dostępny jako jedna z
,,prostszych'' opcji.
Jeśli chcesz zainstalować całe środowisko lub zestaw logicznie ze sobą powiązanych programów, które wymaga wielu pakietów, to ta droga jest jedną z najlepszych. Upewnij się, że wykonujesz polecenia w następujący sposób:
# dselect update
# tasksel
aptitude również daje dostęp do zadań. Pozwala on jednak
nie tylko na ich wybór, ale również na rezygnację z instalacji poszczególnych
pakietów z danego zadania.
Dla selektywnej aktualizacji podczas trzymania się ciągle dystrybucji
testowej, system APT (>Woody) musi być skonfigurowany jak w Przejście do APT z Woodiego, Rozdział 5.1, by
móc korzystać z opcji apt_preferences(5).
Najpierw dodaj źródła dla stable, testing i
unstable do pliku /etc/apt/sources.list, a następnie
zmodyfikuj plik /etc/apt/preferences tak, by ustawić poprawne
wartości 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
dselect
Zaraz po uruchomieniu dselect automatycznie wybiera pakiety
oznaczone jako wymagane (required), ważne (important) oraz standardowe
(standard). W Potato, niektóre duże objętościowo programy takie jak teTeX czy
Emacs były również wybierane tutaj i najlepiej było je po prostu omijać (przez
ręczne odznaczenie - wpisując `_') przy wstępnej instalacji. W Woodym,
powyższe pakiety zostały przeniesione do kategorii ,,Optional''.
dselect w pewnym sensie posiada dziwny interfejs użytkownika.
Dostępne są cztery dwuznaczne polecenia (wielkość liter ma znaczenie):
Klawisz Działanie
Q Wyjście. Potwierdź obecny wybór i wyjdź (zastąp zależności)
R Powrót! Nie chciałem tego zrobić.
D Cholera! Zwisa mi co o tym myśli dselect. Po prostu wykonaj to!
U Ustaw wszystko na stan ,,sugerowane''
Za pomocą D i Q możesz dokonać konfliktującego wyboru
na własne ryzyko. Używaj tych poleceń z rozwagą. Obecnie dselect
jest dojrzałym narzędziem, które daje Ci całkiem dużą kontrolę nad wyborem
pomiędzy pakietami sugerowanymi a
rekomendowanymi.
Jeśli chcesz zmniejszyć ilość pojawiających się ostrzeżeń i komunikatów, to
dodaj opcję ,,expert'' do pliku /etc/dpkg/dselect.cfg. Jeżeli
posiadasz powolny komputer, to możesz uruchamiać dselect na innej,
szybszej maszynie do wyszukiwania pakietów, a później możesz skorzystać z
polecenia apt-get install, by je zainstalować.
dselect nie daje dostępu do pakietów, które nie są preferowane
przez Pin-Priority.
aptitude
aptitude jest nowym programem do instalowania pakietów podobnym do
dselect. Możesz go używać jako zamiennika polecenia tekstowego
apt-get. Zobacz też aptitude(1).
Wydawanie poleceń aptitude odbywa się za pośrednictwem
poszczególnych klawiszy.
Klawisz Działanie
F10 Menu
? Ściągawka z klawiszologii
u Uaktualnij informacje o archiwum pakietów
g Ściągnij i zainstaluj wybrane pakiety
q Wyjdź z danego ekranu i zapamiętaj zmiany
x Wyjdź z danego ekranu i porzuć zmiany
Enter Pokaż informacje o pakiecie
aptitude umożliwia ci automatyczne ściągnięcie wszystkich pakietów
bazując na polach depends, recommends oraz
suggests. Możesz zmienić to zachowanie wybierając z menu
F10 -> Opcje -> Zależności.
aptitude daje Ci dostęp do wszystkich dostępnych wersji pakietów.
apt-cache i apt-getPodczas śledzenia dystrybucji testing jak zostało to opisane w powyższym przykładzie, możemy zarządzać pakietami przy użyciu poniższych poleceń:
Uaktualnia wszystkie pakiety w systemie, wybierając zależności z dystrybucji testing.
Uaktualnia wszystkie pakiety w systemie, wybierając i rozwiązując zależności z dystrybucji testing.
Uaktualnia wszystkie pakiety w systemie korzystając z wyboru dokonanego przez
dselect.
Instaluje pakiet wraz z zależnościami z dystrybucji testing.
Instaluje pakiet z unstable, ale zależności pobiera z testing.
Instaluje pakiet z unstable wraz z zależnościami z unstable, poprzez ustawienie Pin-Priority unstable na 990.
Sprawdza stan pakietów foo bar ....
Wyświetla informacje o pakietach foo bar ....
Instaluje wybraną wersję 2.2.4-1 pakietu foo.
Instaluje pakiet foo i usuwa pakiet bar
Usuwa pakiet bar, ale zachowuje zmienione pliki konfiguracyjne.
Usuwa pakiet bar wraz ze wszystkimi jego plikami konfiguracyjnymi.
W powyższych przykładach opcja -u wymusza, by apt-get
pokazał listę pakietów do aktualizacji i poczekał na dalsze decyzje użytkownika
przez przystąpieniem do dalszych czynności. Poniższe działania ustawiają opcję
-u jako domyślną:
$ cat >> /etc/apt/apt.conf << .
// Zawsze pokazuj aktualizowane pakiety (-u)
APT::Get::Show-Upgraded "true";
.
Użyj opcji -s, by zasymulować aktualizację.
W zależności od wyboru smaku dystrybucji, możesz zmienić przykładowy plik
/etc/apt/preference z Konfiguracja systemu
APT, Rozdział 6.2.2 tak, by odpowiadał twoim potrzebom:
śledzenie stable: zmień Pin-Priority testing na 50
śledzenie testing: pozostaw bez zmian
śledzenie testing(unstable): zmień Pin-Priority unstable na 500
śledzenie unstable(testing): zmień Pin-Priority unstable na 800
Zasadą przy ustawianiu wartości Pin-Priority powinno być przewijanie wartości z góry na dół tabeli wraz z upływem czasu, od chwili po wydaniu dystrybucji, do czasu zamrażania przed wydaniem kolejnym.
Uwaga: śledzenie dystrybucji testing ma jedną wadę - poprawki bezpieczeństwa pojawiają się dosyć późno.
Jeśli mieszasz dystrybucje Debiana, testing z stable lub unstable ze stable, prawdopodobnie będziesz często nieświadomie pobierać kluczowe pakiety z testing lub unstable, które nie zawsze są najwyższej jakości. Miej to na uwadze.
Przykłady pliku /etc/apt/preferences, dzięki którym pobierane są
kluczowe pakiety w dojrzałych wersjach, natomiast pakiety dodatkowe mogą być w
wersjach niestabilnych, znajdują się w katalogu z
przykładami jako pliki preferences.testing i
preferences.unstable. Z drugiej strony,
preferences.stable wymusza, by wszystkie wersje pakietów zostały
zmniejszone do wersji stabilnych.
By zmniejszyć wersję wszystkich pakietów do wydania stable, ustaw
plik /etc/apt/preferences jak poniżej:
Package: *
Pin: release a=stable
Pin-Priority: 1001
a następnie uruchom ,,apt-get upgrade'', które wymusi zmniejszenie wersji z powodu Pin-Priority > 1000. Pamiętaj jednak, że podczas tej operacji mogą wystąpić problemy z zależnościami.
/etc/apt/preferences
W przykładowym pliku /etc/apt/preferences przedstawionym w Konfiguracja systemu APT, Rozdział 6.2.2, pierwsza
linia, Package: *, oznacza, że ta regułka odnosi się do wszystkich
pakietów. Możesz użyć konkretnej nazwy pakietu zamiast gwiazdki, by ustawić
Pin-Priority dla danego pakietu.
Następna linia, Pin: release a=stable, oznacza, że
apt-get pobiera plik Packages.gz z archiwum
zawierającego plik Release, w którym znajduje się linia
Archive: stable.
Ostatnia linia, Pin-Priority: 500, ustala Pin-Priority na 500.
Jeśli jest wiele pakietów o tej samej nazwie, to instalowany jest ten z najwyższą wartością Pin-Priority.
Poniżej znajdują się oznaczenia Pin-Priority:
Zmniejszanie wersji pakietu jest dozwolone dla tego przedziału Pin-Priority.
Zmniejszanie wersji pakietu jest niedozwolone. Kilka kluczowych wartości Pin-Priority:
apt-get(8).
Ten sam efekt działania jak przy --target-release może być
osiągnięty przez ustawienie pliku /etc/apt/apt.conf jak poniżej:
# echo 'APT::Default-Release "testing";' >> /etc/apt/apt.conf
Opcja lini poleceń --target-release oraz ustawienia w pliku
/etc/apt/apt.conf zastępują ustawienia pliku
/etc/apt/preferences. Miej to na uwadze podczas zabawy z plikiem
/etc/apt/preferences.
Posiadając tę wiedzę, możesz cieszyć się nieśmiertelnymi aktualizacjami :-).
Jeśli masz problemy z konkretnym pakietem, pamiętaj by najpierw sprawdzić
poniższe strony zanim będziesz szukać pomocy lub zgłaszać błąd.
(lynx, links oraz w3m działają tak samo
dobrze):
$ lynx http://bugs.debian.org/
$ lynx http://bugs.debian.org/nazwa pakietu # jeśli znasz nazwę pakietu
$ lynx http://bugs.debian.org/numer błędu # jeśli znasz numer błędu
Szukaj z Google (http://www.google.com/) dołączając ciąg ,,site:debian.org''.
Jeśli masz wątpliwości, to przeczytaj porządny podręcznik. Ustaw zmienną CDPATH jak poniżej:
export CDPATH=.:/usr/local:/usr/share/doc
i wpisz
$ cd nazwa pakietu
$ pager README.Debian # jeśli istnieje
$ mc
Więcej pomocnych zasobów podanych jest w rozdziale Rozwiązywanie problemów, Część 15.
Podczas aktualizacji w dystrybucji niestabilnej/testowej mogą wystąpić problemy z zależnościami między pakietami tak, jak to zostało opisane w rozdziale Aktualizacja systemu, Rozdział 5.3. W większości przypadków jest to spowodowane tym, że aktualizowany pakiet posiada nowe zależności, które nie są jeszcze spełnione. W takim przypadku, problem możesz rozwiązać używając
# apt-get dist-upgrade
Jeśli to nie działa, powtarzaj jedno z poniższych poleceń dopóki problem sam się nie rozwiąże:
# apt-get upgrade -f # dalej aktualizuj nawet jeśli wystąpiły błędy
... lub
# apt-get dist-upgrade -f # dalej aktualizuj całą dystrybucję nawet jeśli
wystąpiły błędy
Niektóre naprawdę zepsute skrypty aktualizujące mogą powodować trwałe problemy.
Najlepiej w takim przypadku przyjrzeć się skryptom
/var/lib/dpkg/info/nazwapakietu.{post-,pre-}{install,removal}
dla danego pakietu, a następnie uruchomić:
# dpkg --configure -a # konfiguruje wszystkie częściowo zainstalowane pakiety
Jeśli skrypt mówi o brakującym pliku konfiguracyjnym, poszukaj odpowiedniego
pliku w katalogu /etc. Jeśli istnieje szukany plik z
rozszerzeniem .new (lub podobnym), zmień nazwę tego pliku (za
pomocą mv) tak, by usunąć rozszerzenie.
Problemy z zależnościami mogą też występować podczas instalacji w dystrybucji unstable/testing. Są jednak sposoby na obejście zależności.
# apt-get install -f pakiet # pomiń zepsute zależności
Innym sposobem na wyjście z tej sytuacji jest użycie pakietu
equivs. Zobacz /usr/share/doc/equivs/README.Debian
jak również Pakiet equivs, Rozdział 6.5.2.
dpkg
Doraźny ratunek zepsutego dselect (APT) może być przeprowadzony na
całkowicie zepsutym systemie przy użyciu tylko dpkg bez APT:
# cd /var/cache/apt/archives
# dpkg -i libc6* libdb2* perl*
# dpkg -i apt* dpkg* debconf*
# dpkg -i * # aż nie pojawi się żaden błąd
Jeśli brakuje jakiegoś pakietu, ściągnij go z serwerów
lustrzanych przy pomocy:
# mc # użyj ,,FTP link'' wskazując serwer FTP Debiana
Od niedawna, właściwe pakiety na serwerach HTTP/FTP mogą nie znajdować się w
katalogu /dist, ale raczej w nowym /pool. (Zobacz
też Katalog pool, Rozdział 2.1.10.)
Ściągnięty plik zainstaluj jak poniżej:
# dpkg -i /var/cache/apt/archives/plikpakietu.deb
W przypadku niespełnionych zależności, napraw je lub użyj poniższych poleceń:
# 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ące
pliki konfiguracyjne
Jeśli z jakiekogoś powodu plik /var/lib/dpkg/status zostanie
uszkodzony, Debian straci dane wyboru pakietów i przez to stanie się nie do
końca sprawny. 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ż katalog ten zawiera wiele ważnych dla systemu danych.
Jeśli stary plik /var/lib/dpkg/status nie jest dostępny, nadal
możesz przywrócić informacje 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, jeśli trzeba
/var
Ponieważ katalog /var zawiera regularnie uaktualniane dane takie,
jak poczta, jest on podatny na wszelkiego rodzaju uszkodzenia. Oddzielenie
tego katalogu na innej, niezależnej partycji zmniejsza ryzyko wystąpienia
problemów. Jeśli zdarzy się katastrofa, wtedy możesz przebudować katalog
/var, by przywrócić sprawność systemu.
Najpierw zdobądź szkielet zawartości /var z minimalnego,
działającego systemu Debian w tej samej lub starszej wersji, np. z
, i
umieść go w katalogu głównym zepsutego systemu. Następnie wykonaj poniżesze
kroki:
var.tar.gz
# cd /
# mv var var-old # jeśli jakieś przydatne dane pozostały
# tar xvzf var.tar.gz # użyj szkieletu Woody
# aptitude # lub dselect
To powinno postawić system na nogi. Możesz przyspieszyć przywracanie wyborów pakietów używając sposobu opisanego w rozdziale Przywracanie danych wyboru pakietów, Rozdział 6.3.4. ([FIXME]: Ta procedura wymaga więcej testów do potwierdzenia poprawności.)
Uruchom Linuksa używając płyty lub dyskietki ratunkowej Debiana lub
alternatywnej partycji w przypadku tzw. multi-bootu. Zobacz Uruchamianie systemu, Rozdział 8.1. Zamontuj partycję
główną niestartującego systemu w /target i skorzystaj z
dpkg w trybie instalacji w środowisku chroot.
# dpkg --root /target -i plikpakietu.deb
Następnie skonfiguruj pakiet i popraw wszelkie problemy.
Tak przy okazji - jeśli to lilo uniemożliwia start systemu, możesz
go uruchomić używając standardowego dysku ratunkowego Debiana. W lini zachęty
programu startującego wpisz (zakładając, że twoją główną partycją jest
/dev/hda12 i chcesz uruchomić system na poziomie startu (runlevel)
3):
boot: rescue root=/dev/hda12 3
W ten sposób wystartujesz prawie w pełni funkcjonalny system z jądrem ładowanym z dyskietki (mogą jednak wystąpić pewne problemy spowodowane brakiem niektórych funkcji jądra lub modułów).
dpkg nie działa?
Niedziałający dpkg może uniemożliwić instalację jakiegokolwiek
pliku .deb. Poniższa procedura pomoże Ci naprawić tą sytuację (w
pierwszej linijce zastąp ,,links'' nazwą twojej ulubionej przeglądarki
internetowej):
$ links http://http.us.debian.org/debian/pool/main/d/dpkg/
... ściągnij dobry 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żesz użyć http://packages.debian.org/dpkg.
Te polecenia uchronią człowieka od wiecznego cierpienia w piekle aktualizacji i pozwolą osiągnąć mu stan nirwany. :-)
Aby odnaleźć nazwę pakietu, do którego należy dany plik wpisz:
$ dpkg {-S|--search} wzorzec # szukaj wg. wzorca w zainstalowanych pakietach
$ zgrep -e wzorzec /lokalna/kopia/debian/woody/Contents-i386.gz
# znajdź wg. wzoru nazwę plików w archiwum Debiana
Możesz też użyć specjalnie do tego celu przeznaczonych narzędzi:
# 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ędzie instalujące pakiet na życzenie
# auto-apt update # tworzenie pliku bazy dla auto-apt
$ auto-apt search wzorzec
# szukaj wg. wzorca we wszystkich pakietach
APT pozwala na przeszukiwanie i wyświetlanie informacji pobranych z archiwum
pakietów. Upewnij się, że APT pobiera prawidłowe archiwa (plik
/etc/apt/sources.list). Jeśli chcesz zobaczyć jaki jest stosunek
pakietów z testing/unstable do tych zainstalowanych,
użyj apt-cache policy.
# apt-get check # aktualizuje cache i sprawdza błędne pakiety
$ 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 źródłowego
$ apt-cache showpkg pakiet # informacje o pakiecie dla odpluskiwania
# dpkg --audit|-C # szuka częściowo 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ę plików zainstalowanych przez pakiet
apt-cache showsrc jest nieudokumentowane w Woodym, ale działa :).
Możesz też znaleźć informacje o pakiecie w (ja używam mc do przeglądania poniższych):
/var/lib/apt/lists/*
/var/lib/dpkg/available
Porównanie poniższych plików da Ci informacje o tym, co dokładnie działo się w ciągu ostatnich kilku sesji instalacyjnych.
/var/lib/dpkg/status
/var/backups/dpkg.status*
Żeby móc instalować pakiety bez potrzeby pilnowania przebiegu instalacji, dodaj
poniższa linię do pliku /etc/apt/apt.conf:
Dpkg::Options {"--force-confold";}
Jest to równoważne uruchomieniu apt-get -q -y pakiet.
Korzystaj z tej opcji bardzo ostrożnie, ponieważ sprawia ona, że automatycznie
zostaje wybrana odpowiedź ,,tak'' na każde pytanie, co może sprawić Ci wiele
problemów. Przeczytaj apt.conf(5) oraz dpkg(1).
Możesz skonfigurować dowolny pakiet później za pomocą techniki opisanej w rozdziale Ponowna konfiguracja zainstalowanych pakietów, Rozdział 6.4.4.
Poniższe polecenia ponownie konfigurują dowolny, już zainstalowany 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śli chcesz zmienić na stałe typ zapytań
debconf.
Niektóre programy posiadają również własne skrypty konfiguracyjne.
apt-setup - tworzy /etc/apt/sources.list
install-mbr - instaluje menedżera Master Boot Record
tzconfig - ustawia lokalną strefę czasową
gpmconfig - konfiguruje demona myszy gpm
sambaconfig - konfiguruje Sambę w Potato (Woody używa debconf)
eximconfig - konfiguruje Exim (MTA)
texconfig - konfiguruje teTeX
apacheconfig - konfiguruje Apache (httpd)
cvsconfig - konfiguruje CVS
sndconfig - konfiguruje system dźwięku
...
update-alternatives - ustawia domyślne polecenia, np. vim jako vi
update-rc.d - zarządza skryptami startowymi System-V
update-menus - system menu Debiana
...
Usunięcie pakietu pozostawiając jego konfigurację:
# apt-get remove pakiet ...
# dpkg --remove pakiet ...
Usunięcie pakietu wraz z jego konfiguracją:
# apt-get remove --purge pakiet ...
# dpkg --purge pakiet ...
Przykładowe wstrzymanie pakietów libc6 oraz libc6-dev
dla programu dselect oraz dla apt-get -u upgrade
pakiet odbywa się następująco:
# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections
Stan "hold" nie powstrzyma polecenia apt-get -u install
pakiet. By wstrzymać pakiet przez wymuszanie automatycznego
zmniejszenia wersji dla poleceń apt-get -u upgrade
pakiet lub apt-get -u dist-upgrade, dodaj
poniższe do pliku /etc/apt/preferences:
Package: libc6
Pin: release a=stable
Pin-Priority: 2000
Tutaj pole Package: nie może przyjmować wpisów takich jak
libc6*. Jeśli musisz trzymać zsynchronizowane wersje wszystkich
pakietów binarnych powiązanych z pakietem źródłowym glibc musisz
je oddzielnie wypisać.
Poniższe polecenie wyświetli listę pakietów wstrzymanych:
dpkg --get-selections "*"|grep -e "hold$"
apt-show-versions pokaże Ci listę dostępnych wersji pakietu wg.
dystrybucji, z której pochodzi.
$ apt-show-versions | fgrep /testing | wc
... jak dużo posiadasz 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
Instalacja pakietów przy użyciu APT pozostawia pliki pakietów w katalogu
/var/cache/apt/archives, które muszą być usuwane by zwolnić
miejsce.
# apt-get autoclean # usuwa tylko zbędne pliki pakietów
# apt-get clean # usuwa wszystkie przetrzymywane pliki pakietów
Poniższe polecenie tworzy lokalną kopię wyborów pakietów:
$ dpkg --get-selections "*" > myselections # lub \* zamiast "*"
"*" sprawia, że w pliku myselections znajdą się również pozycje odnoszące się do pakietów ze stanem ,,purge''.
Możesz skopiować ten plik na inny komputer i zainstalować go za pomocą poniższych poleceń:
# dselect update
# dpkg --set-selections < myselections
# apt-get -u dselect-upgrade # lub dselect install
W przypadku częściowych uaktualnień systemu stable, pożądane jest
przebudowywanie pakietów w jego własnym środowisku korzystając z pakietu
źródłowego. Pozwala to uniknąć masowych uaktualnień spowodowanych ich
zależnościami. Przede wszystkim dodaj poniższe linie do pliku
/etc/apt/sources.list:
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żdy wpis deb-src został rozbity na dwie linie
z powodu ograniczonego rozmiaru papieru podczas drukowania. Sam wpis w
sources.list powinien składać się z jednej lini.
Przyszła kolej na ściągnięcie źródeł i zbudowanie lokalnego pakietu:
$ apt-get update # uaktualnij listę ze źródłami pakietów
$ apt-get source pakiet
$ dpkg-source -x pakiet.dsc
$ cd pakiet-wersja
... przejrzyj wymagane pakiety (Build-depends w pliku .dsc)
i również je zainstaluj. Potrzebujesz także pakietu
'fakeroot'.
$ dpkg-buildpackage -rfakeroot
...lub (bez sygnatury)
$ dpkg-buildpackage -rfakeroot -us -uc # jeśli trzeba, użyj później ,,debsign''
...Następnie zainstaluj pakiet
$ su -c "dpkg -i plikpakietu.deb"
Zazwyczaj należy też zainstalować kilka pakietow z końcówką ,,-dev'', by
spełnić zależności pakietów. debsign znajduje się w pakiecie
devscripts. auto-apt może pomóc przy spełnianiu tych
zależności. Użycie fakeroot pozwala uniknąć niepotrzebnego
korzystania z konta roota.
W Woodym, sprawy związane z zależnościami mogą być ułatwione. Przykładowo, by
skompilować występujący tylko w formie źródłowej pakiet pine:
# apt-get build-dep pine
# apt-get source -b pine
Aby utworzyć zgodne z systemem APT i dselect lokalne archiwum
pakietów, należy utworzyć plik Packages, a same pliki pakietów
muszą być umieszczone w specjalnym drzewie katalogów.
Lokalne archiwum pakietów deb podobne do oficjalnego archiwum Debiana tworzy się w następujący sposób:
# apt-get install dpkg-dev
# cd /usr/local
# install -d pool # tutaj umieszczane są pakiety
# install -d dists/unstable/main/binary-i386
# ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override
# editor override # zmień 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żna też użyć szybszego sposobu:
# apt-get install dpkg-dev
# mkdir /usr/local/debian
# mv /ścieżka/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ęp do utworzonych archiwów jest możliwy za pośrednictwem HTTP lub
FTP. Należy wówczas odpowiednio ustawić wpisy w pliku
/etc/apt/sources.list.
alien pozwala na konwersję pakietów binarnych z formatów
rpm Redhata, slp Stampede, tgz Slackware
oraz pkg Solarisa na format pakietu deb Debiana.
Jeśli chcesz użyć pakietu z innej dystrybucji Linuksa, możesz użyć programu
alien do zmiany go na twój preferowany format i późniejszej
instalacji. alien obsługuje również pakiety LSB.
debsums sprawdza poprawność zainstalowanych plików pakietów na
podstawie sum kontrolnych MD5. Niektóre z pakietów nie posiadają sum MD5. W
takim przypadku tymczasowym rozwiązaniem dla 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 joergland@debian.org
(nieprzetestowane).
sources.list
Wymyślne sposoby optymalizacji pliku sources.list nie spowodowały
u mnie (w USA), znaczącej poprawy. Ręcznie wybrałem najbliższe serwery przy
użyciu apt-setup.
apt-spy automatycznie tworzy sources.list, kierując
się opóźnieniami i przepustowością. netselect-apt tworzy bardziej
kompletny sources.list, ale używa gorszej 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
dpkg-divert
Objazdy (diversions) są metodą zmuszenia dpkg w
zmienionej, w stosunku do domyślnej lokalizacji.
Objazdy mogą być używane przez skrypty pakietu Debiana do
przeniesienia pliku, gdy ten powoduje konflikt. Administrator systemu może też
użyć dywersji do zastąpienia pliku konfiguracyjnego pakietu lub gdy pewne pliki
(nieoznaczone jako conffiles) muszą być zachowane przez
dpkg, podczas instalacji nowej wersji pakietu je zawierającego
(zobacz Ochrona lokalnych plików konfiguracyjnych,
Rozdział 2.2.4).
# dpkg-divert [--add] filename # dodaj ,,dywersję''
# dpkg-divert --remove filename # usuń ,,dywersję''
Zazwyczaj nie należy stosować dpkg-divert, gdy nie jest to
absolutnie potrzebne.
equivsJeśli własnoręcznie kompilujesz program, najlepiej jest uczynić go prawdziwym, lokalnym pakietem zdebianizowanym (*.deb). W ostateczności użyj 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.
Użyj programu update-alternatives, jeśli chcesz, 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ą trzymane jako dowiązania
symboliczne w katalogu /etc/alternatives.
Jeśli chcesz ustawić swoje ulubione środowisko graficzne X, użyj
update-alternatives na /usr/bin/x-session-manager
oraz /usr/bin/x-window-manager. Szczegóły w Personalizowanie sesji X., Rozdział 9.4.5.1.
/bin/sh jest bezpośrednim dowiązaniem do /bin/bash
lub /bin/dash. Bezpieczniej jest użyć /bin/bash, by
zachować kompatybilność ze skryptami skażonymi starą składnią Basha. Lepiej
jednak zdyscyplinować się do używania /bin/dash, w celu wymuszenia
zgodności z normą POSIX. /bin/dash. Aktualizacja jądra Linuksa
do wersji 2.4 skłania się do użycia /bin/dash.
init i poziomy startu (runlevels)
W pliku /etc/inittab można ustawić domyślny poziom startu.
W przeciwieństwie do innych dystrybucji, Debian w pełni pozostawia zarządzanie
poziomami startu administratori systemu. Zarządzanie skryptami
init w stylu System-V w Debianie powinno odbywać się za
pośrednictwem skryptu update-rc.d.
Poniżej znajduje się przykł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 zatrzymywany 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ęcie dowiązań symbolicznych z pozostawieniem skryptu w
init.d:
# update-rc.d -f nazwa remove
Jeśli chodzi o edycję poziomów startu, nigdy nie używam narzędzi do tego celu.
Poszczególne elementy zmieniam ręcznie za pomocą mv w lini poleceń
mc, kopiując dowiązania za pomocą Alt-Enter. Przykład:
# mv S99xdm K99xdm # wyłącz xdm (X display manager)
Również wyłączam demony przez wstawienie exit 0 na początku
skryptu w init.d. Ot, takie szybkie rozwiązanie. W końcu są to
pliki oznaczone jako conffile.
Bezpieczeństwo systemu jest bardzo ważną rzeczą w Debianie, który zakłada, że administrator jest osobą kompetentną. Dlatego czasami łatwość użycia stoi na drugim miejscu, a wiele usług demonów domyślnie ma ustawiony najwyższy poziom bezpieczeństwa z włączonymi tylko nielicznymi usługami (lub nawet żadnymi).
Uruchom ps aux lub przejrzyj zawartość /etc/init.d/*
oraz /etc/inetd.conf, jeśli masz jakiekolwiek wątpliwości
(odnośnie Exima, DHCP, ...). Sprawdź również opisany w Kontrola dostępu poprzez PAM oraz login, Rozdział 9.2.1
plik /etc/hosts.deny. Pomocne może się też okazać polecenie
pidof (patrz pidof(8)).
W ostatnich wersjach Debiana, X11 domyślnie nie zezwala na (zdalne) połączenia
TCP/IP. Patrz też Połączenie TCP/IP z X, Rozdział 9.4.6.
Przekazywanie X przez SSH również jest wyłączone. Patrz Zdalne połączenie z X: ssh, Rozdział 9.4.8.
Debian posiada swoją własną metodę kompilacji jądra i powiązanych z nim modułów. Zobacz również Debian i kernel, Rozdział 2.7.
Użycie gcc, binutils i modutils z
Debiana unstable może pomóc przy kompilacji najnowszych wydań
jądra systemu Linux. Zobacz
/usr/share/doc/kernel-package/README.gz, szczególnie koniec, aby
uzyskać oficjalne informacje.
Od zawsze kompilacja jądra była trudnym tematem, który nawet najbardziej zaawansowanych developerów może wprowadzić w zakłopotanie:
/etc/mkinitrd/mkinitrd.conf.
Bądź ostrożny i zawsze polegaj na
/usr/share/doc/kernel-package/README.gz napisanym przez Manoj i
Kent'a. Upewnij się, że zdobyłeś najnowszą wersję pakietu unstable
kernel-package, jeśli chcesz kompilować najnowszą wersję jądra.
initrd nie jest wymagane dla jądra kompilowanego tylko dla jednej
maszyny. Używam tego od czasu, kiedy chcę aby moje jądro było niemal takie
samo, jak to dostarczane przez pakiety kernel-image. Jeśli używasz
initrd, powinieneś przeczytać mkinitrd(8) i
mkinitrd.conf(5). Zobacz również http://bugs.debian.org/149236.
Śledź uważnie raporty o błędach w kernel-package,
gcc, binutils i modutils. W miarę
możliwości używaj ich nowych wersji.
Kompilacja spersonalizowanego jądra ze źródeł pod Debianem wymaga specjalnej
uwagi. Użyj nowego --append_to_version wraz z
make-kpkg, aby zbudować obrazy jądra wielokrotnego użytku.
# apt-get install debhelper modutils kernel-package libncurses5-dev
# apt-get install kernel-source-2.4.18 # użyj najnowszej 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żeli są to źródła Twojego jądra
$ cp /boot/config-2.4.18-386 .config # ustaw obecny plik konfiguracyjny jako domyślny
$ make menuconfig # wybierz potrzebne Ci opcje
$ make-kpkg clean # musi być uruchomione (per: man make-kpkg)
$ fakeroot make-kpkg --append_to_version -486 --initrd \
--revision=rev.01 kernel_image \
modules_image # modules_image używa się dla pcmcia-cs* itd.
$ cd ..
# dpkg -i kernel-image*.deb pcmcia-cs*.deb # instalacja
make-kpkg kernel_image właściwie wykonuje make oldconfig i make dep. Nie używaj --initrd jeżeli initrd nie jest używane.
Jeżeli ktoś chce używać modułów z pcmcia-cs lub bez pcmcia, powinien wybrać ,,General setup —>'', następnie ,,PCMCIA/CardBus support —>'' przy make menuconfig i ustawić konfigurację na ,,< > PCMCIA/CardBus support'' (np. odznaczyć pole).
Na maszynie z SMP (Simetric Multi processing), ustaw CONCURRENCY_LEVEL zgodnie
z kernel-pkg.conf(5).
Pobierz źródła z:
http://www.kernel.org/
http://pcmcia-cs.sourceforge.net/
lub użyj równoważnych źródeł z Debiana i postępuj następująco:
# 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ądra ...
# make dep
# make bzImage
... edycja lilo / grub ...
... przeniesienie /usr/src/linux/arch/i386/boot/bzImage do /boot ...
... uruchomienie /sbin/lilo lub równoważnego polecenia dla grub
# make modules; make modules_install
# cd ../pcmcia
# make config
# make all
# make install
... dodanie niezbędnych nazw modułów do /etc/modules
# shutdown -r now
... wystartowanie systemu z nowym jądrem ...
Większość ,,zwykłych'' programów nie potrzebuje plików nagłówkowych jądra, a
nawet może się popsuć jeśli użyjesz ich bezpośrednio; zamiast tego powinny być
skompilowane z plikami nagłówkowymi, z którymi zbudowano/skompilowano
glibc, które są wersjami z
/usr/include/linux i /usr/include/asm systemu Debian.
Nie twórz więc dowiązań symbolicznych do katalogów w
/usr/src/linux z /usr/include/linux i
/usr/include/asm, jak jest to sugerowane w pewnych przestarzałych
dokumentach.
Jeżeli szczególnie potrzebujesz plików nagłówkowych jądra dla
aplikacji zależnych od jądra, zmień plik/pliki Makefile. tak aby ich ścieżki
do plików dołączanych (include) wskazywały na
katalog-specjalnych-plików-nagłówkowych-jądra/include/linux
i
katalog-specjalnych-plików-nagłókowych-jądra/include/asm.
Nowe jądra 2.4 w Debianie, dostarczone przez
kernel-image-2.4.NN są bardzo zmodularyzowane. Musisz
się upewnić czy moduły te są aktywne, aby jądro działało tak, jak zamierzałeś.
W następnej części, jako szybkie rozwiązania, prezentuję wiele przykładów pliku
/etc/modules. Jednakże, lepszą metodą rozwiązywania problemów z
modułami jest przypisanie ich, jako nazw zastępczych (aliasów) dla urządzeń, w
plikach w /etc/modutils/
Zobacz Documentation/*.txt w źródłach Linuksa aby zdobyć
szczegółowe informacje.
/etc/modules musi zawierać następujące wpisy, aby urządzenia
PCMCIA mogły działać:
# sterownik ISA PnP
isa-pnp
# Niskopoziomowy sterownik PCMCIA
# yenta_socket # w moim przypadku nie jest potrzebny
O resztę zadbają skrypty PCMCIA (z pakietu pcmcia-cs),
depmod i kmod. Wydaje mi się, że potrzebowałem
isa-pnp ponieważ mój laptop jest starym ISA-PCMCIA. Nowsze
laptopy z CardBus/PCMCIA być może tego nie wymagają.
Zdanie wspaniałomyślnego Miquela van Smoorenburga miquels@cistron.nl:
,,Po prostu wyrzuciłem całość pcmcia z laptopa w pracy, włącznie z cardmgr itd.
Następnie zainstalowałem jądro 2.4 ze wsparciem dla cardbus, i nowy pakiet
hotplug z woody'ego.
Jeśli masz 32-bitowe karty, nie potrzebujesz pakietu pcmcia ; 2.4 ma wbudowaną obsługę tych kart. Zwykły sterownik tulip powinien pracować dobrze z Twoją kartą dlink.
—Mike.''
[NIE SPRAWDZANE] /etc/modules musi zawierać następujące wpisy, aby
urządzenia SCSI mogły działać:
# rdzeń SCSI
scsi_mod
# ogólny sterownik SCSI
sg
# dysk SCSI
sd_mod
# wszystkie inne niezbędne moduły
...
depmod zajmie się niektórymi z powyższych modułów.
/etc/modules musi zawierać nastepujące wpisy dla działania
dodatkowych funkcji sieciowych:
# net/ipv-4
ip_gre
ipip
# net/ipv-4/netfilter
# iptable (in order)
ip_tables
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ższewpisy mogą nie być zoptymalizowane. depmod zajmie się
cześcią z wyżej wymienionych modułów.
Umożliwienie księgowania systemu plików z EXT3 FS przy użyciu Debianowego pakietu prekompilowanego obrazu jądra ( > 2.4.17) wymaga następujących kroków:
# cd /etc; mv fstab fstab.old
# sed 's/ext2/ext3,ext2/g' <fstab.old >fstab
# vi /etc/fstab
... ustaw typ głównego systemu plików na ,,auto'' zamiast ,,ext3,ext2''
# cd /etc/mkinitrd
# echo jbd >>modules
# echo ext3 >>modules
# echo ext2 >>modules
# cd /
# apt-get update; apt-get install kernel-image-2.4.17-686-smp
... zainstaluj najnowsze jądro i 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ęgowanie EXT3 już działa. Używając ext3,ext2 jako wpis
,,typ'' w fstab zapewniasz bezpieczny powrót do EXT2, jeżeli jądro
nie wspiera EXT3 dla partycji innych niż główna.
Jeżeli wcześniej zainstalowałeś sobie jądro 2.4 i nie chcesz go
przeinstalowywać, wykonaj powyższe kroki aż do poleceń apt-get,
następnie:
# 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ęgowanie EXT3 już działa.
Jeżeli /etc/mkinitrd/modules nie zostało ustawione, podczas
uruchomienia mkinitrd i chciałbyś dodać jakieś moduły w czasie
startu to :
... przy zgłoszeniu initrd, aby uzyskać powłokę (5 sek.), wciśnij RETURN
# insmod jbd
# insmod ext3 # modprobe ext3 zajmie się wszystkim
# insmod ext2
# ^D
... kontynuuj uruchamianie.
Na ekranie uruchamiania pojawia się (dmesg), ,,cramfs: wrong
magic'', ale jest to uznawane za nieszkodliwe. To wyjście zostało uchwalone w
Sarge (2002/10). Zobacz http://bugs.debian.org/135537 i
EXT3 File
System mini-HOWTO 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świadczaniu poważnych blokad jądra, gdy używane jest EXT3, ale ja nie miałem problemów (przynajmniej z 2.4.17).
Z nieznanych przyczyn, wsparcie dla modułu RTL-8139 nie nazywa się już rtl8139,
tylko 8139too. Po prostu wyedytuj swój /etc/modules by uwzględnić
tę zmianę przy zmianie jądra 2.2 na 2.4.
Dla kernel-image-2.4.*, wsparcie portu równoległego jest
udostępniane jako moduł. Uaktywniasz je przez:
# modprobe lp
# echo lp >> /etc/modules
Zobacz Documentation/parport.txt w źródłach Linuksa.
Zachowanie jądra systemu Linux może być zmieniane ,,w locie'' przy pomocy systemu plików proc.
Podstawowych informacji o zmianach parametrów jądra przez system plików
/proc szukaj w źródłach Linuksa w
Documentation/sysctl/*.
Zobacz kilka przykładów dla modyfikacji parametrów jądra w
/etc/init.d/networking i Dziwne kłopoty z
dostępem do witryn WWW., Rozdział 3.7.5.
Jądro Linuksa może zgłaszać problem ,,Za dużo otwartych plików''. Spowodowane
jest to małą domyślną wartością (8096) dla file-max. Aby naprawić
ten problem, wywołaj następujące polecenie jako root (albo umieść to w w
skrypcie w /etc/rcS.d/*):
# echo "65536" > /proc/sys/fs/file-max # dla jąder 2.2 i 2.4
# echo "131072" > /proc/sys/fs/inode-max # tylko dla jąder 2.2
Możesz zmienić przedziały czasu między operacjami dyskowymi przy pomocy systemu plików proc. Następująco skrócimy je z domyślnych pięciu sekund do sekundy.
# echo "40 0 0 0 100 30000 60 0 0" > /proc/sys/vm/bdflush
Może to trochę negatywnie wpływać na osiągi pliku wejścia/wyjścia. Ale zabezpiecza to zawartość pliku, z wyjątkiem ostatniej sekundy, co i tak jest krótszym czasem, niż domyślne pięć sekund. Działa to nawet dla systemu plików z księgowaniem.
Dla niektórych starych systemów z małą ilością pamięci, użyteczne wciąż może być uruchomienie, przy pomocy systemu plików proc, przydzielania nieosiągalnej w danym momencie pamięci:
# echo 1 > /proc/sys/vm/overcommit_memory
Zajrzyj do LDP BootPrompt-HOWTO
w celu uzyskania szczegółowych informacji na temat boot prompt.
Możliwe jest uruchomienie systemu i zalogowanie się na konto administratora
(root) bez znajomości hasła, jeżeli tylko posiadamy dostęp do lokalnej konsoli
(zakładając, że nie zostało założone hasło na BIOS lub program ładujący system
taki jak lilo).
Poniżej przedstawiono procedurę postępowania w takim przypadku, która nie wymaga posiadania dodatkowych narzędzi, jak choćby dyskietek czy płyt z systemem, ani modyfikacji ustawień BIOSu. Zakładamy, że ,,Linux'' to etykieta podstawowego jądra systemu w domyślnej instalacji Debiana.
Gdy tylko pojawi się ekran startowy lilo oraz napis
boot: (być może musisz przytrzymać klawisz shift podczas
uruchamiania lilo aby zapobiec automatycznemu startowi systemu)
wpisz:
boot: Linux init=/bin/sh
To wymusza załadowanie jądra oraz uruchomienie /bin/sh w miejsce
standardowego programu init. Dzięki temu uzyskujesz przywileje
administratora oraz dostęp do konta root. Ponieważ system plików
/ jest zamontowany w trybie ,,tylko do odczytu'', a inne nie są
zamontowane w ogóle, trzeba wykonać kilka operacji, aby uzyskać w pełni
funkcjonujący system.
init-2.03# mount -n -o remount,rw /
init-2.03# mount -avt nonfs,noproc,nosmbfs
init-2.03# cd /etc
init-2.03# vi passwd
init-2.03# vi shadow
(Jeżeli drugie pole danych zapisanych w /etc/passwd zawiera tylko
literkę ,,x'' dla każdego użytkownika, oznacza to, że Twój system używa
osobnego pliku do przechowywania haseł i musisz edytować
/etc/shadow.) Aby wyłączyć hasło dla konta root, wykasuj całą
zawartość pola odpowiedzialnego za hasło (jest to drugie pole w pliku
/etc/passwd lub /etc/shadow, jeżeli system go używa).
Teraz możesz przeładować system i zalogować się na 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ą.
Dobrym pomysłem jest mieć jakiś prosty edytor w /bin na wypadek,
gdyby /usr było niedostępne (zobacz także Edytory awaryjne, Rozdział 11.2).
Możesz także rozważyć instalację pakietu sash. Jeśli system
przestanie się uruchamiać, wykonaj:
boot: Linux init=/bin/sash
sash jest interaktywnym zamiennikiem dla sh, nawet
gdy /bin/sh jest niezdatny do użytku. sash jest
łączony statycznie i zawiera wbudowane wiele typowych funkcji (wpisz ,,help'' w
linii poleceń, aby poznać jego możliwości).
Uruchom system z zestawu dyskietek ratunkowych lub z płyty CD. Załóżmy, że
/dev/hda3 to oryginalna, główna partycja (root).
Poniższe polecenia pozwolą na równie łatwe, jak w poprzednim punkcie,
wyedytowanie plików z użytkownikami i hasłami.
# mkdir fixit
# mount /dev/hda3 fixit
# cd fixit/etc
# vi shadow
# vi passwd
Przewagą tej metody nad poprzednią jest to, że nie trzeba znać hasła do
lilo (jeżeli jest takowe uaktywnione). Aczkolwiek wymaga to
ingerencji w ustawienia BIOSu i włączenie możliwości startu systemu z CD czy
też dyskietek.
To żaden problem, nawet jeśli zaniedbano przygotowawania dystkietki startowej.
Jeśli lilo jest uszkodzone, użyj płyty startowej z zestawu płyt
instalacyjnych Debiana (lub utwórz dyskietkę startową z obrazów zawartych na
tejże płycie) i uruchom system przy jej pomocy.
Zakładamy, że główna partycja Twojej instalacji Linuksa to
/dev/hda12 oraz że chcesz ustawić 3 poziom startu.
Gdy pojawi się komunikat startowy, wpisz:
boot: rescue root=/dev/hda12 3
Po chwili otrzymujesz prawie w pełni funkcjonalny system wykorzystujący jądro z płytki/dyskietki startowej. Mogą jednak wystąpić pewne problemy wynikające z braku pewnych możliwości lub modułów w dystrybucyjnym jądrze.
Jeśli masz uszkodzony system zainteresuj się też rozdziałem Instalowanie pakietu w niestartującym systemie, Rozdział 6.3.6.
Jeżeli potrzebujesz specjalnie dostosowanej dyskietki startowej, przejrzyj plik
readme.txt umieszczony na dysku ratunkowym.
Ujarzmianie wersji unstable/sid może być zabawne, ale zawierający
błędy xdm, gdm, kdm oraz
wdm starujący przy uruchamianiu systemu może Ci dopiec.
Na początek zdobądź dostęp do konta administratora (root) wpisując poniższe
polecenie podczas startu lilo:
boot: Linux vga=normal s
Zakładamy, że Linux to etykieta jądra, które zazwyczaj uruchamiasz.
Natomiast ,,vga=normal'' sprawi, że lilo wystartuje w normalnym
trybie VGA. Ostatni parametr -- ,,s'' (lub ,,S'') sprawia, że
init uruchamia system w trybie pojedynczego użytkownika. Teraz
wystarczy wpisać hasło administratora (konto root).
Istnieje kilka sposobów na wyłączenie wszystkich demonów systemu X:
/etc/init.d/?dm.
/etc/rc2.d/S99?dm na
/etc/rc2.d/K99?dm.
/etc/rc2.d/S99?dm.
W przykładach rc2.d oznacza aktualny poziom startu
(runlevel) ustalony w /etc/inittab, zaś
?dm każdy z xdm, gdm,
kdm czy też wdm
Tylko pierwsze z rozwiązań wymienionych na liście, jest ,,jedynie słuszną
drogą'' w systemie Debian. Ostatni ze sposobów jest łatwy, ale wymaga
ponownego ustawienia menedżera ekranu używając później
dpkg-reconfigure. Pozostałe to różne metody na wyłączenie
demonów.
Po tych czynnościach nadal możesz uruchomić środowisko graficzne poleceniem
startx wydanym na dowolnej konsoli tekstowej.
System może być uruchamiany w wybranym poziomie startu (runlevel) oraz z
określoną przez użytkownika konfiguracją. Wystarczy wykorzystać udostępnianą
przez lilo możliwość podania parametrów przy uruchamianiu systemu.
Szczegóły znajdziesz w BootPrompt-HOWTO
(LDP).
Jeżeli chcesz uzyskać 4 poziom startu, spróbuj poniższego:
boot: Linux 4
Jeśli natomiast chcesz uzyskać tryb pojedynczego użytkownika (single-user), a znasz hasło administratora, możesz użyć:
boot: Linux S
boot: Linux 1
boot: Linux -s
W przypadku, gdy chcesz uruchomić system tak, aby wykorzystywał mniej pamięci, niż jest w rzeczywistości w komputerze (powiedzmy 48MB, podczas gdy komputer ma 64MB), użyj:
boot: Linux mem=48M
Upewnij się, że nie podajesz wartości przewyższającej dostępną pamięć, gdyż
wtedy jądro może ulec katastrofie! Jeżeli posiadamy więcej niż 64MB
(przykładowo 128MB), do czasu aż podamy mem=128M podczas startu
lub w /etc/lilo.conf, starsze jądra i/lub płyty główne ze starszym
BIOSem mogą nie używać pamięci powyżej 64MB.
GRUB jest to nowy zarządca startu systemu wywodzący się z projektu
GNU Hurd. Jest on bardziej elastyczny niż lilo, jednakże
występują tu drobne różnice w zakresie manipulowania parametrami startu
systemu.
grub> find /vmlinuz
grub> root (hd0,0)
grub> kernel /vmlinuz root=/dev/hda1
grub> initrd /initrd
grub> boot
Musisz być świadom nazw urządzeń pochodzących z 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.
Administracja systemem pociąga za sobą o wiele więcej drobiazgowych zadań w Uniksie niż w zwykłych środowiskach komputerów osobistych. Upewnij się, że znasz przynajmniej podstawowe sposoby konfiguracji, na wypadek gdyby zaszła potrzeba odratowania systemu z problemów. Bazujące na graficznym interfejsie narzędzia konfiguracyjne wyglądają przyjemnie i wygodnie, jednakże zazwyczaj nie nadają się do użycia w stanie zagrożenia.
Tak więc, rejestrowanie działań poleceniami powłoki jest dobrym zwyczajem, szczególnie podczas pracy jako administrator (root).
Emacs: Użyj M-x shell aby rozpocząć nagrywanie do bufora oraz C-x C-w aby zapisać bufor na dysk.
Powłoka: Użyj polecenia screen oraz ,,^A H'' jak opisano w Zmiana konsoli przy pomocy screena, Rozdział
8.6.27 lub skorzystaj z script.
$ script nagranie
Script started, file is nagranie
$ ...
... Rób cokolwiek ...
... Na zakończenie naciśnij Ctrl+D ...
Script done, file is nagranie
$ col -bx <nagranie >raport
$ vi raport
Poniższe polecenie może być użyte zamiast polecenia script:
$ bash -i 2>&1 | tee nagranie
Jeżeli chcesz zarejestrować graficzny obraz aplikacji w środowisku X-Window,
możesz użyć programu gimp (GUI). Potrafi on przechwytywać
określone okna z osobna lub cały ekran. Innym rozwiązaniem jest zastosowanie
programów takich jak: xwd (z pakietu xbase-clients),
import (z pakietu imagemagick) oraz
scrot (z pakietu scrot).
Jeżeli chcesz przearanżować strukturę położenia plików, skorzystaj na przykład z:
Typowa metoda:
# cp -a /początkowy/katalog /docelowy/katalog # wymaga narzędzia GNU cp
# (cd /początkowy/katalog && tar cf - . ) | \
(cd /docelowy/katalog && tar xvfp - )
Jeżeli twarde dowiązania są wymagane, przydatna okaże się metoda:
# cd /ścieżka/do/starego/katalogu
# find . -depth -print0 | afio -p -xv -0a /punkt/montowania/nowego/katalogu
Jeśli cel jest na odległej maszynie:
# (cd /początkowy/katalog && tar cf - . ) | \
ssh użytkownik@komputer.odległy (cd /docelowy/katalog && tar xvfp - )
Jeżeli nie ma dowiązań do plików, wystarczy:
# scp -pr użytkownik1@jeden.komputer:/początkowy/katalog \
użytkownik2@drugi.komputer:/docelowy/katalog
W przykładach scp <==> rcp oraz
ssh <==> rsh.
Powyższe sposoby kopiowania całych katalogów zostały zaprezentowane przez
Manoja Srivastavę srivasta@debian.org na liście
dyskusyjnej debian-user@lists.debian.org.
cp
Tradycyjne narzędzie cp nie było dobrym kandydatem do takich
zadań, gdyż nie wyłuskiwało symbolicznych dowiązań ani nie chroniło dowiązań
twardych. Kolejną rzeczą wymagającą rozważenia były tzw. rzadkie (sparse)
pliki (pliki z dziurami).
GNU cp przezwyciężyło te ograniczenia, jednakże na systemach
niezgodnych z GNU, cp może wciąż sprawiać problemy. Możesz
również nie móc tworzyć małych, przenośnych archiwów używając cp.
% cp -a . newdir
tar
Tar przezwycięża kilka z problemów, które cp ma z symbolicznymi
dowiązaniami. Jednakże, jakkolwiek cpio obsługuje specjalne
pliki, to konwencjonalny tar nie.
W przypadku wielu dowiązań (hardlink) do jednego pliku, tar
umieszcza na taśmie tylko jedną kopię; cpio umieszcza jedną kopię
dla każdego dowiązania.
Polecenie tar zmieniło swoją opcję używaną dla plików
.bz2 pomiędzy Potato a Woody, więc używaj w skryptach
--bzip2 zamiast ich krótkiej formy -I (Potato) czy
też -j (Woody).
pax
Nowe, wypasione narzędzie POSIX (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ć, zapisywać i wyświetlać
zawartość pliku archiwum, jak również kopiować hierarchie katalogów. Operacje
narzędzi pax są niezależne od określonego rodzaju archiwum i
obsługują szeroką gamę różnorodnych formatów.
Implementacje programu pax są ciągle nowe i siermiężne.
# apt-get install pax
$ pax -rw -p e . nowy_katalog
lub
$ find . -depth | pax -rw -p e nowy_katalog
cpio
cpio kopiuje pliki do lub z archiwum programu cpio
albo programu tar. Archiwum może być plikiem na dysku, taśmą
magnetyczną czy też potokiem.
$ find . -depth -print0 | cpio --null --sparse -pvd new-dir
afio
afio jest lepszym wyborem w zakresie obsługi archiwów w formacie
cpio. Jest zdecydowanie szybszy niż cpio, udostępnia
więcej opcji obsługi taśmy magnetycznej oraz zachowuje się o wiele wdzięczniej
w przypadku uszkodzenia danych wejściowych. Obsługuje wieloczęściowe archiwa
podczas interaktywnych operacji. afio może tworzyć kompresowane
archiwa, które są o wiele bezpieczniejsze niż kompresowane produkty
tara lub cpio. afio jest używane jako
,,archiwizujący silnik'' w skryptach do tworzenia kopii zapasowych.
$ find . -depth -print0 | afio -px -0a new-dir
Kopie różnicowe oraz synchronizacja danych mogą być wykonane różnymi metodami:
rcs: kopia oraz historia, tylko tekst
rdiff-backup: kopia oraz historia. symboliczne dowiązania .
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ązanie. Zobacz też tutaj: CVS,
Rozdział 12.1.
arch: wielotorowa synchronizacja z serwerem, kopia oraz historia,
brak takich rzeczy jak ,,roboczy katalog''.
subversion: wielotorowa synchronizacja z serwerem, kopia oraz
historia, Apache.
Połączenie jednej z tych metod z archiwizacją opisaną tutaj: Kopiowanie oraz archiwizacja całych katalogów, Rozdział
8.3 oraz automatycznym wykonywaniem zadań o określonym czasie (Harmonogram działań (cron, at),
Rozdział 8.6.26) pozwoli stworzyć miły system kopii bezpieczeństwa.
Poniżej opiszę trzy łatwe w użyciu narzędzia.
rdiff-backup pozwala przyjemnie i prosto utworzyć kopię
bezpieczeństwa wraz z historią zmian, obsługując dowolne typy plików, włączając
w to dowiązania symboliczne. Aby zarchiwizować ~/ do
/mnt/kopia, zastosuj:
$ rdiff-backup --include ~/tmp/keep --exclude ~/tmp ~/ /mnt/kopia
Aby przywrócić dane sprzed trzech dni do ~/stare, użyj:
$ rdiff-backup -r 3D /mnt/kopia ~/stare
Poczytaj też podręcznik systemowy: rdiff-backup(1).
pdumpfs
pdumpfs to prosty system tworzenia codziennych kopii zapasowych,
zbliony do dumpfs. Możesz korzystać z dostępu do wcześniejszych
kopii w dowolnym momencie. Spróbuj uruchomić kopię bezpieczeństwa swojego
katalogu domowego z wykorzystaniem pdumpfs oraz
crona!
pdumpfs tworzy archiwum YYYY/MM/DD w docelowym
katalogu. Przy pierwszym uruchomieniu pdumpfs wszystkie źródłowe
pliki są kopiowane do docelowego katalogu. Za kolejnymi uruchomieniami
kopiowane są jedynie te pliki, które zostały zmodyfikowane lub utworzone od
ostatniego uruchomienia programu pdumpfs, natomiast pozostające
bez zmian są przedstawiane w postaci dowiązania do ich odpowiedników we
wcześniejszych kopiach celem zaoszczędzenia miejsca na dysku.
$ pdumpfs kat_źródłowy kat_docelowy [nazwa docelowa]
Zobacz także: pdumpfs(8).
Changetrack regularnie rejestruje zmiany w tekstowych plikach
konfiguracyjnych. Zobacz także: changetrack(1).
# apt-get install changetrack
# vi changetrack.conf
Uruchom top aby zobaczyć, które procesy zużywają największą ilość
zasobów. Naciśnij ,,P'' aby posortować wg zużycia mocy procesora, ,,M'' wg
zużycia pamięci oraz ,,k'' aby usunąć proces. Alternatywnie, możesz użyć
ps aux | less (sposób BSD) lub ps -efH | less (sposób
System-V). Ta druga składnia pokazuje identyfikatory procesów nadrzędnych.
(PPID), co pozwala na ubicie zombie (niefunkcjonujących procesów
potomnych).
Użyj polecenia kill aby usunąć proces (lub wysłać do niego sygnał)
według ID procesu. killall działa analogicznie, ale możliwe jest
podanie nazwy procesu. Najczęściej używane sygnały:
1: HUP, uruchom ponownie demona
15: TERM, normalne zakończenie pracy
9: KILL, bezkompromisowe usunięcie
Jądro pozwala się zabezpieczyć przed wadliwym działaniem systemu za pomocą opcji ,,Magic SysRq key'' podawanej przy jego kompilacji. Wciśnięcie na 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ę serwera X. Zmiana poziomu logowania na konsoli na `0' zmniejsza ilość wyświetlanych komunikatów o błędach. sa'k' (z ang. system attention key) zabija wszystkie procesy na danej konsoli wirtualnej. `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żą do wychodzenia z najcięższych kłopotów.
W momencie powstawania tego dokumentu, domyślne jądro dystrybucyjne Debiana nie
było kompilowane z tą opcją, musisz więc skompilować je samodzielnie, jeżeli
chcesz ją aktywować. 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.
less jest domyślną przeglądarką zawartości plików. Klawisz ,,h''
przywołuje pomoc. Program potrafi o wiele więcej niż more.
less może być ,,podrasowany'' przez wykonanie polecenia eval
$(lesspipe) lub eval $(lessfile) w skryptach startowych
powłoki. Zobacz więcej: /usr/share/doc/lessf/LESSOPEN. Opcja
-R umożliwia wykorzystywanie nieobrobionego wyjścia oraz włącza
sekwencje ANSI sterujące kolorami. Zobacz także: less(1).
w3m może być użyteczny jako alternatywna przeglądarka w przypadku
niektórych systemów kodowania (np. EUC).
free oraz top stanowią dobry sposób uzyskania
informacji na temat pamięci. Nie zwracaj uwagi na wartość ,,used'' w linii
,,Mem:'', ale skorzystaj z liczby umieszczonej poniżej (w przykładzie jest to
38792).
$ free -k # dla komputera z pamięcią o rozmiarze 256MB
total used free shared buffers cached
Mem: 257136 230456 26680 45736 116136 75528
-/+ buffers/cache: 38792 218344
Swap: 264996 0 264996
Ścisły rozmiar fizycznej pamięci może być sprawdzony poleceniem grep '^Memory' /var/log/dmesg, które w przypadku z przykładu powyżej daje komunikat: ,,Memory: 256984k/262144k available (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żyteczne dla systemu, ponieważ jądro tego używa.
# date MMDDhhmmCCYY
# hwclock --utc
# hwclock --systohc
# hwclock --show
Powyższe polecenia ustawiają sprzętowy zegar na wartość: MM/DD hh:mm, CCYY. Czas jest pokazywany zgodnie z lokalną strefą czasową, jednak sprzętowy zegar jest ustawiany według czasu uniwersalnego (UTC).
Zaglądnij też do: Managing
Accurate Date and Time HOWTO.
Ustaw czas systemu automatycznie według odległego serwera:
# ntpdate serwer
Dobrym rozwiązanie jest umieszczenie tego w pliku /etc/cron.daily
jeżeli Twój system ma stałe łącze z Internetem, a dokładniej, z wskazanym
serwerem.
Użyj pakietu chrony.
W konsoli tekstowej:
# setterm -powersave off
Możesz uruchomić konsolę kon2(kanji) używając:
# kon -SaveTime 0
Mając uruchomieny X Window System:
# xset s off
lub
# xset -dpms
lub
# xscreensaver-command -prefs
Przeczytaj odpowiednie strony podręcznika systemowego.
Glibc umożliwia wykorzystanie: getent(1) do wyszukiwania wpisów w
administracyjnych bazach danych, takich jak passwd, group, hosts, services,
protocols czy networks.
getent baza_danych [klucz ...]
Najprościej odłączyć głośniczek ;-). Albo, dla basha:
echo "set bell-style none">> ~/.inputrc
Aby wyłączyć komunikaty o błędach wysyłane na konsolę tekstową, zaglądnij do
/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łędów są następujące:
Jeśli denerwuje Cię jeden, specyficzny, bezużyteczny komunikat o błędzie,
zastanów się nad zastosowaniem trywialnej łatki na jądro, takiej jak
shutup-abit-bp6 (dostępna w podkatalogu
z przykładami).
Możesz także zaglądnąć do /etc/syslog.conf; sprawdź czy jakieś
komunikaty nie są wysyłane do urządzenia powiązanego z konsolą.
Ekran konsoli w systemach uniksowych jest zazwyczaj obsługiwany przez bilioteki
(n)curses. Zapewniają one niezależne od rodzaju terminala metody obsługi
ekranu. Sprawdź: ncurses(3X) oraz terminfo(5).
W systemie Debian, jest nieco wstępnie zdefiniowanych wartości:
$ toe | less # wszystkie wartości
$ toe /etc/terminfo/ | less # wartości dające się modyfikować przez użytkowników
Wyeksportuj Twój wybór jako zmienną środowiskową TERM.
Jeżeli wartość terminfo dla xterm nie działa właściwie z xtermami nie
pochodzącymi z Debiana, zmień rodzaj terminala z ,,xterm'' na jedną z wersji
posiadających ograniczenia funkcjonalności, jak np.,,xterm-r6'' podczas
zdalnego logowania do Debiana. Zobacz także:
/usr/share/doc/libncurses5/FAQ. ,,dumb'' jest najniższą wspólną
definicją dla terminfo.
Jeśli ekran stanie się nieczytelny po wykonaniu polecenia cat jakiś-plik-binarny (możesz nie widzieć poleceń, jakie wpisujesz), zastosuj:
$ reset
Przekształcanie dosowego pliku tekstowego (koniec-linii = ^M^J) na format uniksowy (koniec-linii = ^J):
# apt-get install sysutils
$ dos2unix plik_dosowy
Zamiana wszystkich wystąpień WYRAŻENIE_POCZĄTKOWE na WYRAŻENIE_KOŃCOWE we wszystkich plikach PLIKI ...:
$ perl -i -p -e 's/WYRAŻENIE_POCZĄTKOWE/WYRAŻENIE_KOŃCOWE/g;' PLIKI ...
-i służy do ,,in-place editing'', -p wymusza przetwarzanie w pętli, każdy plik z podanych jako PLIKI ... Jeśli zastępowanie jest złożone, możesz zabezpieczyć się przed błędami używając parametru -i.bak zamiast -i; to zachowa oryginalne pliki dodając do ich nazwy .bak.
Poniższy skrypt usunie linie 5–10 oraz 16–20.
#!/bin/bash
ed $1 <<EOF
16,20d
5,10d
w
q
EOF
Polecenia ed są takie same jak polecenia vi w trybie
wydawania poleceń. Modyfikacja pliku od tyłu ułatwia jego edycję w skryptach.
Poniższa procedura odnajduje różnice pomiędzy dwoma 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że łatkami (patch) są używane do przesyłania uaktualnień kodów źródłowych programów. Po odebraniu takiego pliku, można go zaaplikować na posiadany stary plik używając poleceń:
$ patch -p0 plik.stary < plik.łatka0
$ patch -p1 plik.stary < plik.łatka1
Jeśli masz wszystkie trzy wersje kodów źródłowych, możesz je połączyć używając
narzędzia diff3:
$ diff3 -m plik.mój plik.stary plik.twój > plik
$ split -b 650m plik # podział pliku na kawałki 650 MB
$ cat x* > dużyplik # łączenie plików w jeden duży
Rozpatrzymy plik nazwany DPL w którym zachowywane są wszystkie
nazwiska przywódców projektu Debian oraz daty rozpoczęcia ich działalności.
Dane oddzielone są przerwami.
Ian Murdock August 1993
Bruce Perens April 1996
Ian Jackson January 1998
Wichert Akkerman January 1999
Ben Collins April 2001
Bdale Garbee April 2002
Martin Michlmayr March 2003
Najczęsciej używanym narzędziem do takich zadań jest Awk.
$ awk '{ print $3 }' <DPL # Miesiące
August
April
January
January
April
April
March
$ awk '($1=="Ian") { print }' <DPL # przywódca zwany Ian
Ian Murdock August 1993
Ian Jackson January 1998
$ awk '($2=="Perens") { print $3,$4 }' <DPL # Kiedy rozpoczął Perens
April 1996
Powłoka taka jak Bash również może zostać użyta do obrabiania tego typu plików:
$ while read first last month year; do
echo $month
done <DPL
... taki sam efekt jak w pierwszym przykładzie z Awk
W tym przypadku wbudowane polecenie read używa znaków z $IFS
(wewnętrzne separatory pól) by podzielić linie na słowa.
Jeśli zmienisz IFS na ":" będziesz mógł bezproblemowo z powłoką
obrabiać plik /etc/passwd:
$ oldIFS="$IFS" # zapisuje starą wartość
$ IFS=":"
$ while read user password uid gid rest_of_line; do
if [ "$user" = "osamu" ]; then
echo "$user's ID is $uid"
fi
done < /etc/passwd
osamu's ID is 1001
$ IFS="$oldIFS" # przywraca starą wartość
(Jeśli chcesz użyć Awk do tego samego skorzystaj z FS=":" by ustawić separator pól.)
IFS jest również używane przez powłokę do rozdzielania wyników dopełniania parametrów, podmian poleceń i dopełniania arytmetycznego. To nie dotyczy wyrazów w podwójnym lub pojedynczym cudzysłowiu. Domyślną wartością IFS jest kombinacja następujących znaków <spacja>, <tabulator> i <znak nowej linii>.
Uważaj używając trików z IFS w powłoce. Dziwne rzeczy się mogą dziać kiedy powłoka zinterpretuje część skryptu jako swoje wejście.
$ IFS=":," # użyj ":" i "," jako IFS
$ echo IFS=$IFS, IFS="$IFS" # echo jest wbudowane w Basha
IFS= , IFS=:,
$ date -R # zwykłe wyjście polecenia
Sat, 23 Aug 2003 08:30:15 +0200
$ echo $(date -R) # pod-powłoka --> wejście do głównej powłoki
Sat 23 Aug 2003 08 30 36 +0200
$ unset IFS # przywrócenie domyślnej wartości IFS
$ echo $(date -R)
Sat, 23 Aug 2003 08:30:50 +0200
Poniższe skrypty wspólnie tworzą piękną całość jeśli są połączone potokiem (ang. pipe).
find /usr | egrep -v "/usr/var|/usr/tmp|/usr/local"
# znajduje wszystkie pliki w /usr z wyłączeniem pewnych
plików
xargs -n 1 polecenie # uruchamia polecenia dla każdego z elementu ze standardowego wejścia
xargs -n 1 echo | # dzieli elementy oddzielone białymi znakami na linie
xargs echo | # łączy wszystkie linie w jedną
grep -e wzorzec| # wyciąga linie zawierające dany wzorzec
cut -d: -f3 -| # wyciąga trzecie pole oddzielone znakiem : (np. plik passwd)
awk '{ print $3 }' | # wyciąga trzecie pole oddzielone białymi znakami
awk -F'\t' '{ print $3 }' | # wyciąga trzecie 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 (wysuń 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żdą linię na komentarz (zaczyna się od #)
sed 's/\.ext//g'| # usuwa .ext
sed -n -e 2p| # wypisuje drugą linię
head -n 2 -| # wypiuje pierwsze 2 linie
tail -n 2 -| # wypiuje ostatnie 2 linie
Poniższe sposoby pętli działającej na plikach z rozszerzeniem *.ext zapewniają prawidłową obsługę dziwnych nazw plików na przykład ze spacjami:
for x in *.ext; do
if test -f "$x"; then
command "$x"
fi
done
find w kombinacji z xargs:
find . -type f -maxdepth 1 -name '*.ext' -print0 | \
xargs -0 -n 1 command
find z opcją -exec w poleceniu:
find . -type f -maxdepth 1 -name '*.ext' \
-exec command '{}' \;
find z opcją -exec i krótkim skryptem powłoki:
find . -type f -maxdepth 1 -name '*.ext' \
-exec sh -c "command '{}' && echo 'successful'" \;
Kazdy skprypt Awk może być napisany w Perlu. Przykładowo:
awk '($2=="1957") { print $3 }' |
moze być zapisany jak poniżej:
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ę automatycznej konwersji pomiędzy liczbami a ciągami tekstowymi:
perl -lane 'print$F[2]if$F[1]eq+1957' |
Zobacz też do: perlrun(1). Wiele równie, lub bardziej szalonych
skrytów Perla znajdziesz tutaj: http://perlgolf.sourceforge.net.
Poniższe polecenia zczytają stronę WWW do pliku tekstowego. Przydatne na przykład do skopiowania konfiguracji ze strony WWW.
$ lynx -dump http://www.odległa-strona.pl/plik.html >plik.txt
links i w3m mogą być również analogicznie użyte, z
dokładnością do niewielkich różnic.
Jeśli to jest archiwum listy dyskusyjnej, użyj munpack aby uzyskać
zawartość mime.
Poniższe polecenia wydrukują stronę WWW do drukarki/pliku PostScript:
$ apt-get install html2ps
$ html2ps URL | lpr
Zobacz także lpr/lpd, Rozdział
3.6.1 oraz sprawdź pakiety: a2ps oraz mpage
służące do tworzenia PostScriptu.
Poniższe polecenia wydrukują stronę podręcznika systemowego do drukarki/pliku PostScript:
$ man -Tps jakaś-strona-podręcznika | lpr
$ man -Tps jakaś-strona-podręcznika | mpage -2 | lpr
Możesz połączyć pliki 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
Wyświetlanie czasu trwania danego polecenia.
# time jakieś-polecenie >/dev/null
real 0m0.035s # czas, jaki upłynął na zegarku ściennym (czas rzeczywisty)
user 0m0.000s # czas spędzony w trybie użytkownika
sys 0m0.020s # czas spędzony w trybie jądra
nice
Użyj polecenia nice (z pakietu GNU shellutils) by
ustawić podczas startu ,,przyjazność'' programu w stosunku do innych.
renice (z bsdutils) lub top może zmienić
tą wartość. Wartość równa 19 oznacza najniższy priorytet procesu. Wartość
ujemna jest uważana za ,,nieprzyjazną'' - wartość -20 oznacza wysoki priorytet
procesu. Tylko superużytkownik może ustawiać ujemne wartości nice.
# 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ści nice sprawiają więcej kłopotu niż pożytku, dlatego używaj tego polecenia bardzo uważnie.
cron, at)
Użyj pakietu cron lub at aby zaplanować zadania w
systemie GNU/Linux. Zobacz: at(1), crontab(5),
crontab(8).
Wykonaj polecenie crontab -e edytujące zawartość spisu zadań (,,crontab''). Przykładowa zawartość takiego pliku:
# użyj /bin/sh do wykonywania poleceń, niezależnie od zapisu w /etc/passwd
SHELL=/bin/sh
# prześlij standardowe wyjście poleceń do `pawel', niezależnie od tego, czyj zestaw poleceń jest wykonywany
MAILTO=pawel
# Min Godzina DzieńMiesiąca Miesiąc DzieńTygodnia polecenie
#(DzieńTygodnia i DzieńMiesiąca są połączone spójnikiem LUB)
# wykonaj o 00:05 każdego dnia
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# wykonaj o 14:15 pierwszego dnia każdego miesiąca -- wynik wysylany do Pawła
15 14 1 * * $HOME/bin/monthly
# wykonaj o 22:00 każdego dnia 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ą twoje 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żdej niedzieli"
# Wykonaj o 03:40 w pierwszy poniedziałek miesiąca
40 3 1-7 * * [ "$(date +%a)" == "Mon" ] && command -args
Uruchom polecenie at aby wykonać jednorazowe zadanie:
$ echo 'polecenie -argumenty'| at 3:40 monday
screena
Program screen umożliwia uruchomienie wielu
pozornych terminali, każdy ze swoją własną powłoką, na
pojedynczym fizycznym terminalu lub emulatorze terminala. Nawet jeśli
używasz wirtualnych konsoli Linuksa lub wielu x-terminali, program
screen jest wart zainteresowania z uwagi na bogaty zbiór
możliwości, takich jak np.:
screen
od terminala i ponowne jej przyłączenie później. Pozwala to na zdalne
uruchomienie czasochłonnego zadania, rozłaczenie i powrócenie do niego, gdy już
się wykona.
Jeśli często podłączasz się do systemu ze zdalnego terminala lub korzystając z
programu emulującego terminal w trybie VT100, screen uczyni Twoje
życie łatwiejszym :-) dzięki opcji detach.
screen ze sporą ilością sesji zawierających różne programy
screen
jednocześnie do odłączenia sesji i zakończenia połączenia)
screen magicznie przyłączy się
ponownie i wszystkie sesje zostaną przywrócone.
screena
Gdy uruchomisz program screen, wszystkie naciskane klawisze są
wysyłane do aktualnej sesji, za wyjątkiem kombinacji wywołującej system poleceń
screena. Domyślnie jest to Ctrl+A. Wszystkie
polecenia programu screen są wpisywane przy użyciu
Ctrl+A a następnie pojedynczych klawiszy. Użyteczne polecenia:
^A ? pomoc do programu
^A c utwórz nową sesję i przełącz się do niej
^A n następna sesja
^A p poprzednia sesja
^A 0 idź do sesji numer 0
^A w wyświetl listę sesji
^A a Wyślij Ctrl+A do aktualnej sesji (normalne Ctrl+A jest przechwytywane)
^A h zapisz kopię aktualnej sesji do pliku
^A H rozpocznij/zakończ przechwytywanie aktualnej sesji do pliku
^A ^X zabezpiecz terminal (ochrona hasłem)
^A d odłącz sesje od terminala
^A DD odłącz sesje od terminala, a terminal od systemu
To tylko niewielki podzbiór poleceń programu screen. Jeśli
istnieje coś, co chciał(a)byś wykonać przy użyciu screena zapewne
jest to możliwe!
Zobacz także: screen(1).
screena
Jeśli zauważysz, że backspace i/lib Ctrl+H nie działają dobrze podczas
działania programu screen, wyedytuj plik
/etc/screenrc, znajdź linię:
bindkey -k kb stuff "\177"
i zakomentuj ją (np. dodaj ,,#'' jako pierwszy znak tej linii).
screena w X Window System
Sprawdź xmove. Poczytaj xmove(1).
Zainstaluj pakiety: netkit-ping, traceroute,
dnsutils, ipchains (dla jądra 2.2),
iptables (dla jądra 2.4), oraz net-tools i wykonaj:
$ ping www.google.com # sprawdź połączenie z www.google.com
$ traceroute www.google.com # sprawdź trasę pakietów
$ ifconfig # sprawdź ustawienia komputera
$ route -n # sprawdź ustawienia tras pakietów
$ dig [@serwer-dns.pl] host.dom [{a|mx|any}] |less
# sprawdź wpisy DNS dla host.dom zapisane w dns-server.com
# typy rekorów to: {a|mx|dowolne}
$ ipchains -L -n |less # sprawdź filtry pakietów (jądro 2.2)
$ iptables -L -n |less # check packet filter (jądro 2.4)
$ netstat -a # znajdź wszystkie otwarte porty
$ netstat -l --inet # znajdź nasłuchujące porty
$ netstat -ln --tcp # znajdź nasłuchujące porty TCP (numerycznie)
Aby wypchnąć listy z lokalnej kolejki, możesz użyć:
# exim -q # wypchnij czekające listy
# exim -qf # wypchnij wszystkie listy
# exim -qff # wypchnij nawet zamrożone przesyłki
-qff może być użyteczną opcją w skrypcie
/etc/ppp/ip-up.d/exim.
Aby usunąć zamrożone przesyłki z lokalnej kolejki, wysyłając jednocześnie komunikat o błędzie, wykonaj:
# exim -Mg `mailq | grep frozen | awk '{ print $3 }'`
Jeśli Twój katalog domowy został zapełniony i procmailowi nie udało się dokonać
swego dzieła, musisz ręcznie przenieść pocztę do posortowanych skrzynek w Twoim
katalogu domowym z pliku /var/mail/nazwa_użytkownika.
Po zwolnieniu miejsca w katalogu domowym wykonaj poniższe czynności:
# /etc/init.d/exim stop
# formail -s procmail </var/mail/nazwa_użytkownika
# /etc/init.d/exim start
W celu usunięcia zawartości plików takich jak dzienniki systemowe, nie używaj polecenia rm do usunięcia pliku i nie twórz pustego od nowa, ponieważ pomiędzy tymi operacjami, jakaś część systemu może chcieć dokonać zapisków do takiego pliku. Poniżej pokazano sposób na bezpieczne usuwanie zawartości pliku:
$ :>plik-do-wyczyszczenia
Poniższe polecenia utworzą sztuczne 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 zawartości
$ touch nazwa_pliku # pusty plik, jeśli nie istnieje
Przykładowo, poniższe polecenie, wykonane z powłoki dyskietki startowej systemu
Debian usunie całkowicie zawartość dysku twardego /dev/hda:
# dd if=/dev/urandom of=/dev/hda ; dd if=/dev/zero of=/dev/hda
chroot
Program chroot, chroot(8), pozwala na uruchomienie
różnych instancji środowiska GNU/Linux na jednym systemie bez ponownego
uruchomiania go.
Można też uruchamiać zasobożerne programy takie jak apt-get czy
dselect w środowisku chroot na szybkim komputerze mając
zamontowane na wolniejszym komputerze zasób NFS na prawach r/w, który to zasób
jest głównym punktem montowania na wolniejszym komputerze.
chroot
Debianowe środowisko chroot można łatwo stworzyć przy pomocy
debootstrap w Woodym. Na przykład jeśli chcesz utworzyć chroota z
Sidem w katalogu /sid-root mając szybki dostęp do Internetu:
main # cd / ; mkdir /sid-root
main # debootstrap woody /sid-root http://ftp.debian.org/debian/
... obserwuj jak program ściąga całą podstawę systemu
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ź źródła na unstable
chroot # dselect # możesz też użyć aptitude, zainstaluj mc i vima :-)
W tej chwili powinieneś posiadać w pełni funkcjonalny system Debian, w którym możesz mieszać bez strachu, że coś popsujesz w Twojej głównej dystrybucji.
Ta sztuczka z debootstrap może też być użyta do instalcji Debiana
bez użycia dysku instalacyjnego Debiana lecz przy wykorzystaniu innej
dystrybucji GNU/Linux. Zobacz też http://people.debian.org/~blade/install/.
chrootWpisanie chroot /sid-root /bin/bash jest proste, ale zostawia to wiele zmiennych środowiskowych walających się po pamięci, a które nie są potrzebne lub nawet są niepożądane. Dużo lepszym sposobem jest uruchomienie kolejnego procesu login na oddzielnym terminalu wirtualnym, z którego możesz się bezpośrednio logować do systemu chroot.
Ponieważ domyślnie w systemie Debian terminale tty1 do
tty6 są przeznaczone na konsole Linuksa, a tty7 na
sesję X Window System, użyjemy konsoli tty8 jako konsoi chroot.
Po utworzeniu środowiska chroot tak jak to zostało opisane w Uruchamianie innej dystrybucji Debiana przy użyciu
chroot, Rozdział 8.6.34.1, wpisz będąc rootem 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
chrootChcesz bezpiecznie uruchamiać najnowesze Xy i GNOME w środowisku chroot? Jest to możliwe! Poniższy przykład uruchomi GDM na wirtualnym terminalu vt9.
Najpierw zainstaluj system chroot wg. opisu w Uruchamianie innej dystrybucji Debiana przy użyciu
chroot, Rozdział 8.6.34.1. Z głównego systemu skopiuj
kluczowe pliki konfiguracyjne do systemu chroot.
main # cp /etc/X11/XF86Config-4 /sid-root/etc/X11/XF86Config-4
main # chroot /sid-root # lub użyj konsoli 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ą konsolą
była konsola vt9, a nie vt7.
Teraz możesz bez problemu przełączać się między funkcjonalnymi środowiskami X systemu głównego i systemu chroot przez proste przełączanie wirtualnych terminali Linuksa, np. za pomocą kombinacji klawiszy Ctrl-Alt-F7 i Ctrl-Alt-F9. Miłej zabawy!
[FIXME] Dodaj komentarz i dowiązanie do skryptu init z chrootowanego gdm.
chroot
Środowisko chroot dla innej dystrybucji można utworzyć całkiem prosto.
Instalujesz system na oddzielnej partycji korzystając z instalatora danej
dystrybucji, i wykonujesz poniższe polecenia (przy założeniu, że główna
partycja innej dystrybucji to /dev/hda9):
main # cd / ; mkdir /other-dist
main # mount -t ext3 /dev/hda9 /other-dist
main # chroot /other-dist /bin/bash
Następnie postępuj tak jak opisano to w Uruchamianie
innej dystrybucji Debiana przy użyciu chroot, Rozdział
8.6.34.1, Ustawianie loginu dla
chroot, Rozdział 8.6.34.2 oraz Ustawianie Xów do działania w chroot, Rozdział
8.6.34.3.
chroot
pbuilder jest bardziej wyspecjalizowanym narzędziem
przygotowującycm środowisko chroot i budującym w nim pakiet. Jest to idealny
system sprawdzający, czy zależności budowania są poprawne oraz do upewnienia
się, że niepotrzebne i niepoprawne zależności budowania nie znajdą się w
pakiecie wynikowym.
Możesz sprawdzić czy dwa pliki są tym samym plikiem z dwoma dowiązaniami:
$ ls -li plik_1 plik_2
Jeżeli plik.img zawiera obraz zawartości twardego
dysku, zaś oryginalny twardy dysk ma konfigurację dającą: xxxx =
(bajtów/sektor) * (sektorów/cylinder), wtedy możesz taki obraz zamontować do
katalogu /mnt poleceniem:
# mount -o loop,offset=xxxx plik.img /mnt
Zauważ, że większość twardych dysków ma 512 bajtów/sektor.
Przykładowy dostęp do plików serwowanych przez Windows:
# mount -t smbfs -o username=moja_nazwa,uid=mój_uid,gid=mój_gid \
//serwer/dzielony_zasób /mnt/smb
# smbmount //serwer/dzielony_zasób /mnt/smb \
-o "username=moja_nazwa,uid=mój_uid,gid=mój_gid"
# smbclient -L 192.168.1.2
Otoczenie sieciowe Samby może być sprawdzane spod GNU/Linuksa:
# smbclient -N -L adres_ip_twojego_komputera | less
# nmblookup -T "*"
Obsługa wielu obcych systemów plików jest wspierana obecnie przez linuksowe jądro, a więc mogą być one dostępne w prosty sposób, poprzez zamontowanie urządzeń je zawierających. Dla niektórych systemów plików są dostępne także specjalne narzędzia umożliwiające dostęp do nich bez montowania urządzeń. Są one dostępne jako programy pracujące w przestrzeni użytkownika, a zatem wsparcie ze strony jądra nie 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żyteczne może być
narzędzie: dosfstools.
Ten rozdział opisuje tylko podstawy konfiguracji systemu, z użyciem narzędzi tekstowych. Warunkiem wstępnym zrozumienia tego rozdziału jest przeczytanie Wskazówki dotyczące instalacji Debiana, Część 3.
Mając na uwadze bezpieczeństwo, wysoce wskazane jest przeczytanie Securing Debian
Manual, który może być także znaleziony w pakiecie
harden-doc.
Przeczytaj Program init, Rozdział 2.4.1 aby
uzyskać podstawowe informacje o skryptach startowych systemu Debian.
Debian wykorzystuje skrypty startowe System V. Chociaż wszystkie skrypty
startowe znajdujące się w /etc/init.d/* są określane jako pliki
konfiguracyjne i administrator może je modyfikować, to jednak zalecanym
podejściem jest modyfikacja plików /etc/defaults/*.
Na przykład, /etc/init.d/rcS może być użyty do zmodyfikowania
ustawień dla motd, sulogin, itp. podczas startu
systemu.
Zachowanie programu logującego może być modyfikowane poprzez
/etc/syslog.conf. Sprawdź pakiet colorize jeśli
szukasz programu do kolorowania logów systemowych. Zobacz także
syslogd(8) oraz syslog.conf(5).
Istnieje kilka ustawień sprzętowych, których optymalizację Debian pozostawia w gestii administratora.
hdparm
hdparm(8) przed użyciem.
setcd
setcd(1).
setserial
scsitools
memtest86
hwtools
irqtune: zmienia priorytet IRQ, aby zapewnić go tym urządzeniom,
które wymagają wyższego priorytetu i szybkiego obsłużenia ( np. porty
szeregowe, modemy). Możliwe jest nawet trzykrotne zwiększenie przepustowości
modemu/portu szeregowego.
scanport: skanuje adresy I/O od 0x100 do 0x3ff w celu znalezienia
zainstalowanych urządzeń ISA.
inb: narzędzie odczytujące porty I/O i wyświetlające otrzymane
wyniki w formacie binarnym i szesnastkowym.
schedutils
taskset, irqset, lsrt, oraz
rt.
nice i renice (nie będącymi częścią
tego pakietu), pozwalają na pełną kontrolę parametrów programu szeregującego.
Montowanie systemu plików z opcją noatime jest także bardzo
skutecznym rozwiązaniem w przyspieszaniu odczytu plików. Zobacz
fstab(5) i mount(8).
Niektóre urządzenia mogą być konfigurowane bezpośrednio przez jądro Linuksa, poprzez system plików proc. Zobacz Dostrajanie jądra przy pomocy systemu plików proc, Rozdział 7.3.
W Debianie istnieje wiele narzędzi przeznaczonych dla konkretnego sprzętu. Wiele z nich związanych jest z laptopami. Oto lista interesujących pakietów dostępnych w Debianie:
tpconfig - Program do konfiguracji urządzeń typu touchpad
apmd - Konfiguracja zaawansowanego zarządzania energią (APM)
acpi - Wyświetla informacje o urządzeniach z ACPI
acpid - Narzędzie konfiguracji ACPI
lphdisk - Przygotowuje partycję hibernacyjną dla Phoenix NoteBIOS
sleepd - Usypia laptopa, gdy jest nieużywany
noflushd - Pozwala bezczynnym dyskom na wolniejszy obrót
big-cursor - Większy kursor w X-ach
acme - Obsługa ,,multimedialnych przycisków'' w laptopie
tpctl - Narzędzie konfiguracji IBM ThinkPad
mwavem - Obsługa modemów Mwave/ACP
toshset - Umożliwia dostęp do większości ustawień sprzętowych
laptopów Toshiba
toshutils - Narzędzia dla 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ądzania energią niż APM.
Niektóre z wymienionych pakietów wymagają specjalnych modułów jądra. W większości wypadków są one dołączone do najnowszych źródeł jądra. Jednak w razie problemów będziesz musiał zainstalować najnowszą łatkę dla jądra.
PAM (Pluggable Authentication Modules) udostępnia kontrolę logowania.
/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że pracować root (login)
/etc/login.defs # ustawienia programu login (login)
Zmień zawartość /etc/pam.d/login tak, jak poniżej, jeśli chcesz
aby dostęp do terminala (również konsoli) nie był warunkowany hasłem. Używaj
na własną odpowiedzialność.
#auth required pam_unix.so nullok
auth required pam_permit.so
Podobne sztuczki mogą być zastosowane dla xdm, gdm,
... , aby uzyskać analogiczną funkcjonalność w X-ach.
Z drugiej strony, jeśli chcesz wymusić na użytkownikach politykę wyboru
bezpiecznych haseł, zainstaluj cracklib2 i ustaw parametry w pliku
/etc/pam.d/passwd następująco:
password required pam_cracklib.so retry=3 minlen=6 difok=3
Możesz także, podczas aktywacji konta, ustawić hasło jednokrotnego użytku, co
zmusi użytkownika do jego zmiany przy pierwszym logowaniu. Aby uzyskać taki
efekt, użyj polecenia passwd z opcją -e. Zobacz
passwd(1).
Maksymalna ilość procesów może być ustalona poprzez ulimit -u 1000
w powłoce Bash albo poprzez edycję /etc/security/limits.conf,
elementu PAM. Inne limity, jak np core mogą być ustawione w
sposób analogiczny. Początkowa wartość zmiennej PATH może być
ustawiona w pliku /etc/login.defs zanim jeszcze zostaną
uruchomione skrypty startowe danej powłoki.
Dokumentacja dla PAM jest dostępna w pakiecie
libpam-doc.Linux-PAM System Administrator's Guide zawiera
informacje dotyczące konfiguracji PAM, dostępnych modułów itp. Dokumentacja
zawiera także The Linux-PAM Application Developers' Guide oraz The
Linux-PAM Module Writers' Guide.
su nie obsługuje grupy wheel''
Jest to słynne zdanie w dokumentacji info su , napisane przez
Richarda M. Stallmana. Ale nie obawiaj się, obecne su w Debianie
używa PAM, więc można ograniczyć możliwość używania su do dowolnej
grupy używając pam_wheel.so w pliku /etc/pam.d/su.
Poniższy przykład ilustruje ustawienie grupy adm analogicznie do
wheel z systemów BSD oraz umożliwia używanie 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ą wywoływać su bez podawania hasła
auth sufficient pam_wheel.so trust group=adm
Oto kilka interesujących grup:
su, jeśli pam_wheel.so jest użyte bez podania
argumentu group=.
/usr/src. Może być użyta, aby nadać użytkownikom możliwość
zarządzania kodem źródłowym systemu.
Aby uzyskać kompletną listę zobacz część FAQ w Securing Debian
Manual, który w Woodym może być także znaleziony w pakiecie
harden-doc. Także nowe base-passwd (>3.4.6)
zawierają wiarygodną listę:
/usr/share/doc/base-passwd/users-and-groups.html.
sudo – bezpieczniejsze środowisko pracy
Używam sudo do ochrony przed własną głupotą. Osobiście uważam, że
używanie sudo jest lepszą alternatywą niż ciągła praca w systemie
na koncie użytkownika root.
Zainstaluj sudo i skonfiguruj go poprzez edycję . Zapoznaj się także z
możliwościami sudo w pliku
/etc/sudoers/usr/share/doc/sudo/OPTIONS.
Przykładowa konfiguracja zapewnia członkom grupy staff uprawnienia do
wykonywania dowolnych poleceń jako root poprzez sudo, natomiast
członkom grupy src prawo do wykonywania jedynie niektórych poleceń z takimi
uprawnieniami.
Zaletą sudo jest to, że do zalogowania potrzebuje jedynie podania
hasła użytkownika, a dodatkowo monitoruje aktywność użytkownika. Jest to dobry
sposób, aby dać pewną władzę młodym administratorom. Na przykład:
$ sudo chown -R myself:mygrp .
Oczywiście, jeżeli znasz hasło root-a (jak większość domowych użytkowników), dowolne polecenie może zostać wydane jako root z Twojego konta użytkownika:
$ su -c "shutdown -h now"
Password:
(Wiem, że powinienem ograniczyć przywileje sudo konta admin, ale
ponieważ jest to mój domowy serwer, jeszcze się tym nie przejmowałem.)
Inny program umożliwiający zwykłym użytkownikom uruchamianie poleceń z
uprawnieniami root-a możesz znaleźć w pakiecie super.
Internetowy super-serwer, inetd, jest uruchamiany podczas
startu systemu z /etc/rc2.d/S20inetd (dla RUNLEVEL=2), który jest
dowiązaniem symbolicznym do pliku /etc/init.d/inetd. W skrócie,
inetd umożliwia uruchomienie jednego demona, który w razie
potrzeby uruchamia inne, zmniejszając w ten sposób obciążenie systemu.
Gdy inetd przyjmuje zgłoszenie, sprawdza protokół i nazwę żądanej
usługi przeszukując bazę danych w plikach /etc/protocols oraz
/etc/services. Następnie, wyszukuje odpowiedzialną za obsługę
zgłoszenia usługę w /etc/inetd.conf jeśli jest to zwyczajna usługa
internetowa, natomiast w /etc/rpc.conf jeśli jest to usługa
Sun-RPC.
Mając na względzie bezpieczeństwo, wyłącz zbędne usługi w pliku
/etc/inetd.conf. Usługi Sun-RPC są wykorzystywane przez NFS oraz
inne programy oparte na RPC.
Czasami inetd nie przekazuje kontroli do żądanej usługi
bezpośrednio, lecz uruchamia demona TCP/IP tcpd przekazując mu
nazwę usługi jako argument. W tym wypadku tcpd uruchomi żądaną
usługę dopiero po zgłoszeniu tego do logów systemowych oraz zanalizowaniu
plików /etc/host.deny i /etc/host.allow.
Jeśli masz problemy ze zdalnym dostępem w aktualnej dystrybucji Debian,
skomentuj zapis ,,ALL: PARANOID'' w /etc/host.deny, jeśli taki
zapis się tam znajduje.
Aby uzyskać bardziej szczegółowe informacje zobacz inetd(8),
inetd.conf(5), protocols(5),
services(5), tcpd(8), hosts_access(5), i
hosts_options(5).
Aby uzyskać informacje o Sun-RPC zobacz rpcinfo(8) ,
portmap(8), i
/usr/share/doc/portmap/portmapper.txt.gz.
Zasoby:
OpenLDAP
openldap-guide
LDAP Linux
HOWTO
LDAP
Implementation HOWTO
OpenLDAP,
extensive use reports
Open LDAP
with Courier IMAP and Postfix
Nagrywarki CD z interfejsem ATAPI/IDE stały się w ostatnim czasie bardzo
popularne. Są miłym rozwiązaniem archiwizowania danych i wykonywania kopii
zapasowych w sytuacji, gdy wystarcza < 640MB pojemności nośnika. Aby
uzyskać najbardziej wiarygodne informacje, zobacz LDP CD-Writing-HOWTO.
Po pierwsze, każde zakłócenie danych wysłanych do nagrywarki może spowodować nieodwracalne uszkodzenie płyty CD. Zaopatrz się w nagrywarkę z jak największym rozmiarem bufora. Jeśli pieniądze nie są problemem, zamiast wersji ATAPI/IDE zdecyduj się na wersję SCSI. Jeśli możesz wybierać pomiędzy IDE, zdecyduj się na wersję podłączaną do slotu PCI (na płycie głównej) zamiast do slotu ISA (jak karta SB16 itp.).
W jądrach Linuksa 2.2 i 2.4 nagrywarka IDE musi być uzupełniona sterownikami IDE-SCSI, zamiast zwykłego sterownika IDE dla napędów CD. Również ogólny sterownik SCSI ( SCSI generic driver) musi zostać uaktywniony. Są na to dwa sposoby, zakładając że jądra rozpowszechniane były z aktualnymi dystrybucjami (jak te z marca 2001).
lilo
Dodaj poniższe linie do pliku /etc/lilo.conf jeśli używasz
standardowego jądra rozpowszechnianego z systemem Debian. Jeśli użytych jest
kilka opcji, pozostaw między nimi znak spacji.
append="hdx=ide-scsi ignore=hdx"
W tym przykładzie nagrywarka jest dostępna poprzez sterownik ide-scsi, a oznaczony parametrem hdx, gdzie x oznacza jedno z poniższych:
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ęd na zewnętrznym porcie IDE lub ATA66/100 IDE
Wpisz następujące polecenia jako root po zakończeniu konfiguracji.
# lilo
# shutdown -r now
Debian używa make-kpkg do tworzenia jądra. Użyj różnych
--append_to_version z make-kpkg aby zbudować wiele
obrazów jądra. Zobacz Jądro systemu Linux w Debianie,
Część 7.
Użyj następujących ustawień podczas make menuconfig:
Wsparcie jądra dla nagrywarki może być uaktywnione podczas startu systemu poprzez następujące polecenia:
# echo ide-scsi >>/etc/modules
# echo sg >>/etc/modules
# cd /dev; ln -sf scd0 cdrom
Ręczna inicjalizacja może być wykonana przez:
# modprobe ide-scsi
# modprobe sg
Po restarcie możesz sprawdzić swoją konfigurację:
$ dmesg|less
# apt-get install cdrecord
# cdrecord -scanbus
[Per Warren Dodge] Czasami może wystąpić konflikt między ide-scsi
i ide-cd, jeśli masz zarówno CD-ROM jak i napęd CD-R/RW. Możesz
wtedy spróbować dodać poniższą linię do swojego
/etc/modutils/aliases, uruchomić update-modules i
zrestartować system.
pre-install ide-scsi modprobe ide-cd
Polecenie to nakazuje załadowanie sterownika IDE przed ide-scsi. Sterownik IDE ide-cd przejmuje kontrolę nad urządzeniem ATAPI CD-ROM — wszystkim, co nie zostało mu nakazane do zignorowania. W ten sposób ide-scsi przejmuje kontrolę tylko nad zignorowanymi urządzeniami.
Aby nagrać katalog target-directory jako cd-image.raw
(startowy, Joliet z TRANS.TBL; jeśli płyta nie ma być bootowalna, usuń opcje
-b i -c), włóż dyskietkę startową do stacji dyskietek
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/
Śmiesznym kruczkiem może być zrobienie startowego CD-ROM z systemem DOS. Jeśli
obraz zwyczajnej dyskietki startowej jest we wspomnianym pliku
boot.img, przy restarcie płyta zadziała jak gdyby
dosowa dyskietka startowa była w napędzie dyskietek. Może być to jeszcze
ciekawsze, jeśli wykorzystasz freeDOS.
Zawartość obrazu tej płyty może być sprawdzona poprzez zamontowanie jej jako urządzenie loop.
# mount -t iso9660 -o ro,loop cd-image.raw /cdrom
# cd /cdrom
# mc
# umount /cdrom
Najpierw porównajmy (zakładając podwójną prędkość napędu) z:
# nice --10 cdrecord -dummy speed=2 dev=0,0 disk.img
Następnie, jeśli wszystko poszło OK, wypalimy płytę CD-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ędy CD-RW działają lepiej z:
# nice --10 cdrecord -v blank=all speed=2 dev=0,0 disk.img
i następnie:
# nice --10 cdrecord -v -eject speed=2 dev=0,0 disk.img
Te dwa kroki są niezbędne, aby zapobiec pokrywaniu się faz zerowania płyty i
wypalania. Wartość argumentów dla nice może także wymagać pewnej
regulacji.
Niektóre płyty CD-R i komercyjne CD zawierają specjalne, błędne sektory, które
uniemożliwiają ich kopiowanie przez dd (płyta Windows 98 jest
jedną z nich). Pakiet cdrecord udostępnia polecenie
readcd. Użyj go do skopiowania zawartości płyty do pliku. Jeśli
to plik z danymi, zamontuj go i wykonaj df aby uzyskać jego
rzeczywisty rozmiar. Podziel liczbę bloków przez 2 ( 1 blok = 1024 bajty) aby
uzyskać ilość sektorów na CD ( 1 sektor = 2048 bajty). Uruchom
readcd z niezbędnymi opcjami i użyj obrazu płyty do wypalenia
następnej.
# readcd dev=target,lun,scsibusno # select function 11
Zwykle można ustawić wszystkie trzy parametry jako 0. Ilość sektorów podana
przez readcd jest zazwyczaj zbyt duża, użyj podanej powyżej metody
aby uzyskać dokładniejsze wyniki.
Powinno zostać zauważone, że użycie dd z płytami CD-ROM stwarza
pewne problemy. Pierwsze uruchomienie dd spowoduje komunikat
błędu i może wytworzyć krótszy obraz dysku, utraciwszy końcową jego część.
Drugie uruchomienie dd może utworzyć większy obraz płyty ze
,,śmieciami'' dołączonymi na końcu, jeśli rozmiar danych nie został podany.
Tylko drugie uruchomienie dd wraz z podaniem poprawnego rozmiaru
danych, bez wyciągania CD, po otrzymaniu komunikatu błędu wydaje się działać
poprawnie. Jeśli na przykład rozmiar obrazu płyty wyświetlony przez
df wynosi 46301184 bloki, użyj dwukrotnie
następującego polecenia aby otrzymać prawidłowy obraz (jest to informacja,
uzyskana przeze mnie empirycznie):
# dd if=/dev/cdrom of=cd.img bs=2048 count=$((46301184/2))
Aby otrzymać najnowsze informacje na temat płyt z Debianem, odwiedź stronę Debian CD.
Jeśli posiadasz szybkie połączenie internetowe, pomyśl o instalacji poprzez sieć, używając:
Jeśli nie posiadasz szybkiego połączenia z Internetem, pomyśl o zakupie płyt CD
od dystrybutora
CD.
Proszę, nie zajmuj niepotrzebnie łącza ściągając obraz standardowego CD, chyba że jesteś testerem płyt (nawet nową metodą jigdo).
Jedną z niewielu, godną uwagi płytą jest KNOPPIX - Live Linux
Filesystem On CD. Z tą płytą uruchomisz w pełni działającego
Debiana bez potrzeby instalowania go na twardym dysku.
Aby skopiować kluczowe pliki konfiguracyjne i dane na płyty CD-R, użyj
przykładowego skryptu backup backup.
Zobacz także Kopiowanie oraz archiwizacja całych
katalogów, Rozdział 8.3 i Kopia różnicowa oraz
synchronizacja danych, Rozdział 8.4.
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ą kopię (żadnych przerw, itp...)
Środowisko X jest zapewnione dzięki Xfree86. Istnieją dwie główne wersje
serwera X dostępne dla Debiana: Xfree86 Version 3.3 (XF3) i XFree86 Version
serii 4.x (XF4), obie oparte o specyfikację X11R6 wg. X.Org.
Podstawowe informacje nt. X możesz uzyskać z X(7), LDP XWindow-User-HOWTO,
oraz Remote X
Apps mini-HOWTO. Informacje specyficzne dla Debiana, przeznaczone
dla jego użytkowników, przeczytaj w
/usr/share/doc/xfree86-common/FAQ.gz dostarczanym w pakiecie
xfree86-common. Zawiera interesujące uwagi na temat przypisywania
różnych funkcji do klawiszy autorstwa Brandena Robinsona.
Zauważ, że jest to odwrócenie rozumienia słowa serwer i klient przyjętego w innych kontekstach.
Istnieje kilka dróg, aby ,,X serwer'' (strona wyświetlająca) przyjął zdalne połączenie od ,,klienta X'' (strona oprogramowania).
xhost
xhost, Rozdział
9.4.7 i xhost(1x).
xauth
xhost).
ssh -X.
xauth(1x).
xdm, wdm, gdm,
kdm, ...
xauth).
xdm(1x) i Xsecurity(7), aby zdobyć podstawowe
informacje nt. kontroli dostępu do X.
wdm(1x), gdm(8), i kdm.options(5)
dla dalszych informacji, jeśli te programy są zainstalowane.
init i poziomy startu
(runlevels), Rozdział 6.5.4 aby zorientować się jak wyłączyć
xdm, by logować się w trybie tekstowym bez usuwania pakietu
xdm.
ssh -X
ssh, Rozdział
9.4.8.
Wszystkie metody połączeń zdalnych, za wyjątkiem wykorzystywania
ssh, wymagają włączonych połączeń TCP/IP w X serwerze. Zobacz Połączenie TCP/IP z X, Rozdział 9.4.6.
Istnieje kilka (meta)pakietów, które zapewniają prostą instalację X Window System w Woodym.
x-window-system-corexserver-xfree86), zestaw czcionek, jak również kilka podstawowych
klientów X i programów użytkowych.
x-window-systemx-window-system-core, twm oraz xdm, tak
więc w przypadku jego instalacji x-window-system-core nie musi
zostać oddzielnie wyznaczony do zainstalowania)
xserver-common-v3xserver-*xserver-common-v3.)
W większości przypadków x-window-system jest odpowiednim pakietem
do zainstalowania. (Jeśli chcesz logować się w trybie tekstowym, upewnij się
że wyłączyłeś usługę xdm tak, jak opisano to w części Jak wyłączyć automatyczne uruchamianie Xów przy starcie?!,
Rozdział 8.1.4.)
Aby wykryć swój sprzęt podczas konfiguracji X-ów, zainstaluj następujące pakiety przed instalacją X Window System:
discover – narzędzie identyfikacji sprzętu.
mdetect – autodetekcja myszy.
read-edid – gromadzenie informacji sprzętowej o monitorach
VESA PnP.
Zobacz XFree86(1x) aby uzyskać informację o X serwerze.
Uruchom X serwer z lokalnej konsoli:
$ startx -- :<display> vtXX
e.g.:
$ startx -- :1 vt8 -bpp 16
... uruchom na vt8 podłączonym do localhost:1 w trybie 16 bpp
Argumenty podane po -- są przekazywane X serwerowi.
Jeśli używasz skryptu ~/.xserverrc do konfigurowania uruchomienia
X, pamiętaj aby wykonać exec na prawidłowym X serwerze. W
przeciwnym wypadku może on wolno się uruchamiać i zamykać. Na przykład:
#!/bin/sh
exec /usr/bin/X11/X -dpi 100 -nolisten tcp
Aby z(re)konfigurować serwer 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żywając skryptu dexconf.
Aby z(re)konfigurować serwer 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żywając skryptu xf86config-v3.
Modyfikując ustawienia w zależności od swoich potrzeb nie zmieniaj zawartości pliku konfiguracyjnego pomiędzy liniami (XF4):
### BEGIN DEBCONF SECTION
[ciach]
### END DEBCONF SECTION
Zamiast tego dodaj własne opcje przed tym tekstem. Na przykład, aby użyć innej karty graficznej dodaj podobne linie na początku pliku:
Section "Device"
Identifier "Moje Urzadzenie"
Driver "ati"
Option "NoAccel"
EndSection
Section "Screen"
Identifier "Mój Ekran"
Device "Moje Urządzenie"
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
Większość klientów X może być uruchomiona poleceniem podobnym do:
client $ xterm -geometry 80x24+30+200 -fn 6x10 -display hostname:0 &
Dodatkowe argumenty oznaczają:
/tmp/.X11-unix/XD (więc jest dostępny tylko z
host).
Domyślna wartość zmiennej displayname dla klientów X (oprogramowanie), może być ustawiona poprzez zmienną środowiskową DISPLAY. Można to osiągnąć przez np. uruchomienie następujących skryptów przed klientem X:
$ export DISPLAY=:0
# Domyślne ustawienie, lokalna maszyna, pierwszy screen
$ export DISPLAY=hostname.fulldomain.name:0.2
$ export DISPLAY=localhost:0
Start Xów może być dostosowany do własnych potrzeb za pomocą
~/.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., Rozdział
9.4.5.1, zastępuje to wszystko, co dzieje się podczas uruchomienia
Xsession przez startx. Używaj
~/.xsession, a z powyższego sposobu korzystaj jedynie w
ostateczności.
Sesja X (X-serwer + klient X) może być rozpoczęta poprzez:
startx: skrypt obudowujący initx, służący do
uruchomienia sesji z terminala tekstowego. Jeśli plik ~/.xinitrc
nie istnieje, /etc/X11/Xsession jest wywoływany przez
/etc/X11/xinit/xinitrc.
xdm, gdm, kdm, lub wdm:
demon uruchamiający X-serwer i klientów, umożliwiający logowanie w GUI.
/etc/X11/Xsession jest uruchamiany bezpośrednio.
Tryb tekstowy może być udostępniony, jak to opisano w Jak wyłączyć automatyczne uruchamianie Xów przy starcie?!, Rozdział 8.1.4.
Domyślny skrypt startowy /etc/X11/Xsession jest kombinacją
/etc/X11/Xsession.d/50xfree86-common_determine-startup oraz
/etc/X11/Xsession.d/99xfree86-common_start.
Na przebieg wykonania /etc/X11/Xsession wpływają ustawienia z
/etc/X11/Xsession.options. Jego głównym zadaniem jest
uruchomienie za pomocą exec pierwszego istniejącego programu
znajdującego się na następującej liście:
~/.xsession lub ~/.Xsession, jeśli istnieje.
/usr/bin/x-session-manager, jeśli istnieje.
/usr/bin/x-window-manager, jeśli istnieje.
/usr/bin/x-terminal-emulator, jeśli istnieje.
Dokładne znaczenie tych poleceń jest uzależnione od alternatywnych ustawień systemu Debian, opisanych w Alternatywne polecenia, Rozdział 6.5.3. Na przykład:
# update-alternatives --config x-session-manager
... lub
# update-alternatives --config x-window-manager
Aby wybrać domyślny menedżer okien X, jednocześnie zachowując GNOME i KDE,
zamień plik /etc/X11/Xsession.d/50xfree86-common_determine-startup
z plikiem dostarczonym w drugim raporcie o błędzie na http://bugs.debian.org/168347
(mam nadzieję, że zostanie to szybko naprawione) i wyedytuj
/etc/X11/Xsession.options jak następuje:
# /etc/X11/Xsession.options
#
# opcje konfiguracyjne dla /etc/X11/Xsession
# Wyjaśnienie dostępnych opcji znajdziesz w Xsession.options(5)
# Default enabled
allow-failsafe
allow-user-resources
allow-user-xsession
use-ssh-agent
# Domyślnie wyłączone (włącz odkomentowując)
do-not-use-x-session-manager
#do-not-use-x-window-manager
Bez wspomnianych powyżej zmian w systemie pakiety gnome-session i
kdebase zapewniają funkcjonalność menedżera sesji. Usunięcie ich,
umożliwia ustawienie jako domyślnego innego menedżera okien.
W systemie, gdzie /etc/X11/Xsession.options zawiera linię
allow-user-xsession bez poprzedzających jej znaków, każdy
użytkownik, który stworzy ~/.xsession lub ~/.Xsession
będzie mógł dostosować działanie /etc/X11/Xsession.
Ostatnie polecenie w pliku ~/.xsession powinno przyjmować formę:
exec some-window/session-manager, aby uruchomić
ulubiony menedżer sesji.
Dobry przykład skryptu ~/.xsession jest podany w
/usr/share/doc/xfree86-common/examples/xsession.gz.
Używam tego skryptu do wybierania menedżera okien, dostępu do ekranu i obsługiwanego języka dla poszczególnych użytkowników. Przeczytaj także Uruchamianie konkretnych menedżerów okien/sesji., Rozdział 9.4.5.2, Uprawnienia administratora w X, Rozdział 9.4.11 i Przykład systemu dwujęzycznego (japoński EUC i ISO-8859-1), Rozdział 9.7.8.
Dodatkowe zasoby X dla poszczególnych użytkowników są przechowywane w
~/.Xresources, podczas gdy zasoby o zasięgu całego systemu są
wymienione w /etc/X11/Xresources/*. Przeczytaj
xrdb(1x).
Chcąc dostosować do swoich upodobań mapę klawiatury i funkcje klawiszy myszy w
Xach, edytuj ~/.xmodmaprc. Przeczytaj xmodmap(1x).
Podążając za wytycznymi, opisanymi w Personalizowanie
sesji X., Rozdział 9.4.5.1, wybrany przez użytkownika menedżer sesji/okien
może być uaktywniony poprzez zainstalowanie odpowiedniego pakietu i odpowiednie
zmiany pod koniec pliku ~/.xsession. (Osobiście lubię
blackbox/fluxbox z powodu ich prostego stylu i
szybkości.):
gnome-session
kdebase (lub kdebase3 dla KDE3)
blackbox
fluxbox
xfce
icewm
fvwm
wmaker
enlightenment
Przeczytaj Window Managers for
X.
Aby otrzymać w pełni funkcjonalne środowiska KDE lub GNOME, przydatne są poniższe metapakiety:
kde
gnome
Instalacja tych pakietów za pomocą narzędzi korzystających ze zmiennych
recommends, takich jak dselect i
aptitude, zaopatrzy Cię w większy wybór oprogramowania niż
instalacja tylko za pomocą apt-get.
Jeśli chcesz logować się w trybie tekstowym wyłącz menedżera wyświetlania X,
takiego jak kdm, gdm, i wdm, które mogą
zostać zainstalowane poprzez zależności, jak opisano to w Jak wyłączyć automatyczne uruchamianie Xów przy starcie?!,
Rozdział 8.1.4.
Jeśli GNOME ma się uruchamiać domyślnie, zamiast KDE, upewnij się jak właściwie
skonfigurować x-session-manager, co opisano w Alternatywne polecenia, Rozdział 6.5.3.
Ponieważ zdalne połączenie TCP/IP bez szyfrowania można stosunkowo łatwo
podsłuchiwać, domyślne ustawienia X w aktualnej wersji systemu Debian nie
udostępnia gniazda TCP/IP. Rozważ użycie ssh, jeśli zależy Ci na
zdalnym połączeniu ( zobacz Zdalne połączenie z X:
ssh, Rozdział 9.4.8).
Metoda opisana tutaj nie jest zalecana, chyba że stosowana jest w bardzo bezpiecznym środowisku, za dobrym firewallem i tylko wtedy jeśli wszyscy użytkownicy są godni zaufania. Użyj tego polecenia, aby sprawdzić obecne ustawienia X serwera dotyczące gniazd TCP/IP:
# find /etc/X11 -type f -print0 | xargs -0 grep nolisten
/etc/X11/xinit/xserverrc:exec /usr/bin/X11/X -dpi 100 -nolisten tcp
Usuń -nolisten aby przywrócić nasłuch poprzez TCP/IP.
xhost
xhost umożliwia dostęp wyznaczonym hostom. Jest to bardzo
niebezpieczne. Poniższa linia wyłącza sprawdzanie hostów i pozwala na
połączenie skądkolwiek, jeśli dozwolone są połączenia TCP/IP ( przeczytaj Połączenie TCP/IP z X, Rozdział 9.4.6):
$ xhost +
Możesz ponownie uaktywnić sprawdzanie hostów poprzez:
$ xhost -
xhost nie rozróżnia użytkowników na zdalnych maszynach. Oprócz
tego adresy hostów mogą być oszukane (spoofing).
Powinno unikać się tej metody, szczególnie jeśli jesteś podłączony do sieci
niegodnej zaufania (np. PPP dialup ). Przeczytaj xhost(1x).
ssh
ssh zapewnia bezpieczny sposób połączenia lokalnego X serwera z
programem uruchomionym na zdalnej maszynie.
/etc/ssh/sshd_config zdalnego hosta,
jeśli chcesz uniknąć podawania tych opcji w lini poleceń.
xterm na lokalnym komputerze.
ssh, aby ustanowić połączenie ze stroną zdalną.
localname @ localhost $ ssh -q -X -l loginname remotehost.domain
Password:
.....
loginname @ remotehost $ gimp &
Metoda ta umożliwia wyświetlanie wyjścia zdalnego klienta X, jak gdyby komunikował się on lokalnie poprzez gniazda UNIX.
xterm
Dowiedz się wszystkiego o xterm: http://dickey.his.com/xterm/xterm.faq.html.
Dużo starszych programów dla X, jak xterm, używa bazy danych
zasobów X do konfiguracji własnego wyglądu. Plik ~/.Xresources
jest używany do przechowywania specyfikacji zasobów użytkownika. Jego
zawartość jest automatycznie dołączana do domyślnych zasobów X podczas
logowania.
Oto parę przydatnych ustawień dla twojego pliku ~/.Xresources:
! Ustaw czcionkę do bardziej czytelnego rozmiaru 9x15
XTerm*font: 9x15
! Wyświetl pasek przewijania
XTerm*scrollBar: true
! Ustaw rozmiar bufora na 1000 linii
XTerm*saveLines: 1000
Aby zmiany te weszły w życie natychmiast, dodaj je do bazy danych zasobów poleceniem:
xrdb -merge ~/.Xresources
Jeśli program z GUI musi być uruchomiony z uprawnieniami administratora użyj następującej procedury.Nigdy nie uruchamiaj X serwera bezpośrednio z konta roota, aby uniknąć problemów z bezpieczeństwem.
Uruchom X serwer jako zwykły użytkownik i otwórz okno programu
xterm. Potem:
$ XAUTHORITY=$HOME/.Xauthority
$ export XAUTHORITY
$ su root
Password:*****
# printtool &
Używając tego sposobu by zyskać prawa użytkownika innego niż root, upewnij się,
że ~/.Xauthority jest dostępny do odczytu dla grupy tego
użytkownika.
Aby zautomatyzować te sekwencje poleceń, utwórz plik ~/.xsession
na koncie użytkownika zawierający linie:
# To sprawia, że X-y działają, kiedy za pomocą su staję się root'em.
if [ -z "$XAUTHORITY" ]; then
XAUTHORITY=$HOME/.Xauthority
export XAUTHORITY
fi
unset XSTARTUP
# Jeśli jakieś menedżery okien/sesji są wybrane, odkomentuj następujące
# 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żer okien/sesji X
exec $XSTARTUP
Następnie uruchom su (nie su -) w oknie programu
xterm. Teraz programy uruchamiane z tego xterma będą
wyświetlać się temu użytkownikowi, podczas gdy pracować będą z prawami
administratora. Działa to tak długo, jak długo domyślny plik
/etc/X11/Xsession jest wykonywany. Jeśli użytkownik zmienił swoje
środowisko edytując ~/.xinit lub ~/.xsession, to
wymieniona zmienna środowiskowa XAUTHORITY musi być w nich
odpowiednio zmieniona.
Opcjonalnie, sudo może być wykorzystane dla zautomatyzowania tej
sekwencji poleceń:
$ sudo xterm
... lub
$ sudo -H -s
W tym wypadku plik /root/.bashrc powinien zawierać:
if [ $SUDO_USER ]; then
sudo -H -u $SUDO_USER xauth extract - $DISPLAY | xauth merge -
fi
Działa to poprawnie nawet gdy katalog domowy użytkownika jest na NFS, ponieważ
root nie odczytuje jego .Xauthority.
Jest kilka pakietów przeznaczonych specjalnie dla tego celu:
kdesu, gksu, gksudo,
gnome-sudo, i xsu. Parę innych metod może być
użytych do osiągnięcia podobnych rezultatów: utworzenie dowiązania
symbolicznego z pliku /root/.Xauthority do użytkownika, użycie
skryptu sux; lub wpisanie
,,xauth merge ~USER_RUNNING_X/.Xauthority'' w plikach
startowych administratora.
Przeczytaj więcej na debian-devel
mailing list.
Standardowy xfs z XFree86-4 poprawnie współpracuje z czcionkami
TrueType. Jeśli natomiast korzystasz z XFree86-3 musisz zainstalować osobny
pakiet, taki jak xfs-xtt.
Musisz upewnić się, że wszystkie programy, które mają korzystać z czcionek TrueType zostały połączone z libXft lub libfreetype (prawdopobnie nie musisz się o to martwić, jeśli korzystasz z prekompilowanych pakietów .deb).
Pamiętaj aby zainstalować wymagane czcionki i wygenerować pliki
fonts.{scale,dir}, aby mogły zostać zaindeksowane i użyte.
Ponieważ wybór Wolnych czcionek jest dosyć ograniczony, dobrym rozwiązaniem może być równoczesna instalacja ich komercyjnych odpowiedników. Aby uczynić ich instalację łatwiejszą, 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ędziesz miał naprawdę duży wybór czcionek, jeśli połączysz użycie swoich Wolnych czcionek z innymi, komercyjnymi.
Jest kilka graficznych przeglądarek stron WWW w Woodym:
mozilla The Mozilla (nowa)
galeon przeglądarka oparta o Mozillę z Gnome UI (nowa)
konqueror przeglądarka dla KDE
dillo przeglądarka w GTK
amaya-gtk przeglądarka wzorcowa W3C
amaya-lesstif przeglądarka wzorcowa W3C
netscape-... (dużo, stare)
communicator-... (dużo, stare)
Wersja pakietu mozilla musi odpowiadać wersji wymaganej przez
pakiet galeon. Chociaż różnią się one interfejsem użytkownika, to
korzystają z tego samego mechanizmu renderowania stron HTML Gecko.
Wtyczki dla przeglądarek takich, jak mozilla i galeon
mogą być uaktywnione poprzez ręczną instalację odpowiednich plikow
,,*.so'' w katalogu z wtyczkami i ponowne uruchomienie
przeglądarki.
Popularne wtyczki:
http://java.sun.com.
http://www.macromedia.com/software/flashplayer/.
freewrl: przeglądarka VRML i wtyczka dla Netscape'a
SSH (Secure SHell) zapewnia bezpieczny sposób połączeń internetowych. Wersja
SSH stanowiąca wolne oprogramowanie nazywa się OpenSSH i jest dostępna w
systemie Debian jako pakiet ssh.
Najpierw zainstaluj serwer i klienta OpenSSH.
# apt-get update && apt-get install ssh
Wymagany jest wpis non-US w /etc/apt/source.list. Jeśli serwer
OpenSSH ma być uruchamiany, to nie może istnieć plik
/etc/ssh/sshd_not_to_be_run.
SSH zapewnia dwa protokoły identyfikacji:
.rhosts lub
/etc/hosts.equiv, w połączeniu z metodą klucza publicznego
(wyłączona).
Jeśli używasz Woodiego lub systemu innego niż Debian, to zwróć uwagę na te różnice.
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ślne klienta SSH. Przeczytaj
ssh(1). Ważne uwagi, pozycje:
/etc/ssh/sshd_config: Domyślne ustawienia serwera SSH. Przejrzyj
też sshd(8). Pozycje godne uwagi:
sshd
powinien nasłuchiwać. Dozwolona jest więcej niż jedna opcja.
$HOME/.ssh/authorized_keys: lista domyślnych kluczy publicznych,
które zostały użyte przez klientów do połączenia na dane konto na tym
komputerze. Zobacz ssh-keygen(1).
$HOME/.ssh/identity: Zobacz ssh-add(1) oraz
ssh-agent(1).
Rozpoczęcie połączenia przez klienta ssh.
$ ssh username@hostname.domain.ext
$ ssh -1 username@hostname.domain.ext # Wymusza używanie SSH w wersji 1
$ ssh -1 -o RSAAuthentication=no -l username foo.host
# wymusza używanie haseł SSH1
$ ssh -o PreferredAuthentications=password -l username foo.host
# wumusza używanie haseł SSH2
Z punktu widzenia użytkownika ssh działa jako sprytniejszy i
bezpieczniejszy odpowiednik programu telnet ( nie zarzuci nas np.
^]).
Aby utworzyć potok łączący port 25 komputera zdalny-serwer i port
4025 na komputerze lokalnym, oraz potok łączący port 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żytkownik@zdalny-serwer
Jest to bezpieczny sposób na nawiązywanie połączenia z serwerami SMTP/POP3 w
Internecie. Ustaw AllowTcpForwarding na yes w pliku
/etc/ssh/sshd_config zdalnego komputera.
Można uniknąc konieczności pamiętania hasła dla każdego używanego zdalnego komputera używając RSAAuthentication (protokół SSH1) lub PubkeyAuthentication (protokół SSH2).
Na zdalnym systemie ustaw odpowiednio pozycje ,,RSAAuthentication yes'' lub
,,PubkeyAuthentication yes'', w /etc/ssh/sshd_config.
Następnie wygeneruj klucze identyfikacyjne lokalnie i zainstaluj klucz publiczny na zdalnym systemie:
$ ssh-keygen # RSAAuthentication: klucz RSA1 dla SSH1
$ cat .ssh/identity | ssh użytkownik1@zdalny \
"cat - >>.ssh/authorized_keys"
...
$ ssh-keygen -t rsa # PubkeyAuthentication: Klucz RSA dla SSH2
$ cat .ssh/id_rsa.pub | ssh użytkownik1@zdalny \
"cat - >>.ssh/authorized_keys"
...
$ ssh-keygen -t dsa # PubkeyAuthentication: klucz DSA dla SSH2
$ cat .ssh/id_dsa.pub | ssh użytkownik1@zdalny \
"cat - >>.ssh/authorized_keys"
Można później zmienić hasło za pomocą polecenia ,,ssh-keygen -p''. Sprawdź ustawienia testując połączenie. W razie nieprawidłowości skorzystaj z polecenia ,,ssh -v''.
Możesz dodać opcje do pozycji w authorized_keys, aby ograniczyć
uprawnienia hostów i użyć odpowiedniego polecenia. Po dalsze informacje
sięgnij do sshd(8).
Zauważ, że SSH2 obsługuje HostbasedAuthentication. Aby uaktywnić
ten mechanizm, musisz zmienić wartość zmiennej
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.
Istnieje parę klientów SSH na platformy inne niż Unix.
puTTY (GPL)
cygwin (GPL)
macSSH (GPL) [Zauważ, że Mac
OS X zawiera OpenSSH; użyj ssh w aplikacji Terminala]
Zobacz także SourceForge.net, site
documentation, ,,6. CVS Instructions''.
Bezpieczniej jest chronić swój klucz SSH hasłem. Jeśli nie zostało ono ustawione, użyj polecenia ssh-keygen -p aby to zmienić.
Umieść swój klucz publiczny (np ~/.ssh/id_rsa.pub) w pliku
~/.ssh/authorized_keys na zdalnym hoście, używając połączenia
opartego o hasła, tak jak to opisano w Połączenia z
mniejszą ilością haseł, Rozdział 9.5.3.
$ 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 user@remote.host:foo
... nie potrzebne tu jest moje hasło :-)
$^D
... przerywanie sesji ssh-agent
Dla X-serwera, standardowe skrypty startowe systemu Debian uruchamiają
ssh-agent jako proces macierzysty. Musisz więc jedynie uruchomić
jednokrotnie ssh-add.
Dla dalszych informacji przeczytaj ssh-agent(1) i
ssh-add(1).
Jeśli masz problemy, sprawdź prawa dostępu do plików konfiguracyjnych i uruchom
ssh z opcją ,,-v''.
Użyj parametru ,,-P'' jeśli jesteś rootem i masz problem z firewallem; pozwala to uniknąć korzystania z portów 1–1023.
Jeśli zdalne połączenie ssh nagle przestaje działać, może być to
spowodowane działaniami administratora, a najbardziej, prawdopodobną zmianą w
host_key. Po upewnieniu się, że nie jest to jednak sprytna próba
włamania poprzez podszywanie się za zdalnej maszyny, możesz odzyskać połączenie
usuwając pozycje host_key z $HOME/.ssh/known_hosts na
lokalnej maszynie.
Konfiguracja poczty dzieli się na 3 kategorie:
exim,
postfix, sendmail, qmail,
ssmtp, nullmailer, ...
procmail, fetchmail,
mailx, ...
mutt,
emacs+gnus,...
Aby mieć w pełni wyposażony MTA użyj exim. Zasoby:
exim-doc i exim-doc-html
http://www.exim.org/
Jeśli troszczysz się o bezpieczeństwo, to jedyną rozsądną alternatywą jest
postfix. sendmail i qmail, są również
dostępne jako pakiety systemu Debian, ale ich używanie nie jest polecane.
Jeśli nie potrzebujesz ,,relay capability'' MTA, jak to jest w przypadku np. laptopów, możesz rozważyć użycie rozwiązań mniejszego kalibru:
ssmtp: wymaga połączenia SMTP i obsługuje aliasy, lub
nullmailer: potrafi kolejkować, ale nie obsługuje aliasów.
Obecnie uważam, że exim jest bardziej odpowiedni nawet dla mojej
stacji roboczej, będącej właśnie laptopem.
Musisz usunąć exim aby zainstalować w/w pakiety, gdyż zachodzi
pomiędzy nimi konflikt:
# dpkg -P --force-depends exim
# apt-get install nullmailer # lub ssmtp
Aby używać exim jako MTA, ustaw odpowiednie opcje w:
/etc/exim/exim.conf ,,eximconfig'' tworzenie i edycja
/etc/inetd.conf zakomentuj smtp by używać serwera exim w trybie demon
/etc/email-addresses Dodawanie listy fałszywych adresów
sprawdź filtry, używając exim -brw, -bf, -bF, -bV, ... etc.
W /etc/exim/exim.conf (Woody lub później), w części DIRECTORS, pod
koniec (za 'lokalny użytkownik: przekierowanie') dodaj przekierowanie pasujące
do wszystkich adresów, które poprzednie przekierowania nie mogły objąć (przez
Miquela van Smoorenburga):
catchall:
driver = smartuser
new_address = webmaster@mydomain.com
Jeśli chce się mieć bardziej szczegółowy opis każdej wirtualnej domeny itp.
dodaj następujące linie pod koniec pliku /etc/exim/exim.conf (nie
sprawdzone).
*@yourdomain.com ${lookup{$1}lsearch*{/etc/email-addresses} \
{$value}fail} T
Następnie umieść pozycje ,,*'' w pliku /etc/email-addresses.
Selektywna zamiana adresów dla wychodzącej poczty, aby otrzymać poprawnie
nagłówki ,,From: '', może być osiągnięta w programie exim dzięki
odpowiedniej konfiguracji pod koniec pliku /etc/exim/exim.conf:
*@komp1.gdzieś.dyndns.org \
"${if eq {${lookup{$1}lsearch{/etc/passwd}{1}{0}}} {1} \
{$0}{$1@gdzieś.dyndns.org}}" frFs
Ta regułka zamienia wszystkie adresy pasujące do *@komp1.gdzieś.dyndns.org.
/etc/password czy część lokalna ($1)
jest użytkownikiem czy nie.
Niektórzy usługodawcy SMTP, jak np. yahoo.com, wymagają autoryzacji SMTP.
Skonfiguruj /etc/exim/exim.conf następująco:
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
fetchmail jest uruchamiany w trybie demona, aby pobrać pocztę z
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łasność fetchmaila)
Uruchomienie fetchmaila jako demona wywoływanego ze skryptu
init.d w Potato może być kłopotliwe (w Woodym jest już inaczej).
Zobacz przykładowe skrypty.
Jeśli nagłówki poczty elektronicznej są zanieczyszczone znakiem ^M z winy
Twojego ISP, dodaj ,,stripcr'' do opcji w pliku
$HOME/.fetchmailrc:
options fetchall no keep stripcr
procmail spełnia rolę lokalnego MDA oraz programu filtrującego.
Należy stworzyć plik $HOME/.procmailrc dla każdego konta, które z
niego korzysta. Przykłady _procmailrc
Użyj mutt jako czytnika poczty ( mail user agent (MUA)) w
połączeniu z vim. Dostosuj do własnych potrzeb edytując
plik~/.muttrc; na przykład:
# używaj trybu wizualnego i ,,gq'' do formatowania cytatów
set editor="vim -c 'set tw=72 et ft=mail'"
#
# usuwanie nagłówków wzięte z podręcznika (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żyj następujących wpisów w plikach /etc/mailcap lub
$HOME/.mailcap, aby przeglądać załączniki w 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
Debian jest projektem międzynarodowym, obsługującym rosnącą ilość języków itp. Ta część wymieni kilka obszarów różnic językowych, które Debian obecnie obsługuje. Następne zaś skupią się na lokalizacji, procesie uzyskania wejścia i wyjścia programów w wybranym języku, jak również stosowania wybranych konwencji drukowania daty, liczb i symboli monetarnych, jak również innych różnic, jakie mogą występować na skutek stosowania systemu Debian w Twoim regionie.
Jest kilka aspektów lokalizowania systemu Debian i obsługi języków narodowych.
Debian jest rozpowszechniany z blisko dwoma tuzinami map klawiatur. W Woodym możesz zmienić ustawienia klawiatury poprzez:
Szeroka gama oprogramowania dostępnego jako pakiety Debiana wspiera obsługę znaków graficznych różnych od standardu US-ASCII poprzez zmienną środowiskową LC_CTYPE, udostępnianą przez mechanizm locale w glibc
X-y mogą wyświetlać każde kodowanie, włączając UTF-8, i obsługują wszystkie czcionki. Zawierają się w tym nie tylko wszystkie czcionki 8-bitowe, ale także 16-bitowe - np. chińska, japońska czy koreańska. Obsługa wielobajtowych zestawów znaków przy wprowadzaniu danych jest zapewniona przez mechanizm XIM. Zobacz Przykład systemu dwujęzycznego (japoński EUC i ISO-8859-1), Rozdział 9.7.8.
Wyświetlanie japońskiego kodu EUC jest także możliwe w konsoli graficznej,
poprzez pakiet kon2. Jest także alternatywny program, używający
konsoli framebuffera, pakiet jfbterm. W tych środowiskach sposób
zapewnienia wejścia kompatybilnego z językiem japońskim musi być zapewniony
przez programy użytkowe. Użyj pakietu egg dla Emacsa lub
jvim dla Vima.
Dostępne są tłumaczenia wielu komunikatów i dokumentów wyświetlanych w systemie Debian takich, jak komunikaty błędów, standardowe wyjście programów, menu oraz strony podręcznika systemowego. Obecnie istnieją strony podręcznika w języku niemieckim, hiszpańskim, fińskim, francuskim, węgierskim, włoskim, japońskim, koreańskim, polskim, portugalskim, chińskim oraz rosyjskim - wszystkie one są dostępne w pakietach manpages-LANG (gdzie LANG jest dwuliterowym kodem ISO kraju. Użyj apt-cache search manpages-|less aby otrzymać listę dostępnych pakietów.)
Aby korzystać z przetłumaczonych stron podręcznika, użytkownik musi ustawić
zmienną środowiskową LC_MESSAGES na odpowiednią wartość. W przypadku języka
włoskiego LC_MESSAGES musi zostać ustawione na it. Wtedy
man będzie szukał włoskiego tłumaczenia w pliku
/usr/share/man/it/.
Debian oferuje mechanizm locale. Pozwala on programom na dostosowanie wyjścia i możliwości w zależności od ustawień systemowych takich, jak używany zestaw znaków, format wyświetlania daty i godziny, symbol waluty itp. Na przykład, zakładając występowanie zarówno American English oraz French locales w Twoim systemie, komunikat błędu może być wyświetlany w wielu językach:
$ 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ą funkcjonalność dla programów jako bibliotekę. Zobacz
locale(7).
Debian nie jest instalowany z wszystkimi możliwymi
prekompilowanymi wersjami locales . Sprawdź plik /usr/lib/locale,
aby zobaczyć, które locale (poza domyślnym ,,C''), są obecne w Twoim systemie.
Jeśli potrzebujesz takiego, który nie jest dostępny masz dwie możliwości:
/etc/locale.gen, następnie uruchom
locale-gen jako root aby je skompilować. Przeczytaj
locale-gen(8) i strony wymienione w jego części ,,SEE ALSO''.
locales. A jeśli nie jest jeszcze zainstalowany, to
instalacja wywoła interfejs programu debconf, aby pozwolić Ci wybrać potrzebne
locale i skompilować bazę danych.
Następujące zmienne środowiskowe są używane, aby dostarczyć ustawień locale dla programów:
Dostępne zmienne LC_*:
Zauważ, że niektóre programy (np. Netscape 4) ignorują ustawienia LC_*.
Program locale może wyświetlać ustawienia locale i dostępne
locale; przeczytaj locale(1). (Zapamiętaj: locale -a
podaje wszystkie locale, o których istnieniu wie; nie oznacza to, że
wszystkie są dostępne! Zobacz Aktywacja wsparcia
locale, Rozdział 9.7.3.)
Locale obsługuje międzynarodowy standard formatu daty yyyy-mm-dd
(ISO 8601) poprzez locale en_DK, — Angielski w Danii, co
jest żartem :-) Wydaje się działać jedynie w trybie tekstowym w
ls.
Dodaj poniższe linie do pliku ~/.bash_profile:
LC_CTYPE=en_US.ISO-8859-1
export LC_CTYPE
Dodaj poniższe linie do pliku ~/.bash_profile:
LANG=fr_FR@euro
export LANG
LC_CTYPE=fr_FR@euro
export LC_CTYPE
Skonfiguruj klawiaturę jako francuskie ,,AZERTY'', jak to opisano w Klawiatura, Rozdział 9.7.1.1 i dodaj francuskie strony
podręcznika systemowego instalując manpages-fr. Prawy Alt w US to
Alt-Gr w Europie. Naciśnięcie tych klawiszy razem z innymi tworzy liczne znaki
diakrytyczne oraz znaki specjalne. Np Alt-Gr+E odpowiada za znak Euro.
Większość języków zachodnio-europejskich może być skonfigurowana podobnie.
Zobacz Debian Euro
HOWTO, jak dodać obsługę nowej waluty Euro oraz Utiliser et
configurer Debian pour le franciçais po więcej informacji w języku
francuskim.
Postawmy system dwujęzyczny: ja_JP.eucJP (japoński EUC, tradycyjne japońskie środowisko uniksowe) w X-ach z angielskimi komunikatami oraz datami w formacie ISO, oraz en_US.ISO-8859-1 (prawie wszystkie ASCII z obsługą akcentowanych znaków) w trybie tekstowym.
canna — lokalny serwer (licencja ,,free beer''), lub
freewnn-jserver — sieciowy serwer (Public Domain)
kinput2-canna— dla X-ów, lub
kinput2-canna-wnn— dla X-ów, i
egg— działa bezpośrednio z Emacsem nawet w trybie tekstowym
(opcjonalnie).
kterm— X (klasyczny),
mlterm— X (ładny, czcionki zmiennej wielkości), oraz
startx, xdm, ...)
~/.session dla ustawień zależnych od użytkownika:
#!/bin/sh
# To sprawia, że X-y działają gdy przeloguję się na roota za pomocą su.
if [ -z "$XAUTHORITY" ]; then
XAUTHORITY=$HOME/.Xauthority
export XAUTHORITY
fi
# japońskie ustawienia jako domyślne, locale C jako zapasowe
export LANG=ja_JP.eucJP
# upewnij się, że nadpisujesz en_US.ISO-8859-1 używane w konsoli
export LC_CTYPE=ja_JP.eucJP
# chcę, by opisy menu były w języku angielskim w ASCII :-)
export LC_MESSAGES=C
# aktywuj metodę wejściową
kinput2 &
XMODIFIERS=@im=kinput2
export XMODIFIERS
# A może blackbox window manager (leciutki)
exec /usr/bin/blackbox
~/.bashrc:
# Zmień środowisko językowe w zależności od programu do emulacji konsoli.
# Powłoki dostępne w X-ach uruchamiają jedynie .bashrc (nie są powłokami
# logowania). Ogólne ustawienia środowiska dla X znajdują się w .xsession
if [ $TERM = kterm ] || [ $TERM = mlterm ]; then
unset LC_ALL
export LANG=C
#export LANG=ja_JP.eucJP
# Dla formatu wyświetlania daty ISO rrrr-mm-dd, bardziej naturalnego dla
# Japończykó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
~/.muttrc:
# Obsługa UTF-8 nie jest popularna w powszechnym japońskim środowisku EMACS
# 7 bitowe kodowanie iso-2002-jp jest prostsze dla wszystkich
# domyślna kolejność kodowań = 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
kinput2 dla aplikacji w X-ach
~/.Xresources (wygląda na to, że Debian załatwia to jakoś
automatycznie).
mlterm pozwalają także na ustawianie
*inputMethod: i innych informacji dynamicznie, podczas działania
(naciśnij Ctrl-MouseButton-3 w mlterm).
xdm, gdm, kdm, wdm, ...)
Zobacz także SuSE pages for
CJK.
Każdy będzie tego potrzebował w przyszłości. Zobacz The Unicode
HOWTO.
Wsparcie UTF-8 na terminalu FB jest zapewnione przez bterm używany
w debian-installer.
Kiedy po raz pierwszy starasz się skonfigurować narodowe środowisko
językowe zastanów się nad użyciem tasksel lub
aptitude, aby dowiedzieć się jakie pakiety są instalowane,
wybierając odpowiadające im funkcje lokalizacyjne. Wybór pakietów jest
przydatny nawet w systemie wielojęzycznym. Jeśli napotkasz konflikty podczas
instalacji z Twoim ostrożnie skonfigurowanym systemem, unikaj instalowania
pakietu powodującego konflikt. Możliwe, że będziesz musiał użyć
update-alternative aby przywrócić oryginalny stan dla niektórych
poleceń, gdyż instalowane mogły mieć wyższy priorytet od istniejących.
Ważne nowe programy używają glibc 2.2 i przeważnie są umiędzynarodowione. Więc
specjalnie zlokalizowane wersje, jak jvim dla VIM, mogą nie być
potrzebne, gdyż wymagana funkcjonalność jest oferowana przez wersję 6.0
vima w X-ach. Chociaż z tym różnie bywa. Np. jvim
posiada wersję skompilowaną z bezpośrednim wsparciem dla japońskiej metody
wejściowej (canna) nawet w terminalu tekstowym i lepiej rozwiązuje
niektóre problemy specyficzne dla japońskiego, więc wciąż możesz na niego
reflektować :-)
Programy mogą potrzebować konfiguracji wykraczającej poza locale
aby zapewnić komfortowe środowisko pracy. Pakiet language-env i
jego polecenie set-language-env w istotny sposób ułatwiają ten
proces.
Zobacz także dokument o internacjonalizacji, Introduction to
i18n. Przeznaczony jest głównie dla programistów, ale przydatny
może być również dla administratorów.
Debian oferuje oprogramowanie ogólnego przeznaczenia do uruchomienia bramki
sieciowej, która obsługuje NAT, pocztę, DHCP, buforowanie DNS, buforowanie
zapytań HTTP (proxy), CVS, NFS i zasoby Samba dla domowej sieci lokalnej.
Przeczytaj Netfilter,
gdzie jest opisanych wiele problemów z konfiguracją sieci.
Sieć lokalna używa adresów IP z puli prywatnych adresów sieciowych po to, by zapobiec kolizjom adresów z tymi używanymi w Internecie.
Klasa A: 10.0.0.0 z maską 255.0.0.0
Klasa B: 172.16.0.0 - 172.31.0.0 z maską 255.255.0.0
Klasa C: 192.168.0.0 - 192.168.255.0 z maską 255.255.255.0
Debian używa pliku /etc/network/interfaces do konfiguracji IP.
Na przykład, jeśli eth0 łączy Cię z Internetem z wykorzystaniem
adresu IP pobieranego przez DHCP, a eth1 łączy Cię z siecią
lokalną (LAN), plik /etc/network/interfaces wygląda następująco (w
przypadku Woodiego lub nowszej dystrybucji):
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.1.1
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
Wprowadź poniższe polecenie, by uaktualnić konfigurację sieciową używając
nowego pliku /etc/network/interfaces:
# /etc/init.d/networking restart
Pamiętaj: Plik /etc/network/interfaces z Woodiego (i późniejszych
wersji) nie jest kompatybilny z podobnym plikiem z Potato. (Taka sama sytuacja
może zaistnieć między Woody a Sarge.)
Jeśli system używa karty sieciowej PCMCIA, należy skonfigurować sieć w pliku
/etc/pcmcia/network.opts (dotyczy tylko Potato). W Woodym ten
problem został rozwiązany.
Jeśli nie jesteś pewien, przyjrzyj się wynikowi poniższych poleceń:
# ifconfig
# cat /proc/pci
# cat /proc/interrupts
# dmesg|more
Czasami przy łączach DSL (PPPoE) są problemy z MTU. Szczegółowe informacje
znajdują się w LDP DSL-HOWTO. Jeśli masz
problemy z niektórymi stronami, zobacz Dziwne kłopoty z
dostępem do witryn WWW., Rozdział 3.7.5.
Typowy zestaw programów:
# apt-get install nfs samba dhcpd dhcp-client bind squid procmail fetchmail
# apt-get install ssh cvs
Następnie przyjrzyj się następującym plikom:
/etc/init.d/dhcpd (zmodyfikuj, by mieć 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)
/etc/resolv.conf (zmodyfikuj)
/etc/hosts
/etc/dhcpd.conf (zmodyfikuj dla LAN = eth1)
/etc/dhclient.conf (zmodyfikuj by wymusić 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ący DNS i zmienia adres serwera
DNS na localhost. Przyjrzyj się plikowi /etc/resolv.conf:
nameserver 127.0.0.1
search lan.aokiconsulting.com
Projekt netfilter/iptables jest podsystemem ściany ogniowej dla Linuksa 2.4 i
nowszych. Udaj się na stronę Netfilter, gdzie opisano i
wyjaśniono wiele zagadnień dotyczących konfiguracji sieciowej.
Netfilter przetwarza pakiety przy użyciu pięciu wbudowanych łańcuchów: PREROUTING, INPUT, FORWARD, OUTPUT i POSTROUTING.
decyzja
routingu
IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT
interfejs ROUTING \ śledzenie / ROUTING interfejs
DNAT | połączeń ^ SNAT
REDIRECT | | MASQUERADE
v |
INPUT OUTPUT
| filtrowanie ^ filtrowanie,DNAT
v |
\--> Lokalny Proces--/
program przestrzeni użytkownika
Pakiety są przetwarzane w każdym łańcuchu w poszczególnych tablicach.
Reguły ściany ogniowej mają wiele celów (miejsc przeznaczenia):
--to-source ipaddr[-ipaddr][:port-port]
--to-ports port[-port]
--to-destination ipaddr[-ipaddr][:port-port]
--to-ports port[-port]
Podstawowe polecenia iptables:
iptables -N łańcuch # tworzy łańcuch
iptables -A łańcuch \ # dodaje regułkę do łańcuch
-t tablica \ # w tablica (filter, nat, mangle)
-p protokół \ # tcp, udp, icmp lub all
-s adres-źródłowy[/maska] \
--sport port[:port] \ # port źródłowy, jeśli -p jest tcp lub udp
-d adres-docelowy[/maska] \
--dport port[:port] \ # port docelowy, jeśli -p jest tcp lub udp
-j cel \ # co zrobić, jeśli regułka pasuje
-i interfejs-wejściowy \ # dla INPUT, FORWARD, PREROUTING
-o interfejs-wyjściowy # dla FORWARD, OUTPUT, POSTROUTING
Komputery w sieci lokalnej mogą mieć dostęp do Internetu przez bramkę sieciową, na której działa maskarada IP (NAT) dzieląc pojedynczy, osiągalny z zewnątrz adres IP.
# apt-get install ipmasq
Zastosuj przykładowe reguły, by zwiększyć zabezpieczenia ipmasq.
Przeczytaj /usr/share/doc/ipmasq/examples/stronger/README. W
przypadku debianowego kernel-image-2.4 upewnij się, że załadowałeś odpowiednie
moduły. Opis potrzebnej konfiguracji jest w Obsługa
sieci, Rozdział 7.2.3.
W przypadku debianowego kernel-image-2.2, modyfikuj plik
Z92timeouts.rul w katalogu /etc/masq/rules tak, jak
pokazano poniżej, by zapewnić dłuższe połączenia ze zdalnymi serwerami (dobre
dla dużych listów elektronicznych, itp.):
# tcp, tcp-fin, udp
# 2hr, 10 sec, 160 sec - domyślnie
# 1 day, 10 min, 10 min - przykład dłuższego czasu życia
$IPCHAINS -M -S 86400 600 600
Również jeśli sieć jest osiągalna przez kartę PCMCIA, ipmasq musi
być wystartowane z pliku /etc/pcmcia/network.opts. Przeczytaj
plik /usr/share/doc/ipmasq/ipmasq.txt.gz.
Załóżmy, że masz notebooka, który jest tak skonfigurowany, że używa różnych środowisk sieciowych i chcesz używać swojego agenta (serwer) poczty bez potrzeby ciągłej zmiany jego konfiguracji.
Dodając poniższą regułkę iptables na bramce sieciowej
przekierujesz połączenia SMTP do komputera pełniącego funkcję bramki.
# 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
Jeśli oczekujesz dokładniejszych zestawów regułek, rozważ zainstalowanie
pakietu ipmasq i dodanie M30redirect.def do katalogu
/etc/ipmasq/rules/.
[FIXME] Routing rozszerzony (policy routing) (autor: Phil Brutsche pbrutsch@tux.creighton.edu):
Zobacz iproute manual, jeśli
interesują Cię szczegóły. Kształtowanie ruchu (tc, ang. Traffic control) może
być równie interesujące.
Środowisko:
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ęcia:
[FIXME] Nigdy tego nie robiłem. Jak ustawić połączenie wdzwaniane jako połączenie zapasowe szybkiego łącza, używając właściwości automatycznego łączenia na żądanie? Wyślij łatkę tutaj :)
Linux oferuje wiele alternatyw dla konsolowych edytorów tekstu. Wśród nich:
vim: Potężny i lekki edytor, wywodzący się z BSD. VI iMproved.
emacs: Podstawowy i ciężki edytor, wywodzący się z projektu GNU.
Autentyk RMS-a (Richarda M. Stallmana).
xemacs: Emacs: Następne pokolenie, pochodzący od Lucid.
mcedit: GNU edytor dla początkujących. Identyczny z wewnętrznym
edytorem z mc. Zobacz Edytor, Rozdział
4.3.5.
ae: Domyślny mały edytor (Potato). Należy go unikać.
nano: Domyślny mały edytor (Woody). Naśladuje pico.
joe: Dla fanów czasów WordStara lub TurboPascala.
jed: Szybki, w pełni wyposażony, obsługiwany przez menu, ze
skrótami klawiszowymi Emacsa.
jove: Bardzo mały edytor ze skrótami klawiszowymi Emacsa.
nvi: Nowy vi. Błąd w błąd kompatybilny z oryginalnym vi.
Aby zmienić domyślny edytor, użyj update-alternatives --config editor. Wiele programów używa również zmiennych środowiskowych takich jak EDITOR lub VISUAL aby zdecydować, którego edytora użyć. Zobacz Edytor, Rozdział 4.3.5.
Także kilka edytorów środowiska 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ępnej generacji (automatycznie wykrywa X
Window).
Wywołania tych klentów X zawierają standardowe opcje, takie jak -fn a24, które ułatwiają życie starszym użytkownikom, takim jak ja :) Zobacz Klient X, Rozdział 9.4.4.
Istnieje kilka edytorów umieszczonych w katalogu /bin. Jeden z
nich powinien być zainstalowany do prostego edytowania plików, gdy
/usr jest nieosiągalne.
elvis-tiny: Minimalny edytor vi (vi aby uruchomić)
nano-tiny: Minimalny edytor różny od vi (nano-tiny
aby uruchomić)
ed: Minimalny edytor (zawsze obecny, ale trudny w użyciu)
Przeczytaj dokument ,,VIM - main help file'' wciskając <F1> podczas pracy programu.
<F1> Pomoc
<esc> Powrót do normalnego trybu
V Tryb wizualny
i Tryb wprowadzania
: Polecenia linii poleceń
:set tw=72 Ustawia szerokość tekstu na 72
<F11> Tryb wprowadzania (wklejania)
:r! date -R Wstaw datę zgodną z RFC-822
qa Zapisz sekwencję klawiszy w rejestrze a
q Zatrzymaj zapisywanie sekwencji klawiszy
@a Wykonaj sekwencję klawiszy z rejestru a
:edit foo.txt Edytuj inny plik przez wczytanie foo.txt
:wnext Zapisz bieżący plik i edytuj następny plik
q i @ mogą być używane do zapisywania i odtwarzania prostych makr. Na przykład, aby utworzyć makro, które wstawia znaczniki pochyłości HTML wokół słowa pod kursorem, możesz wpisać qii<i>^[ea</i>^[q (gdzie ^[ jest klawiszem ESC). Gdy później ustawisz kursor na początku słowa i wpiszesz @i, zostaną dodane znaczniki <i> i </i>.
Zobacz również Używanie GnuPG z Vimem, Rozdział 14.4.2.
<F1> Pomoc
<F10> Menu
C-u M-! date -R Wstaw datę zgodną z RFC-822
uruchom edytor: emacs plik vim plik
uruchom w trybie zgodności z vi: vim -C
uruchom w trybie niezupełnie zgodnym z vi: vim -N
uruchom z opcjami domyślnymi: emacs -q vim -N -u NONE
wyjście: C-x C-c :qa /:wq /:xa /:q!
Powrót/tryb poleceń: C-g <esc>
Do tyłu (w lewo): C-b h
Do przodu (w prawo): C-f l
W dół: C-n j
W górę: C-p k
początek linii(^): 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ątek bufora: M-< 1G
koniec bufora: M-> G
przewiń 1 ekran do przodu: C-v ^F
przewiń 1/2 ekranu do przodu: ^D
przewiń 1 linię do przodu: ^E
przewiń 1 ekran do tyłu: M-v ^B
przewiń 1/2 ekranu do tyłu: ^U
przewiń 1 linię do tyłu: ^Y
przewiń inne okno: M-C-v
skasuj w miejscu kursora: C-d x
skasuj od kurs. do końca 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żeń regularnych: M-C-s
szukanie wyrażeń reg. wstecz: M-C-r
znajdź wyrażenie regularne: M-C-s enter /
znajdź wyrażenie reg. wstecz: M-C-r enter ?
Pomoc: C-h C-h :help
Pomoc Apropos: C-h a
objaśnienia 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
Cofnij (Undo): C-_ u
Anuluj cofnięcie (Redo): C-f ^R
Zaznacz pozycję kursora: C-@ m{a-zA-Z}
Zmień zaznaczenie i pozycję: C-x C-x
Idź do znacznika w bieżącym pliku: '{a-z}
Idź do znacznika w dowolnym pliku: '{A-Z}
kopiuj obszar: M-w {w wizualnym}y
usuń obszar: C-w {w wizualnym}d
Wklej i zachowaj bufor: C-y
Wklej z bufora usuniętych: M-y p
zmień obszar na duże litery: C-x C-u {w wizualnym}U
zmień obszar na małe litery: C-x C-l {w wizualnym}u
Wstaw znak specjalny: C-q numer ósemkowo/sekwencja klawiszy
^V dziesiętnie/sekwencja klawiszy
zastąp: M-x replace-string :%s/aaa/bbb/g
zastąp wyrażenie regularne: M-x replace-regexp :%s/aaa/bbb/g
zastąp z potwierdzeniem: M-% :%s/aaa/bbb/gc
zastąp z potwierdzeniem: M-x query-replace
zastąp wyrażenie reg. 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
zmień bufor: C-x b
wyświetl bufory: C-x C-b :buffers
Przełącz na tylko-do-odczytu: C-x C-q :set ro
zapytaj i usuń bufor: C-x k
Podziel pionowo: C-x 2 :split
Podziel poziomo: C-x 3 :vsplit (wersja 6)
Przenieś do innego okna: C-x o ^Wp
Usuń to okno: C-x 0 :q
Skasuj inne okno (okna): C-x 1 ^Wo
uruchom kompilację w tle: M-x compile
usuń kompilację w tle: M-x kill-compilation
uruchom make :make Makefile
sprawdź informacje o błędach: C-x` :echo errmsg
uruchom powłokę logując wyjście: M-x shell :!script -a tmp
...wyczyść znaki backspace, ... :!col -b <tmp >record
...zapisz/przywołaj zapis powłoki: C-x C-w record :r record
uruchom powłokę: 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ż opcję: :se[t] {opcja}?
przywróć wartość domyślną opcji :se[t] {opcja}&
ustaw opcję logiczną (boolean) :se[t] no{opcja}
przełącz opcję logiczną (boolean) :se[t] inv{option}
zawiń 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ę o jedną linię M-s
następna linia M-n
rusz się o jedną instrukcję M-i
zakończ bieżącą ramkę stosu C-c C-f
kontynuuj M-c
podnieś ramki argumentów M-u
upuść ramki argumentów M-d
skopiuj ilość od punktu, wstaw na końcu: C-x &
ustaw pułapkę C-x SPC
W celu użycia wszystkich funkcji Vima oraz podświetlania składni, należy dodać
następujące linie do ~/.vimrc lub /etc/vimrc:
set nocompatible
set nopaste
set pastetoggle=<f11>
syn on
Tryb wklejania umożliwia unikanie wpływu automatycznego wcinania przy operacjach wytnij-i-wklej w terminalu. Robi on więcej niż proste ,,:set noai''.
Jeżeli interesuje Cię integracja z GnuPG, zobacz Używanie GnuPG z Vimem, Rozdział 14.4.2.
apt-get install exuberant-ctags i uruchom ctags na
plikach źródłowych. Wpisz :tag nazwa_funkcji w Vimie,
aby przeskoczyć do linii w której nazwa_funkcji się zaczyna.
Znaczniki działają dla C, C++, Javy, Pythona i wielu innych języków.
Emacs posiada te same możliwości ctags.
so \$VIMRUNTIME/syntax/2html.vim wywołane z linii poleceń Vima zamieni podświetlany tekst na kod HTML. Zapisz używając :w plik.html i :q. Użytecznie dla kodu w języku C itd.
vimie
vim może edytować wiele plików w środowisku z wielokrotnie
podzielonym ekranem. W celu uzyskania szczegółowych informacji, wpisz
:help usr_08.txt.
Aby rozdzielić ekran między różne pliki, wpisz w lini poleceń vi:
:split inny-plik
:vsplit inny-plik
Lub w linii poleceń powł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 środowisku X Window
spowoduje wyświetlenie ładnego widoku zmian między oryginałem i kopią zapasową. W przypadku SGML-a dopasowuje znaczniki, więc porównywanie tłumaczeń w tym trybie działa bardzo dobrze.
Specjalne ruchy kursora wywoływane przez Ctrl-W:
Ctrl-W + zwiększa rozmiar okna
Ctrl+W - zmniejsza rozmiar okna
Ctrl-W h przejdź do okna po lewej
Ctrl-W j przejdź do okna poniżej
Ctrl-W k przejdź do okna powyżej
Ctrl-W l przejdź do okna po prawej
...
Aby kontrolować przewijanie ekranu użyj następujących opcji:
:set scrollbind
:set noscrollbind
Przeczytaj (np. przeglądarką 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.
Poniższe ustawienia pozwalają na wprowadzanie zmian w repozytorium wyłącznie użytkownikom należącym do grupy ,,src'', a na administrację CVS wyłącznie członkowi grupy ,,staff'', redukując w ten sposób szanse zastrzelenia samego siebie.
# cd /var/lib; umask 002 ; mkdir cvs # [Woody] FSH
# apt-get install cvs cvs-doc cvsbook
# export CVSROOT=/var/lib/cvs
# cd $CVSROOT
# chown root:src . # ,,staff'' dla większych ograniczeń rozpoczynania projektów
# chmod 3775 . # Jeśli w powyższym występuje ,,staff'', użyj 2775
# cvs -d /var/lib/cvs init # bezpieczniej jest określić -d tutaj!
# cd CVSROOT
# chown -R root:staff .
# chmod 2775 .
# touch val-tags
# chmod 664 history val-tags
# chown root:src history val-tags
Poniżej znajdują się przykłady konfiguracji środowiska powłoki dla dostępu do repozytoriów CVS.
Zdalny dostęp tylko do odczytu:
$ export CVSROOT=:pserver:anonymous@cvs.qref.sf.net:/cvsroot/qref
$ cvs login
$ cvs -z3 co qref
Dostęp lokalny z powłoki na tej samej maszynie:
$ export CVSROOT=/var/lib/cvs
Zdalny dostęp bez SSH (używając obsługi RSH w cvs):
$ export CVSROOT=:pserver:account@cvs.foobar.com:/var/lib/cvs
$ cvs login
Jest to metoda podatna na podsłuch.
sshZdalny dostęp z SSH:
$ export CVSROOT=:ext:account@cvs.foobar.com:/var/lib/cvs
lub dla SourceForge:
$ export CVSROOT=:ext:account@cvs.qref.sf.net:/cvsroot/qref
Możesz również użyć uwierzytelnienia RSA (Połączenia z mniejszą ilością haseł, Rozdział 9.5.3), które eliminuje pytanie o hasło.
Dla,
OBIEKT WARTOŚĆ ZNACZENIE
Drzewo źródeł: ~/project-x Wszystkie kody źródłowe
Nazwa projektu: project-x Nazwa projektu
Źródło modułu: Main-branch Nazwa całego modułu (vendortag)
Etykieta wydania: Release-original Nazwa wydania (releasetag)
Wykonaj,
$ cd ~/project-x # przejdź do katalogu ze źródłami
... stwórz drzewo źródeł ...
$ cvs import -m "Start project-x" project-x Main-branch Release-original
$ cd ..; rm -R ~/project-x
Praca nad projektem project-x przy użyciu lokalnego repozytorium:
$ cd # przejście do przestrzeni roboczej
$ cvs co project-x # pobranie źródeł z CVS-u
$ cd project-x
... wprowadzanie zmian w zawartości ...
$ cvs diff -u # podobne do diff -u repozytorium/ lokalne/
$ cvs up -C modyfikowany_plik # cofnięcie zmian 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
... by utworzyć wszystkie nowoutworzone katalogi w CVS użyj
... "cvs up -d -P" w zastępstwie.
... uważaj na linie zaczynające się od ,,C nazwa_pliku''
... kod niezmodyfikowany przeniesiony jest do `.#nazwa_pliku.wersja'.
... szukaj "<<<<<<<" i ">>>>>>>" w nazwa_pliku.
$ cvs tag Release-1 # dodaj symboliczną nazwę wydania
... edytuj dalej ...
$ cvs tag -d Release-1 # usuń nazwę wydania
$ cvs ci -m "następne komentarze"
$ cvs tag Release-1 # ponownie dodaj nazwę wydania
$ cd # wróć do przestrzeni roboczej
$ cvs co -r Release-initial -d old project-x
... pobierz wersję oryginalną do katalogu old
$ cd old
$ cvs tag -b Release-initial-bugfixes # stwórz nazwę odgałęzienia (-b)
... możesz teraz pracować na starej wersji (Tag=sticky)
$ cvs update -d -P # nie twórz pustych katalogów
... drzewo źródeł ma teraz trwałą (sticky) nazwę ,,Release-initial-bugfixes''
... pracuj na tym odgałęzieniu
$ cvs up -d -P # zsynchronizuj z plikami modyfikowanymi przez innych w tej gałęzi
$ cvs ci -m "check into this branch"
$ cvs update -kk -A -d -P
... usuń trwałą nazwę i zapomnij zawartość
... aktualizuj z głównego pnia bez rozwijania słów kluczowych
$ cvs update -kk -d -P -j Release-initial-bugfixes
... włączenie z odgałęzienia Release-initial-bugfixes do drzewa
... głównego. Napraw konflikty edytorem.
$ cvs ci -m "włączono Release-initial-bugfixes"
$ cd
$ tar -cvzf old-project-x.tar.gz old # stwórz archiwum, -j dla bz2
$ cvs release -d old # usuń lokalne źródła (opcjonalne)
Miłe opcje do zapamiętania (używaj jako pierwszych opcji dla cvs):
-n pusty przebieg, żadnych efektów
-t wyświetl komunikaty pokazujące etapy pracy cvs
Aby pobrać najnowszą wersję z CVS użyj ,,tomorrow'':
$ cvs ex -D tomorrow nazwa_modułu
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 # Ctrl-D aby wyjść z su
$ cvs co -d project px
... pobierz project-x (alias:px) z CVS to katalogu project
$ cd project
... wprowadź zmiany w zawartości ...
0
CVS nie nadpisuje aktualnych plików w repozytorium, tylko zastępuje je innymi. Z tego powodu, pozwolenie na pisanie do katalogu z repozytorium ma kluczowe znaczenie. Dla każdego nowego repozytorium, wykonaj następujące czynności aby zapewnić ten warunek.
# cd /var/lib/cvs
# chown -R root:src repozytorium
# chmod -R ug+rwX repozytorium
# chmod 2775 repozytorium # jeśli potrzebne, w podkatalogu
Bit wykonywalności pliku jest zachowany przy pobieraniu z CVS. Kiedy tylko zobaczysz problem z prawem do wykonywania w pobranych plikach, zmień uprawnienia pliku w repozytorium następującym poleceniem.
# chmod ugo-x nazwa_pliku
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...
{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...
Subversion jest systemem kontroli wersji nowej generacji, który tworzony był z myślą o zastąpieniu CVS. Według twórców jest on obecnie w stanie ,,alpha'', jednak prawdopodobnie jest wystarczająco stabilny dla większości użytkowników. W momencie powstawania tego tekstu, Subversion dostępny jest wyłącznie w niestabilnej gałęzi Debiana.
Meta-pakiet subversion-server jest zależny od wymaganych do użycia
systemu Subversion pakietów (libapache2-dav-svn oraz
subversion-tools).
Aktualnie, pakiet subversion nie tworzy repozytorium, więc musi
być ono utworzone ręcznie. Jednym z możliwych miejsc dla repozytorium jest
/var/local/repos.
Utwórz katalog:
# mkdir -p /var/local/repos
Utwórz bazę danych repozytorium:
# svnadmin create /var/local/repos
Daj prawo do zapisu w repozytorium serwerowi WWW:
# chown -R www-data:www-data /var/local/repos
Aby umożliwić dostęp do repozytorium przez uwierzytelnienie użytkownika, dodaj
(lub usuń komentarz) następujące wpisy do
/etc/apache2/mods-available/dav_svn.conf:
<Location /repos>
DAV svn
SVNPath /var/local/repos
AuthType Basic
AuthName "Repozytorium Subversion"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
<LimitExcept>
</Location>
Następnie stwórz plik z hasłami użytkowników używając polecenia:
htpasswd2 -c /etc/subversion/passwd jakiś-użytkownik
Przeładuj Apache2, a Twoje nowe repozytorium Subversion będzie dostępne pod adresem http://nazwa_hosta/repos.
Poniższe części pokazują jak używać różnych poleceń w Subversion.
Aby stworzyć nowe archiwum Subversion, napisz poniższe polecenia:
$ cd ~/twój-projekt # przejdź do katalogu źródeł
$ svn import http://localhost/repos twój-projekt \
nazwa-projektu -m "początkowy import projektu"
Tworzy to katalog o nazwie nazwa-projektu w Twoim repozytorium. Katalog ten zawiera pliki Twojego projektu. Sprawdź pod adresem http://localhost/repos/ czy się tam znalazł.
Praca z project-y przy użyciu Subversion:
$ cd # przejdź do przestrzeni roboczej
$ svn co http://localhost/repos/project-y # pobierz źródła
$ cd project-y
... wykonaj pracę ...
$ svn diff # podobne do diff -u repozytorium/ lokalne/
$ svn revert modyfikowany_plik # cofnij zmiany w pliku
$ svn ci -m "Opisz zmiany" # wyślij 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ę własną gałąź project-y" # rozgałęzienie 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ż, że odgałęzianie i tagowanie są tym samym. Jedyną różnicą jest to,
... że gałęzie można uaktualniać, a tagów nie.
... wprowadzaj zmiany w gałęzi ...
$ # połącz odgałęzienie z gałęzią główną
$ svn merge http://localhost/repos/project-y \
http://localhost/repos/project-y-branch
$ svn co -r 4 http://localhost/repos/project-y # pobierz rewizję 4
Pamiętaj, by nie używać nazwy ,,test'' do oznaczania pliku wynikowego, ponieważ
test jest wbudowanym poleceniem powłoki.
Odnośniki:
/usr/share/doc/pakiet
Unix / Programming
Information
Wiele długich dokumentów info można otrzymać w postaci wydrukowanej z GNU.
W następnych czterech rozdziałach znajdziesz przykładowe skrypty, każdy
napisany w innym języku, które tworzą plik tekstowy zawierający informacje o
koncie, które z kolei mogą być wstawione do pliku /etc/passwd za
pomocą przetwarzania wsadowego np. programem newusers. Każdy ze
skryptów oczekuje na wejściu pliku, którego linie są następującego formatu
imię nazwisko hasło. (Katalogi domowe użytkowników nie będą
tworzone przez te skrypty.)
Najlepszym sposobem na zrozumienie działania systemów
uniksowych jest przeglądanie i czytanie skryptów powłoki. Poniżej podam pewne
wskazówki i materiały przypominające programowanie w powłoce. Zobacz Pomyłki
powłoki by uczyć się na błędach.
Odnośniki do informacji na temat Bash-a:
bash(1)
BASH
Programming - Introduction HOWTO (Programowanie w BASH-u -
Wprowadzenie JTZ) - informacje dla początkujących
(Zainstaluj najpierw pakiet bash-doc, aby zobaczyć przykłady.)
Oto krótki, przykładowy program (tworzy on wpisy dt. kont na podstawie danych
ze standardowego wejścia dla 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
W systemie Debian powłoki zgodne z POSIX znajdują się w kilku pakietach:
dash (Sarge)
ash (Woody)
bash
pdksh
Jeśli piszesz skrypty powłoki, które mają być przenoszone na inne
powłoki/systemy to najlepiej pisać je jako skrypty powłoki POSIX. Użyj
/bin/sh dowiązanego do ash lub (dash)
aby sprawdzić zgodność z POSIX. Unikaj pisania skryptów z naleciałościami
bashowymi lub zshsowymi, które przypominają
składnię csh. Na przykład, staraj się unikać:
Kilka parametrów specjalnych do zapamiętania:
$0 = nazwa powłoki lub skryptu
$1 = pierwszy(1) argument powłoki
...
$9 = dziewiąty(9) argument powłoki
$# = ilość parametrów pozycyjnych
"$*" = "$1 $2 $3 $4 ... $n"
"$@" = "$1" "$2" "$3" "$4" ... "$n"
$? = kod zakończenia ostatnio wykonywanego polecenia
$$ = PID aktualnie wykonywanego skryptu powłoki
$! = PID ostatnio rozpoczętego zadania w tle
Podstawowe rozwinięcia parametrów(parameter expansion) do zapamiętania:
Forma Jeśli parametr Jeśli 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 (wyświetla słowo i kończy działanie)
Dwukropek (`:') we wszystkich powyższych operatorach nie jest tak naprawdę potrzebny.
Podstawowe podstawienia parametrów(parameter substitutions) do zapamiętania:
Forma Wynik
${parametr%końcówka} Usunięcie najmniejszego wzorca końcówka
${parametr%%końcówka} Usunięcie największego wzorca końcówka
${parametr#przedrostek} Usunięcie najmniejszego wzorca przedrostek
${parametr##przedrostek} Usunięcie największego wzorca przedrostek
Podstawowe operatory przekierowywania do zapamiętania ([n] jest opcjonalną liczbą):
[n]> plik Przekieruj standardowe wyjście (lub n) do pliku.
[n]>> plik Dołącz standardowe wyjście (lub n) do pliku.
[n]< plik Przekieruj standardowe wejście (lub n) z pliku.
[n1]>&n2 Przekieruj standardowe wyjście (lub n1) do n2.
> plik >&2 Przekieruj standardowe wyjście i strumień błędów do pliku.
| polecenie Przekieruj standardowe wyjście na wejście
polecenia.
>&2 | polecenie Przekieruj standardowe wyjście i strumień błędów
na wejście polecenia.
Każde polecenie zwraca kod wyjścia (exit status), który może zostać użyty w wyrażeniu warunkowym:
Zauważ, że użycie wartości 0 w celu wyrażenia ,,prawdy'' różni się od zwykłej
konwencji w innych obszarach przetwarzania. Poza tym `[' jest odpowiednikiem
polecenia test, które traktuje argumenty aż do `]' jako wyrażenie
warunkowe.
Podstawowe idiomy warunkowe (conditional idioms) do zapamiętania to:
polecenie && jeśli_sukces_uruchom_również_to_polecenie || true
polecenie || jeśli_nie_sukces_uruchom_w_zamian_to_polecenie
if [ wyrażenie_warunkowe ]; then
jeśli_sukces_uruchom_to_polecenie
else
jeśli_nie_sukces_uruchom_to_polecenie
fi
|| true było potrzebne by upewnić się, że ten skrypt przypadkowo nie zakończy się w tej linii jeśli powłoka była by wywołana z flagą -e.
Operatory porównywania plików w wyrażeniach warunkowych to:
-e plik Prawda, jeśli plik istnieje.
-d plik Prawda, jeśli plik istnieje i jest katalogiem.
-f plik Prawda, jeśli plik istnieje i jest normalnym plikiem.
-w plik Prawda, jeśli plik istnieje i jest zapisywalny.
-x plik Prawda, jeśli plik istnieje i jest wykonywalny.
plik1 -nt plik2 Prawda, jeśli plik1 jest nowszy niż plik2. (modyfikacja)
plik1 -ot plik2 Prawda, jeśli plik1 jest starszy niż plik2. (modyfikacja)
plik1 -ef plik2 Prawda, jeśli mają takie same numery urządzeń i iwęzłów.
Operatory porównywania łańcuchów znaków w wyrażeniach warunkowych:
-z słowo Prawda, jeśli długość słowo wynosi zero.
-n słowo Prawda, jeśli długość słowo jest różna od zera.
słowo1 == słowo2 Prawda, jeśli słowa są równe.
słowo1 = słowo2 Prawda, jeśli słowa są równe.
(dla ścisłej zgodności z POSIX, zamiast ,,=='' należy używać ,,='')
słowo1 != słowo2 Prawda, jeśli słowa nie są równe.
słowo1 < słowo2 Prawda, jeśli słowo1 sortuje się przed słowo2 (zleżne od lokalizacji (locale)).
słowo1 > słowo2 Prawda, jeśli słowo1
sortuje się po słowo2 (zależne od lokalizacji (locale) ).
Operatory arytmetycznego porównywania liczb całkowitych
Wyrażenia warunkowe to: -eq, -ne, -lt, -le, -gt, i -ge.
Powłoka przetwarza skrypt tak:
Pojedyncze cudzysłowy pomiędzy podwójnymi cudzysłowami nie dają żadnego efektu.
Miejsca, w których można znaleźć informacje o Awk:
mawk(1) i gawk(1)
Krótki przykład programu (tworzącego wpisy dla newusers):
#!/usr/bin/awk -f
# Skrypt tworzący plik przystosowany do użycia z poleceniem 'newusers'
# z pliku zawierającego ID użytkowników i hasła w formie:
# Imię Nazwisko 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ątkowych UID i GID
if ( ARGC > 2 ) {
startuid = ARGV[1]
delete ARGV[1]
}
else {
printf( "Wywołanie: newusers PoczatkoweUID plik\n" \
" gdzie:\n"
" PoczątkoweUID jest początkowym identyfikatorem dodawanego użytkownika,\n" \
" plik jest plikiem wejścia w postaci:\n" \
" imię nazwisko hasło\n" \
)
exit
}
infile = ARGV[1]
printf( "Początkowe UID: %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ą awk zgodnego z POSIX:
mawk
gawk
To jest prawdziwy interpreter w systemach uniksowych.
Miejsca, w których można znaleźć informacje o Perl'u:
perl(1)
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 (<STDIN>) {
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'
Jest to miły, zorientowany obiektowo interpreter.
Miejsca, w których można znaleźć informacje o Pythonie:
python(1)
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życia: ", sys.argv[0], " PoczątkoweUID [plik]\n" \
"\tPoczątkoweUID jest początkowym identyfikatorem dodawanego użytkownika.\n" \
"\tplik jest plikiem wejścia. Jeśli nie określony to standardowe wejście.\n\n" \
"Format pliku wejściowego:\n"\
"\timię nazwisko 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ższe rozsypuje się przy 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])
#print "# UID zaczyna się od: %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)
Miejsca, w których można znaleźć informacje o Make:
make(1)
Proste zmienne automatyczne:
Składnia reguł:
Cel: [ warunek wstępny ... ]
[TAB] polecenie1
[TAB] -polecenie2 # ignoruj błędy
[TAB] @polecenie3 # wstrzymaj echo
Gdzie [TAB] jest kodem TAB. Każda linia jest intrepretowana przez
powłokę po podmianie zmiennych przez make. Użyj \ na
końcu linii, by kontynuować skrypt. Użyj $$, by wprowadzić
$ dla zmiennych środowiskowych w skrypcie powłoki.
Uwikłane reguły dla celu oraz warunki wstępne mogą być, na przykład, zapisane jako:
%: %.c header.h
lub
%.o: %.c header.h
Tutaj cel zawiera znak % (dokładnie jeden z nich). Znak % może zastępować jakikolwiek niepusty podciąg aktualnych nazw plików danego celu. W warunkach wstępnych również można użyć znaku % by pokazać jak ich nazwy mają się do aktualnej nazwy celu.
Reguły przyrostkowe są przestarzałym sposobem
definiowania reguł uwikłanych dla make. Są nadal obsługiwane w
GNU make dla zgodności, ale używaj odpowiednich reguł wzorców,
kiedykolwiek to możliwe:
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 rdzeń 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ź make -p -f/dev/null,by zobaczyć automatyczne reguły wewnętrzne.
Przygotowanie:
# apt-get install glibc-doc manpages-dev libc6-dev gcc
Miejsca, w których można znaleźć informacje o C:
gcc(1)
each_C_library_function_name(3)
gcc)
Prosty przykład kompilowania przyklad.c z biblioteką
libm do pliku wykonywalnego uruchom_przyklad:
$ cat > przyklad.c << EOF
#include <stdio.h>
#include <math.h>
#include <string.h>
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 upewnić się, że ciąg kończy się '\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ć
bibliotekę libm dla sqrt().
Faktycznie biblioteka znajduje się w /lib pod nazwą
libm.so.6, która jest dowiązaniem symbolicznym do
libm-2.1.3.so.
Spójrz na ostatni parametr w wyjściowym tekście. Jest tam więcej niż dziesięć znaków mimo, że użyliśmy %10s.
Używanie funkcji ze wskaźnikami do operacji na pamięci bez sprawdzania obszarów
granicznych, zwłaszcza takich jak sprintf lub strcpy,
jest uznawane za przestarzałe, co ma zapobiegać błędom przepełnienia buforu.
Zamiast nich należy używać sprintf oraz strncpy.
gdbPrzygotowanie:
# apt-get install gdb
Miejsca, w których można znaleźć informacje o gdb:
gdb(1)
Do prześledzenia działania programu skompilowanego z opcją -g użyj
programu gdb. Wiele poleceń ma 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ępna linia
...
(gdb) step # krok do przodu
...
(gdb) p parm # wyświetl parm
...
(gdb) p parm=12 # ustaw wartość na 12
Jeśli chcesz się dowiedzieć, jak przeprowadzić odpluskwianie przy pomocy Emacsa, zerknij do Podsumowanie poleceń edytorów (Emacs, Vim), Rozdział 11.3.4.
Aby znaleźć wymagane 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ć w środowisku chroot, muszą się w
nim znaleźć powyższe biblioteki.
Następujące polecenia mogą być również użyteczne:
strace: śledzi wywołania systemowe oraz sygnały
ltrace: śledzi wywołania biblioteczne
Istnieje wiele narzędzi do wykrywania wycieków pamięci w Debianie.
njamd
valgrind
dmalloc
electric-fence
memprof
memwatch (niedostępny w pakiecie, pobierz z GNU
memwatch.)
mpatrol
leaktracer
libgc6
Parasoft. (non-free, komercyjnie za
opłatą)
Sprawdź również Debugging
Tools for Dynamic Storage Allocation and Memory Management.
flex jest szybkim generatorem analizatorów leksykalnych.
Miejsca, w których można znaleźć informacje o flex:
flex(1)
Musisz utworzyć własną funkcję main() i yywrap(), lub
program.l powinien wyglądać tak, jak poniżej, by kompilował się
bez biblioteki (yywrap jest makrem; %option main
uaktywnia bezwarunkowo %option noyywrap):
%option main
%%
.|\n ECHO ;
%%
Zamiast tego możesz skompilować program podając na końcu polecenia
cc opcję -lfl (tak jak przy AT&T-Lex opcję
-ll). Nie potrzeba wtedy używać%option.
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żna znaleźć informacje o bison:
bison(1)
Musisz utworzyć własne funkcje main() i yyerror().
main() wywołuje yyparse(), która z kolei wywołuje
yylex(), zazwyczaj stworzoną przez FleX.
%%
%%
autoconf jest narzędziem tworzącym skrypty powłoki, które
automatycznie konfigurują źródła oprogramowania by dostosować je do wielu
systemów uniksopodobnych używając systemu budowania GNU.
autoconf tworzy skrypt konfigurujący configure, a
configure automatycznie dostosowany Makefile używając
wzorca Makefile.in.
Debian nie dotyka plików znajdujących się w /usr/local (zobacz Wsparcie dla różnorodności, Rozdział 2.5). W związku z
tym, jeśli skompilujesz program ze źródeł oraz zainstalujesz go w
/usr/local nie będzie on kolidował z Debianem.
$ cd src
$ ./configure --prefix=/usr/local
$ make
$ make install # to polecenie przekopiuje pliki do systemu
Jeśli nadal posiadasz źródła i używają one
autoconf/automake oraz pamiętasz parametry z jakimi
je konfigurowałeś spróbuj:
$ ./configure wszelkie-opcje-jakie-podałeś-przy-konfiguracji
# make uninstall
Zamiast tego, jeśli jesteś absolutnie pewien, że podczas instalacji pliki
kopiowane są tylko do /usr/local i nie ma tam niczego ważnego,
możesz usunąć jego zawartość wprowadzając:
# find /usr/local -type f -print0 | xargs -0 rm -f
Jeśli natomiast nie jesteś pewien gdzie zostały przekopiowane pliki podczas
instalacji, rozważ zastosowanie checkinstall, który pozwala w
łatwy sposób odinstalować programy.
Tradycyjnie już, roff jest głównym systemem procesu tekstu w systemach Unix.
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śli posiadasz
groff (w wersji 1.18 lub nowszej), znajdź
/usr/share/doc/groff/meintro.me.gz i wprowadź poniższe polecenie:
$ 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ścia PostScript.
$ groff -Tps meintro.txt | lpr
$ groff -Tps meintro.txt | mpage -2 | lpr
Przygotowanie:
# apt-get install debiandoc-sgml debiandoc-sgml-doc
Miejsca, w których można znaleźć informacje o debiandoc-sgml:
/usr/share/doc/debiandoc-sgml-doc
debiandoc-sgml(1)
SGML umożliwia zarządzanie wieloma formatami dokumentu. Jednym z prostszych systemów SGML jest Debiandoc, który jest tutaj używany. Wymaga on pewnych konwersji plików tekstowych dla następujących znaków:
W celu oznaczenia części jako niedrukowalny komentarz wprowadź:
<!-- A tu jest właśnie komentarz ... -->
Do oznaczenia miejsca, z którym mamy problemy (brak wiedzy, doświadczenia z danego zakresu) użyj poniższej formy:
<![ %FIXME; [ Nie wiem, co tu powinno być ... ]]>
W SGMLu pierwsza definicja entitki wygrywa. Przykład:
<!entity % qref "INCLUDE">
<![ %qref; [ <!entity param "Data 1"> ]]>
<!entity param "Data 2">
¶m;
W dokumencie wynikowym będzie "Data 1". Jeśli w pierwszej linii byłoby "IGNORE" zamiast "INCLUDE", pojawiłoby się "Data 2" (druga linia jest wyrażeniem warunkowym). Również powtórzone zwroty, wyrażenia mogą być z góry oddzielone od kontekstu.
<!entity czyjtojest "mój">
Witaj &czyjtojest; przyjacielu.
To jest &czyjtojest; podręcznik.
Efektem będzie:
Witaj mój przyjacielu.
To jest mój podręcznik.
Przyjrzyj się prostemu przykładowi SGML sample.sgml, znajdującego
się w examples.
Niekiedy, gdy dokument SGML rozrasta się, TeX może zacząć generować błędy.
Żeby uporać się z tym problemem, musisz zwiększyć parametr pool size w
/etc/texmf/texmf.cnf (lub, co bardziej zalecane, zmodyfikować
/etc/texmf/texfm.d/95NonPath i uruchomić
update-texmf).
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żna znaleźć informacje o pakietowaniu:
dh-make(1)
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 <joeyh@debian.org>
Description: mój mały pakiecik
Nie spodziewaj się zbyt wiele.
^D
# dpkg-deb -b mypkg
W celu utworzenia podstawowego pakietu możesz skorzystać z dh_make
dostępnego w pakiecie dh-make. Następnie postępuj według
instrukcji z dh-make(1). Ten sposób wykorzystuje
debhelper w debian/rules.
Starszym sposobem jest użycie deb-make z pakietu
debmake. Wtedy korzysta się jedynie z powłoki, zamiast z
debhelper.
Przykładem wieloźródłowego pakietu może być ,,mc'' (dpkg-source -x
mc_4.5.54.dsc), korzystający z ,,sys-build.mk'' Adama Heatha (doogie@debian.org), oraz ,,glibc''
(dpkg-source -x glibc_2.2.4-1.dsc), który korzysta z innego
systemu Joela Kleckera (espy@debian.org).
Odnośniki:
gpg(1).
/usr/share/doc/gnupg/README.gz
/usr/share/doc/gnupg-doc/GNU_Privacy_Handbook/ (zainstaluj pakiet
gnupg-doc)
$ gpg --gen-key
# tworzenie nowej pary kluczy
$ gpg --gen-revoke ID_użytk
# tworzenie certyfikatu unieważnienia klucza dla ID_użytkownika
$ host -l pgp.net | grep www | less
# znajdowanie serwerów kluczy
Jak na razie, dobrymi serwerami kluczy są:
keyserver wwwkeys.eu.pgp.net
keyserver wwwkeys.pgp.net
Musisz uważać, aby nie tworzyć więcej, niż dwa podklucze.
Jeśli tak zrobisz, serwery kluczy w pgp.net popsują Twój
klucz. Użyj nowszego gnupg (>1.2.1-2), aby obsłużyć te popsute
podklucze. Zobacz http://fortytwo.ch/gpg/subkeys.
Miej również na uwadze, że w $HOME/.gnupg/options można ustawić
tylko jeden serwer kluczy.
Niestety, następująca konstrukcja już nie działa:
keyserver search.keyserver.net
keyserver pgp.ai.mit.edu
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żenie podpisu z zachowaniem czytelności tekstu
$ gpg --clearsign --not-dash-escaped plik_łaty
# podpisanie z zachowaniem czytelności pliku łaty
$ gpg --verify plik
# sprawdzenie podpisu pliku
$ gpg -o plik.sig {-b|--detach-sig} plik
# złożenie podpisu 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żytkownika o danej nazwie
$ gpg -o plik_wynik {--symmetric|-c} plik
# szyfrowanie algorytmem symetrycznym
$ gpg -o file --decrypt plik_szyfr
# odszyfrowanie danych z plik_szyfr
Zarządzanie kluczami:
$ gpg --edit-key ID_użytk
# ,,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żytk
# eksport klucza o podanym ID_użytkownika do serwera kluczy
$ gpg --recv-keys ID_użytk
# pobieranie klucza o podanym ID_użytkownika z serwera kluczy
$ gpg --list-keys ID_użytk
# wypisanie kluczy o podanym ID_użytkownika
$ gpg --list-sigs ID_użytk
# wypisanie podpisów kluczy o podanym ID_użytkownika
$ gpg --check-sigs ID_użytk
# sprawdzenie podpisów na kluczach o podanym ID_użytkownika
$ gpg --fingerprint ID_użytk
# sprawdzenie odcisku klucza o danym ID_użytkownika
$ 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żdego nieznanego podpisu
Kod zaufania:
- Brak przypisanego poziomu zaufania / jeszcze nie obliczony.
e Obliczanie poziomu zaufania nie powiodło się.
q Zbyt mało informacji do obliczeń.
n Nie ufaj temu kluczowi.
m Częściowo zaufany.
f W pełni zaufany.
u Zaufanie bezgraniczne.
Następujące polecenie 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
Aby powstrzymać wolne GnuPG od automatycznego startowania, pozwalając
jednocześnie na użycie go przez wpisanie `S', dodaj następujący
wpis do ~/.muttrc.
macro index S ":toggle pgp_verify_sig\n"
set pgp_verify_sig=no
Aby w sposób przezroczysty używać GnuPG, dodaj zawartość pliku
vimgpg z katalogu z
przykładami do ~/.vimrc.
Poniższe zasoby dostarczają pomocy, rad i wsparcia dla użytkowników. Postaraj się najpierw użyć tych zasobów zanim zaczniesz płakać na listach dyskusyjnych :).
W swoim systemie masz dostep do obszernej dokumentacji za pomoca programow
dhelp, dwww i dowolnej przegladarki WWW.
Poniższe zasoby są pomocne dla rozwiązywania problemów z Debianem i Linuksem w ogólności. Jeśli ich treść nie pokrywa się w pewnych miejscach, to zawsze bardziej ufaj zasobom oznaczonym jako podstawowe.
http://www.debian.org/releases/stable/installmanual
http://www.debian.org/releases/testing/installmanual
(w przygotowaniu, czasami może nie działać)
Not available in install-doc: Bug#155374
Debian CD under /doc/
http://www.debian.org/releases/stable/releasenotes
http://www.debian.org/releases/testing/releasenotes
(w przygotowaniu)
Not available in install-doc: Bug#155374
Debian CD under /doc/
http://www.debian.org/doc/manuals/debian-faq/
doc-debian
/usr/share/doc/debian/FAQ/index.html
http://www.debian.org/doc/manuals/debian-reference/
debian-reference
/usr/share/doc/Debian/reference/
http://www.debian.org/doc/manuals/apt-howto/
apt-howto
/usr/share/doc/Debian/apt-howto/
http://www.debian.org/doc/manuals/securing-debian-howto/
harden-doc
/usr/share/doc/harden-doc/html/securing-debian-howto/
dselect Dokumentacja dla początkujących (dodatkowe)
dselecta
http://www.debian.org/releases/woody/i386/dselect-beginner
Not available in install-doc: Bug#155374
Debian CD under /doc/
http://www.debian.org/doc/debian-policy/
debian-policy
/usr/share/doc/debian-policy/
http://www.debian.org/doc/manuals/developers-reference/
developers-reference
/usr/share/doc/developers-reference/
http://www.debian.org/doc/manuals/maint-guide/
maint-guide
/usr/share/doc/maint-guide/
packaging-manual w Potato. (przeniesiony do dodatków
Developer's Reference)
http://www.tldp.org/
doc-linux
/usr/share/doc/HOWTO/
http://www.debian.org/doc/
http://www.debian.org/devel/
Poniższe zasoby traktują o Uniksie w ogólności. Zauważ, że jest wiele kluczowych różnic pomiędzy różnymi systemami Uniksowymi. Nazwy urządzeń i sposoby inicjalizacji systemu wymagają specjalnego zainteresowania.
http://cm.bell-labs.com/cm/cs/
http://cm.bell-labs.com/cm/cs/cstr.html
http://cm.bell-labs.com/cm/cs/papers.html
Debian Planet
debianHELP
Linux.com
The Linux Home Page at Linux
Online
Red Hat (commercial Linux
vender) (RPM, Sys-V init)
SuSE, Inc. (commercial Linux
vender) (RPM, Sys-V init)
Slackware (TGZ, BSD-style
init)
Wiele słów używanych w Debianie to tajemniczy żargon lub akronimy. Poniższe polecenie pomoże Ci zrozumieć większość z nich:
$ dict wstaw-tu-dziwne-angielskie-słowo
W Debianie istnieje wiele pakietów i czasami trudno jest się zdecydować, który
chcemy najpierw wypróbować. Zobacz Debian Popularity Contest
Results, by dowiedzieć się, czego używają inni. Możesz również
zainstalować pakiet popularity-contest, by mieć swój wkład w ten
serwis.
Dystrybucja Debiana posiada system
śledzenia błędów (BTS), który zawiera ich listę zgłoszonych przez
użytkowników i deweloperów. Każdy błąd ma przypisany swój numer i jest
przechowywany, dopóki nie zostaje on oznaczony jako rozwiązany.
Zanim zgłosisz błąd, sprawdź czy ktoś inny tego nie zrobił. Lista aktualnych
błędów jest dostępna na stronie BTS. Możliwe są również inne sposoby dotarcia do
tych informacji . Zobacz także Sprawdzanie błędów w
Debianie i poszukiwanie pomocy, Rozdział 6.3.1.
Sposób zgłaszania błędów jest opisany w http://www.debian.org/Bugs/Reporting.
Aby być na bieżąco z dystrybucją Debiana, czytaj przynajmniej ,,debian-devel-announce'' (angielska, tylko do odczytu, niewielki ruch).
Najbardziej interesujące użytkowników Debiana listy dyskusyjne to ,,debian-user'' (angielska, otwarta dla każdego, wysoki ruch) oraz listy ,,debian-user-język'' (dla innych języków).
Więcej informacji o tych listach i sposobach ich subskrypcji znajdziesz w
http://lists.debian.org/.
Przejrzyj archiwa w poszukiwaniu odpowiedzi na stawiane pytanie, zanim je
wyślesz na listę. Stosuj się również do przyjętych zasad pisania na listy
dyskusyjne.
IRC (Internet Relay Chat) jest sposobem na rozmowę z innymi ludźmi z całego
świata w czasie rzeczywistym. Kanały IRC poświęcone Debianowi znajdują się w
sieci IRC freenode. By
się połączyć potrzebujesz klienta IRC. Kilka z najbardziej popularnych
klientów to XChat, BitchX, ircII, irssi, epic4, KSirc. Wszystkie te są
dostępne w Debianie w postaci pakietów. Gdy już masz zainstalowanego klienta
IRC, połącz się z serwerem. W większości klientów należy wydać polecenie:
/server irc.debian.org
Po połączeniu wejdź na kanał #debian wpisując
/join #debian
Uwaga: klienci takie jak XChat często posiadają różne graficzne interfejsy użytkownika do łączenia się z serwerem i wchodzenia na kanały.
Jest wiele wyszukiwarek, które pomagają w przeszukiwaniu dokumentacji Debiana:
Google: w polu tekstowym
dodaj na końcu ,,site:debian.org''.
Google Groups:
wyszukiwarka grup dyskusyjnych. Dodaj do pola tekstowego
,,group:linux.debian.*''.
Szukając na przykład ciągu ,,cgi-perl'', otrzymasz bardziej szczegółowe informacje o tym pakiecie, niż krótki opis z pliku control. Więcej rad na stronie Sprawdzanie błędów w Debianie i poszukiwanie pomocy, Rozdział 6.3.1.
Poniżej znajduje się lista kilku wybranych odnośników na różne okazje.
Debian Reference został zapoczątkowany przez Osamu Aoki osamu@debian.org jako osobisty
pamiętnik z instalacji, który w końcu został nazwany ,,Quick Reference...''.
Wiele treści znajdujących się tutaj pochodzi z archiwum listy dyskusyjnej
,,debian-user''. Zacytowano również fragmenty dokumentów ,,Debian Installation
Manual'' i ,,Debian Release Notes''.
Zgodnie z sugestią Josipa Rodina, który jest bardzo aktywnym członkiem Debian Documentation Project
(DDP) i aktualnym opiekunem ,,The Debian FAQ'', nazwa tego dokumentu została
zmieniona na "Debian Reference", a zawartość powstała z wybranych
części ,,The Debian FAQ''. Następnie dokument został przemianowany na ,,Debian
Quick Reference''.
Dokument był edytowany, tłumaczony i rozwijany przez następujących członków zespołu QREF :
osamu@debian.org
(główny koordynator)
dsewell@virginia.edu (koordynator
tłumaczenia na język angielski)
nelson@bignachos.com
webb@robust.colorado.edu
jmalonzo@spaceants.net
gerbs@free.fr
(koordynator tłumaczenia na język francuski)
rcasagraude@interfaces.fr
delange@imaginet.fr
daniel@desages.com
mc0315@mclink.it (koordynator
tłumaczenia na język włoski)
pormenese@uol.com.br (koordynator
tłumaczenia na język portugalski)
andrelop@ig.com.br
marciotex@pop.com.br
to_rei@yahoo.com
raphael-bsc@bol.com.br
kov@debian.org (koordynator)
wecharri@infovia.com.ar
(koordynator tłumaczenia na język hiszpański)
ffx@urbanet.ch
tux-master@web.de (koordynator
tłumaczenia na język niemiecki)
wdyck@gmx.net
stefan@fkp.uni-hannover.de
asb@kefk.net
PDDP :
mariusz.centka@debian.linux.org.pl
fenio@debian.linux.org.pl
radekg@debian.linux.org.pl
zen@debian.linux.org.pl
cx@debian.linux.org.pl
mateusz@debian.linux.org.pl
tristan@debian.linux.org.pl
uszek@debian.linux.org.pl
tjup@debian.linux.org.pl
zapal@debian.linux.org.pl
iamlyoo@163.net (koordynator: zh-cn)
minghua@rice.edu
wctang@csie.nctu.edu.tw
(koordynator: zh-tw)
QREF była skróconą formą pierwszego tytułu dokumentu, ,,Quick Reference...'' teraz jest również nazwą projektu na qref.sourceforge.net.
Większość Debian – Podstawy, Część 2 pochodzi z ,,The Debian FAQ'' (Marzec 2002):
ftparchives.sgml (cały rozdział)
pkg_basics.sgml (cały rozdział)
pkgtools.sgml
(cały rozdział)
uptodate.sgml (cały rozdział)
kernel.sgml (cały rozdział)
customizing.sgml (część rozdziału)
Powyższe części z ,,The Debian FAQ'' zostały dołączone do tego dokumentu po znacznej reorganizacji, aby odzwierciedlić zmiany w systemie Debian. Obecnie obydwa dokumenty są aktualizowane równolegle.
Pierwotnie opiekunami ,,Debian FAQ'', byli jego twórcy — J. H. M. Dassen (Ray) i Chuck Stickelman. Autorami przepisanej wersji ,,Debian FAQ'' byli Susan G. Kleinmann i Sven Rudolph. Następnym opiekunem był Santiago Vila. Aktualnie dokumentem tym zajmuje się Josip Rodin.
Informacje zawarte w ,,The Debian FAQ'' pochodzą między innymi z/od:
Bruce Perens.
Ian Jackson.
Archiwów list dyskusyjnych
Debiana,
Autorzy chcą podziękować wszystkim tym, dzięki którym możliwe stało się powstanie tego dokumentu.
Ponieważ nie jestem ekspertem, nie zamierzam nawet sprawiać wrażenia, że wiem wszystko o Debianie, jak i Linuksie w ogólności. Moje rady odnośnie bezpieczeństwa mogą być w zasadzie dobre tylko do użytku domowego.
Ten dokument nie ma na celu zastąpienia żadnego innego przewodnika lub innej dokumentacji.
Autorzy tego dokumentu nie biorą jakiejkolwiek odpowiedzialności za powstałe szkody. Wszelkie znaki handlowe są własnością ich posiadaczy.
Komentarze i uzupełnienia do tego dokumentu są zawsze mile widziane. Jeśli
masz jakieś sugestie odnośnie pakietu debian-reference lub jego
odpowiedniego tłumaczenia, wyślij list na adres Debian BTS system. Możesz użyć także
reportbug, który ułatwia wysyłanie dogłębnych zgłoszeń błędów.
Oczywiście możesz również wysłać wiadomość w języku angielskim do Osamu Aoki, na adres
osamu@debian.org, lub do
poszczególnych tłumaczy w odpowiednich językach.
Autor mówi: ,,Mimo, iż mieszkam w USA, język angielski nie jest dla mnie językiem ojczystym. Tak więc, jakiekolwiek poprawki gramatyczne są mile widziane.''
Tłumacze na język Polan dodają: ,,Mimo, że mieszkamy w Polsce i język polski jest dla nas językiem ojczystym, to również, świadomi swojej niedoskonałości, przyjmiemy pomoc w postaci korekty uchybień językowych. Jeszcze bardziej zaś wdzięczni będziemy za korektę ewentualnych uchybień w procesie tłumaczenia.''.
Najmilej widziane są łatki (wyniki działania programu diff) na wersję SGML, ale łatki na wersję tekstową również będą przyjmowane. Zajrzyj na stronę: Oficjalny dokument, Rozdział 1.1.
Oryginalne pliki SGML używane do stworzenia tego dokumentu dostępne są również
przez CVS na: :pserver:anonymous@cvs.qref.sf.net/cvsroot/qref lub
http://qref.sourceforge.net/Debian/qref.tar.gz.
Dokument ten został napisany przy użyciu DebianDoc SGML DTD (przepisany z LinuxDoc SGML). System DebianDoc SGML pozwala na przetwarzanie plików pochodzących z jednego źródła na różne formaty, np. ten dokument może być przeglądany jako HTML, zwykły tekst, TeX DVI, PostScript, PDF oraz GNU info.
Narzędzia konwertujące DebianDoc SGML są dostępne w pakiecie
debiandoc-sgml.
System Linux jest potężną platformą dla komputerów podłączonych do sieci. Jednakże opanowanie wszystkich jego możliwości wcale nie jest łatwe. Dobrym przykładem jest podłączenie i konfiguracja drukarki.
Istnieje kompletna i szczegółowa dokumentacja zwana ,,KODEM ŹRÓDŁOWYM''. Jest ona dokładna, lecz trudna do zrozumienia. Dostępne są również źródła informacji w postaci dokumentów HOWTO (HOWTO - Jak To Zrobić (JTZ)) i mini-HOWTO. Są prostsze, ale mają tendencję do opisu zbyt wielu detali, a co za tym idzie, zamglenia praktycznych informacji. Miewam czasem problemy ze znalezieniem pożądanej części długiego HOWTO, gdy muszę wywołać tylko kilka poleceń.
By móc odnaleźć się w gąszczu konfiguracji systemu, zacząłem zapisywać krótkie notatki w pliku tekstowym tak, by stanowiły dla mnie szybkie i proste źródło informacji. Plik ten z czasem zaczął rosnąć, a ja w międzyczasie nauczyłem się DebianDoc. Efektem tego jest właśnie Debian Reference.
Tutaj znajduje się kilka interesujących cytatów z listy dyskusyjnej Debiana.
miquels@cistron.nl
tollef@add.no
Debian Reference
CVS, wtorek, 9 wrzesień 2003, 09:23:38 UTCosamu@debian.orgfenio@o2.pl