Siduction Linux is a rolling release distribution based on the unstable branch of Debian, permanently assigned the codename Sid, from which the name of the distribution is derived.
The distribution provides installation images featuring the KDE Plasma, LXQt and, Xfce desktop environments, as well as an X Window System only version without a DE and minimal version without even the X Window System.
The standout feature of the current incarnation of Siduction is the default use of the Btrfs filesystem with a subvolume layout compatible with Snapper which is fully configured out-of-the box.
This article reviews the 2024.1.0 release of Siduction Linux KDE Plasma Edition.
Early in my second Linux career, when I was regularly distrohopping, I converted a Debian based distribution to use the Debian Testing repositories in order to have access to more current software. The installation eventually broke because of the Debian testing and release process. At some point later, I discovered Siduction, a rolling release distribution based on the Debian Unstable branch. Besides a few minor problems, I found it to be extremely stable without the breakage I experienced with the distribution converted to Debian Testing.
Now, I decided to review the current release of Siduction because, after having installed it on my secondary laptop -- a Dell G5 with Nvidia Optimus (Dell G5-5587 Review for Linux Users [G5-5587-7037RED-PUS]) -- I was impressed with how it does not suffer from some problems with resuming from suspend that began about six months ago, as do some other distributions on the same laptop. In that period all the distributions on that laptop (except openSUSE Tumbleweed) including Fedora and Arch based distributions, such as EndeavourOS and CachyOS, had problems resuming from suspend. Among the resume problems was an extremely long delay before displaying the greeter after resuming, and in the case of CachyOS, even being unstable after finally being able to log in.
Besides not being subject to whatever problems the Arch based distributions and Fedora have related to resuming, the distribution is excellent (apart from a few minor issues). This prompted me to also install it on my newer primary laptop, a Lenovo Legion 5i Pro (Lenovo LEGION 5i PRO 16ITH6 Review [82JF002RUS] ), also with Nvidia Optimus technology.
A full review of Siduction Linux 2024.1.0 KDE Plasma Edition is presented below. (A supplementary article which describes fixes and enhancements I made to the installation is presented in Siduction Linux 2024.1.0 (Shine On) Review [KDE Plasma Edition] Supplement: Fixes and Enhancements.) For readers short on time, my observations of the distribution are summarized here.
apt --fix-broken installis recommended on new installtions of Debian Sid.
The pre-installation experience, as usual, when considering installing a new distribution, centers around the distribution's website and online resources. It seems the Siduction main website has received an update which improves it since the last time I installed Siduction. The download links for installation media was easy to find by selecting the "Installation Media" item from the "Download" drop-down menu in the top menu bar. This dorp down also has items, Packages and Mirrors which, respectively, link to a page providing the repository URI's for Siduction's own repositories -- extra and fixes, and to a list of mirrors for its own repositories.
The other items of interest on Siduction's website are the links to its forum and the Siduction manual. Besides these, the distribution's website and online resources are basic if not lacking what other distributions provide. But this is not an issue when considering the manual (see below) is adequate for addressing nearly all issues a Siduction user may face and Debian's online resources are complete, for example, including the online package search portal.
The only negative aspect of the pre-installation experience, one that can be easily corrected is that the distribution does not provide a way to verify the authenticity of downloaded ISO images with GPG signatures; it only provides MD5 and SHA256 checksums at the same URI as ISO images for download integrity verification.
After powering on the laptop and selecting the USB from the firmware interface, the Siduction live ISO environment presents a a GRUB menu customized with the release's default wallpaper that has items for setting the time zone, the keyboard map -- which, in my case, were correctly preselected, as well as other items for editing the kernel command line to insert kernel parameters, for detecting firmware boot managers, and for accessing help. Unfortunately, I did not investigate these items, and booted.
The KDE Plasma Edition's live ISO environment look and feel is based on a standard Plasmashell layout with a modified default Breeze theme and a wallpaper that based on the default current KDE Plasma wallpaper with additional elements added by the distribution to reflect its identity and the identity of the release, namely a watermark that contains the distribution name and the release codename, and a prominent diamond. The SDDM greeter theme, shown later in the article in Review->First Boot, also has the same visual theme, but the fields for username and password, and controls for session type selection and other control elements are unique to Siduction.
The live ISO environment is filled with the most extensive set of software I have seen recently in any live ISO environment, making it very usable without additional package installations. The software available in the live ISO, which is shown in the following set of images of the application launcher, is also made available out-of-the-box in the installed system.
Siduction, like many Linux distributions, uses the Calamares installer. The installation process, which is shown in the following set of screenshots, was simple and quick. The most notable item of the installation is that Siduction adds one screen to the standard progression of screens or components in the installer, namely one that allows users to specify whether non-free software repositories should be enabled by adding them to the APT sources configuration. This is necessary in order to install, for example, Nvidia proprietary drivers.
The only other notable item is that in my installation on the Dell G5, preselected locale was set to en_GB, although the preselected time-zone was correctly pre selected to Americas/New_York, however, in my installation on the Lenovo Legion 5i Pro, the locale was also set correctly.
Upon rebooting after the installation completed, I was presented with a GRUB that used the same theme as the live ISO and a desktop environment exactly the same as the live ISO, with the same applications. The biggest issue for most users at this point is that Siduction does not preconfigure sudo. The reasons for this are stated in the Siduction manual, the primary one being that it prevents an attacker who has learned the password of a user with sudo privileges, they will have rights to the entire system, wheras, if the password of a regular user without sudo privieleges is compromised, the attacker will only have the same access as a regular user and can not make changes to the system.
The distribution suggests only using su to switch to root when using a terminal -- which uses the shell typical on most distributions -- Bash. Siduction does, however, provide doas, a lightweight alternative to sudo, but is not configured out-of-the-box. They also suggest su-to-root for providing elevated privileges to graphical applications, which is not necessary or supported in Plasma as it prompts for a root password when necessary. For users who want sudo for convenience or because they have become accustomed to using it, the distribution provides instructions to enable it.
The following set of screenshots were taken during my initial use of Siduction, immediately after the installation. Note the number of package updates, and the contents of /etc/fstab.
The Btrfs filesystem has gained popularity in recent years as distributions' default filesystem format. Siduction has also adopted the filesystem as its default format. It is the preselected filesystem format for existing partitions, except the EFI System Partition, when configuring storage targets for the installation is Btrfs.
Siduction not only uses Btrfs for the installation, but also makes the subvolume layout compatible with Snapper for system snapshots and rollbacks, including integration with the default CLI package manager for automatic snapshots during package management transactions, and integration with GRUB for producing a GRUB submenu for selecting snapshots into which to boot as a first step in initiating a rollback. The details of the various aspects of the Btrfs/Snapper/GRUBi configuration is discussed below.
The Siduction installation on Btrfs is unlike most distribution's which use Btrfs as the default subvolume or provide it as an option. Some distributions, such as Fedora as of release 39, format a partition with Btrfs and place the installation on the main subvolume (subvolid 5) created when the partition is formatted with Btrfs. Some other distributions create a set of subvolumes within the top level subvolume one of them being an @ subvolume to be mounted at /, and others for filesystem hierarchy paths to be excluded from Btrfs snapshots, such as /var/log. Of these distributions, those which include Snapper integration will also create a snapshots subvolume under the subvolume to be mounted at /, as required by Snapper.
Siduction's subvolume layout, as illustrated in the following image, goes further in the direction of openSUSE's -- the Btrfs pioneer -- subvolume layout, by creating a subvolume (subvolid=256) under the top level subvolume, and placing all other subvolumes in this subvolume. In the initial state of the system, illustrated in the left pane of the image, before any rollbacks are performed, the @ subvolume (subvolid=256; subvolume path /@; the first subvolume created after the top level subvolume, itself created automatically by the Btrfs formatting operation) is mounted at /. At the initial state the default Btrfs subvolume is not set, as is necessarily the case with openSUE because of their customization of GRUB and their installation of the filesystem hierarchy, with the exception of paths to be excluded from snapshots, into a manually created Snapshot #1. (See An Arch Linux Installation on a Btrfs Filesystem with Snapper for System Snapshots and Rollbacks which describes the openSUSE layout, as well as A Fedora Installation with an openSUSE Style Btrfs Subvolume Layout and Snapper Integration for System Snapshots and Rollbacks and Converting an Existing Ubuntu 24.10 Installation on Ext4 to Btrfs with an openSUSE Style Subvolume Layout and Snapper Integration for System Snapshot Management, which describe, respectively, converting a Fedora Btrfs installation and an Ubuntu ext4 installation to openSUSE's Btrfs/Snapper configuration.)
When a Snapper rollback is performed, the initial state of the subvolume changes in that the @ subvolume will no longer be mounted at /, but the new read-write snapshot -- a copy of the snapshot to which the system is rolled back -- created as part of the rollback process. The new read-write snapshot is also set as the default Btrfs subvolume. This state is illustrated in the right pane of the above image. Subsequent rollbacks will repeat this process such that the new read-write snapshot created by the rollback will be mounted at the filesystem hierarchy root and will be set as the default Btrfs subvolume.
In my opinion this subvolume layout is the best of any distribution that I have used that also incorporates Snapper, except perhaps, openSUSE's. It is fully compatible with Snapper, but, while creating a subvolume below the top level to contain all other subvolumes, it reduces the complication of openSUSE's layout by reducing the level of subvolumes by one.
The subvolume layout described above is compatible with Snapper in that it has a @snapshots subvolume and that it is mounted under the subvolume mounted at the root of the filesystem hierarchy (accessible at /.snapshots). This allows snapshots at snapper, whether automatically through Snapper/APT integration, systemd units, or manually to be created under ./snapshots.
But unlike distribution's like Garuda, which also integrate Snapper with a Btrfs filesystem, Siduction fully uses Snapper for both snapshot creation and rollbacks. When a Garuda system is rolled back, it uses btrfs commands to move the current system subvolume to a backup and then copies the read-only snapshot to which to rollback to a subvolume named @ at subvolume path /@, replacing the former system subvolume. In a Siduction system, the snapper rollback
command can be used, which makes the two new snapshots mentioned earlier, a read-only copy of the current system and a read-write copy of snapshot to which to rollback, also setting it as the default Btrfs subvolume.
Siduction adds several scripts as part of its own siduction-btrfs package to enhance Snapper functionality, three of which are executed by Siduction's Snapper plug-in at /usr/lib/snapper/plugins/50-siduction.sh. These scripts perform actions such as modifying Snapper's snapshot descriptions with information from APT logs when snapshots are created as a result of an APT package management transactions.
Snapper also integrated with APT in Siduction's Btrfs/Snapper configuration, such that pre and post snapshots transactions are created with each package management transaction. In the process used to convert an Ubuntu system originally installed on an ext4 filesystem as described in Converting an Existing Ubuntu 24.10 Installation on Ext4 to Btrfs with an openSUSE Style Subvolume Layout and Snapper Integration for System Snapshot Management, this functionality relied on the apt-btrfs-snapshots package which contained the APT configuration file /etc/apt/apt.conf.d/80-btrfs-snapshot and the Python package apt_btrfs_snapshot.py. The configuration causes the Python program to execute the Snapper commands to create snapshots before and after APT package management transactions.
This package does not exist in Debian's package repositories, neither does anything similar exist in Siduction's Fixes or Extras deb repositories or in its Github repositories. However, the APT configuration file, /etc/apt/apt.conf.d/snapper, with contents as shown below.
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=770938 DPkg::Pre-Invoke { "if [ -e /etc/default/snapper ]; then . /etc/default/snapper; fi; if [ -x /usr/bin/snapper ] && [ ! x$DISABLE_APT_SNAPSHOT = 'xyes' ] && [ -e /etc/snapper/configs/root ]; then rm -f /var/tmp/snapper-apt || true ; snapper create -d apt -c number -t pre -p > /var/tmp/snapper-apt || true ; snapper cleanup number || true ; fi"; }; DPkg::Post-Invoke { "if [ -e /etc/default/snapper ]; then . /etc/default/snapper; fi; if [ -x /usr/bin/snapper ] && [ ! x$DISABLE_APT_SNAPSHOT = 'xyes' ] && [ -e /var/tmp/snapper-apt ]; then snapper create -d apt -c number -t post --pre-number=`cat /var/tmp/snapper-apt` || true ; snapper cleanup number || true ; fi"; };
The DPkg::Pre-Invoke and DPkg::Post-Invoke configuration parameters in this file cause a snapper create command to be executed, respectively, before and after each package management transaction. The following image of a split Konsole window displays in the top pane, the file /etc/apt/apt.conf.d/80snapper.conf open in a vim instance. The bottom pane of the Konsole window shows the output of snapper list; note the snapshot description fields which indicate that they are the created by package management transactions. As we see later in the article the descriptions are actually modified by Siduction's own scripts to reflect the same information as the APT log.
GRUB integration is also complete. Snapshots are automatically detected during package management transactions by the grub-btrfs program, as illustrated in the following listing showing an excerpt of the output of a package management transactions. (For more on grub-btrfs, see Upgrading a Fedora 39 Installation on a Btrfs Filesystem with an openSUSE Style Subvolume Layout to Fedora 40)
Generating grub configuration file ... Found theme: /usr/share/grub/themes/shine-on/theme.txt Found linux image: /boot/vmlinuz-6.12.11-1-siduction-amd64 Found initrd image: /boot/initrd.img-6.12.11-1-siduction-amd64 Found linux image: /boot/vmlinuz-6.12.10-1-siduction-amd64 Found initrd image: /boot/initrd.img-6.12.10-1-siduction-amd64 Found linux image: /boot/vmlinuz-6.12.6-1-siduction-amd64 Found initrd image: /boot/initrd.img-6.12.6-1-siduction-amd64 Found memtest86+ 64bit EFI image: /boot/memtest86+x64.efi Found memtest86+ 32bit EFI image: /boot/memtest86+ia32.efi Found memtest86+ 64bit image: /boot/memtest86+x64.bin Found memtest86+ 32bit image: /boot/memtest86+ia32.bin Warning: os-prober will be executed to detect other bootable partitions. Its output will be used to detect bootable binaries on them and create new boot entries. Found Windows Boot Manager on /dev/nvme1n1p1@/EFI/Microsoft/Boot/bootmgfw.efi Adding boot menu entry for UEFI Firmware Settings ... Detecting snapshots ... Found snapshot: 2025-01-24 23:34:23 | @snapshots/33/snapshot | pre | apt | Found snapshot: 2025-01-23 19:05:14 | @snapshots/32/snapshot | post | Upgrade | Found snapshot: 2025-01-23 19:04:52 | @snapshots/31/snapshot | pre | Upgrade | Found snapshot: 2025-01-23 18:25:50 | @snapshots/30/snapshot | post | Install biber +132 pkg | Found snapshot: 2025-01-23 18:24:57 | @snapshots/29/snapshot | pre | Install biber +132 pkg | Found snapshot: 2025-01-23 18:04:44 | @snapshots/28/snapshot | post | Install kdevelop +26 pkg | Found snapshot: 2025-01-23 18:04:32 | @snapshots/27/snapshot | pre | Install kdevelop +26 pkg | Found snapshot: 2025-01-23 17:58:17 | @snapshots/26/snapshot | post | Install bison +3 pkg | Found snapshot: 2025-01-23 17:58:13 | @snapshots/25/snapshot | pre | Install bison +3 pkg | Found snapshot: 2025-01-23 17:48:23 | @snapshots/24/snapshot | post | Install perl-tk | Found snapshot: 2025-01-23 17:48:20 | @snapshots/23/snapshot | pre | Install perl-tk | Found snapshot: 2025-01-23 17:47:55 | @snapshots/22/snapshot | post | Install tk9.0 +2 pkg | Found snapshot: 2025-01-23 17:47:53 | @snapshots/21/snapshot | pre | Install tk9.0 +2 pkg | Found snapshot: 2025-01-23 17:38:45 | @snapshots/20/snapshot | post | Install starship | Found snapshot: 2025-01-23 17:38:43 | @snapshots/19/snapshot | pre | Install starship | Found snapshot: 2025-01-23 17:38:32 | @snapshots/18/snapshot | post | Install fish +3 pkg | Found snapshot: 2025-01-23 17:38:28 | @snapshots/17/snapshot | pre | Install fish +3 pkg | Found snapshot: 2025-01-23 17:34:26 | @snapshots/16/snapshot | post | Install tree-sitter-cli +102 pkg | Found snapshot: 2025-01-23 17:34:03 | @snapshots/15/snapshot | pre | Install tree-sitter-cli +102 pkg | Found snapshot: 2025-01-23 17:32:08 | @snapshots/14/snapshot | post | Install fzf | Found snapshot: 2025-01-23 17:32:06 | @snapshots/13/snapshot | pre | Install fzf | Found snapshot: 2025-01-23 17:20:56 | @snapshots/12/snapshot | post | Install neovim +12 pkg | Found snapshot: 2025-01-23 17:20:52 | @snapshots/11/snapshot | pre | Install neovim +12 pkg | Found snapshot: 2025-01-22 23:40:53 | @snapshots/10/snapshot | post | Upgrade | Found snapshot: 2025-01-22 23:23:24 | @snapshots/9/snapshot | pre | Upgrade | Found snapshot: 2025-01-22 23:14:13 | @snapshots/8/snapshot | post | Install firefox +1 pkg | Found snapshot: 2025-01-22 23:14:06 | @snapshots/7/snapshot | pre | Install firefox +1 pkg | Found snapshot: 2025-01-22 22:53:29 | @snapshots/6/snapshot | post | Install code | Found snapshot: 2025-01-22 22:24:18 | @snapshots/5/snapshot | pre | Install code | Found snapshot: 2025-01-22 20:45:57 | @snapshots/4/snapshot | post | Install python3 | Found snapshot: 2025-01-22 20:45:56 | @snapshots/3/snapshot | pre | Install python3 | Found snapshot: 2025-01-22 20:45:15 | @snapshots/2/snapshot | post | Install libnvidia +90 pkg | Found snapshot: 2025-01-22 20:43:47 | @snapshots/1/snapshot | pre | Install libnvidia +90 pkg | Found 33 snapshot(s) Unmount /tmp/grub-btrfs.Gzlc9GT7Vv .. Success done Setting up libzxing3:amd64 (2.3.0-2+b2) ... Setting up libpathplan4:amd64 (2.42.4-2+b4) ... Setting up firefox-beta (135.0b9~build1) ... Setting up usbmuxd (1.1.1-6) ... usbmuxd.service is a disabled or a static unit not running, not starting it. Setting up libspdlog1.15:amd64 (1:1.15.0+ds-2+b1) ... Setting up libglapi-mesa:amd64 (24.3.4-1) ... Setting up weechat-core (4.5.1-1+b2) ... Setting up xserver-xorg-video-vesa (1:2.6.0-2) ... Setting up linux-headers-siduction-amd64 (6.12-11) ... Setting up weechat-curses (4.5.1-1+b2) ... Setting up tree-sitter-cli (0.20.8-6+b2) ...
The detected snapshots are added to a Snapshots GRUB submenu item which opens to a list of available read-only snapshots into which the system can be booted to initiate a system rollback.
Setting up grub-btrfs (4.11-1~1siduction1) ... Configuration file '/etc/default/grub-btrfs/config' ==> 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. *** config (Y/I/N/O/D/Z) [default=N] ? d --- /etc/default/grub-btrfs/config 2025-01-22 20:20:07.444551167 -0500 +++ /etc/default/grub-btrfs/config.dpkg-new 2025-01-06 10:44:38.000000000 -0500 @@ -6,7 +6,7 @@ # Name appearing in the Grub menu. # Default: "Use distribution information from /etc/os-release." -GRUB_BTRFS_SUBMENUNAME="siduction snapshots" +#GRUB_BTRFS_SUBMENUNAME="Arch Linux snapshots" # Custom title. # Shows/Hides "date" "snapshot" "type" "description" in the Grub menu, custom order available. Configuration file '/etc/default/grub-btrfs/config' ==> 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. *** config (Y/I/N/O/D/Z) [default=N] ? Progress: [ 68%] [███████████████████████████████████████████████████████████████████████████████████████████████████▋
The GRUB Btrfs integration also ensures that the initial installed system subvolume at subvolume path /@ is used in the path to the kernel image in kernel command line in GRUB. When the system is rolled back, the kernel command line is modified for subsequent boots to reflect the subvolume that contains the new system (the read-write snapshot that is a copy of the snapshot to which the system was rolled back created during the rollback). In the following listing displaying the kernel command line after the system has been rolled back, the kernel image path uses the absolute subvolume path to Snapshot #36.
89% 19:05:20 USER: brook HOST: Legion-Siduction PCD: 22h46m31s ~ ❯$ cat /proc/cmdline BOOT_IMAGE=/@snapshots/36/snapshot/boot/vmlinuz-6.13.3-1-siduction-amd64 root=UUID=3b0b2b91-34d0-4559-a1ec-88b4a54b34e5 ro rootflags=subvol=@snapshots/36/snapshot quiet resume=UUID=980ddbbf-9b79-4390-be21-850e62b7ebb2 systemd.show_status=1
The kernel command line also shows that the GRUB variable rootflags is used and is set to the snapshot that is to be used as the current root of the system, specified with the subvol mount option with a value of the snapshot expressed as a subvolume path,
In distribution's such as Garuda which do not set a default Btrfs subvolume and copy the snapshot to which to roll back to the /@ subvolume, as described earlier, the rootflags parameter is always set to /@.
The fact that rootflags is used by Siduction, and that it is not set to /@, except initially before any rollbacks, may be a recent change in GRUB that allows this. Expect an article on this site after investigating this.
To reverse the package dependency issue -- described below -- created by an upgrade, which prevented the installation of VirtualBox, I used the Snapper rollback capability, which in addition to solving the problem, allowed me to test the functionality. The standard Snapper process is to first boot into the read-only snapshot to which to rollback the system by selecting it in the GRUB menu, then after the system has booted into the snapshot, issue the Snapper rollback command. The following image depicts a Konsole window showing the output of snapper list and the execution of the Snapper rollback command, in this case:
sudo snapper --ambit classic rollback 2
specifying that the system should be rolled back to Snapshot #2.
snapper --ambit classic rollback
The rollback comleted successfully, with all related aspects of the system modified correctly, including the GRUB configuration. The effect of the rollback on the system is shown in the following image.
Siduction pre-installs a GUI application to manage Snapper snapshots called Snapper GUI, shown in the following set of images. It provides a listing of snapshots. It is also capable of creating and deleting snapshots. It's most useful feature is the ability to display the files that have changed between two snapshots, even to the level of seening a diff between the pre snapshot and post snapshot state of files. Unlike opemSUSE's YaST component for similar functionality, it is not able to rollback individual files. In addition to this missing functionaloity, some users, like me, will not like the fact that it not only uses the GTK toolkit, it appears to be a GNOME application, creating a visual clash with the overall cohesive look of Plasma, KDE applications, and even other GTK (not GNOME) appls like Inkscape,
The Siduction installer does not have an option for booting with Nvidia drivers enabled which will cause Nvidia drivers to be available in the installed system. It uses Nouveau by default, with the option to install Nvidia drivers from Debian repositories if the non-free component of Debian's repositories were enabled during installation, or if enabled afterward.
The default opsn-source Nouveau drivers had no issues on the Dell G5, even when connected to an external monitor (a 4k UHD TV) connected by HDMI. It also had no issues during my brief use of the Lenovo Legion 5i Pro, before installing the Nvidia driver, although I did not connect to the external AOpen portable monitor I ususally connect to this laptop.
On both lapthops I installed the proprietary Nvidia driver, as described below in Section Fixes adn Enhancements->Installing Nvidia Proprietary Drivers. As both of these laptops are Optimus laptops, I also needed a way to switch/set the graphics mode easily, so I installed the distribution agnostic EnvyControl, a tool similar to Optimus Manager for Arch based distributions, which can switch between Discrete, Integrated, and Hybrid modes laptops with pre-Turing Nvidia GPUs, and between Discrete and Hybrid modes in laptops with post-Turing Nvidia GPUs. This application is not available in Debian's or Siduction's repositpries, so the installation -- described in Section Fixes and Enahancements->Installing EnvyControl -- required downloading a deb package from the project's Github.
The following image shows the execution of the EnvyControlcommand to set the graphics mode to Hybrid on the Lenovo Legion which has a post-Turing Nvidia GPU capable of Run Time (ACPI) D3 power management. (See Nvidia Optimus on Linux for a description of ACPI power states).
Package management on Siduction KDE Plasma Edition are typical of Debian and Debian based distributions. The most common apt-xxx CLI programs are available by default, as well as aptitude -- which I attempted to use for manual package dependency resolution for the dependency problem described below -- and the preferred interactive CLI tool apt. Various GUI package management tools are also available besides the standard Debian CLI tools, including both Synaptic Package Manager and KDE's Discover. The Siduction community, as indicated in some forum posts does not recommend using Discover for package management, although it can be used to install Plasma and KDE application add-ons. I did attempt to use Discover for an upgrade to see what would happen, but the operation failed with an error.
There was one notable addition to the suite of package management tools in Siduction, however. The Nala package manager, a front-end to APT, specifically, libapt-pkg, interfaced through APT's python-apt API. Nala improves on available APT tools such as apt-get and apt by providing more informative and better formatted output produced by package management operations, as well as some other functional improvements, such as use of parallel downloads when retrieving packages, mirror testing and sorting, and storing package management history for redoing or reversing transactions.
As an example of Nala's improved usability, the following listing shows using Nala to search for installed packages matching a pattern in the package name; apt does not have such a feature but requires using its search command with a pipe to grep for the pattern " installed. As further examples of its improved visual appeal and informational output, the following set of images show Nala being used to upgrade Siduction.
It seems that Nala package management transactions, like apt transactions, cause pre and post transaction snapshots to be created through the Siduction Snapper plugin (see Section Review->Btrfs->Snapper). The Nala operation shown in the above set of images completes at -- according to the fish prompt -- 19:00:24 after a duration of 9m48s. The following image showing the Snapper snapshots and the Nala history, Nala recorded a package management transaction at 19:00:24.
During the package management transaction, Snapper is actively working, as shown in the following excerpt of the Snapper log, beginning at 18:53:22, presumably after the download phase of the package management transaction has completed.
... excised ... 2025-02-24 21:41:17 MIL libsnapper(53847) snapperd.cc(main):315 - Exiting 2025-02-25 18:53:22 MIL libsnapper(93745) snapperd.cc(main):283 - Requesting DBus name 2025-02-25 18:53:22 MIL libsnapper(93745) snapperd.cc(main):298 - Loading snapper configs 2025-02-25 18:53:22 MIL libsnapper(93745) Snapper.cc(getConfigs):299 - Snapper get-configs 2025-02-25 18:53:22 MIL libsnapper(93745) Snapper.cc(getConfigs):300 - libsnapper version 0.10.6 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(reload):922 - loading file /etc/default/snapper 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(get_value):1078 - key:SNAPPER_CONFIGS value:root home 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(reload):922 - loading file /etc/snapper/configs/root 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(get_value):1078 - key:SUBVOLUME value:/ 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(reload):922 - loading file /etc/snapper/configs/home 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(get_value):1078 - key:SUBVOLUME value:/home 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(get_value):1078 - key:ALLOW_USERS value: 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(get_value):1078 - key:ALLOW_GROUPS value:users 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(get_value):1078 - key:ALLOW_USERS value: 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(get_value):1078 - key:ALLOW_GROUPS value:users 2025-02-25 18:53:22 MIL libsnapper(93745) snapperd.cc(main):311 - Listening for method calls and signals 2025-02-25 18:53:22 MIL libsnapper(93745) Snapper.cc(Snapper):97 - Snapper constructor 2025-02-25 18:53:22 MIL libsnapper(93745) Snapper.cc(Snapper):98 - snapper version 0.10.6 2025-02-25 18:53:22 MIL libsnapper(93745) Snapper.cc(Snapper):99 - libsnapper version 7.2.0 2025-02-25 18:53:22 MIL libsnapper(93745) Snapper.cc(Snapper):100 - config_name:root root_prefix:/ disable_filters:false 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(reload):922 - loading file /etc/snapper/configs/root 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(get_value):1078 - key:SUBVOLUME value:/ 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(get_value):1078 - key:FSTYPE value:btrfs 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(get_value):1078 - key:QGROUP value: 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(get_value):1078 - key:SYNC_ACL value:yes 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(get_value):1078 - key:ALLOW_USERS value: 2025-02-25 18:53:22 MIL libsnapper(93745) AsciiFile.cc(get_value):1078 - key:ALLOW_GROUPS value:users 2025-02-25 18:53:22 MIL libsnapper(93745) Snapper.cc(Snapper):130 - subvolume:/ filesystem:btrfs 2025-02-25 18:53:22 MIL libsnapper(93745) Snapper.cc(loadIgnorePatterns):204 - number of ignore patterns:8 2025-02-25 18:53:22 MIL libsnapper(93745) Snapshot.cc(read):335 - found 53 snapshots 2025-02-25 18:53:22 WAR libsnapper(93745) FileUtils.cc(SDir):88 - THROW: open failed path://.snapshots/91 errno:2 (No such file or directory) 2025-02-25 18:53:22 WAR libsnapper(93745) Btrfs.cc(checkSnapshot):490 - CAUGHT: open failed path://.snapshots/91 errno:2 (No such file or directory) 2025-02-25 18:53:22 MIL libsnapper(93745) SystemCmd.cc(SystemCmd):48 - constructor SystemCmd:"/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot-pre' '/' 'btrfs' '91'" 2025-02-25 18:53:22 MIL libsnapper(93745) SystemCmd.cc(execute):84 - SystemCmd Executing:"/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot-pre' '/' 'btrfs' '91'" 2025-02-25 18:53:22 MIL libsnapper(93745) SystemCmd.cc(doExecute):176 - stopwatch 0.004661s for "/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot-pre' '/' 'btrfs' '91'" 2025-02-25 18:53:22 MIL libsnapper(93745) SystemCmd.cc(doExecute):190 - system() Returns:0 2025-02-25 18:53:23 MIL libsnapper(93745) SystemCmd.cc(SystemCmd):48 - constructor SystemCmd:"/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot' '/' 'btrfs' '91'" 2025-02-25 18:53:23 MIL libsnapper(93745) SystemCmd.cc(execute):84 - SystemCmd Executing:"/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot' '/' 'btrfs' '91'" 2025-02-25 18:53:23 MIL libsnapper(93745) SystemCmd.cc(doExecute):176 - stopwatch 0.003307s for "/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot' '/' 'btrfs' '91'" 2025-02-25 18:53:23 MIL libsnapper(93745) SystemCmd.cc(doExecute):190 - system() Returns:0 2025-02-25 18:53:23 MIL libsnapper(93745) SystemCmd.cc(SystemCmd):48 - constructor SystemCmd:"/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot-post' '/' 'btrfs' '91'" 2025-02-25 18:53:23 MIL libsnapper(93745) SystemCmd.cc(execute):84 - SystemCmd Executing:"/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot-post' '/' 'btrfs' '91'" 18:53:23 Plugin 50-siduction: Inside create-snapshot-post 2025-02-25 18:53:24 MIL libsnapper(93745) SystemCmd.cc(doExecute):176 - stopwatch 1.000960s for "/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot-post' '/' 'btrfs' '91'" 2025-02-25 18:53:24 MIL libsnapper(93745) SystemCmd.cc(doExecute):190 - system() Returns:0 2025-02-25 18:53:24 WAR libsnapper(93745) Snapper.cc(calculateUsedSpace):852 - THROW: quota rescan or sync failed 2025-02-25 18:53:24 WAR libsnapper(93745) Client.cc(dispatch):2001 - CAUGHT: quota rescan or sync failed 18:53:24 snapshot-description: No complete apt action. 2025-02-25 18:53:54 MIL libsnapper(93745) Snapper.cc(~Snapper):142 - Snapper destructor 2025-02-25 18:54:24 MIL libsnapper(93745) snapperd.cc(main):315 - Exiting 2025-02-25 18:59:49 MIL libsnapper(112801) snapperd.cc(main):283 - Requesting DBus name 2025-02-25 18:59:49 MIL libsnapper(112801) snapperd.cc(main):298 - Loading snapper configs 2025-02-25 18:59:49 MIL libsnapper(112801) Snapper.cc(getConfigs):299 - Snapper get-configs 2025-02-25 18:59:49 MIL libsnapper(112801) Snapper.cc(getConfigs):300 - libsnapper version 0.10.6 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(reload):922 - loading file /etc/default/snapper 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:SNAPPER_CONFIGS value:root home 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(reload):922 - loading file /etc/snapper/configs/root 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:SUBVOLUME value:/ 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(reload):922 - loading file /etc/snapper/configs/home 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:SUBVOLUME value:/home 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:ALLOW_USERS value: 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:ALLOW_GROUPS value:users 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:ALLOW_USERS value: 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:ALLOW_GROUPS value:users 2025-02-25 18:59:49 MIL libsnapper(112801) snapperd.cc(main):311 - Listening for method calls and signals 2025-02-25 18:59:49 MIL libsnapper(112801) Snapper.cc(Snapper):97 - Snapper constructor 2025-02-25 18:59:49 MIL libsnapper(112801) Snapper.cc(Snapper):98 - snapper version 0.10.6 2025-02-25 18:59:49 MIL libsnapper(112801) Snapper.cc(Snapper):99 - libsnapper version 7.2.0 2025-02-25 18:59:49 MIL libsnapper(112801) Snapper.cc(Snapper):100 - config_name:root root_prefix:/ disable_filters:false 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(reload):922 - loading file /etc/snapper/configs/root 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:SUBVOLUME value:/ 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:FSTYPE value:btrfs 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:QGROUP value: 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:SYNC_ACL value:yes 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:ALLOW_USERS value: 2025-02-25 18:59:49 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:ALLOW_GROUPS value:users 2025-02-25 18:59:49 MIL libsnapper(112801) Snapper.cc(Snapper):130 - subvolume:/ filesystem:btrfs 2025-02-25 18:59:49 MIL libsnapper(112801) Snapper.cc(loadIgnorePatterns):204 - number of ignore patterns:8 2025-02-25 18:59:49 MIL libsnapper(112801) Snapshot.cc(read):335 - found 54 snapshots 2025-02-25 18:59:49 WAR libsnapper(112801) FileUtils.cc(SDir):88 - THROW: open failed path://.snapshots/92 errno:2 (No such file or directory) 2025-02-25 18:59:49 WAR libsnapper(112801) Btrfs.cc(checkSnapshot):490 - CAUGHT: open failed path://.snapshots/92 errno:2 (No such file or directory) 2025-02-25 18:59:49 MIL libsnapper(112801) SystemCmd.cc(SystemCmd):48 - constructor SystemCmd:"/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot-pre' '/' 'btrfs' '92'" 2025-02-25 18:59:49 MIL libsnapper(112801) SystemCmd.cc(execute):84 - SystemCmd Executing:"/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot-pre' '/' 'btrfs' '92'" 2025-02-25 18:59:49 MIL libsnapper(112801) SystemCmd.cc(doExecute):176 - stopwatch 0.006479s for "/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot-pre' '/' 'btrfs' '92'" 2025-02-25 18:59:49 MIL libsnapper(112801) SystemCmd.cc(doExecute):190 - system() Returns:0 2025-02-25 18:59:49 MIL libsnapper(112801) SystemCmd.cc(SystemCmd):48 - constructor SystemCmd:"/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot' '/' 'btrfs' '92'" 2025-02-25 18:59:49 MIL libsnapper(112801) SystemCmd.cc(execute):84 - SystemCmd Executing:"/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot' '/' 'btrfs' '92'" 2025-02-25 18:59:49 MIL libsnapper(112801) SystemCmd.cc(doExecute):176 - stopwatch 0.004314s for "/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot' '/' 'btrfs' '92'" 2025-02-25 18:59:49 MIL libsnapper(112801) SystemCmd.cc(doExecute):190 - system() Returns:0 2025-02-25 18:59:49 MIL libsnapper(112801) SystemCmd.cc(SystemCmd):48 - constructor SystemCmd:"/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot-post' '/' 'btrfs' '92'" 2025-02-25 18:59:49 MIL libsnapper(112801) SystemCmd.cc(execute):84 - SystemCmd Executing:"/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot-post' '/' 'btrfs' '92'" 18:59:49 Plugin 50-siduction: Inside create-snapshot-post 2025-02-25 18:59:50 MIL libsnapper(112801) SystemCmd.cc(doExecute):176 - stopwatch 1.001424s for "/usr/lib/snapper/plugins/50-siduction.sh 'create-snapshot-post' '/' 'btrfs' '92'" 2025-02-25 18:59:50 MIL libsnapper(112801) SystemCmd.cc(doExecute):190 - system() Returns:0 2025-02-25 18:59:50 MIL libsnapper(112801) AsciiFile.cc(get_value):1078 - key:BACKGROUND_COMPARISON value:yes 2025-02-25 18:59:50 MIL libsnapper(112801) Comparison.cc(Comparison):60 - num1:91 num2:92 2025-02-25 18:59:50 MIL libsnapper(112801) Comparison.cc(load):272 - num1:91 num2:92 2025-02-25 18:59:50 MIL libsnapper(112801) Comparison.cc(create):141 - num1:91 num2:92 2025-02-25 18:59:50 MIL libsnapper(112801) Btrfs.cc(cmpDirs):1366 - special btrfs cmpDirs 2025-02-25 18:59:50 MIL libsnapper(112801) Btrfs.cc(process):1337 - dir1:'//.snapshots/91/snapshot' dir2:'//.snapshots/92/snapshot' 2025-02-25 18:59:50 WAR libsnapper(112801) Snapper.cc(calculateUsedSpace):852 - THROW: quota rescan or sync failed 2025-02-25 18:59:50 WAR libsnapper(112801) Client.cc(dispatch):2001 - CAUGHT: quota rescan or sync failed 2025-02-25 18:59:50 WAR libsnapper(112801) Client.cc(check_config_in_use):503 - THROW: config in use 2025-02-25 18:59:50 WAR libsnapper(112801) Client.cc(dispatch):1911 - CAUGHT: config in use 2025-02-25 18:59:50 WAR libsnapper(112801) Snapper.cc(calculateUsedSpace):852 - THROW: quota rescan or sync failed 2025-02-25 18:59:50 WAR libsnapper(112801) Client.cc(dispatch):2001 - CAUGHT: quota rescan or sync failed 18:59:51 snapshot-description: Change snapper's description of snapshots 91 and 92. 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(SystemCmd):48 - constructor SystemCmd:"/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot-pre' '/' 'btrfs' '91'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(execute):84 - SystemCmd Executing:"/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot-pre' '/' 'btrfs' '91'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(doExecute):176 - stopwatch 0.003369s for "/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot-pre' '/' 'btrfs' '91'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(doExecute):190 - system() Returns:0 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(SystemCmd):48 - constructor SystemCmd:"/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot' '/' 'btrfs' '91'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(execute):84 - SystemCmd Executing:"/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot' '/' 'btrfs' '91'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(doExecute):176 - stopwatch 0.004689s for "/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot' '/' 'btrfs' '91'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(doExecute):190 - system() Returns:0 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(SystemCmd):48 - constructor SystemCmd:"/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot-post' '/' 'btrfs' '91'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(execute):84 - SystemCmd Executing:"/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot-post' '/' 'btrfs' '91'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(doExecute):176 - stopwatch 0.003146s for "/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot-post' '/' 'btrfs' '91'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(doExecute):190 - system() Returns:0 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(SystemCmd):48 - constructor SystemCmd:"/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot-pre' '/' 'btrfs' '92'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(execute):84 - SystemCmd Executing:"/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot-pre' '/' 'btrfs' '92'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(doExecute):176 - stopwatch 0.003154s for "/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot-pre' '/' 'btrfs' '92'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(doExecute):190 - system() Returns:0 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(SystemCmd):48 - constructor SystemCmd:"/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot' '/' 'btrfs' '92'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(execute):84 - SystemCmd Executing:"/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot' '/' 'btrfs' '92'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(doExecute):176 - stopwatch 0.004153s for "/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot' '/' 'btrfs' '92'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(doExecute):190 - system() Returns:0 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(SystemCmd):48 - constructor SystemCmd:"/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot-post' '/' 'btrfs' '92'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(execute):84 - SystemCmd Executing:"/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot-post' '/' 'btrfs' '92'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(doExecute):176 - stopwatch 0.003263s for "/usr/lib/snapper/plugins/50-siduction.sh 'modify-snapshot-post' '/' 'btrfs' '92'" 2025-02-25 18:59:51 MIL libsnapper(112801) SystemCmd.cc(doExecute):190 - system() Returns:0 2025-02-25 19:00:08 MIL libsnapper(112801) Btrfs.cc(cmpDirs):1378 - stopwatch 17.904720s for comparing directories 2025-02-25 19:00:08 MIL libsnapper(112801) Comparison.cc(save):318 - num1:91 num2:92 2025-02-25 19:00:39 MIL libsnapper(112801) Snapper.cc(~Snapper):142 - Snapper destructor 2025-02-25 19:00:51 MIL libsnapper(112801) snapperd.cc(main):315 - Exiting 2025-02-26 15:56:17 MIL libsnapper(123247) snapperd.cc(main):283 - Requesting DBus name ... truncated ...
This change resulted in a warning for each sources.list about missing specification of the Signed-By parameter, as shown in the following listing.
100% 23:23:37 USER: brook HOST: Legion-Siduction ~ ❯$ sudo apt update [sudo] password for brook: Hit:1 https://packages.microsoft.com/repos/code stable InRelease Hit:2 https://packages.mozilla.org/apt mozilla InRelease Hit:3 https://deb.debian.org/debian unstable InRelease Hit:4 https://ftp.snt.utwente.nl/pub/linux/siduction/extra unstable InRelease Hit:5 https://ftp.snt.utwente.nl/pub/linux/siduction/fixes unstable InRelease 52 packages can be upgraded. Run 'apt list --upgradable' to see them. Notice: Missing Signed-By in the sources.list(5) entry for 'https://deb.debian.org/debian' Notice: Missing Signed-By in the sources.list(5) entry for 'https://ftp.snt.utwente.nl/pub/linux/siduction/extra' Notice: Missing Signed-By in the sources.list(5) entry for 'https://ftp.snt.utwente.nl/pub/linux/siduction/fixes' Notice: Missing Signed-By in the sources.list(5) entry for 'https://packages.microsoft.com/repos/code' Notice: Consider migrating all sources.list(5) entries to the deb822 .sources format Notice: The deb822 .sources format supports both embedded as well as external OpenPGP keys Notice: See apt-secure(7) for best practices in configuring repository signing. 100% 23:23:46 USER: brook HOST: Legion-Siduction PCD: 6s ~ ❯$
Shortly after I installed Siduction, Debian updated the format of the deb sources files, which specify the URIs of repositories, as well as the extension of these files from .list to .sources. The new format called deb822 replaces the single line format of the previous format with a set of key-value pairs, similar to the format of analogous files in other package management formats. The following image shows a comparison of the previous format with the new format, for Debian repositories, i.e., it compares /etc/apt/sources.list.d/debian.list with /etc/apt/sources.list.d/debian.sources.
This issue was resolved for the Debian and Mozilla repositories on the system by, as suggested in the Notice messages shown in the above listing, by "migrating all sources.list(5) entries to the deb822 .sources format". Another message from apt suggested using apt modernize-sources to convert the format of each sources.list file. The suggestion from apt and the execution and output of apt modernize-sources is shown in the following set of images.
The most notable item of my experience with Siduction with regard to package management was actually a serious issue which resulted in my disappointment with Siduction was a package dependency issue with Python, described below along with the other problems I experienced with Siduction.
Siduction is a good distribution, with a sophisticated Btrfs subvolume layout which fully integrates Snapper for snapshots and rollbacks, that is further enhanced by Siduction's own scripts. It also has a unique position in the Linux ecosystem as the only one -- as far as I am aware -- that provides a Debian distribution with current software and as a rolling update distribution. However, it does have some problems, the two most problematic for me being that there were some package dependency issues that were ultimately resolved easily, and the lack of support -- at least during my initial use -- for OAuth2 authentication, which is required for using Microsoft's Outlook web mail service. Another serious issue, one that indicates an area in which the distribution actually fails -- or inherits a problem from Debian -- is with the preinstalled firewalld firewall management application. These and other problems are described below.
It seems that some of these problems, including the OAuth2 issue, were somehow resolved after upgrades and using the apt --fix-broken install, which as mentioned above in Section Review->Package Management, is necessary in new Siduction installations.
While not actual problems, there were other issues which required attention. These included enabling sudo, enabling hibernation, installing the Kvantum application theme engine manually, and installing EnvyControl.
All of the problems and issues are described below, with their solutions described in the supplementary article, Siduction Linux 2024.1.0 (Shine On) Review [KDE Plasma Edition] Supplement: Fixes and Enhancements
The first serious issue I encountered was a dependency issue that could have been resolved easily by a user who is very knowledgeable with APT and the features and options of its tools, or someone who carefully reads messages provided in program output. The dependency problem prevented me from installing VirtualBox. After the first upgrade of Siduction, the system Python version was upgraded from Python 3.12.x to Python 3.13.x. When I attempted to install VirtualBox from the default repositories, not from a package downloaded from Oracle, I was confronted with an error that indicated that VirtualBox required Python 3.12 or lower, as shown in the following image, and the following listing.
100% 23:35:30 USER: brook HOST: Legion-Siduction PCD: 1m31s ~ ❯$ sudo apt install virtualbox Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: Unsatisfied dependencies: virtualbox : Depends: python3 (< 3.13) but 3.13.1-2 is to be installed Recommends: virtualbox-qt (= 7.0.20-dfsg-1.1) but it is not going to be installed Error: Unable to correct problems, you have held broken packages.
From some comments on various forums, the suggested fix described in the output, is one that is typically necessary in initial use of new installations of Siduction. Google's AI also suggests this:
While it's not strictly necessary to run apt install --fix-broken on every new Debian Sid installation, it's highly recommended to do so as a precautionary step, as Sid (the unstable branch) can sometimes have package dependency issues due to its rapidly evolving nature, and running this command can help identify and resolve any potential problems early on in your setup.If I had seen this I could have easily resolved the issue, which I ultimately did by performing the suggested action of executing
apt --fix-broken install
But before that, I used the opportunity to test the Siduction rollback feature (which was proven to work well, as discussed in Section Review->Btrfs->Rollbacks of this article) to rollback the system to the point where the system Python version was 3.12.x, then install VirtualBox.
The immediate problem of not being able to install VirtualBox was solved, but my next package installation attempt resulted in the same Python dependency error. This issue also prevented future attempts to upgrade the system.
Although, in this case, I could have resolved the issue, besides not paying attention to the output, I expected package dependency problems from my brief use, many years ago, of a Voyager Debian Edition converted to use first, the Debian Testing repositories, then the DebianUnstable repositories. I was also blinded by the fact that there is an Upgrade Warnings thread on the Siduction Forum, which reinforced my expectation of dependency issues. My expectation was, however, not realized as there were no further dependency issues, except for packages being held back during upgrade, a normal situation for any Debian based distribution, including Ubuntu, and another issue caused by conflicts when I installed Xfce using task-xfce-desktop, something someone more familiar with Debian may not have done.
Siduction, like Debian, uses the powerfull firewalld firewall management application. The GUI for firewalld provided by the package firewall-config is not pre-installed. Instead the most basic firewalld operations can be performed with the Plasma System Settings component Firewall.
Unfortunately, the firewalld installation and configuration is broken. The systemd service that manages it is disabled, despite the fact that its preset is "enabled". The following set of images shows various aspects of Siduction related to firewalld.
The first image shows the default state of firewalld as reflected by the Firewall component of System Settings, which shows that it is disabled. Toggling the control to enable it (second image) causes a prompt to enter the administrator password to be displayed. After entering the password, firewalld is seemingly enabled (third image). Attempting to change the Default Incoming Policy (fourth image) causes an error originating from firewalld. In investigating the problem, I saw that the systemd service, firewalld.service was not enabled (fifth image). Image 6 shows the root of the problem: a firewalld configuration file, apparently containing firewall rules including default rules, required by a subsidiary program of firewalld, python-nftables, is missing. This error has been in occuring at each boot since the very first after installation of the distribution. The final image in the set shows the firewalld GUI, titled Firewall Configuration, failing to connect to firewalld.
Although firewalld is a powerful application, with such advanced features as zones, which make different rules for different networks possible, and has a GUI application that allows easily modifying the configuration, for example, allowing traffic or denying traffic by service selectable in the application (usefull for allowing KDEConnect), I decided to replace firewalld with UFW, which did not have any issues whatsoever. The installation and immediate enablement of ufw, as well as its managemnt in the Firewall component of System Settings is described in Siduction Linux 2024.1.0 (Shine On) Review [KDE Plasma Edition] Supplement: Fixes and Enhancements.
Another minor issue in my use of Siduction involved KWallet, which is necessary to store email account passwords with encryption for use by KMail KDE's email client application, which is preinstalled by the distribution. First, the KDE Wallet System was not enabled by Siduction. This may be as a result of a decision by the distribution to avoid the prompts produced by the KWallet system to select an encryption method and select the key to be used for encryption.
When first attempting to add accounts which do not use OAuth2 authentication, this caused a prompt to be shown that indicated that the KDE Wallet System is not enabled, with a button to enable it, as shown in the following image.
Enabling it, then creating the GPG key caused various new errors in creating the accounts, such as an
Encryption error while attempting to save the wallet kdewallet. Error code is 55 (Invalid value). Please fix your system configuration, then try again. This error may occur if you are not using a full trust GPG key. Please ensure you have the secret key for the key you are using.
So before adding any accounts to KMail it is probably best to first create a GPG key pair with
gpg --generatue-key, then enable KDE Wallet System with either KWallet Manager or the KDE Wallet component of Plasma's System Settings, and finally add accounts to KMail. Some of this process is shown in the Siduction Linux 2024.1.0 (Shine On) Review [KDE Plasma Edition] Supplement: Fixes and Enhancements. The prompt to select an encryption method by KWallet as a result of KMail's request and the KDE Wallet Component of Plasma System Settings are also shown in that article.
sudo chown -R ord-userone:www-data static/distribution-reviews/siduction/202410-shineon/siduction-linux-202410-shineon-review-kde-plasma-edition/images/ On a related note, when adding an account which requires the SASL OAuth2 authentication mechanism, there is a delay in retreiving account information. This led me to believe that Siduction did not include the necessary libraries for this type of authentication, a similar issue as in Kubuntu which promptly allows opening a web page to enter Gmail OAuth2 credentials, but fails to show an Outlook page for entering credentials for its service.
Sometimes a distribution which features the KDE Plasma Desktop does not fully integrate GTK applications into the Plasma Desktop. This could mean that the file dialogs, instead of using the native KDE file dialog provided by KDE Frameworks, use the one provided by GTK, a common situation in all distributions. Not so common is that the necessary packages to display GTK applications' menus in the Global Menu Plasma widget are not included in the distribution by default.
Whenever I encountered this problem in other distributions, correcting this issue was simply a matter of installing the appropriate packages, most importantly, appmenu-gtk3-module. This fixes the problem such that GTK applications' menus -- except Firefox's --are properly displayed. Unfortunately, Siduction does not include this package by default, and caused the problem of GTK menus not being displayed in the global menu. Strangely, this did not affect all GTK applications. Inkscape's menu was properly displayed, however, GIMP's menu was not displayed.
When I initially attempted to correct this issue by installing appmenu-gtk3-module, the Python dependency problem discussed above prevented the installation, as shown in the following listing.
91% 19:30:15 USER: brook HOST: Legion-Siduction ~ ❯$ sudo apt -f install appmenu-gtk3-module You might want to run 'apt --fix-broken install' to correct these. Unsatisfied dependencies: appmenu-gtk3-module : Depends: libappmenu-gtk3-parser0 (>= 24.05-1.1) but it is not going to be installed Depends: appmenu-gtk-module-common (>= 24.05-1.1) but it is not going to be installed virtualbox : Depends: python3 (< 3.13) but 3.13.1-2 is to be installed Error: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution). 94% 19:34:50 USER: brook HOST: Legion-Siduction ~ ❯$
After finally applying the action suggested by apt, as mentioned in Section Review->Package Management, I was able to install appmenu-gtk3-module and the problem was solved.
The documentation provided by Siduction is one of it standout features. The distribution installs a 300+ page manual in PDF format, which is also available on its website. The manual covers all aspects of administering the distribution that a new Siduction user, or even a novice Linux user could wish to learn. It begins with an introduction to system administration in Siduction, for example, describing its reasons for not including sudo, and continues to package management concepts, etc.
The manual is continuously updated, and the PDF installed in the system, is also updated as with any other package. In the approximately one month that I have been using Siduction, the manual was updated to reflect changes to the Debain .list files, and to include instructions on how to update the existing files, as mentioned in Section Review->Package Management and the supplement to this article, Siduction Linux 2024.1.0 (Shine On) Review [KDE Plasma Edition] Supplement: Fixes and Enhancements.
TBA
Siduction is an excellent distribution. Its excellence is partly due to its Debian base, whose unstable branch (code named Sid) Siduction uses in order to provide current software. Despite its name this branch of Debian is more stable than its Testing branch and unlike Testing will always have packages continuously added to it.
Its excellence is also partly due to the distribution's refined use of the Btrfs filesystem by default, configured with a rational subvolume layout scheme, simialr to openSUSE's but without the added complication of an additonal subvolume hierarchy levels. It also configures Snapper for system snapshots and fully uses it to perform rollbacks, unlike some distributions which only configure a flat subvolume layout and use btrfscommands to copy and replace the subvolume mounted at the filesystem hierarchy root. This Btrfs/Snapper configuration is further refined by Siduction's own Snapper plugin-activated scripts.
The distribution also provides a 300+ page manual as a PDF, installed on the system and available on their website. The manual is continuously updated, with the installed version also updated as needed. It covers all aspects of administering a Siduction system, suitable for those new to Siduction and even novice Linux users.
I intend to keep Siduction on both of my laptops indefinately. On the Dell G5, it is one of the distribution I've tried recently that does not have problems during resuming from sleep, so it will definitely stay on that laptop. If I have to make room on my five-boot Legion, I will probably replace Kubuntu before I replace Siduction.
I recommend Siduction, however, new users have to be prepared for periods when upgrades are temporarily not possible when new versions of large, complicated software with many component packages are added to Debian Sid. Also, users have deeper knowledge of APT and its tools, and even the lower level dpkg, than is necessary when using Ubuntu or its derivatives.