Rozdział 4. Aktualizacja z Debiana 10 (buster)

Spis treści

4.1. Przygotowanie do aktualizacji
4.1.1. Kopia zapasowa danych i konfiguracji
4.1.2. Uprzednie ostrzeżenie użytkowników
4.1.3. Przygotowanie do przestoju usług
4.1.4. Przygotowanie do odzyskiwania
4.1.5. Przygotowanie bezpiecznego środowiska do uaktualnienia
4.2. Start from pure Debian
4.2.1. Upgrade to Debian 10 (buster)
4.2.2. Remove non-Debian packages
4.2.3. Upgrade to latest point release
4.2.4. Prepare the package database
4.2.5. Remove obsolete packages
4.2.6. Clean up leftover configuration files
4.2.7. The security section
4.2.8. Sekcja proposed-updates
4.2.9. Nieoficjalne źródła
4.2.10. Wyłączenie priorytetów APT-a (APT pinning)
4.2.11. Check package status
4.3. Preparing APT source-list files
4.3.1. Dodanie internetowych źródeł APT-a
4.3.2. Dodanie źródeł APT-a do lokalnego serwera lustrzanego
4.3.3. Dodanie źródeł APT-a do nośników optycznych
4.4. Aktualizacja pakietów
4.4.1. Zapisanie sesji
4.4.2. Aktualizowanie listy pakietów
4.4.3. Zapewnienie wystarczającej ilości wolnego miejsca
4.4.4. Minimalna aktualizacja systemu
4.4.5. Aktualizacja systemu
4.5. Możliwe problemy przy aktualizacji
4.5.1. Podczas aktualizacji dystrybucji pojawia się błąd Nie udało się wykonać natychmiastowej konfiguracji.
4.5.2. Spodziewane usunięcia pakietów
4.5.3. Konflikty lub pętle wymaga wstępnie
4.5.4. Konflikty plików
4.5.5. Zmiany konfiguracji
4.5.6. Zmiany sesji na konsoli
4.6. Aktualizacja jądra i powiązanych pakietów
4.6.1. Instalowanie metapakietu jądra
4.7. Przygotowanie do kolejnego wydania
4.7.1. Czyszczenie usuniętych pakietów
4.8. Przestarzałe pakiety
4.8.1. Transitional dummy packages

4.1. Przygotowanie do aktualizacji

Przed aktualizacją zalecamy zapoznanie się z informacjami zawartymi w Rozdział 5, Problemy, które należy mieć na uwadze, a dotyczące wydania bullseye. 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.

4.1.1. Kopia zapasowa danych i konfiguracji

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ą:

4.1.2. Uprzednie ostrzeżenie użytkowników

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 bullseye konieczne jest zaktualizowanie jądra. Nie obędzie się więc bez ponownego uruchomienia komputera. Zwykle odbywa się to po zakończeniu aktualizacji.

4.1.3. Przygotowanie do przestoju usług

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.

4.1.4. Przygotowanie do odzyskiwania

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

If that fails, you will need an alternative way to boot your system so you can access and repair it. One option is to use a special rescue or live install image. After booting from that, you should be able to mount your root file system and chroot into it to investigate and fix the problem.

4.1.4.1. Debugowanie powłoki podczas rozruchu przy użyciu initrd

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.

4.1.4.2. Debugowanie powłoki podczas rozruchu przy użyciu systemd

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 /
      

More information on debugging a broken boot under systemd can be found in the Diagnosing Boot Problems article.

4.1.5. Przygotowanie bezpiecznego środowiska do uaktualnienia

[Ważne]Ważne

If you are using some VPN services (such as tinc) consider that they might not be available throughout the upgrade process. Please see Sekcja 4.1.3, „Przygotowanie do przestoju usług”.

In order to gain extra safety margin when upgrading remotely, we suggest that you run upgrade processes in the virtual console provided by the screen program, which enables safe reconnection and ensures the upgrade process is not interrupted even if the remote connection process temporarily fails.

4.2. Start from pure Debian

The upgrade process described in this chapter has been designed for pure Debian stable systems. APT controls what is installed on your system. If your APT configuration mentions additional sources besides buster, or if you have installed packages from other releases or from third parties, then to ensure a reliable upgrade process you may wish to begin by removing these complicating factors.

