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 jessie. 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 jessie 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.
Zalecamy korzystanie z trybu ratunkowego w instalatorze Debiana jessie. 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.
W najgorszym scenariuszu może zajść konieczność dokonania rozruchu ze pomocą
starego systemu sysvinit. Aby to uczynić pakiet sysvinit
musi być wciąż zainstalowany, a plik
binarny /lib/sysvinit/init
zawarty w initramfs. Jeśli
te wymagania są spełnione, należy dodać
init=/lib/sysvinit/init
do wiersza polecenia jądra, co
spowoduje rozruch z wykorzystaniem pliku binarnego sysvinit.
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 wheezy bez pakietów pochodzących z zewnątrz. Aby zwiększyć niezawodność aktualizacji można usunąć takie pakiety przed rozpoczęciem procesu.
Bezpośrednie aktualizacje z wydań Debiana starszych od 7 (wheezy) nie są wspierane. Proszę zapoznać się z instrukcjami w Uwagach do wydania Debian 7, aby wykonać wpierw aktualizację do wydania 7.
Procedura ta zakłada, że system został zaktualizowany do ostatniej aktualizacji punktowej wheezy. Jeśli się tego nie wykonało lub nie jest się tego pewnym należy wykonać instrukcje z Sekcja A.1, „Uaktualnienie wydania wheezy”.
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 wheezy, a nie na
stable lub jessie - patrz
Sekcja A.2, „Sprawdzenie listy źródeł”.
Sprawdzenie polega na uruchomieniu aptitude w „trybie wizualnym” 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
wheezy, 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
jessie. 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 wheezy. 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 serwery lustrzane HTTP/FTP).
Wydanie można określić dzięki nazwie kodowej
(np. wheezy
, jessie
)
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.
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 HTTP i FTP można znaleźć na stronie https://www.debian.org/distrib/ftplist (w rozdziale „lista serwerów lustrzanych Debiana”). Serwery HTTP są zwykle szybsze niż FTP.
Załóżmy na przykład, że najbliższym serwerem lustrzanym jest
http://mirrors.kernel.org
. Przy sprawdzaniu go przeglądarką
internetową lub programem FTP, można zauważyć, że główne katalogi są ułożone
podobnie do:
http://mirrors.kernel.org/debian/dists/jessie/main/binary-amd64/... http://mirrors.kernel.org/debian/dists/jessie/contrib/binary-amd64/...
Aby użyć tego serwera lustrzanego z apt
, należy dodać poniższy wiersz do pliku
sources.list
:
deb http://mirrors.kernel.org/debian jessie 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.
Pod 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 lub FTP, 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/ftp/debian/
i posiadać główne katalogi, takie jak:
/var/ftp/debian/dists/jessie/main/binary-amd64/... /var/ftp/debian/dists/jessie/contrib/binary-amd64/...
Aby użyć jej ze swoim apt
em, proszę
dodać ten wiersz do pliku sources.list
:
deb file:/var/ftp/debian jessie 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.
Pod 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
„jessie
” lub
„stable
”. Nie powinno być tam wpisów
dotyczących wheezy.
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-jessiekrok
.time -a ~/upgrade-jessiekrok
.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-jessie.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-jessie.time ~/upgrade-jessie.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 sekcji
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 rozdziale 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 wheezy 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 „trybie
wizualnym”, 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 wheezy 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 wheezy do jessie. |
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 wheezy do jessie. |
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 CD-ROM-ów (lub płyt DVD), użytkownik będzie 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 jessie.
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ć przeprowadzić aktualizację pomyślnie.
Innym wyjściem pozwalającym obejść problem jest tymczasowe dodanie do pliku
sources.list
źródeł wydań wheezy i
jessie, a następnie uruchomienie apt-get update.
Proces aktualizacji do wydania jessie 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ć kasowanie proponowane przez każdą z metod. Więcej informacji o pakietach przestarzałych w jessie znajduje się w Sekcja 4.10, „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 wheezy, 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.
Pakiety powinny się zwykle aktualizować bez problemów, z wydania wheezy do jessie. Jest jednak kilka przypadków, gdzie może okazać się potrzebna interwencja albo przed, albo w trakcie aktualizacji. Szczegółowa rozpiska dla poszczególnych pakietów znajduje się poniżej.
Aktualizacja Debiana z wydania wheezy do jessie domyślnie zmieni domyślny system init z SysV na systemd. W zależności od systemu i ustawień użytkownika może zajść potrzeba dokonania pewnych zmian ręcznie. Szczegółowy opis znanych problemów znajduje się w Sekcja 5.6, „Aktualizacja instaluje nowy domyślny system init wydania Jessie”.
W przypadku zainstalowanego LXC przy aktualizacji systemu i kontenerów należy zachować szczególną ostrożność. Potencjalne problemy i ich rozwiązania opisano w Sekcja 5.8, „Zastrzeżenia przy aktualizacji gospodarzy i kontenerów LXC”.
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 wheezy do jessie 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 4.7, „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”.
Obecnie, initramfs-tools
będzie
sprawdzało również główny system plików przed zamontowaniem go, za
pomocą fsck
. Jeśli wybrano systemd
jako swój system init oraz istnieje oddzielny system plików
/usr
, sprawdzany i montowany będzie również
/usr
.
Jeśli /usr
jest oddzielnym systemem plików na
urządzeniu RAID, a ustawienie INITRDSTART
w
/etc/default/mdadm
nie ma wartości
"all
", konieczna będzie jego zmiana, aby objąć również to
urządzenie.
Jeśli /usr
jest oddzielnym system plików na woluminie
logicznym LVM, a wiersz /usr
w
/etc/fstab
określa urządzenie przez
UUID
lub LABEL
, konieczna jest jego
zmiana i zapis w formacie
/dev/mapper/
lub
VG
-LV
/dev/
.
VG
/LV
Nie jest obecnie możliwe montowanie za pomocą podpięcia ("bind") systemu
plików /usr
.
Jeśli RTC (zegar czasu rzeczywistego) jest ustawiony na czas lokalny i
wyprzedza on UTC, e2fsck
wypisze ostrzeżenie w trakcie
rozruchu o zmianie czasu do tyłu (błąd #767040). Można to
wyłączyć za pomocą następujących wierszy w
/etc/e2fsck.conf
:
[options] broken_system_clock=1
Po zakończeniu apt-get dist-upgrade
„formalna” aktualizacja jest zakończona, lecz są pewne rzeczy
do sprawdzenia przed ponownym uruchomieniem.
Przy aktualizacji z wydania Wheezy do Jessie dobrym pomysłem może być wyczyszczenie starych pakietów przed pierwszym ponownym uruchomieniem. W szczególności problemy mogą sprawiać stare skrypty init. Proszę zapoznać się z Sekcja 4.8.1, „Czyszczenie usuniętych pakietów” aby dowiedzieć się więcej o znajdowaniu i czyszczeniu usuniętych pakietów.
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.10, „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.8.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 wheezy) 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'
Od następnego wydania systemu Debian 9 (nazwa kodowa stretch) część funkcji zostanie porzucona. Użytkownicy powinni przejść na rozwiązania alternatywne, aby uniknąć problemów przy aktualizacji do 9.
Dotyczy do między innymi:
Wprowadzając wiele nowych pakietów, jessie porzuca i pomija również sporo starych pakietów z wydania wheezy. 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 jessie[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 jessie 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 oznaczają je odpowiednio. 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 przestarzałych pakietów obejmuje:
postgresql-9.1
, zastąpiony przez
postgresql-9.4
. Po ukończeniu
aktualizacji systemu powinno się zaplanować aktualizację swoich baz danych
PostgreSQL 9.1 do nowej wersji 9.4 za pomocą narzędzia
pg_upgradecluster. Użytkownikom języka proceduralnego
PL/perl wydanie Jessie zapewnia zaktualizowany pakiet postgresql-plperl-9.1
zlinkowany z wersją
biblioteki libperl z Jessie, aby umożliwić aktualizację do nowej wersji
perla w Jessie przy zachowaniu działających starych funkcji bazy danych
PL/perl aż do momentu zaktualizowania samej bazy.
python3.2
, zastąpiony przez
python3.4
(wersja 2.7 jest wspierana
w wheezy i jessie).
ruby1.8
i ruby1.9.1
; zastąpione przez ruby2.1
. Proszę zainstalować pakiet ruby
aby automatycznie śledzić bieżącą wersję
ruby.
mplayer
; można go zastąpić pakietem
mplayer2
lub mpv
(nowość w jessie). Stary pakiet
był najbardziej kompatybilny gdy idzie o argumenty wiersza poleceń i
konfigurację (dodając przy tym kilka nowych funkcji), natomiast nowszy
dodaje wiele nowych funkcji i usprawnień i jest aktywnie rozwijany przez
swój projekt macierzysty.
Część pakietów z wydania wheezy w jessie została podzielona na kilka pakietów, często w celu ułatwienia zarządzania systemem. Aby ułatwić ścieżkę aktualizacji jessie często udostępnia pakiety „atrapy”: puste pakiety o tej samej nazwie co stary pakiet w wydaniu wheezy, 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 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.