Devuan Upgrade: 4 to 5 Daedalus

nabbisen - Sep 1 '23 - - Dev Community

Summary

Devuan is a fork of Debian GNU+Linux without systemd.

Its new major version, 5 - Daedalus, was released 🎉 this August, on 2023-08-14. Nearly two years had passed since was the previous 4 - Chimaera.
It is based on Debian 12 - Bookworm with Linux 6.1 (LTS) ☺️

I have recently upgraded my workstations, helped by the official guide "Upgrade to Daedalus". This post is the record.

Environment

  • OS: Devuan GNU+Linux
    • Version: 🌟 5 🇩aedalus ⬅️ 🌟 4 🇨himaera
  • Init System: OpenRC
  • Desktop Environment: Xfce

Basic Steps

The first and also primary step is to replace package repositories of Chimaera with Daudalus':

# nvim /etc/apt/sources.list
Enter fullscreen mode Exit fullscreen mode

Before actual update, confirm your shell is independent on python. It is important when you use fish:

$ # (optional)
$ bash
Enter fullscreen mode Exit fullscreen mode

Run the packages update. It will take long to update many packages, and also ask you a few questions:

# apt update
Enter fullscreen mode Exit fullscreen mode

Stop xscreensaver before upgrade if it is running:

$ killall xscreensaver
Enter fullscreen mode Exit fullscreen mode

Run the distribution update:

# apt dist-upgrade
Enter fullscreen mode Exit fullscreen mode

Finally, clean up:

# apt autoremove --purge
# apt autoclean
Enter fullscreen mode Exit fullscreen mode

The below is the description with both result and questions printed out at each step.


Description

All doas from OpenBSD's can be replaced with sudo.

Confirm compatibility

You should read Devuan Daedalus Release Notes before start.

Replace repos

Create backup for the previous version as needed with command-lines such as:

$ # (optional)
$ doas cp -p /etc/apt/sources.list /etc/apt/sources.list.bk-chimaera
Enter fullscreen mode Exit fullscreen mode

Let's move to Daudauls':

$ doas nvim /etc/apt/sources.list
Enter fullscreen mode Exit fullscreen mode

by replacing chimaera with daedalus:

< deb http://deb.devuan.org/merged chimaera main non-free contrib
< deb-src http://deb.devuan.org/merged chimaera main non-free contrib
> deb http://deb.devuan.org/merged daedalus main non-free contrib
> deb-src http://deb.devuan.org/merged daedalus main non-free contrib
< deb http://pkgmaster.devuan.org/merged chimaera-security main contrib non-free
< deb-src http://pkgmaster.devuan.org/merged chimaera-security main contrib non-free
> deb http://pkgmaster.devuan.org/merged daedalus-security main contrib non-free
> deb-src http://pkgmaster.devuan.org/merged daedalus-security main contrib non-free
< deb http://deb.devuan.org/merged chimaera-updates main contrib non-free
< deb-src http://deb.devuan.org/merged chimaera-updates main contrib non-free
> deb http://deb.devuan.org/merged daedalus-updates main contrib non-free
> deb-src http://deb.devuan.org/merged daedalus-updates main contrib non-free
Enter fullscreen mode Exit fullscreen mode

Update packages

We are now ready. Run the update for packages:

$ doas apt update
Enter fullscreen mode Exit fullscreen mode

It will print out as below and also ask you the first question:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  (...)
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
  (...)
The following packages have been kept back:
  (...)
The following packages will be upgraded:
  (...)
1595 upgraded, 233 newly installed, 0 to remove and 117 not upgraded.
Need to get 1587 MB of archives.
After this operation, 2563 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Enter fullscreen mode Exit fullscreen mode

Then it will proceed as below:

Get:1 (...)
(...)
Fetched 1533 MB in 2min 58s (8612 kB/s)                                                              
Reading changelogs...
Enter fullscreen mode Exit fullscreen mode

The changelogs will be shown:

apt-listchanges: News
---------------------

adduser (3.130) unstable; urgency=low

  deluser's --no-preserve-root option is deprecated, and it will be
  (...)
Enter fullscreen mode Exit fullscreen mode

Then it will continue:

Reading changelogs... Done
Extracting templates from packages: 100%
Preconfiguring packages ...
Enter fullscreen mode Exit fullscreen mode

The additional questions on console configuration will be shown:

devuan-upgrade-daedalus-console-01

devuan-upgrade-daedalus-console-02

They are, of course, up to you. In my case, the default was chosen at each.

Then it will continue:

