<< Back to man.lupaworld.com


[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ dalej ]

Debian Reference
Część 6 - Zarządzanie pakietami Debiana


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).


6.1 Wprowadzenie

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 :-).


6.1.1 Podstawowe narzędzia

     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.


6.1.2 Wygodne narzędzia

     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
     ...

6.2 Podstawy zarządzania pakietami Debiana

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.


6.2.1 Instalowanie zadań programem 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.


6.2.2 Konfiguracja systemu APT

Jeśli spróbujesz poniższego opisu na mieszane środowisko, możesz doświadczyć pewnych konfliktów z zależnościami. Dobrym zwyczajem jest nie mieszanie różnych dystrybucji. Poniższy rozdział jest dla ludzi, którzy licząc się z ryzykiem chcą poeksperymentować.

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. [31]

     Package: *
     Pin: release a=stable
     Pin-Priority: 500
     
     Package: *
     Pin: release a=testing
     Pin-Priority: 600
     
     Package: *
     Pin: release a=unstable
     Pin-Priority: 50

6.2.3 dselect

Zaraz po uruchomieniu dselect automatycznie wybiera pakiety oznaczone jako wymagane (required), waż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.


6.2.4 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.


6.2.5 Polecenia apt-cache i apt-get

Podczas śledzenia dystrybucji testing jak zostało to opisane w powyższym przykładzie, możemy zarządzać pakietami przy użyciu poniższych poleceń:

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ę.


6.2.6 Podążanie za smakiem dystrybucji Debian

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.


6.2.7 Obniżenie wersji wszystkich pakietów do stable

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.


6.2.8 Przegląd pliku /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:

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.


6.3 Polecenia zapewniające przetrwanie w Debianie

Posiadając tę wiedzę, możesz cieszyć się nieśmiertelnymi aktualizacjami :-).


6.3.1 Sprawdzanie błędów w Debianie i poszukiwanie pomocy

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.


6.3.2 Problemy przy aktualizacji APT

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.


6.3.3 Ratowanie przy użyciu 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

6.3.4 Przywracanie danych wyboru pakietów

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

6.3.5 Przywracanie systemu po awarii /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 var.tar.gz, i umieść go w katalogu głównym zepsutego systemu. Następnie wykonaj poniżesze kroki:

     # 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.)


6.3.6 Instalowanie pakietu w niestartującym systemie

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).


6.3.7 Co robić, gdy polecenie 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.


6.4 Polecenia prowadzące do nirwany w Debianie

Te polecenia uchronią człowieka od wiecznego cierpienia w piekle aktualizacji i pozwolą osiągnąć mu stan nirwany. :-)


6.4.1 Informacje o pliku

Aby odnaleźć nazwę pakietu, do którego należy dany plik wpisz:

     $ dpkg {-S|--search} wzorzec # szukaj wg. wzorca w zainstalowanych pakietach
     $ wget http://ftp.us.debian.org/debian/dists/sarge/Contents-i386.gz
     $ zgrep -e pattern 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

6.4.2 Informacje o pakiecie

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*

6.4.3 Niepilnowana instalacja przy użyciu APT

Ż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.


6.4.4 Ponowna konfiguracja zainstalowanych pakietów

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
     ...

6.4.5 Usuwanie i czyszczenie pakietów

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 ...

6.4.6 Wstrzymywanie starszych pakietów

Przykładowe wstrzymanie pakietów libc6 oraz libc6-dev dla programu dselect oraz dla apt-get -u upgrade pakiet odbywa się 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$"

6.4.7 Mieszany system - stable/testing/unstable

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

6.4.8 Wyczyść buforowane pliki pakietów

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

6.4.9 Zapisanie/kopiowanie konfiguracji systemu

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

6.4.10 Przeniesienie pakietu do systemu stabilnego

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

6.4.11 Lokalne archiwum pakietów

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.


6.4.12 Zmiana lub instalacja obcego pakietu binarnego

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.


6.4.13 Sprawdzanie poprawności zainstalowanych plików

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).


6.4.14 Zoptymalizowane 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

6.5 Inne osobliwości Debiana


6.5.1 Polecenie 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.


6.5.2 Pakiet equivs

Jeś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.

6.5.3 Alternatywne polecenia

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 Personalizowane sesje 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.


6.5.4 System-V 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.


6.5.5 Wyłączone usługi demonów

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 Ograniczenia dostępu poprzez PAM, 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ż Używanie X'ów poprzez TCP/IP, Rozdział 9.4.6. Przekazywanie X przez SSH również jest wyłączone. Patrz Zdalne połączenie z X – ssh, Rozdział 9.4.8.


[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ dalej ]

Debian Reference

CVS, poniedziałek, 3 kwiecień 2005, 22:58:23 UTC

Osamu Aoki osamu@debian.org
Koordynator tłumaczenia: Bartosz Feński aka fEnIo fenio@o2.pl
Autorzy, Rozdział A.1