It looks like you may have only changed the sources for the main Debian repository. There are also entries below that for Debian security and for Debian updates.
work. But for upgrading between major stable releases, it is best to follow the full procedure to minimize opportunity for breakage.
Code: Select all
Chapter 4. Upgrades from Debian 9 (stretch)
4.1. Preparing for the upgrade
We suggest that before upgrading you also read the information in
Chapter 5, Issues to be aware of for buster. That chapter covers
potential issues which are not directly related to the upgrade
process but could still be important to know about before you
begin.
4.1.1. Back up any data or configuration information
Before upgrading your system, it is strongly recommended that you
make a full backup, or at least back up any data or configuration
information you can't afford to lose. The upgrade tools and
process are quite reliable, but a hardware failure in the middle
of an upgrade could result in a severely damaged system.
The main things you'll want to back up are the contents of /etc,
/var/lib/dpkg, /var/lib/apt/extended_states and the output of
dpkg --get-selections "*" (the quotes are important). If you use
aptitude to manage packages on your system, you will also want to
back up /var/lib/aptitude/pkgstates.
The upgrade process itself does not modify anything in the /home
directory. However, some applications (e.g. parts of the Mozilla
suite, and the GNOME and KDE desktop environments) are known to
overwrite existing user settings with new defaults when a new
version of the application is first started by a user. As a
precaution, you may want to make a backup of the hidden files and
directories (“dotfiles”) in users' home directories. This backup
may help to restore or recreate the old settings. You may also
want to inform users about this.
Any package installation operation must be run with superuser
privileges, so either log in as root or use su or sudo to gain
the necessary access rights.
The upgrade has a few preconditions; you should check them before
actually executing the upgrade.
4.1.2. Inform users in advance
It's wise to inform all users in advance of any upgrades you're
planning, although users accessing your system via an ssh
connection should notice little during the upgrade, and should be
able to continue working.
If you wish to take extra precautions, back up or unmount the /
home partition before upgrading.
You will have to do a kernel upgrade when upgrading to buster, so
a reboot will be necessary. Typically, this will be done after
the upgrade is finished.
4.1.3. Prepare for downtime on services
There might be services that are offered by the system which are
associated with packages that will be included in the upgrade. If
this is the case, please note that, during the upgrade, these
services will be stopped while their associated packages are
being replaced and configured. During this time, these services
will not be available.
The precise downtime for these services will vary depending on
the number of packages being upgraded in the system, and it also
includes the time the system administrator spends answering any
configuration questions from package upgrades. Notice that if the
upgrade process is left unattended and the system requests input
during the upgrade there is a high possibility of services being
unavailable^[1] for a significant period of time.
If the system being upgraded provides critical services for your
users or the network^[2], you can reduce the downtime if you do a
minimal system upgrade, as described in Section 4.4.4, “Minimal
system upgrade”, followed by a kernel upgrade and reboot, and
then upgrade the packages associated with your critical services.
Upgrade these packages prior to doing the full upgrade described
in Section 4.4.5, “Upgrading the system”. This way you can ensure
that these critical services are running and available through
the full upgrade process, and their downtime is reduced.
4.1.4. Prepare for recovery
Although Debian tries to ensure that your system stays bootable
at all times, there is always a chance that you may experience
problems rebooting your system after the upgrade. Known potential
issues are documented in this and the next chapters of these
Release Notes.
For this reason it makes sense to ensure that you will be able to
recover if your system should fail to reboot or, for remotely
managed systems, fail to bring up networking.
If you are upgrading remotely via an ssh link it is recommended
that you take the necessary precautions to be able to access the
server through a remote serial terminal. There is a chance that,
after upgrading the kernel and rebooting, you will have to fix
the system configuration through a local console. Also, if the
system is rebooted accidentally in the middle of an upgrade there
is a chance you will need to recover using a local console.
For emergency recovery we generally recommend using the rescue
mode of the buster Debian Installer. The advantage of using the
installer is that you can choose between its many methods to find
one that best suits your situation. For more information, please
consult the section “Recovering a Broken System” in chapter 8 of
the Installation Guide (https://www.debian.org/releases/buster/
installmanual) and the Debian Installer FAQ (https://
wiki.debian.org/DebianInstaller/FAQ) .
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 image or a Linux live CD. 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. Debug shell during boot using initrd
The initramfs-tools package includes a debug shell^[3] in the
initrds it generates. If for example the initrd is unable to
mount your root file system, you will be dropped into this debug
shell which has basic commands available to help trace the
problem and possibly fix it.
Basic things to check are: presence of correct device files in /
dev; what modules are loaded (cat /proc/modules); output of dmesg
for errors loading drivers. The output of dmesg will also show
what device files have been assigned to which disks; you should
check that against the output of echo $ROOT to make sure that the
root file system is on the expected device.
If you do manage to fix the problem, typing exit will quit the
debug shell and continue the boot process at the point it failed.
Of course you will also need to fix the underlying problem and
regenerate the initrd so the next boot won't fail again.
4.1.4.2. Debug shell during boot using systemd
If the boot fails under systemd, it is possible to obtain a debug
root shell by changing the kernel command line. If the basic boot
succeeds, but some services fail to start, it may be useful to
add systemd.unit=rescue.target to the kernel parameters.
Otherwise, the kernel parameter systemd.unit=emergency.target
will provide you with a root shell at the earliest possible
point. However, this is done before mounting the root file system
with read-write permissions. You will have to do that manually
with:
# mount -o remount,rw /
More information on debugging a broken boot under systemd can be
found in the Diagnosing Boot Problems (https://freedesktop.org/
wiki/Software/systemd/Debugging/) article.
4.1.5. Prepare a safe environment for the upgrade
Important
If you are using some VPN services (such as tinc) consider that
they might not be available throughout the upgrade process.
Please see Section 4.1.3, “Prepare for downtime on services”.
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.1.6. Verify network interface name support
Systems upgraded from older releases that still use network
interfaces with names like eth0 or wlan0 are at risk of losing
networking once they switch to buster; see Section 5.1.6,
“Migrating from legacy network interface names” for migration
instructions.
4.2. Checking APT configuration status
The upgrade process described in this chapter has been designed
for “pure” Debian stable systems. If your APT configuration
mentions additional sources besides stretch, 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) (https://manpages.debian.org/
buster//buster/apt/sources.list.5.html) . If your system is using
multiple source-list files then you will need to ensure they stay
consistent.
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 '~i(!~ODebian)'
$ apt-forktracer | sort
Direct upgrades from Debian releases older than 9 (stretch) are
not supported. Please follow the instructions in the Release
Notes for Debian 9 (https://www.debian.org/releases/stretch/
releasenotes) to upgrade to Debian 9 first.
This procedure also assumes your system has been updated to the
latest point release of stretch. If you have not done this or are
unsure, follow the instructions in Section A.1, “Upgrading your
stretch system”.
You should also 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 stretch and
not to stable or buster; see Section A.2, “Checking your APT
source-list files”.
It is a good idea to remove obsolete packages from your system
before upgrading.
4.2.1. The proposed-updates section
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.2. Unofficial sources
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 buster and change the source item accordingly at the same
time as your source items for Debian packages.
Some users may have unofficial backported “newer” versions of
packages that are in Debian installed on their stretch system.
Such packages are most likely to cause problems during an upgrade
as they may result in file conflicts^[4]. Section 4.5, “Possible
issues during upgrade” has some information on how to deal with
file conflicts if they should occur.
4.2.3. Disabling 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.4. Checking packages status
Regardless of the method used for upgrading, it is recommended
that you check the status of all packages first, and verify that
all packages are in an upgradable state. The following command
will show any packages which have a status of Half-Installed or
Failed-Config, and those with any error status.
# dpkg --audit
You could also inspect the state of all packages on your system
using aptitude or with commands such as
# dpkg -l | pager
or
# dpkg --get-selections "*" > ~/curr-pkgs.txt
It is desirable to remove any holds before upgrading. If any
package that is essential for the upgrade is on hold, the upgrade
will fail.
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$'
If you changed and recompiled a package locally, and didn't
rename it or put an epoch in the version, you must put it on hold
to prevent it from being upgraded.
The “hold” package state for apt can be changed using:
# echo package_name hold | dpkg --set-selections
Replace hold with install to unset the “hold” state.
If there is anything you need to fix, it is best to make sure
your APT source-list files still refer to stretch as explained in
Section A.2, “Checking your APT source-list files”.
4.3. Preparing APT source-list files
Before starting the upgrade you must reconfigure APT's
source-list files (/etc/apt/sources.list and files under /etc/apt
/sources.list.d/).
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.
A release can often be referred to both by its codename (e.g.
stretch, buster) and by its status name (i.e. oldstable, stable,
testing, unstable). Referring to a release by its codename has
the advantage that you will never be surprised by a new release
and for this reason is the approach taken here. It does of course
mean that you will have to watch out for release announcements
yourself. If you use the status name instead, you will just see
loads of updates for packages available as soon as a release has
happened.
Debian provides two announcement mailing lists to help you stay
up to date on relevant information related to Debian releases:
* By subscribing to the Debian announcement mailing list
(https://lists.debian.org/debian-announce/) , you will
receive a notification every time Debian makes a new release.
Such as when buster changes from e.g. stable to oldstable.
* By subscribing to the Debian security announcement mailing
list (https://lists.debian.org/debian-security-announce/) ,
you will receive a notification every time Debian publishes a
security announcement.
4.3.1. Adding APT Internet sources
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 buster 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 (https://www.debian.org/distrib/ftplist) (look at
the “list of Debian mirrors” section).
For example, suppose your closest Debian mirror is http://
mirrors.kernel.org. If you inspect that mirror with a web
browser, you will notice that the main directories are organized
like this:
http://mirrors.kernel.org/debian/dists/buster/main/binary-amd64/...
http://mirrors.kernel.org/debian/dists/buster/contrib/binary-amd64/...
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 buster main contrib
Note that the “dists” is added implicitly, and the arguments
after the release name are used to expand the path into multiple
directories.
Again, after adding your new sources, disable the previously
existing archive entries.
4.3.2. Adding APT sources for a local mirror
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).
For example, your package mirror may be under /var/local/debian/,
and have main directories like this:
/var/local/debian/dists/buster/main/binary-amd64/...
/var/local/debian/dists/buster/contrib/binary-amd64/...
To use this with apt, add this line to your sources.list file:
deb file:/var/local/debian buster main contrib
Note that the “dists” is added implicitly, and the arguments
after the release name are used to expand the path into multiple
directories.
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. Adding APT sources from optical media
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.
Make sure there is a line in /etc/fstab that enables mounting
your CD-ROM drive at the /media/cdrom mount point. For example,
if /dev/sr0 is your CD-ROM drive, /etc/fstab should contain a
line like:
/dev/sr0 /media/cdrom auto noauto,ro 0 0
Note that there must be no spaces between the words noauto,ro in
the fourth field.
To verify it works, insert a CD and try running
# 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
Next, run:
# apt-cdrom add
for each Debian Binary CD-ROM you have, to add the data about
each CD to APT's database.
4.4. Upgrading packages
The recommended way to upgrade from previous Debian releases is
to use the package management tool apt.
Note
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.
Don't forget to mount all needed partitions (notably the root and
/usr partitions) read-write, with a command like:
# 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 “buster” or to “stable”. There should not be any
sources entries pointing to stretch.
+--------------------------------------------------+
|Note |
| |
|Source lines for a CD-ROM might sometimes refer to|
|“unstable”; although this may be confusing, you |
|should not change it. |
+--------------------------------------------------+
4.4.1. Recording the session
It is strongly recommended that you use the /usr/bin/script
program to record a transcript of the upgrade session. Then if a
problem occurs, you will have a log of what happened, and if
needed, can provide exact information in a bug report. To start
the recording, type:
# script -t 2>~/upgrade-busterstep.time -a ~/upgrade-busterstep.script
or similar. If you have to rerun the typescript (e.g. if you have
to reboot the system) use different step values to indicate which
step of the upgrade you are logging. Do not put the typescript
file in a temporary directory such as /tmp or /var/tmp (files in
those directories may be deleted during the upgrade or during any
restart).
The typescript will also allow you to review information that has
scrolled off-screen. If you are at the system's console, just
switch to VT2 (using Alt+F2) and, after logging in, use less -R
~root/upgrade-buster.script to view the file.
After you have completed the upgrade, you can stop script by
typing exit at the prompt.
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.
If you have used the -t switch for script you can use the
scriptreplay program to replay the whole session:
# scriptreplay ~/upgrade-busterstep.time ~/upgrade-busterstep.script
4.4.2. Updating the package list
First the list of available packages for the new release needs to
be fetched. This is done by executing:
# apt update
Note
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. Make sure you have sufficient space for the upgrade
You have to make sure before upgrading your system that you will
have sufficient hard disk space when you start the full system
upgrade described in Section 4.4.5, “Upgrading the system”.
First, any package needed for installation that is fetched from
the network is stored in /var/cache/apt/archives (and the partial
/ subdirectory, during download), so you must make sure you have
enough space on the file system partition that holds /var/ to
temporarily download the packages that will be installed in your
system. After the download, you will probably need more space in
other file system partitions in order to both install upgraded
packages (which might contain bigger binaries or more data) and
new packages that will be pulled in for the upgrade. If your
system does not have sufficient space you might end up with an
incomplete upgrade that is difficult to recover from.
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.
Note
Running this command at the beginning of the upgrade process may
give an error, for the reasons described in the next sections. In
that case you will need to wait until you've done the minimal
system upgrade as in Section 4.4.4, “Minimal system upgrade”
before running this command to estimate the disk space.
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/.
In this situation, make sure you free up space beforehand. You
can:
* 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 stretch 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
You can also use deborphan, debfoster, or cruft to find redundant
packages. Do not blindly remove the packages these tools present,
especially if you are using aggressive non-default options that
are prone to false positives. It is highly recommended that you
manually review the packages suggested for removal (i.e. their
contents, sizes, and descriptions) before you remove them.
* Remove packages that take up too much space and are not currently
needed (you can always reinstall them after the upgrade). If you
have popularity-contest installed, you can use
popcon-largest-unused to list the packages you do not use that
occupy the most space. You can find the packages that just take
up the most disk space with dpigs (available in the
debian-goodies package) or with wajig (running wajig size). They
can also be found with aptitude. Start aptitude in full-terminal
mode, select Views → New Flat Package List, press l and enter ~i,
then press S and enter ~installsize. This will give you a handy
list to work with.
* Remove translations and localization files from the system if
they are not needed. You can install the localepurge package and
configure it so that only a few selected locales are kept in the
system. This will reduce the disk space consumed at /usr/share/
locale.
* Temporarily move to another system, or permanently remove, system
logs residing under /var/log/.
* Use a temporary /var/cache/apt/archives: You can use a temporary
cache directory from another filesystem (USB storage device,
temporary hard disk, filesystem already in use, ...).
+-----------------------------------------------------+
|Note |
| |
|Do not use an NFS mount as the network connection |
|could be interrupted during the upgrade. |
+-----------------------------------------------------+
For example, if you have a USB drive mounted on /media/usbkey:
1. remove the packages that have been previously downloaded for
installation:
# apt clean
2. copy the directory /var/cache/apt/archives to the USB drive:
# cp -ax /var/cache/apt/archives /media/usbkey/
3. mount the temporary cache directory on the current one:
# mount --bind /media/usbkey/archives /var/cache/apt/archives
4. after the upgrade, restore the original /var/cache/apt/
archives directory:
# umount /media/usbkey/archives
5. remove the remaining /media/usbkey/archives.
You can create the temporary cache directory on whatever
filesystem is mounted on your system.
* Do a minimal upgrade of the system (see Section 4.4.4, “Minimal
system upgrade”) or partial upgrades of the system followed by a
full upgrade. This will make it possible to upgrade the system
partially, and allow you to clean the package cache before the
full upgrade.
Note that in order to safely remove packages, it is advisable to
switch your APT source-list files back to stretch as described in
Section A.2, “Checking your APT source-list files”.
4.4.4. Minimal system upgrade
In some cases, doing the full upgrade (as described below)
directly might remove large numbers of packages that you will
want to keep. We therefore recommend a two-part upgrade process:
first a minimal upgrade to overcome these conflicts, then a full
upgrade as described in Section 4.4.5, “Upgrading the system”.
To do this, first run:
# apt-get upgrade
This has the effect of upgrading those packages which can be
upgraded without requiring any other packages to be removed or
installed.
The minimal system upgrade can also be useful when the system is
tight on space and a full upgrade cannot be run due to space
constraints.
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. Upgrading the system
Once you have taken the previous steps, you are now ready to
continue with the main part of the upgrade. Execute:
# apt full-upgrade
This will perform a complete upgrade of the system, installing
the newest available versions of all packages, and resolving all
possible dependency changes between packages in different
releases. If necessary, it will install some new packages
(usually new library versions, or renamed packages), and remove
any conflicting obsoleted packages.
When upgrading from a set of CDs/DVDs/BDs, you will probably be
asked to insert specific discs at several points during the
upgrade. You might have to insert the same disc multiple times;
this is due to inter-related packages that have been spread out
over the discs.
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. Possible issues during upgrade
The following sections describe known issues that might appear
during an upgrade to buster.
4.5.1. Dist-upgrade fails with “Could not perform immediate
configuration”
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 stretch and buster sources to your APT source-list files
and run apt update.
4.5.2. Expected removals
The upgrade process to buster might ask for the removal of
packages on the system. The precise list of packages will vary
depending on the set of packages that you have installed. These
release notes give general advice on these removals, but if in
doubt, it is recommended that you examine the package removals
proposed by each method before proceeding. For more information
about packages obsoleted in buster, see Section 4.8, “Obsolete
packages”.
4.5.3. Conflicts or Pre-Depends loops
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
to eliminate some of the offending packages, or
# apt -f install
# dpkg --configure --pending
In extreme cases you might have to force re-installation with a
command like
# dpkg --install /path/to/package_name.deb
4.5.4. File conflicts
File conflicts should not occur if you upgrade from a “pure”
stretch system, but can occur if you have unofficial backports
installed. A file conflict will result in an error like:
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>
You can try to solve a file conflict by forcibly removing the
package mentioned on the last line of the error message:
# 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. Configuration changes
During the upgrade, you will be asked questions regarding the
configuration or re-configuration of several packages. When you
are asked if any file in the /etc/init.d directory, or the /etc/
manpath.config file should be replaced by the package
maintainer's version, it's usually necessary to answer “yes” to
ensure system consistency. You can always revert to the old
versions, since they will be saved with a .dpkg-old extension.
If you're not sure what to do, write down the name of the package
or file and sort things out at a later time. You can search in
the typescript file to review the information that was on the
screen during the upgrade.
4.5.6. Change of session to console
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.
To recover the console where the upgrade was running you will
have to use Ctrl+Alt+F1 (if in the graphical startup screen) or
Alt+F1 (if in the local text-mode console) to switch back to the
virtual terminal 1. Replace F1 with the function key with the
same number as the virtual terminal the upgrade was running in.
You can also use Alt+Left Arrow or Alt+Right Arrow to switch
between the different text-mode terminals.
4.6. Upgrading your kernel and related packages
This section explains how to upgrade your kernel and identifies
potential issues related to this upgrade. You can either install
one of the linux-image-* packages provided by Debian, or compile
a customized kernel from source.
Note that a lot of information in this section is based on the
assumption that you will be using one of the modular Debian
kernels, together with initramfs-tools and udev. If you choose to
use a custom kernel that does not require an initrd or if you use
a different initrd generator, some of the information may not be
relevant for you.
4.6.1. Installing a kernel metapackage
When you full-upgrade from stretch to buster, 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
If you do not see any output, then you will either need to
install a new linux-image package by hand or install a
linux-image metapackage. To see a list of available linux-image
metapackages, run:
# 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 Section 5.1.12, “Things
to do post upgrade before rebooting” 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
(https://kernel-team.pages.debian.net/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 Section 4.4.4, “Minimal system upgrade”.
4.7. Preparing for the next release
After the upgrade there are several things you can do to prepare
for the next release.
* Remove newly redundant or obsolete packages as described in
Section 4.4.3, “Make sure you have sufficient space for the
upgrade” and Section 4.8, “Obsolete packages”. You should
review which configuration files they use and consider
purging the packages to remove their configuration files. See
also Section 4.7.1, “Purging removed packages”.
4.7.1. Purging removed packages
It is generally advisable to purge removed packages. This is
especially true if these have been removed in an earlier release
upgrade (e.g. from the upgrade to stretch) or they were provided
by third-party vendors. In particular, old init.d scripts have
been known to cause issues.
Caution
Purging a package will generally also purge its log files, so you
might want to back them up first.
The following command displays a list of all removed packages
that may have configuration files left on the system (if any):
# 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 }')
If you use aptitude, you can also use the following alternative
to the commands above:
# aptitude search '~c'
# aptitude purge '~c'
4.8. Obsolete packages
Introducing lots of new packages, buster also retires and omits
quite a few old packages that were in stretch. It provides no
upgrade path for these obsolete packages. While nothing prevents
you from continuing to use an obsolete package where desired, the
Debian project will usually discontinue security support for it a
year after buster's release^[5], and will not normally provide
other support in the meantime. Replacing them with available
alternatives, if any, is recommended.
There are many reasons why packages might have been removed from
the distribution: they are no longer maintained upstream; there
is no longer a Debian Developer interested in maintaining the
packages; the functionality they provide has been superseded by
different software (or a new version); or they are no longer
considered suitable for buster due to bugs in them. In the latter
case, packages might still be present in the “unstable”
distribution.
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'
The Debian Bug Tracking System (https://bugs.debian.org/) often
provides additional information on why the package was removed.
You should review both the archived bug reports for the package
itself and the archived bug reports for the ftp.debian.org
pseudo-package (https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg
=ftp.debian.org&archive=yes) .
For a list of obsolete packages for Buster, please refer to
Section 5.1.10, “Noteworthy obsolete packages”.
4.8.1. Transitional dummy packages
Some packages from stretch may have been replaced in buster 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.