Installing new version of config file /etc/debian_version ...
Installing new version of config file /etc/devuan_version ...
Installing new version of config file /etc/issue ...
Installing new version of config file /etc/issue.net ...
(...)
Setting up libc6:amd64 (2.36-9+deb12u1) ...
Enter fullscreen mode Exit fullscreen mode

You will be asked:

devuan-upgrade-daedalus-libc-01

The additional question below will be sometimes given:

devuan-upgrade-daedalus-libc-02

Then it will proceed:

Restarting services possibly affected by the upgrade:
  cups: restarting...done.
  cron: restarting...done.

Services restarted successfully.
(...)
Setting up devuan-keyring (2023.05.28) ...
Enter fullscreen mode Exit fullscreen mode

There are a few questions left.

Setting up devuan-keyring (2023.05.28) ...

Configuration file '/etc/apt/trusted.gpg.d/devuan-keyring-2016-archive.gpg'
 ==> File on system created by you or by a script.
 ==> File also in package provided by package maintainer.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** devuan-keyring-2016-archive.gpg (Y/I/N/O/D/Z) [default=N] ? Y
Enter fullscreen mode Exit fullscreen mode

I chose to overwrite it as above. Then it will continue:

(...)
Setting up cups-ipp-utils (2.4.2-3+deb12u1) ...
Setting up slim (1.4.0-0devuan2) ...
Installing new version of config file /etc/init.d/slim ...
Enter fullscreen mode Exit fullscreen mode

Then another question will be shown:

Configuration file '/etc/slim.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** slim.conf (Y/I/N/O/D/Z) [default=N] ? Y
Enter fullscreen mode Exit fullscreen mode

I did, too.

Removing obsolete conffile /etc/init.d/lvm2 ...
Removing obsolete conffile /etc/init.d/lvm2-lvmpolld ...
Setting up grub-efi-amd64 (2.06-13) ...
Replacing config file /etc/default/grub with new version
Enter fullscreen mode Exit fullscreen mode

The final question will be shown:

devuan-upgrade-daedalus-grub-01

I made it cleaned up. Again, they are up to you.

The rest will be automatic.

aspell-autobuildhash: processing: en [en_US-wo_accents-only].
Processing triggers for sgml-base (1.31) ...
Processing triggers for ca-certificates (20230311) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
Processing triggers for libvlc-bin:amd64 (3.0.18-2) ...
Processing triggers for initramfs-tools (0.142) ...
update-initramfs: Generating /boot/initrd.img-6.1.0-11-amd64
Processing triggers for dbus (1.14.6-1devuan1) ...
Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.10+dfsg-1+b1) ...
Processing triggers for shim-signed:amd64 (1.39+15.7-1) ...
Processing triggers for ca-certificates-java (20230103) ...
done.
Enter fullscreen mode Exit fullscreen mode

Note: Occasional problem occurred by shell dependent on Python

When the shell used is fish, apt update above will bring the error in console like below:

/usr/share/fish/functions/prompt_pwd.fish (line 41): Invalid index value
                set full $all[2..]
                                 ^
in function 'prompt_pwd'
    called on line 1 of file /usr/share/fish/functions/fish_prompt.fish
in command substitution
    called on line 33 of file /usr/share/fish/functions/fish_prompt.fish
in function 'fish_prompt'
in command substitution
/usr/share/fish/functions/fish_git_prompt.fish (line 173): $(...) is not supported. In fish, please use '(uname)'.
if string match -q Darwin -- "$(uname)" && string match -q /usr/bin/git -- "$(command -s git)" && type -q xcode-select && type -q xcrun
                              ^
from sourcing file /usr/share/fish/functions/fish_git_prompt.fish
    called on line 1 of file /usr/share/fish/functions/fish_vcs_prompt.fish
in command substitution
    called on line 4 of file /usr/share/fish/functions/fish_vcs_prompt.fish
in function 'fish_vcs_prompt'
    called on line 1 of file /usr/share/fish/functions/fish_prompt.fish
in command substitution
    called on line 33 of file /usr/share/fish/functions/fish_prompt.fish
in function 'fish_prompt'
in command substitution
source: Error while reading file '/usr/share/fish/functions/fish_git_prompt.fish'
/usr/share/fish/functions/prompt_pwd.fish (line 41): Invalid index value
                set full $all[2..]
                                 ^
in function 'prompt_pwd' with arguments '-d 1 -D 1'
    called on line 1 of file /usr/share/fish/functions/fish_title.fish
