Rozdział 4. Interfejs

Spis treści

4.1. Uruchamianie
4.2. Raport stanu
4.3. Wyświetlanie stanu przetwarzania
4.4. Dpkg

Metoda APT programu dselect i program apt-get dzielą wspólny interfejs. Jest to prosty system, który najpierw informuje użytkownika, co będzie zrobione, a następnie to robi. [2] Po wyświetleniu podsumowania informującego o tym, co będzie zrobione, APT wyświetla komunikaty dotyczące postępu przeprowadzanych operacji, tak żeby można było oszacować czas pozostały do ich zakończenia.

Przed każdą operacją, z wyjątkiem update, APT przeprowadza pewne akcje przygotowujące wewnętrzny stan. Sprawdza również stan systemu. Te same operacje można przeprowadzić w dowolnej chwili, uruchamiając apt-get check.

# apt-get check
Czytanie list pakietów... Gotowe
Budowanie drzewa zależności... Gotowe

Pierwszą rzeczą, którą robi, jest wczytanie wszystkich plików pakietów do pamięci. APT używa buforowania, tak żeby przyspieszyć tę operację przy następnym uruchomieniu. Jeśli nie znajdzie niektórych plików pakietów, to wypisze ostrzeżenie, a te pakiety zignoruje.

Końcową operacją jest szczegółowa analiza zależności w systemie. Sprawdzana jest każda zależność każdego pakietu zainstalowanego lub rozpakowanego. W razie wykrycia problemów z zależnościami apt-get wypisze odpowiedni komunikat i odmówi dalszego działania.

# apt-get check
Czytanie list pakietów... Gotowe
Budowanie drzewa zależności... Gotowe
Należy uruchomić "apt --fix-broken install", aby je naprawić.
Następujące pakiety mają niespełnione zależności:
  9fonts: Wymaga: xlib6g ale nie jest zainstalowany
  uucp: Wymaga: mailx ale nie jest zainstalowany
  blast: Wymaga: xlib6g (>= 3.3-5) ale nie jest zainstalowany
  adduser: Wymaga: perl-base ale nie jest zainstalowany
  aumix: Wymaga: libgpmg1 but ale nie jest zainstalowany
  debiandoc-sgml: Wymaga: sgml-base ale nie jest zainstalowany
  bash-builtins: Wymaga: bash (>= 2.01) but 2.0-3 is installed
  cthugha: Wymaga: svgalibg1 but it is not installed
           Wymaga: xlib6g (>= 3.3-5) ale nie jest zainstalowany
  libreadlineg2: Jest w konflikcie z: libreadline2 (<< 2.1-2.1)

Powyższy przykład przedstawia system mający wiele problemów, włączając to poważny problem z libreadlineg2. Każdy pakiet mający niespełnione zależności jest wypisywany w osobnej linii razem z niespełnionymi zależnościami. Podane jest również krótkie wyjaśnienie dotyczące przyczyny problemu.

Są dwie przyczyny, z których powodu system może być zepsuty w powyższy sposób. Pierwszą jest to, że dpkg podczas aktualizacji systemu nie zauważył jakiejś subtelnej relacji między pakietami[3]. Drugą przyczyną jest wystąpienie błędu w czasie instalowania pakietu. W takim przypadku pakiet może być rozpakowany, mimo że pakiety od niego zależące nie są zainstalowane.

Druga przyczyna jest o wiele mniej poważna niż pierwsza, ponieważ APT wymusza pewne więzy integralności dotyczące kolejności instalowania pakietów. W obu przypadkach przekazanie programowi apt-get opcji -f wymusi na APT znalezienie rozwiązania umożliwiającego mu kontynuowanie działania. Metoda APT programu dselect zawsze przekazuje opcję -f, aby móc kontynuować po wystąpieniu błędu w skryptach opiekunów pakietów.

Jednak gdy opcja -f jest używana do poprawienia zależności w poważnie uszkodzonym systemie (pierwsza z opisanych wyżej przyczyn), możliwe jest że albo od razu zwróci błąd, albo nie powiedzie się sekwencja instalowania pakietów. W obu przypadkach należy poprawić zależności ręcznie, używając do tego dpkg (być może przekazując mu opcje wymuszające "--force-..."), w takim stopniu, aby umożliwić działanie systemowi APT.