The main configuration file that APT uses to decide what sources it should download packages from is /etc/apt/sources.list, but it can also use files in the /etc/apt/sources.list.d/ directory - for details see sources.list(5). If your system is using multiple source-list files then you will need to ensure they stay consistent.

4.2.1. Upgrade to Debian 10 (buster)

Direct upgrades from Debian releases older than 10 (buster) are not supported. Display your Debian version with:

$ cat /etc/debian_version
      

Please follow the instructions in the Release Notes for Debian 10 to upgrade to Debian 10 first.

4.2.2. Remove non-Debian packages

Below there are two methods for finding installed packages that did not come from Debian, using either aptitude or apt-forktracer. Please note that neither of them are 100% accurate (e.g. the aptitude example will list packages that were once provided by Debian but no longer are, such as old kernel packages).

$ aptitude search '?narrow(?installed, ?not(?origin(Debian)))'
$ apt-forktracer | sort
    

4.2.3. Upgrade to latest point release

This procedure assumes your system has been updated to the latest point release of buster. If you have not done this or are unsure, follow the instructions in Sekcja A.1, „Uaktualnienie wydania buster”.

4.2.4. Prepare the package database

You should make sure the package database is ready before proceeding with the upgrade. If you are a user of another package manager like aptitude or synaptic, review any pending actions. A package scheduled for installation or removal might interfere with the upgrade procedure. Note that correcting this is only possible if your APT source-list files still point to buster and not to stable or bullseye; see Sekcja A.2, „Checking your APT source-list files”.

4.2.5. Remove obsolete packages

It is a good idea to remove obsolete packages from your system before upgrading. They may introduce complications during the upgrade process, and can present security risks as they are no longer maintained.

4.2.6. Clean up leftover configuration files

A previous upgrade may have left unused copies of configuration files; old versions of configuration files, versions supplied by the package maintainers, etc. Removing leftover files from previous upgrades can avoid confusion. Find such leftover files with:

# find /etc -name '*.dpkg-*' -o -name '*.ucf-*' -o -name '*.merge-error'
    

4.2.7. The security section

For APT source lines referencing the security archive, the format has changed slightly along with the release name, going from buster/updates to bullseye-security; see Sekcja 5.1.2, „Changed security archive layout”.

4.2.8. Sekcja proposed-updates

If you have listed the proposed-updates section in your APT source-list files, you should remove it before attempting to upgrade your system. This is a precaution to reduce the likelihood of conflicts.

4.2.9. Nieoficjalne źródła

If you have any non-Debian packages on your system, you should be aware that these may be removed during the upgrade because of conflicting dependencies. If these packages were installed by adding an extra package archive in your APT source-list files, you should check if that archive also offers packages compiled for bullseye and change the source item accordingly at the same time as your source items for Debian packages.

Część użytkowników może posiadać nieoficjalne, backportowane wersje pakietów, które są nowsze niż pakiety zainstalowane w Debianie buster. 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.

4.2.10. Wyłączenie priorytetów APT-a (APT pinning)

If you have configured APT to install certain packages from a distribution other than stable (e.g. from testing), you may have to change your APT pinning configuration (stored in /etc/apt/preferences and /etc/apt/preferences.d/) to allow the upgrade of packages to the versions in the new stable release. Further information on APT pinning can be found in apt_preferences(5).

4.2.11. Check package status

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

Note that aptitude uses a different method for registering packages that are on hold than apt and dselect. You can identify packages on hold for aptitude with

# aptitude search "~ahold" 
    

If you want to check which packages you had on hold for apt, you should use

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

The hold package state for apt can be changed using:

# echo package_name hold | dpkg --set-selections
    

Proszę zastąpić hold słowem install aby cofnąć zatrzymanie pakietu.

If there is anything you need to fix, it is best to make sure your APT source-list files still refer to buster as explained in Sekcja A.2, „Checking your APT source-list files”.

4.3. Preparing APT source-list files

Before starting the upgrade you must reconfigure APT source-list files (/etc/apt/sources.list and files under /etc/apt/sources.list.d/) to add sources for bullseye and typically to remove sources for buster.

APT will consider all packages that can be found via any configured archive, and install the package with the highest version number, giving priority to the first entry in the files. Thus, if you have multiple mirror locations, list first the ones on local hard disks, then CD-ROMs, and then remote mirrors.