in command substitution
    called on line 18 of file /usr/share/fish/functions/fish_title.fish
in function 'fish_title'
in command substitution
Enter fullscreen mode Exit fullscreen mode

Even with them, it seemed to be able to complete the upgrade. However, I don't know it was perfect or not.

Stop xscreensaver if running

Run:

$ killall xscreensaver
Enter fullscreen mode Exit fullscreen mode

Update distro

Next, run the command-line:

$ doas apt dist-upgrade
Enter fullscreen mode Exit fullscreen mode

The process is much simpler than the packages'. It will print out like:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  (...)
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  (...)
The following NEW packages will be installed:
  (...)
The following packages will be upgraded:
  (...)
115 upgraded, 54 newly installed, 14 to remove and 0 not upgraded.
Need to get 196 MB of archives.
After this operation, 149 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Enter fullscreen mode Exit fullscreen mode

And it will finish without any question:

Get:1 (...)
(...)
Processing triggers for eudev (3.2.12-1) ...
Setting up libgnustep-base1.28 (1.28.1+really1.28.0-5) ...
Setting up gnustep-base-runtime (1.28.1+really1.28.0-5) ...
Setting up unar (1.10.7+ds1+really1.10.1-2+b2) ...
Processing triggers for libc-bin (2.36-9+deb12u1) ...
Enter fullscreen mode Exit fullscreen mode

Clean up

Run autoremove

$ doas apt autoremove --purge
Enter fullscreen mode Exit fullscreen mode

It will print out:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  exfat-fuse* golang-github-containernetworking-plugin-dnsname* libaom0* libavcodec58*
  libavdevice58* libavfilter7* libavformat58* libavutil56* libcmis-0.5-5v5* libcodec2-0.9*
  libdav1d4* libextutils-pkgconfig-perl* libgs9-common* libicu67* libidn11* libilmbase25*
  libldap-2.4-2* libmpdec3* libnautilus-extension1a* libneon27-gnutls* libopenexr25*
  liborcus-0.16-0* liborcus-parser-0.16-0* libperl5.32* libpoppler102* libpostproc55* libpython3.9*
  libpython3.9-dev* libpython3.9-minimal* libpython3.9-stdlib* libqrcodegencpp1* libsrt1.4-gnutls*
  libswresample3* libswscale5* libtiff5* libvpx6* libwebp6* libwmf0.2-7* libx264-160* libx265-192*
  perl-modules-5.32* python3-ldb* python3-talloc* python3.9* python3.9-dev* python3.9-minimal* (...)
0 upgraded, 0 newly installed, 47 to remove and 0 not upgraded.
After this operation, 210 MB disk space will be freed.
Do you want to continue? [Y/n] y
Enter fullscreen mode Exit fullscreen mode

And finish:

(...)
Unlinking and removing bytecode for runtime python3.9
(...)
Processing triggers for desktop-file-utils (0.26-1) ...
(Reading database ... 201030 files and directories currently installed.)
Purging configuration files for libpython3.9-minimal:amd64 (3.9.2-1) ...
Purging configuration files for python3.9-minimal (3.9.2-1) ...
Enter fullscreen mode Exit fullscreen mode

Run autoclean

$ doas apt autoclean
Enter fullscreen mode Exit fullscreen mode

It will soon finish:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Del libavdevice58 7:4.3.6-0+deb11u1 [128 kB]
(...)
Del libtirpc-dev 1.3.1-1+deb11u1 [191 kB]
Enter fullscreen mode Exit fullscreen mode

Additional configuration (Optional)

For example, you may want to modify /etc/default/grub. You will apply it by running:

$ doas nvim /usr/sbin/update-grub
Enter fullscreen mode Exit fullscreen mode

It will print out like below:

Generating grub configuration file ...
Found background image: splash.png
Found linux image: /boot/vmlinuz-6.1.0-11-amd64
Found initrd image: /boot/initrd.img-6.1.0-11-amd64
Found linux image: /boot/vmlinuz-5.10.0-23-amd64
Found initrd image: /boot/initrd.img-5.10.0-23-amd64
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
Enter fullscreen mode Exit fullscreen mode

Restart machine (Optional)

Hope you find new fun 🌄


Conclusion

You may confirm the updated with:

$ uname --all
Linux (...) 6.1.0-11-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.38-4 (2023-08-08) x86_64 GNU/Linux
Enter fullscreen mode Exit fullscreen mode

Well, the next Devuan project has already started with the codename "Excalibur" (🇪). I'm looking forward to meeting them while spending happy time with them ⛵

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .