[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ dalej ]
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-get -f 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.
Zostaną zainstalowane następujące dodatkowe pakiety: libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy squake pgp-i python-base debmake ldso perl libreadlineg2 ssh
Lista dodatkowych pakietów wyświetla wszystkie pakiety, które będą zainstalowane lub zaktualizowane oprócz tych wymienionych w linii poleceń. Jest generowana tylko dla polecenia install. Wymienione pakiety są najczęściej wynikiem automatycznej instalacji.
Następujące pakiety zostaną USUNIĘTE: xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid nas xpilot xfig
Lista pakietów przeznaczonych do usunięcia wyświetla wszystkie pakiety, które zostaną usunięte z systemu. Może być pokazana dla każdej operacji i powinna być szczegółowo przeanalizowana, aby zapewnić, że żaden istotny pakiet nie będzie usunięty. W szczególności opcja -f może wygenerować sporo pakietów do usunięcia, także w przypadku jej użycia należy szczególnie dokładnie przeanalizować wyświetlany raport. Lista może zawierać pakiety usuwane z powodu ich tylko częściowego zainstalowania, wynikającego być może z przerwania wcześniejszej instalacji.
Zostaną zainstalowane następujące NOWE pakiety: zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base
Lista nowych pakietów to proste przypomnienie o tym, co się stanie. Wypisane pakiety nie są obecnie zainstalowane w systemie, ale będą, kiedy APT skończy działanie.
Następujące pakiety zostały zatrzymane: compface man-db tetex-base msql libpaper svgalib1 gs snmp arena lynx xpat2 groff xscreensaver
Jeśli aktualizowany jest cały system, to jest możliwe, że nowe wersje
pakietów nie będą mogły być zainstalowane, ponieważ wymagają nowych
pakietów lub są w konflikcie z już zainstalowanymi pakietami. W takim
wypadku pakiet pojawi się na liście pakietów zatrzymanych. Najlepszym
sposobem na zainstalowanie takich pakietów jest użycie apt-get
install lub rozwiązanie problemów z zależnościami za pomocą
programu dselect
.
Zostaną zmienione następujące zatrzymane pakiety: cvs
Czasami można poprosić APT o zainstalowanie pakietu, który jest zatrzymany. W takim przypadku wypisywane jest ostrzeżenie o zmianie zatrzymanego pakietu. Może się to zdarzyć tylko podczas dist-upgrade lub install.
APT zakończy raport podsumowaniem wszystkich zmian, które przeprowadzi.
206 aktualizowanych, 8 nowo instalowanych, 25 usuwanych i 51 nieaktualizowanych. 12 nie w pełni zainstalowanych lub usuniętych. Konieczne pobranie 65.7M/66.7M archiwów. Po rozpakowaniu zostanie użyte 26.5M.
Pierwsza linia podsumowania jest uproszczoną wersją powyższych list i zawiera liczbę aktualizacji - to jest pakietów już zainstalowanych, których nowsze wersje są dostępne. W drugiej linii wyświetlono liczbę nie do końca skonfigurowanych pakietów, prawdopodobnie w wyniku przerwania poprzedniej instalacji. Ostatnia linia zawiera dane dotyczące miejsca na dysku. Pierwsza para liczb odnosi się do rozmiaru plików archiwum: pierwsza liczba oznacza liczbę bajtów, które muszą zostać pobrane ze zdalnych serwerów, a druga - całkowity rozmiar wszystkich żądanych archiwów. Kolejna liczba oznacza różnicę rozmiarów pomiędzy obecnie zainstalowanymi pakietami, a nowo instalowanymi pakietami. W przybliżeniu odpowiada przestrzeni dysku, która będzie zajęta w /usr po zakończeniu instalacji. Wartość ta może wskazywać na zwolnienie miejsca na dysku, jeśli usuwana jest duża liczba pakietów.
Używając opcji -u, można wygenerować raport pokazujący pakiety przeznaczone do aktualizacji, podobny do tego pokazanego w poprzednim przykładzie.
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ć.
[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ dalej ]
Podręcznik użytkownika APT
$Id: guide.sgml,v 1.7 2003/04/26 23:26:13 doogie Exp $jgg@debian.org