Spis treści
Przed aktualizacją zalecamy zapoznanie się z informacjami zawartymi w Rozdział 5, Problemy, które należy mieć na uwadze, a dotyczące wydania stretch. Rozdział ten opisuje również potencjalne trudności, niezwiązane bezpośrednio z procesem aktualizacji, o których warto wiedzieć przed rozpoczęciem całej procedury.
Przed zaktualizowaniem systemu zalecamy wykonanie pełnej kopii zapasowej, a przynajmniej kopii tych danych i konfiguracji, których utrata byłaby dla nas bolesna. Narzędzia i proces aktualizacji są dość niezawodne, lecz problem sprzętowy w trakcie procedury może spowodować znaczne uszkodzenie systemu.
Główną rzeczą, którą warto skopiować jest zawartość plików
/etc
, /var/lib/dpkg
,
/var/lib/apt/extended_states
oraz wynik polecenia
dpkg --get-selections "*"
(cudzysłów jest istotny). Jeśli
do zarządzania pakietami wykorzystuje się program
aptitude, należy zachować również zawartość pliku
/var/lib/aptitude/pkgstates
.
Sam proces aktualizacji nie zmienia niczego w katalogu
/home
. Niektóre aplikacje (np. część zestawu Mozilla
oraz środowiska graficzne GNOME i KDE) nadpisują istniejące ustawienia
użytkownika wartościami domyślnymi, gdy użytkownik uruchamia dany program
jako pierwszy. Środkiem ostrożności jest wykonanie kopii zapasowych ukrytych
plików i katalogów (z kropką - „dotfiles”) z katalogów domowych
użytkowników. Ta kopia może ułatwić odtworzenie lub przywrócenie starych
ustawień. Powinno się również poinformować o tym pozostałych użytkowników.
Operacja związana z instalacją pakietów musi być wykonana z uprawnieniami
administratora, dlatego należy się zalogować na konto
root
, używając polecenia su lub
wykorzystując sudo do uzyskania potrzebnych uprawnień.
Przed aktualizacją należy wykonać kilka czynności, dlatego trzeba zapoznać się z poniższą listą:
Przed każdą aktualizacją powinno się poinformować innych użytkowników systemu o tym fakcie, choć osoby uzyskujące dostęp do komputera za pomocą ssh nie powinny napotkać większych problemów podczas kontynuowania pracy.
Jako dodatkowe zabezpieczenie można wykonać przed wykonaniem aktualizacji
kopię zapasową lub odmontować partycję z katalogiem
/home
.
Przy aktualizacji do wydania stretch konieczne jest zaktualizowanie jądra. Nie obędzie się więc bez ponownego uruchomienia komputera. Zwykle odbywa się to po zakończeniu aktualizacji.
Mogą istnieć usługi oferowane przez system, które są związane z pakietami objętymi aktualizacją. W takim przypadku proszę pamiętać, że podczas aktualizacji i konfiguracji będą one zatrzymane na czas zastąpienia ich przez nowszą wersję oraz nie będą w tym czasie dostępne.
Dokładny czas braku dostępu do usług zależy od liczby aktualizowanych pakietów i od okresu, w jakim administrator odpowie na pytania konfiguracyjne. Proszę zwrócić uwagę, że jeśli proces aktualizacji nie będzie nadzorowany, a system będzie wymagał reakcji administratora, występuje duże prawdopodobieństwo trwania usług niedostępnych[1] w dłuższym okresie.
Jeśli aktualizowany system udostępnia usługi, które są krytyczne dla użytkowników bądź sieci[2], można ograniczyć przerwę w ich działaniu wykonując aktualizację minimalną (zgodnie z opisem w Sekcja 4.4.4, „Minimalna aktualizacja systemu”) a następnie wykonać aktualizację jądra i ponownie uruchomić komputer (aktualizując pakiety związane z krytycznymi usługami). Dopiero później należy wykonać pełną aktualizację opisaną w Sekcja 4.4.5, „Aktualizacja systemu”. W ten sposób można sprawdzić, że krytyczne usługi działają i są dostępne w trakcie pełnej aktualizacji, a przerwa w działaniu będzie zminimalizowana.
Choć Debian stara się zapewnić, że system będzie się uruchomiał w każdym przypadku to zawsze istnieje możliwość, że wystąpią problemy z ponownym jego uruchomieniem po dokonaniu aktualizacji. Rozpoznane, ewentualne problemy są omówione w tym i kolejnych rozdziałach uwag do wydania.
Z tego względu należy się upewnić, że będzie istniała możliwość odzyskania systemu jeśli nie uruchomi się on po aktualizacji (lub w przypadku systemów zarządzanych zdalnie nie zaktywuje sieci).
W przypadku aktualizacji zdalnej za pomocą ssh, zaleca się dodatkowe środki bezpieczeństwa, w celu zapewnienia sobie możliwości dostępu do serwera za pomocą zdalnego terminala szeregowego. Istnieje ryzyko, że po aktualizacji jądra i ponownym uruchomieniu systemu wystąpi konieczność poprawienia konfiguracji systemu korzystając z konsoli lokalnej. Jeśli w trakcie aktualizacji system zostanie przypadkowo zresetowany, możliwe że konieczne będzie odzyskiwanie za pomocą lokalnej konsoli.
W sytuacjach awaryjnych zalecamy użycie trybu ratunkowego w instalatorze Debiana stretch. Zaletą skorzystania z instalatora jest możliwość wyboru takiej metody jaka jest najkorzystniejsza. Więcej informacji zawiera „Recovering a Broken System” w rozdziale 8 przewodnika instalacji i FAQ instalatora Debiana.
Jeśli ten sposób zawiedzie konieczne jest zapewnienie sobie alternatywnego sposobu rozruchu systemu, by móc go naprawić. Rozwiązaniem może okazać się specjalny obraz ratunkowy lub płyta typu live CD. Po uruchomieniu systemu za pomocą jednej z tych metod powinno się udać podmontować główny system plików, a następnie wykonać chroot w celu rozpoznania i naprawy problemu.
Pakiet initramfs-tools
udostępnia
powłokę debugowania[3] w generowanych
obrazach initrd. Na przykład: jeśli initrd nie będzie mógł zamontować
głównego systemu plików to przeniesie się do powłoki debugowania z
dostępnymi podstawowymi poleceniami, aby dać możliwość znalezienia problemu
i naprawy.
Podstawowymi sprawami do sprawdzenia są: obecność poprawnych plików urządzeń
w /dev
; które moduły są załadowane (cat
/proc/modules
); wynik dmesg pod kątem błędów
ładowania sterowników. Wynik dmesg pokaże również jakie
pliki urządzeń zostały przypisane do danych dysków; powinno się je sprawdzić
z wynikiem echo $ROOT
, aby upewnić się, że główny system
plików znajduje się na oczekiwanym urządzeniu.
Jeśli problem się rozwiąże to polecenie exit
zamknie
powłokę debugowania i proces debugowania będzie kontynuowany od momentu
wystąpienia błędu. Oczywiście, konieczne będzie naprawienie źródła problemu
i ponowne wygenerowanie initrd, aby przy następnym rozruchu nie znaleźć się
w identycznej sytuacji.
Jeśli rozruch nie powiedzie się korzystając z systemd, można dostać się do
powłoki roota służącej do debugowania zmieniając wiersz polecenia
jądra. Jeśli podstawowy rozruch uda się, lecz część usług nie wystartuje,
można spróbować dodać do parametrów jądra
systemd.unit=rescue.target
.
Z kolei parametr jądra systemd.unit=emergency.target
udostępni powłokę roota najwcześniej jak to możliwe. Będzie to jednak
jeszcze przed zamontowaniem głównego systemu plików z uprawnieniami do
odczytu i zapisu. Zajdzie konieczność ręcznego wykonania:
mount -o remount,rw /
Więcej informacji o debugowaniu rozruchu kończącego się niepowodzeniem za pomocą systemd można znaleźć w artykule Diagnosing Boot Problems.
Aktualizacja dystrybucji może być wykonana lokalnie, z trybu tekstowego wirtualnej konsoli (lub przez bezpośrednio połączony terminal szeregowy) bądź zdalnie, za pomocą ssh.
![]() | Ważne |
---|---|
Jeśli korzysta się z usług VPN (takich jak |
Aby zapewnić sobie większy margines bezpieczeństwa podczas aktualizacji zdalnej sugeruje się uruchomić proces aktualizacji w wirtualnej konsoli (zapewnionej przez program screen, który pozwala na bezpieczne ponowne podłączenie oraz zapewnia trwałość procesu aktualizacji, nawet przy zerwaniu połączenia).
![]() | Ważne |
---|---|
Nie należy wykonywać aktualizacji przy użyciu telnet, rlogin, rsh lub z sesji X zarządzanej przez xdm, gdm, kdm, itp. na aktualizowanym komputerze. Każda z tych usług może zostać przerwana podczas aktualizacji co może skutkować niedostępnym systemem, uaktualnionym jedynie częściowo. Używanie programu GNOME update-manager jest zdecydowanie odradzane przy aktualizacji do obecnego wydania, ponieważ narzędzie to wymaga, aby sesja pulpitu pozostawała aktywna. |
Proces aktualizacji opisany w tym rozdziale został opracowany dla aktualizacji z „czystego” wydania jessie bez pakietów pochodzących z zewnątrz. Aby zwiększyć niezawodność aktualizacji można usunąć takie pakiety przed rozpoczęciem procesu.
Poniżej podano dwie metody znajdowania takich pakietów za pomocą aptitude lub apt-forktracer. Obie nie są w 100% dokładne (np. aptitude pokaże pakiety dostępne niegdyś w Debianie, takie jak stare pakiety z jądrem).
$ aptitude search '~i(!~ODebian)' $ apt-forktracer | sort
Bezpośrednie aktualizacje z wydań Debiana starszych od 8 (jessie) nie są wspierane. Proszę zapoznać się z instrukcjami w Uwagach do wydania Debian 8, aby wykonać wpierw aktualizację do wydania 8.
Procedura ta zakłada, że system został zaktualizowany do ostatniej aktualizacji punktowej jessie. Jeśli się tego nie wykonało lub nie jest się tego pewnym należy wykonać instrukcje z Sekcja A.1, „Uaktualnienie wydania jessie”.
Niekiedy użycie do instalowania pakietów apt-get zamiast aptitude może spowodować, że aptitude potraktuje je jako „nieużywane” i przeznaczy do usunięcia. Z reguły należy się upewnić, że system jest całkowicie uaktualniony i „czysty” przed rozpoczęciem procesu aktualizacji.
Z tego powodu należy sprawdzić czy nie ma zaplanowanych działań w menedżerze
pakietów aptitude. Jeśli jakiś pakiet jest przeznaczony
do usunięcia lub aktualizacji może to negatywnie wpłynąć na przebieg
aktualizacji. Proszę zauważyć, że naprawienie tego problemu będzie możliwe
tylko wówczas, gdy sources.list
wciąż wskazuje na
wydanie jessie, a nie na
stable lub stretch - patrz
Sekcja A.2, „Sprawdzenie listy źródeł”.
Sprawdzenie polega na uruchomieniu aptitude w graficznym interfejsie terminalowym i wciśnięciu g („pobierz/instaluj/usuń”). Jeśli pokazane zostaną jakieś akcje należy je przejrzeć i albo poprawić, albo wykonać. Jeśli nie będzie sugerowanych akcji zostanie wyświetlony komunikat: „Nie jest zaplanowana instalacja, aktualizacja, ani usunięcie żadnych pakietów”.
Jeśli skonfigurowano APT w celu instalacji konkretnych pakietów z
dystrybucji innej niż stabilna (np. testowej), konieczna może okazać się
zmiana konfiguracji priorytetów APT-a (przechowywanej w
/etc/apt/preferences
i
/etc/apt/preferences.d/
), aby zezwolić na aktualizację
pakietów do wersji nowego wydania stabilnego. Więcej informacji na ten temat
można znaleźć w podręczniku systemowym apt_preferences(5).
Niezależnie od wybranej metody aktualizacji zaleca się uprzednie sprawdzenie wszystkich pakietów i zweryfikowanie czy wszystkie nadają się do aktualizacji. Następujące polecenie pokaże pakiety o statusie „częściowo zainstalowany” lub „nieprawidłowa konfiguracja” i te z jakimkolwiek statusem błędu:
# dpkg --audit
Można również sprawdzić stan wszystkich pakietów za pomocą aptitude lub np.:
# dpkg -l | pager
albo:
# dpkg --get-selections "*" > ~/curr-pkgs.txt
Pożądane może okazać się usunięcie wszelkich zatrzymań z pakietów. Jeśli jakikolwiek aktualizowany pakiet o statusie „istotny” będzie zatrzymany to aktualizacja nie powiedzie się.
Proszę zauważyć, że aptitude używa innej metody rejestrowania zatrzymanych pakietów niż apt-get i dselect. Pakiety zatrzymane w aptitude można sprawdzić za pomocą polecenia:
# aptitude search "~ahold"
Pakiety zatrzymane w apt-get można sprawdzić korzystając z:
# dpkg --get-selections | grep 'hold$'
Jeśli zmieniono jakiś pakiet lub ponownie skompilowano go lokalnie bez zmiany nazwy ani dodania epoki do nazwy, konieczne będzie zatrzymanie go, aby zapobiec uaktualnieniu.
Stan „zatrzymania” pakietu w apt-get można zmienić za pomocą:
# echo package_name
hold | dpkg --set-selections
Proszę zastąpić hold
słowem install
aby cofnąć „zatrzymanie” pakietu.
Jeśli sygnalizowana jest potrzeba poprawy najlepiej jest upewnić się, że
lista sources.list
wciąż odnosi się do wydania
jessie, zgodnie z opisem Sekcja A.2, „Sprawdzenie listy źródeł”.
Jeśli w pliku /etc/apt/sources.list
znajduje się sekcja
proposed-updates
należy usunąć ją przed rozpoczęciem
aktualizacji systemu. Jest to środek ostrożności zmniejszający
prawdopodobieństwo konfliktów.
Jeśli zainstalowano pakiety pochodzące spoza Debiana należy pamiętać, że
mogą one zostać usunięte podczas aktualizacji z powodu konfliktów w
zależnościach. Jeśli pakiety zostały zainstalowane przez dodanie dodatkowego
archiwum pakietów w /etc/apt/sources.list
należy
sprawdzić czy nie oferuje ono pakietów skompilowanych dla wydania
stretch. Wówczas należy odpowiednio zmienić wiersz dotyczący tego
archiwum we wspomnianym pliku, w tym samym czasie co pozostałe wiersze
związane z pakietami Debiana.
Część użytkowników może posiadać nieoficjalne, backportowane wersje pakietów, które są „nowsze” niż pakiety zainstalowane w Debianie jessie. Te pakiety będą prawdopodobnie sprawiać kłopoty z powodu konfliktów plików[4]. Sekcja 4.5, „Możliwe problemy przy aktualizacji” opisuje sposoby rozwiązywania konfliktów plików.
Przed rozpoczęciem aktualizacji należy przygotować plik konfiguracyjny
apt
z listami pakietów -
/etc/apt/sources.list
.
apt
weźmie pod uwagę wszystkie
pakiety oznaczone za pomocą wpisu „deb
” i
zainstaluje pakiety o najwyższym numerze wersji, dając priorytet
wcześniejszym wierszom w pliku (stąd, jeśli wymieniono kilka położeń powinno
się zwykle jako pierwszy umieścić lokalny dysk twardy, następnie
CD-ROM-y, a na końcu zdalne serwery lustrzane).
Wydanie można określić dzięki nazwie kodowej
(np. jessie
, stretch
)
lub statusowi wydania (oldstable
- stare stabilne,
stable
- stabilne, testing
- testowe,
unstable
- niestabilne). Zapis odnoszący się do nazwy
kodowej ma tę zaletę, że użytkownik nie zostanie nigdy zaskoczony nowym
wydaniem. Z tego powodu to rozwiązanie jest preferowane w niniejszym
dokumencie. Z drugiej strony, powoduje to konieczność samodzielnego
sprawdzania czy nie wydano nowej wersji systemu. Jeśli użyje się nazwy
statusu pokaże się wówczas bardzo dużo dostępnych aktualizacji pakietów.
Debian udostępnia dwie listy dyskusyjne z ogłoszeniami, aby ułatwić bieżące śledzenie ważnych informacji związanych z wydaniami Debiana:
Po zapisaniu się do
listy dyskusyjnej z ogłoszeniami nt. Debiana, przy każdym nowym
wydaniu Debiana wysyłana będzie informacja. Może to nastąpić np. gdy
stretch
zmieni się z wydania
stable
(stabilnego) na oldstable
(stare wydanie stabilne).
Po zapisaniu się do listy dyskusyjnej z ogłoszeniami związanymi z bezpieczeństwem Debiana, będzie można śledzić wszystkie ogłoszenia bezpieczeństwa publikowane przez Debiana.
Domyślna konfiguracja jest przeznaczona do instalacji z głównych serwerów
internetowych Debiana, ale można zmodyfikować plik
/etc/apt/sources.list
w celu użycia innych serwerów
lustrzanych, najlepiej położonych najbliżej użytkownika (w infrastrukturze
sieciowej).
Adresy serwerów lustrzanych można znaleźć na stronie https://www.debian.org/distrib/ftplist (w rozdziale „lista serwerów lustrzanych Debiana”). Proszę zauważyć, że serwery FTP nie są już udostępniane - zob. Sekcja A.2, „Sprawdzenie listy źródeł”.
Załóżmy na przykład, że najbliższym serwerem lustrzanym jest
http://mirrors.kernel.org
. Przy sprawdzaniu go przeglądarką
internetową można zauważyć, że główne katalogi są ułożone podobnie do:
http://mirrors.kernel.org/debian/dists/stretch/main/binary-i386/... http://mirrors.kernel.org/debian/dists/stretch/contrib/binary-i386/...
Aby użyć tego serwera lustrzanego z apt
, należy dodać poniższy wiersz do pliku
sources.list
:
deb http://mirrors.kernel.org/debian stretch main contrib
Proszę zwrócić uwagę, że „dists
” jest dodane
jawnie, a argumenty po nazwie wydania są używane do rozwinięcia ścieżki na
wiele katalogów.
Po dodaniu nowych źródeł należy wyłączyć istniejące wcześniej wiersze
„deb
” w sources.list
,
dodając na ich początku znak kratki (#
).
Zamiast używania serwerów lustrzanych HTTP, można zmodyfikować swój plik
/etc/apt/sources.list
tak, aby skorzystać z kopii na
dysku lokalnym (np. zamontowanej za pomocą NFS).
Kopia serwera lustrzanego może się znajdować np. w
/var/local/debian/
i posiadać główne katalogi, takie
jak:
/var/local/debian/dists/stretch/main/binary-i386/... /var/local/debian/dists/stretch/contrib/binary-i386/...
Aby użyć jej ze swoim apt
em, proszę
dodać ten wiersz do pliku sources.list
:
deb file:/var/local/debian stretch main contrib
Proszę zwrócić uwagę, że „dists
” jest dodane
jawnie, a argumenty po nazwie wydania są używane do rozwinięcia ścieżki na
wiele katalogów.
Po dodaniu nowych źródeł należy wyłączyć istniejące wcześniej wiersze
„deb
” w sources.list
,
dodając na ich początku znak kratki (#
).
Aby korzystać wyłącznie z płyt (CD, DVD lub Blu-ray),
proszę wyłączyć istniejące wiersze „deb
” w
pliku /etc/apt/sources.list
dodając na początku znak
kratki (#
).
Proszę upewnić się, że w pliku /etc/fstab
istnieje
wiersz pozwalający na zamontowanie CD-ROM-u w punkcie montowania
/media/cdrom
. Na przykład, jeśli napęd CD-ROM jest
urządzeniem /dev/sr0
, to plik
/etc/fstab
powinien zawierać wiersz podobny do
poniższego:
/dev/sr0 /media/cdrom auto noauto,ro 0 0
Proszę zauważyć, że w czwartym polu, między słowami
noauto,ro
nie mogą występować
spacje.
Aby sprawdzić, czy wszystko działa, proszę włożyć płytę i spróbować wykonać
# mount /media/cdrom # montowanie płyty w punkcie montowania # ls -alF /media/cdrom # wyświetlenie głównego katalogu płyty # umount /media/cdrom # odmontowanie płyty
Następnie, proszę uruchomić:
# apt-cdrom add
dla każdej płyty binarnej Debiana, aby dodać dane z każdego CD do bazy danych APT-a.
Zalecanym sposobem aktualizacji z poprzedniego wydania systemu Debian jest narzędzie zarządzania pakietami apt-get. W poprzednich wydaniach zalecano skorzystanie z aptitude, lecz najnowsze wersje apt-get zawierają równorzędną funkcjonalność i dają lepsze rezultaty w procesie aktualizacji.
Proszę nie zapomnieć o zamontowaniu potrzebnych partycji do odczytu i zapisu
(przede wszystkim partycji głównej i /usr
), za pomocą
polecenia podobnego do poniższego:
# mount -o remount,rw /punkt-montowania
Proszę dobrze sprawdzić czy źródła APT-a (w
/etc/apt/sources.list
) odnoszą się do wydania
„stretch
” lub
„stable
”. Nie powinno być tam wpisów
dotyczących jessie.
![]() | Uwaga |
---|---|
Wiersze źródeł CD-ROM-u mogą niekiedy wskazywać na
„ |
Zaleca się skorzystanie z programu /usr/bin/script, aby zapisać wyniki sesji aktualizacji. Wówczas, jeśli wystąpi problem, gotowy będzie log, który będzie można wykorzystać np. do zgłoszenia błędu. Aby rozpocząć zapisywanie, proszę wpisać:
# script -t 2>~/upgrade-stretchkrok
.time -a ~/upgrade-stretchkrok
.script
lub coś podobnego. Jeśli będzie trzeba uruchomić zapis ponownie (np. po
ponownym uruchomieniu systemu), proszę użyć innej wartości
krok
, aby wskazać zapisywany krok
aktualizacji. Nie należy umieszczać pliku (do którego będzie się zapisywało)
w katalogu tymczasowym, takim jak /tmp
lub
/var/tmp
. Pliki w tych katalogach będą usuwane przy
aktualizacjach i po restarcie.
Zapis ten pozwoli również na przejrzenie informacji, które już zniknęły z
ekranu. Jeśli jest się w konsoli systemowej wystarczy przełączyć się do VT2
(za pomocą Alt+F2) i (po
zalogowaniu się) skorzystać z polecenia less -R
~root/upgrade-stretch.script
, aby przejrzeć plik.
Po zakończeniu aktualizacji można zatrzymać polecenie
script poleceniem exit
.
Jeśli użyto przełącznika -t do polecenia script można skorzystać z programu scriptreplay, aby odtworzyć całą sesję:
# scriptreplay ~/upgrade-stretch.time ~/upgrade-stretch.script
Na początku, należy pobrać listę dostępnych pakietów nowego wydania. Można to zrobić za pomocą polecenia:
# apt-get update
Konieczne jest upewnienie się, że system posiada wystarczająco dużo wolnej
przestrzeni dyskowej przed pełną aktualizacją systemu, opisaną w Sekcja 4.4.5, „Aktualizacja systemu”. Wszystkie pakiety potrzebne do instalacji są
najpierw pobierane z sieci i przechowywane w
/var/cache/apt/archives
(przy pobieraniu w podkatalogu
partial/
), dlatego trzeba zapewnić sobie wolne miejsce
na partycji z katalogiem /var/
. Po zakończeniu
pobierania wolne miejsce potrzebne będzie na innych partycjach, aby
zainstalować aktualizowane pakiety (które mogą zawierać większe pliki
wykonywalne lub więcej danych) i nowe pakiety, pobrane przy
aktualizacji. Jeśli jest zbyt mało wolnego miejsca można doprowadzić do
trudnej w opanowaniu, niedokończonej aktualizacji.
Polecenie apt-get może pokazać szczegółowe informacje o potrzebnym miejscu. Przed wykonaniem aktualizacji przybliżoną wartość wymaganej przestrzeni można zobaczyć wykonując:
# apt-get -o APT::Get::Trivial-Only=true dist-upgrade [ ... ] XXX aktualizowanych, XXX nowo instalowanych, XXX do usunięcia i XXX nieaktualizowanych. Konieczne pobranie xx.x MB archiwów. Po tej operacji zostanie dodatkowo użyte AAA MB miejsca na dysku.
![]() | Uwaga |
---|---|
Wykonanie tego polecenia na początku procesu aktualizacji może wypisać błąd, z powodów opisanych w następnych rozdziałach. Trzeba wówczas poczekać z komendą do zakończenia minimalnej aktualizacji systemu (opisanej w Sekcja 4.4.4, „Minimalna aktualizacja systemu”) |
Jeśli zabraknie miejsca, apt-get wyświetli ostrzeżenie:
E: Niestety w /var/cache/apt/archives/ nie ma wystarczającej ilości wolnego miejsca.
W takim przypadku, konieczne będzie zwolnienie miejsca na dysku. Można:
Usunąć pakiety pobrane wcześniej do instalacji (z
/var/cache/apt/archives
). Zwolnienie bufora pakietów za
pomocą polecenia apt-get clean usunie wszystkie pobrane
wcześniej pliki pakietów.
Usunąć zapomniane pakiety. Jeśli w jessie korzystano z poleceń aptitude lub apt-get do ręcznego instalowania pakietów to programy te przechowują o nich informacje i będą w stanie oznaczyć jako przestarzałe pakiety, pobrane jedynie przez zależności, które nie są dłużej potrzebne po usunięciu pakietu. Nie przeznaczą one do usunięcia pakietów zainstalowanych ręcznie lecz jedynie te zainstalowane automatycznie. Aby usunąć nieużywane obecnie pakiety zainstalowane automatycznie proszę wykonać:
# apt-get autoremove
Do znalezienia zbędnych pakietów można również użyć programów deborphan, debfoster lub cruft. Nie należy usuwać wszystkich proponowanych przez to narzędzie pakietów bez zastanowienia (szczególnie, jeśli skorzysta się z agresywnych opcji, które nie są domyślne, a są podatne na nieprawidłowe wskazania). Powinno się osobiście przejrzeć pakiety sugerowane do usunięcia (ich zawartość, rozmiar i opis) przed ostateczną decyzją.
Usunąć pakiety zajmujące zbyt dużo miejsca, które nie są obecnie potrzebne
(można je zawsze doinstalować po aktualizacji). Jeśli zainstalowano pakiet
popularity-contest
to do
wyświetlenia listy nieużywanych pakietów zajmujących najwięcej miejsca można
posłużyć się poleceniem popcon-largest-unused. Największe
pakiety można znaleźć poleceniem dpigs (z pakietu
debian-goodies
) lub programem
wajig (poleceniem wajig size
). Można
użyć także programu aptitude
. W tym
celu proszę uruchomić aptitude w graficznym interfejsie
terminalowym, wybrać → , wcisnąć
l, wpisać ~i
, następnie wcisnąć
S i wpisać ~installsize
. W ten sposób
można otrzymać zwięzłą listę do dalszych działań.
Usunąć niepotrzebne tłumaczenia i pliki lokalizacji. Można zainstalować
pakiet localepurge
i skonfigurować
go tak, aby zachował w systemie jedynie potrzebne tłumaczenia. Zredukuje to
przestrzeń zajętą przez katalog /usr/share/locale
.
Tymczasowo przenieść na inny system lub usunąć całkowicie dzienniki
systemowe z katalogu /var/log/
.
Użyć tymczasowego /var/cache/apt/archives
; można użyć
tymczasowego katalogu bufora z innego systemu plików (urządzenia
USB, przenośnego dysku, używanego systemu plików, ...).
![]() | Uwaga |
---|---|
Proszę nie używać montowań NFS, ponieważ połączenie sieciowe może zostać przerwane przy aktualizacji. |
Na przykład, jeśli napęd USB jest zamontowany w
/media/usbkey
:
usunięcie poprzednio pobranych pakietów do instalacji:
# apt-get clean
skopiowanie katalogu /var/cache/apt/archives
na napęd
USB:
# cp -ax /var/cache/apt/archives /media/usbkey/
zamontowanie tymczasowego bufora w obecnym:
# mount --bind /media/usbkey/archives /var/cache/apt/archives
przywrócenie pierwotnego katalogu
/var/cache/apt/archives
po aktualizacji:
# umount /media/usbkey/archives
usunięcie pozostałego /media/usbkey/archives
.
Tymczasowy bufor można utworzyć w dowolnym systemie plików zamontowanym w systemie.
Wykonanie minimalnej aktualizacji (opisanej w Sekcja 4.4.4, „Minimalna aktualizacja systemu”) lub częściowych aktualizacji systemu przed pełną aktualizacją. Umożliwi to częściową aktualizację systemu i pozwoli na wyczyszczenie bufora pakietów przed pełną aktualizacją.
Proszę zwrócić uwagę, że w celu bezpiecznego usunięcia pakietów zaleca się
przełączenie swojego pliku sources.list
z powrotem na
wydanie jessie zgodnie z opisem w Sekcja A.2, „Sprawdzenie listy źródeł”.
W niektórych przypadkach bezpośrednie wykonanie pełnej aktualizacji (opisanej poniżej) może usunąć wiele pakietów które mają być zachowane. Z tego powodu zaleca się wykonanie dwustopniowej aktualizacji. Najpierw minimalnej, pozwalającej uporać się z tymi konfliktami, a następnie pełnej, zgodnie z opisem w Sekcja 4.4.5, „Aktualizacja systemu”.
Aby to zrobić, proszę wykonać
# apt-get upgrade
![]() | Uwaga |
---|---|
Proces aktualizacji innych wydań zalecał używanie programu aptitude do aktualizacji. To narzędzie nie jest zalecane do aktualizacji z wydania jessie do stretch. |
W ten sposób zaktualizowane zostaną pakiety, które nie wymagają usunięcia lub instalacji innych pakietów.
Minimalna aktualizacja systemu może okazać się przydatna również w systemach z niewielką ilością wolnego miejsca, na których pełna aktualizacja nie może być wykonana z tego powodu.
Jeśli zainstalowano pakiet apt-listchanges
to (w domyślnej konfiguracji)
wyświetli on ważne informacje o aktualizowanych pakietach w programie
stronicującym. Po zapoznaniu się z ich treścią należy wcisnąć
q aby kontynuować aktualizację.
Po wykonaniu poprzednich kroków, nadszedł czas na główną część aktualizacji. Proszę wykonać
# apt-get dist-upgrade
![]() | Uwaga |
---|---|
Proces aktualizacji innych wydań zalecał używanie programu aptitude do aktualizacji. To narzędzie nie jest zalecane do aktualizacji z wydania jessie do stretch. |
Przeprowadzona zostanie w ten sposób pełna aktualizacja systemu, instalacja najnowszych dostępnych wersji wszystkich pakietów i rozwiązanie wszystkich możliwych zmian zależności pakietów w innych wydaniach. Jeśli jest to konieczne zainstalowane zostaną nowe pakiety (najczęściej nowe wersje bibliotek lub pakiety o nowych nazwach) i usunięte wszystkie niepotrzebne pakiety powodujące konflikty.
Przy aktualizacji z zestawu płyt CD/DVD/BD, użytkownik będzie prawdopodobniej proszony o włożenie określonej płyty w wielu miejscach aktualizacji. Z powodu zależności między pakietami rozproszonymi na poszczególnych nośnikach konieczne może okazać się wielokrotne wkładanie tej samej płyty.
Nowe wersje zainstalowanych pakietów, które nie mogą być zainstalowane bez
zmiany statusu innego pakietu zostaną pozostawione w bieżącej wersji
(wyświetlone jako „zatrzymane”). Można to rozwiązać za pomocą
aptitude, wybierając te pakiety do instalacji; można też
spróbować wykonać apt-get install
.
pakiet
Poniższe sekcje opisują znane problemy, które mogą pojawić się przy aktualizacji do wydania stretch.
W niektórych przypadkach polecenie apt-get dist-upgrade po pobraniu pakietów może wypisać następujący błąd:
E: Nie udało się wykonać natychmiastowej konfiguracji "pakietu
". Proszę wykonać "man 5 apt.conf" i zapoznać się z wpisem APT::Immediate-Configure aby dowiedzieć się więcej.
W takim wypadku, polecenie apt-get dist-upgrade -o APT::Immediate-Configure=0 powinno pozwolić pomyślnie przeprowadzić aktualizację.
Innym wyjściem pozwalającym obejść problem jest tymczasowe dodanie do pliku
sources.list
źródeł wydań jessie i
stretch, a następnie uruchomienie apt-get update.
Proces aktualizacji do wydania stretch może prosić o usunięcie pewnych pakietów. Dokładna lista będzie zależała od obecnie zainstalowanych pakietów. Niniejsze uwagi do wydania dają ogólny obraz tego zabiegu. W razie wątpliwości przed kontynuowaniem należy sprawdzić listę usuwanych pakietów proponowaną przez każdą z metod. Więcej informacji o pakietach przestarzałych w wydaniu stretch znajduje się w Sekcja 4.8, „Przestarzałe pakiety”.
Czasami potrzebne jest włączenie opcji
APT::Force-LoopBreak
w APT, aby móc tymczasowo usunąć
pakiet istotny z powodu pętli konfliktów/zależności wstępnych. Polecenie
apt-get wyświetli o tym ostrzeżenie i przerwie
aktualizację. Można obejść problem podając opcję -o
APT::Force-LoopBreak=1
w wierszu polecenia
apt-get.
Istnieje możliwość, że struktura zależności systemowych będzie na tyle naruszona, że konieczna będzie ręczna interwencja. Zwykle oznacza to użycie polecenia apt-get lub
# dpkg --remove nazwa-pakietu
aby wyeliminować część przeszkadzających pakietów lub
# apt-get -f install # dpkg --configure --pending
W sytuacjach ekstremalnych konieczne może być wymuszenie reinstalacji za pomocą polecenia
# dpkg --install /ścieżka/do/nazwy-pakietu.deb
Konflikty plików nie powinny wystąpić przy aktualizacji z „czystego” wydania jessie, lecz mogą się pojawić przy zainstalowanych nieoficjalnych backportach. Konflikty plików objawiają się komunikatami błędów, podobnymi do poniższego:
Rozpakowywanie<pakiet-foo>
(z<plik-pakietu-foo>
) ... dpkg: błąd przetwarzania<pakiet-foo>
(--install): próba nadpisania "<jakiś-plik>
", który istnieje także w pakiecie<pakiet-bar>
dpkg-deb: podproces wklej zabity przez sygnał (Przerwany potok) Wystąpiły błędy podczas przetwarzania:<pakiet-foo>
Można spróbować rozwiązać konflikt plików przez wymuszenie usunięcia pakietu wymienionego w ostatnim wierszu komunikatu błędu:
# dpkg -r --force-depends nazwa-pakietu
Po zakończeniu naprawy powinno się dać wznowić aktualizację, ponawiając poprzednio wymienione polecenia apt-get.
Podczas aktualizacji zostaną wyświetlone pytania dotyczące konfiguracji lub
ponownej konfiguracji kilku pakietów. Gdy pytanie będzie dotyczyło tego czy
plik w katalogu /etc/init.d
lub plik
/etc/manpath.config
ma zostać zastąpiony wersją
opiekuna pakietu to odpowiedź powinna z reguły brzmieć „tak”
(aby zapewnić spójność systemu). Zawsze można cofnąć się do starszej wersji,
ponieważ są one zapisywane z rozszerzeniem .dpkg-old
.
W razie wątpliwości, proszę zapisać nazwę pakietu lub pliku i zdecydować o tym później. Można przeszukać plik z zapisem sesji, aby znaleźć informację wyświetloną na ekranie przy aktualizacji.
Jeśli aktualizacja jest wykonywana z lokalnej konsoli systemowej, w którymś momencie aktualizacji może zdarzyć się, że konsola zostanie przesunięta na inny widok i straci się obraz procesu aktualizacji. Prawdopodobieństwo takiego zdarzenia istnieje np. podczas korzystania z interfejsu graficznego, gdy restartowany jest menedżer logowania.
Aby odzyskać konsolę, na której trwa aktualizacja, należy wcisnąć Ctrl+Alt+F1, aby przełączyć się z powrotem na terminal wirtualny 1 z graficznego ekranu powitalnego lub Alt+F1 z trybu lokalnej konsoli tekstowej. Proszę zastąpić F1 klawiszem funkcyjnym o tym samym numerze co terminal wirtualny, na którym trwa aktualizacja. Można również skorzystać ze kombinacji Alt+strzałka w lewo lub Alt+strzałka w prawo aby przenosić się na kolejne terminale tekstowe.
Niniejszy rozdział opisuje sposób aktualizacji jądra i identyfikacji
potencjalnych problemów który mogą się pojawić. Można zainstalować jeden z
pakietów linux-image-*
udostępnionych przez Debiana lub skompilować dostosowany do swoich potrzeb.
Proszę zauważyć, że wiele poniższych informacji zakłada, że używa się
jednego z modularnych jąder Debiana razem z initramfs-tools
i udev
. Jeśli korzysta się z własnego,
dostosowanego jądra, które nie wymaga initrd lub wykorzystuje się inny
program tworzący initrd to część informacji będzie nieprzydatna.
Przy aktualizowaniu dystrybucji z wydania jessie do stretch zaleca się zainstalowanie metapakietu linux-image-*, jeśli nie dokonano tego wcześniej. Te metapakiety będą zainstalowane automatycznie w nowszych wersjach jądra przy dokonywaniu aktualizacji. To, czy są zainstalowane, można sprawdzić za pomocą:
# dpkg -l "linux-image*" | grep ^ii | grep -i meta
Jeśli nie zostanie wypisany żaden wynik potrzeba będzie albo zainstalować ręcznie nowy pakiet linux-image lub zainstalować metapakiet linux-image. Aby zobaczyć listę dostępnych metapakietów linux-image, proszę wykonać:
# apt-cache search linux-image- | grep -i meta | grep -v transition
W razie wątpliwości co do wyboru pakietu proszę uruchomić uname
-r
i znaleźć pakiet o podobnej nazwie. Na przykład jeśli widać
„2.6.32-5-amd64
”, to zaleca się
zainstalowanie linux-image-amd64
. Można również użyć
apt-cache, aby zobaczyć długi opis każdego pakietu,
pomocny do wyboru najlepszego z nich. Na przykład:
# apt-cache show linux-image-amd64
Powinno się następnie uruchomić apt-get install
, aby go
zainstalować. Po zainstalowaniu nowego jądra należy uruchomić system
ponownie przy możliwie najbliższej okazji, aby zyskać zalety nowego
jądra. Przed wykonaniem pierwszego ponownego uruchomienia proszę zapoznać
się z Sekcja 5.1.4, „Sprawy do zrobienia przed ponownym uruchomieniem”.
Dla bardziej doświadczonych użytkowników istnieje łatwy sposób skompilowania
swojego, dostosowanego jądra w systemie Debian. Proszę zainstalować źródła
jądra zawarte w pakiecie linux-source
. Do zbudowania pakietu binarnego
można wykorzystać deb-pkg
, dostępne w źródłach
makefile. Więcej informacji można znaleźć na stronie Debian Linux Kernel
Handbook, dostępnej również jako pakiet debian-kernel-handbook
(w języku angielskim).
Jeśli to możliwe, to osobna aktualizacja pakietu jądra od głównego
dist-upgrade
jest dobrym rozwiązaniem - redukuje szanse
na otrzymanie tymczasowo pozbawionego możliwości rozruchu systemu. Należy to
zrobić wyłącznie po aktualizacji minimalnej, opisanej w Sekcja 4.4.4, „Minimalna aktualizacja systemu”.
Po aktualizacji jest kilka rzeczy, które można zrobić w celu przygotowania do następnego wydania.
Usunięcie pakietów oznaczonych teraz jako przestarzałe zgodnie z opisem w rozdziałach Sekcja 4.4.3, „Zapewnienie wystarczającej ilości wolnego miejsca ” i Sekcja 4.8, „Przestarzałe pakiety”. Proszę przejrzeć używane pliki konfiguracyjne i rozważyć całkowite wyczyszczenie (ang. purge) pakietów, w celu usunięcia ich plików konfiguracyjnych. Zob. też Sekcja 4.7.1, „Czyszczenie usuniętych pakietów”.
Ogólnym zaleceniem jest czyszczenie usuniętych pakietów. Ma to szczególny sens, jeśli pakiety zostały usunięte we wcześniejszej aktualizacji wydania (np. przy aktualizacji do jessie) lub pochodzą od zewnętrznych dostawców. W szczególności znane są problemy ze starymi skryptami init.d.
![]() | Ostrzeżenie |
---|---|
Wyczyszczenie pakietu zazwyczaj usuwa również jego pliki dziennika, dlatego można rozważyć uprzednie wykonanie ich kopii zapasowej. |
Poniższe polecenie wyświetla listę wszystkich usuniętych pakietów z pozostawionymi w systemie plikami konfiguracyjnymi:
# dpkg -l | awk '/^rc/ { print $2 }'
Pakiety można wyczyścić poleceniem apt-get purge. Aby wyczyścić od razu wszystkie, można skorzystać z następującego polecenia:
# apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }')
Jeśli korzysta się z programu aptitude
, można rozważyć użycie następującego
odpowiednika powyższych poleceń:
$ aptitude search '~c' $ aptitude purge '~c'
Wprowadzając wiele nowych pakietów, stretch porzuca i pomija również sporo starych pakietów z wydania jessie. Nie ma dla nich ścieżki aktualizacji. Choć nic nie stoi na przeszkodzie, aby w razie potrzeby używać takich pakietów to projekt Debian kończy wsparcie bezpieczeństwa po roku od wydania stretch[5] i nie dostarczy innego wsparcie w międzyczasie. Zaleca się zastąpienie ich dostępnymi alternatywami jeśli takie istnieją.
Jest wiele powodów, dla których pakiet mógł zostać usunięty z dystrybucji: nie jest dłużej utrzymywany przez projekt macierzysty, nie ma chętnego Dewelopera Debiana, który byłby zainteresowany opiekowaniem się pakietem, funkcja którą pełnił została przejęta przez inne programy (lub nowszą wersję), nie jest dłużej uważany za odpowiedni dla wydania stretch ze względu na poważne błędy. W tym ostatnim przypadku pakiet może być wciąż obecny w dystrybucji „niestabilnej”.
Znalezienie pakietów „przestarzałych” w zaktualizowanym systemie jest łatwe ponieważ interfejsy zarządzania pakietami odpowiednio je oznaczają. W aptitude znajdują się one w sekcji „Pakiety przestarzałe i lokalne”.
System śledzenia błędów Debiana często udostępnia dodatkowe informacje nt. powodów usunięcia danego pakietu. Należy przejrzeć zarówno archiwalne zgłoszenia błędów samego pakietu jak i archiwalne zgłoszenia pseudopakietu ftp.debian.org.
Lista pakietów uznanych za przestarzałe w wydaniu Stretch jest dostępna w: Sekcja 5.1.3, „Znane pakiety oznaczone jako przestarzałe”.
Część pakietów z wydania jessie w stretch została podzielona na kilka pakietów, często w celu ułatwienia zarządzania systemem. Aby ułatwić ścieżkę aktualizacji stretch często udostępnia pakiety „atrapy”: puste pakiety o tej samej nazwie co stary pakiet w wydaniu jessie, z zależnościami, które spowodują instalację nowych pakietów. Te pakiety „atrapy” stają się niepotrzebne po aktualizacji i mogą zostać usunięte.
Większość (choć nie wszystkie) opisów pakietów atrap wskazuje ich
przeznaczenie. Opisy pakietów nie są jednak ustandaryzowane, można
skorzystać więc z deborphan z opcjami
--guess-
(np.
*
--guess-dummy
), aby je odszukać. Proszę zwrócić uwagę, że
część pakietów atrap nie jest przeznaczona do usunięcia po aktualizacji,
lecz są używane do śledzenia obecnie dostępnych wersji danego pakietu.
[1] Jeśli priorytet debconfa jest ustawiony na bardzo wysoką wartość, to może to spowodować niewyświetlanie pytań konfiguracyjnych. Usługi zależne od domyślnych odpowiedzi, które nie będą pasowały do danego systemu, nie uruchomią się.
[2] Przykład: usługi DNS i DHCP, szczególnie jeśli nie ma redundancji lub tzw. failover. W przypadku DHCP użytkownicy mogą zostać odłączeni z sieci, jeśli czas dzierżawy jest mniejszy niż czas trwania aktualizacji.
[3] Można wyłączyć tę funkcję dodając parametr panic=0
do
parametrów rozruchowych.
[4] System zarządzania pakietami Debiana nie pozwala zwykle na usunięcie lub zastąpienie pliku będącego własnością innego pakietu, chyba że pakiet został zdefiniowany jako zastępujący dany pakiet.
[5] Lub tak długo, aż nie pojawi się nowe wydanie w tym czasie. Zwykle jedynie dwa wydania stabilne są wspierane w dowolnym czasie.