Przed rozpoczęciem przetwarzania apt-get wyświetli raport zawierający informacje o tym, co będzie zrobione. W ogólności raport ten zależy od typu wykonywanej operacji, jednakże występuje w nim kilka elementów wspólnych dla wszystkich typów. We wszystkich wypadkach wyświetlane są informacje o końcowym stanie, brana jest pod uwagę opcja -f, a także wszystkie istotne działania wykonywanego polecenia.

Podczas pobierania archiwów i plików pakietów APT wyświetla serię komunikatów o stanie.

# apt-get update
Pob:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages
Pob:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages
Traf http://llug.sep.bnl.gov/debian/ testing/main Packages
Pob:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages
Pob:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages
11% [5 testing/non-free `Oczekiwane na nagłówki' 0/32.1k 0%] 2203b/s 1m52s

Linie zaczynające się od Pob: są wypisywane, kiedy APT zaczyna pobierać plik, a ostatnia linia oznacza postęp pobierania. Pierwsza wartość podana w procentach określa całkowity procent pobierania wszystkich plików. Niestety rozmiar plików Package nie jest znany, tak więc apt-get update estymuje procent wykonanego pobierania, co powoduje pewne nieścisłości.

Następna sekcja linii statusu powtarza się dla każdego wątku pobierania, oznacza przeprowadzanie operacji i podaje kilka użytecznych informacji na temat tego, co się dzieje. Czasem sekcja ta zawiera komunikat Tworzenie procesu potomnego, co oznacza, że system operacyjny ładuje moduł pobierania. Pierwszym słowem po znaku "[" jest liczba pobrań, dokładnie taka jaka jest pokazana liczba linii historii pobrań. Następnie w skróconej formie wyświetlana jest nazwa pobieranego obiektu. W przypadku archiwów nazwa ta będzie zawierać nazwę pobieranego pakietu.

W pojedynczych cudzysłowach podawany jest komunikat wskazujący na postęp tworzenia połączenia pobierania danych. Zazwyczaj postęp ten jest sekwencją zdarzeń od Podłączanie przez Oczekiwanie na nagłówki do Pobieranie lub Wznawianie. Końcową wartością jest liczba bajtów pobranych ze zdalnego serwera. Kiedy tylko pobieranie się rozpocznie, wartość ta jest wyświetlana jw formacie typu 102/10.2k, co oznacza, że pobrano 102 bajty, a oczekuje się jeszcze pobrania 10.2 kilobajtów. Aby zaoszczędzić miejsce, całkowity rozmiar jest zawsze wyświetlany jako w postaci 4-znakowej. Po rozmiarze następuje procentowy wskaźnik postępu pobierania danego pliku. Przedostatnim elementem jest bieżąca średnia prędkość pobierania, która jest aktualizowane co każde 5 sekund i odzwierciedla tempo pobierania w tym okresie. W końcu wyświetlany jest estymowany czas pobierania, regularnie aktualizowany i odzwierciedlający czas pozostały do zakończenia pobierania przy założeniu utrzymania się pokazanego tempa pobierania.

Linia stanu jest aktualizowana co każde pół sekundy, aby na bieżąco informować użytkownika o postępie pobierania, podczas gdy linie "Pob:" są przesuwane w dół, gdy tylko zacznie się pobieranie nowego pliku. Ponieważ linia stanu jest ciągle zmieniana, wyjście programu nie jest odpowiednie do przekierowania do pliku. Aby usunąć linie stanu, należy użyć opcji -q.

APT używa programu dpkg do instalowania archiwów i przełączy się do interfejsu dpkg, gdy tylko zakończy pobieranie plików. dpkg może również zadawać pytania podczas przetwarzania pakietów, a same pakiety także mogą zadawać pytania. Każde pytanie zazwyczaj jest poprzedzone opisem, a same pytania są zbyt zróżnicowane, by je tutaj opisać.



[2] Metoda programu dselect jest tak naprawdę zbiorem skryptów wywołujących apt-get. Metoda ta ma jednakże większą funkcjonalność niż sam program apt-get.

[3] APT rozważa wszystkie znane zależności i próbuje nie dopuścić do zepsucia pakietów.