Wydanie można określić dzięki nazwie kodowej (np. buster, bullseye) 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:

4.3.1. Dodanie internetowych źródeł APT-a

On new installations the default is for APT to be set up to use the Debian APT CDN service, which should ensure that packages are automatically downloaded from a server near you in network terms. As this is a relatively new service, older installations may have configuration that still points to one of the main Debian Internet servers or one of the mirrors. If you haven't done so yet, it is recommended to switch over to the use of the CDN service in your APT configuration.

To make use of the CDN service, add a line like this to your APT source configuration (assuming you are using main and contrib):

deb http://deb.debian.org/debian bullseye main contrib

After adding your new sources, disable the previously existing deb lines by placing a hash sign (#) in front of them.

However, if you get better results using a specific mirror that is close to you in network terms, this option is still available.

Debian mirror addresses can be found at https://www.debian.org/distrib/ftplist (look at the list of Debian mirrors section).

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/bullseye/main/binary-arm64/...
http://mirrors.kernel.org/debian/dists/bullseye/contrib/binary-arm64/...
    

To configure APT to use a given mirror, add a line like this (again, assuming you are using main and contrib):

deb http://mirrors.kernel.org/debian bullseye 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.

Again, after adding your new sources, disable the previously existing archive entries.

4.3.2. Dodanie źródeł APT-a do lokalnego serwera lustrzanego

Instead of using remote package mirrors, you may wish to modify the APT source-list files to use a mirror on a local disk (possibly mounted over NFS).

Kopia serwera lustrzanego może się znajdować np. w /var/local/debian/ i posiadać główne katalogi, takie jak:

/var/local/debian/dists/bullseye/main/binary-arm64/...
/var/local/debian/dists/bullseye/contrib/binary-arm64/...
    

Aby użyć jej ze swoim aptem, proszę dodać ten wiersz do pliku sources.list:

deb file:/var/local/debian bullseye 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.

After adding your new sources, disable the previously existing archive entries in the APT source-list files by placing a hash sign (#) in front of them.

4.3.3. Dodanie źródeł APT-a do nośników optycznych

If you want to use only DVDs (or CDs or Blu-ray Discs), comment out the existing entries in all the APT source-list files by placing a hash sign (#) in front of them.

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    # this will mount the CD to the mount point
# ls -alF /media/cdrom  # this should show the CD's root directory
# umount /media/cdrom   # this will unmount the CD
    

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.

4.4. Aktualizacja pakietów

The recommended way to upgrade from previous Debian releases is to use the package management tool apt.

[Uwaga]Uwaga

apt is meant for interactive use, and should not be used in scripts. In scripts one should use apt-get, which has a stable output better suitable for parsing.

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 /mountpoint
  

Next you should double-check that the APT source entries (in /etc/apt/sources.list and files under /etc/apt/sources.list.d/) refer either to bullseye or to stable. There should not be any sources entries pointing to buster.

[Uwaga]Uwaga

Wiersze źródeł CD-ROM-u mogą niekiedy wskazywać na unstable; choć może być to mylące, nie należy tego zmieniać.

4.4.1. Zapisanie sesji

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-bullseyestep.time -a ~/upgrade-bullseyestep.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-bullseye.script, aby przejrzeć plik.

Po zakończeniu aktualizacji można zatrzymać polecenie script poleceniem exit.

apt will also log the changed package states in /var/log/apt/history.log and the terminal output in /var/log/apt/term.log. dpkg will, in addition, log all package state changes in /var/log/dpkg.log. If you use aptitude, it will also log state changes in /var/log/aptitude.

Jeśli użyto przełącznika -t do polecenia script można skorzystać z programu scriptreplay, aby odtworzyć całą sesję:

# scriptreplay ~/upgrade-bullseyestep.time ~/upgrade-bullseyestep.script
    

4.4.2. Aktualizowanie listy pakietów

Na początku, należy pobrać listę dostępnych pakietów nowego wydania. Można to zrobić za pomocą polecenia:

# apt update
    
[Uwaga]Uwaga

Users of apt-secure may find issues when using aptitude or apt-get. For apt-get, you can use apt-get update --allow-releaseinfo-change.

4.4.3. Zapewnienie wystarczającej ilości wolnego miejsca

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.

apt can show you detailed information about the disk space needed for the installation. Before executing the upgrade, you can see this estimate by running:

# apt -o APT::Get::Trivial-Only=true full-upgrade
[ ... ]
XXX upgraded, XXX newly installed, XXX to remove and XXX not upgraded.
Need to get xx.xMB of archives. 
After this operation, AAAMB of additional disk space will be used.
    
[Uwaga]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”)

If you do not have enough space for the upgrade, apt will warn you with a message like this:

E: You don't have enough free space in /var/cache/apt/archives/.
    

W takim przypadku, konieczne będzie zwolnienie miejsca na dysku. Można:

  • Remove packages that have been previously downloaded for installation (at /var/cache/apt/archives). Cleaning up the package cache by running apt clean will remove all previously downloaded package files.

  • Remove forgotten packages. If you have used aptitude or apt to manually install packages in buster it will have kept track of those packages you manually installed, and will be able to mark as redundant those packages pulled in by dependencies alone which are no longer needed due to a package being removed. They will not mark for removal packages that you manually installed. To remove automatically installed packages that are no longer used, run:

    # apt 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ć WidokiNowy płaski widok pakietów, 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]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:

    1. usunięcie poprzednio pobranych pakietów do instalacji:

      # apt clean
                      

    2. skopiowanie katalogu /var/cache/apt/archives na napęd USB:

      # cp -ax /var/cache/apt/archives /media/usbkey/
                      

    3. zamontowanie tymczasowego bufora w obecnym:

      # mount --bind /media/usbkey/archives /var/cache/apt/archives
                      

    4. przywrócenie pierwotnego katalogu /var/cache/apt/archives po aktualizacji:

      # umount /var/cache/apt/archives
                      

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

Note that in order to safely remove packages, it is advisable to switch your APT source-list files back to buster as described in Sekcja A.2, „Checking your APT source-list files”.

4.4.4. Minimalna aktualizacja systemu

[Ważne]Ważne

If you are upgrading remotely, be aware of Sekcja 5.1.22, „No new SSH connections possible during upgrade”.

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 upgrade --without-new-pkgs
    

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.

If the apt-listchanges package is installed, it will (in its default configuration) show important information about upgraded packages in a pager after downloading the packages. Press q after reading to exit the pager and continue the upgrade.

4.4.5. Aktualizacja systemu

Po wykonaniu poprzednich kroków, nadszedł czas na główną część aktualizacji. Proszę wykonać

# apt full-upgrade
    

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.

New versions of currently installed packages that cannot be upgraded without changing the install status of another package will be left at their current version (displayed as held back). This can be resolved by either using aptitude to choose these packages for installation or by trying apt install package.

4.5. Możliwe problemy przy aktualizacji

Poniższe sekcje opisują znane problemy, które mogą pojawić się przy aktualizacji do wydania bullseye.

4.5.1. Podczas aktualizacji dystrybucji pojawia się błąd Nie udało się wykonać natychmiastowej konfiguracji.

In some cases the apt full-upgrade step can fail after downloading packages with:

E: Could not perform immediate configuration on 'package'.  Please see man 5 apt.conf under APT::Immediate-Configure for details.
      

If that happens, running apt full-upgrade -o APT::Immediate-Configure=0 instead should allow the upgrade to proceed.

Another possible workaround for this problem is to temporarily add both buster and bullseye sources to your APT source-list files and run apt update.

4.5.2. Spodziewane usunięcia pakietów

Proces aktualizacji do wydania bullseye 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 bullseye znajduje się w Sekcja 4.8, „Przestarzałe pakiety”.

4.5.3. Konflikty lub pętle wymaga wstępnie

Sometimes it's necessary to enable the APT::Force-LoopBreak option in APT to be able to temporarily remove an essential package due to a Conflicts/Pre-Depends loop. apt will alert you of this and abort the upgrade. You can work around this by specifying the option -o APT::Force-LoopBreak=1 on the apt command line.

It is possible that a system's dependency structure can be so corrupt as to require manual intervention. Usually this means using apt or

# dpkg --remove package_name
    

aby wyeliminować część przeszkadzających pakietów lub

# apt -f install
# dpkg --configure --pending
    

W sytuacjach ekstremalnych konieczne może być wymuszenie reinstalacji za pomocą polecenia

# dpkg --install /path/to/package_name.deb
    

4.5.4. Konflikty plików

Konflikty plików nie powinny wystąpić przy aktualizacji z czystego wydania buster, lecz mogą się pojawić przy zainstalowanych nieoficjalnych backportach. Konflikty plików objawiają się komunikatami błędów, podobnymi do poniższego:

Unpacking <package-foo> (from <package-foo-file>) ...
dpkg: error processing <package-foo> (--install):
trying to overwrite `<some-file-name>',
which is also in package <package-bar>
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Errors were encountered while processing:
<package-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 package_name
    

After fixing things up, you should be able to resume the upgrade by repeating the previously described apt commands.

4.5.5. Zmiany konfiguracji

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.

4.5.6. Zmiany sesji na konsoli

If you are running the upgrade using the system's local console you might find that at some points during the upgrade the console is shifted over to a different view and you lose visibility of the upgrade process. For example, this may happen in systems with a graphical interface when the display manager is restarted.

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.

4.6. Aktualizacja jądra i powiązanych pakietów

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.

4.6.1. Instalowanie metapakietu jądra

When you full-upgrade from buster to bullseye, it is strongly recommended that you install a linux-image-* metapackage, if you have not done so before. These metapackages will automatically pull in a newer version of the kernel during upgrades. You can verify whether you have one installed by running:

# 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
    

If you are unsure about which package to select, run uname -r and look for a package with a similar name. For example, if you see 4.9.0-8-amd64, it is recommended that you install linux-image-amd64. You may also use apt to see a long description of each package in order to help choose the best one available. For example:

# apt show linux-image-amd64
    

You should then use apt install to install it. Once this new kernel is installed you should reboot at the next available opportunity to get the benefits provided by the new kernel version. However, please have a look at Sekcja 5.1.24, „Sprawy do zrobienia przed ponownym uruchomieniem” before performing the first reboot after the upgrade.

For the more adventurous there is an easy way to compile your own custom kernel on Debian. Install the kernel sources, provided in the linux-source package. You can make use of the deb-pkg target available in the sources' makefile for building a binary package. More information can be found in the Debian Linux Kernel Handbook, which can also be found as the debian-kernel-handbook package.

If possible, it is to your advantage to upgrade the kernel package separately from the main full-upgrade to reduce the chances of a temporarily non-bootable system. Note that this should only be done after the minimal upgrade process described in Sekcja 4.4.4, „Minimalna aktualizacja systemu”.

4.7. Przygotowanie do kolejnego wydania

Po aktualizacji jest kilka rzeczy, które można zrobić w celu przygotowania do następnego wydania.

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 buster) lub pochodzą od zewnętrznych dostawców. W szczególności znane są problemy ze starymi skryptami init.d.

[Ostrzeżenie]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 }'
    

The packages can be removed by using apt purge. Assuming you want to purge all of them in one go, you can use the following command:

# apt 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'
    

4.8. Przestarzałe pakiety

Wprowadzając wiele nowych pakietów, bullseye porzuca i pomija również sporo starych pakietów z wydania buster. 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 bullseye[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 bullseye ze względu na poważne błędy. W tym ostatnim przypadku pakiet może być wciąż obecny w dystrybucji niestabilnej.

Some package management front-ends provide easy ways of finding installed packages that are no longer available from any known repository. The aptitude textual user interface lists them in the category Obsolete and Locally Created Packages, and they can be listed and purged from the commandline with:

# aptitude search '~o'
# aptitude purge '~o'
  

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 Bullseye jest dostępna w: Sekcja 5.3.1, „Znane pakiety oznaczone jako przestarzałe”.

4.8.1. Transitional dummy packages

Some packages from buster may have been replaced in bullseye by transitional dummy packages, which are empty placeholders designed to simplify upgrades. If for instance an application that was formerly a single package has been split into several, a transitional package may be provided with the same name as the old package and with appropriate dependencies to cause the new ones to be installed. After this has happened the redundant dummy package can be safely removed.

The package descriptions for transitional dummy packages usually indicate their purpose. However, they are not uniform; in particular, some dummy packages are designed to be kept installed, in order to pull in a full software suite, or track the current latest version of some program. You might also find deborphan with the --guess-* options (e.g. --guess-dummy) useful to detect transitional dummy packages on your system.



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