-
-
-
-
-
- Tools
- Dev
- Bash
- Recherche web
-
Devuan GNU/Linux est un fork de Debian sans systemd qui permet aux utilisateurs de reprendre le contrôle de leur système en évitant les enchevêtrements inutiles et en garantissant Init Freedom1).
Le site officiel de Devuan est devuan.org. Son forum officiel est dev1galaxy.org.
Cette page s'adresse aux personnes qui ont des compétences en administration des systèmes de type UNIX.
Dans l'espoir que cela soit utile, je partage ci-dessous quelques particularités rencontrées au cours de mon utilisation de la distribution GNU/Linux Devuan, de ses installations et de ses mises à niveau successives depuis Debian 7.
Les noms usuels des versions Devuan proviennent du catalogue international des planètes, tandis que les noms usuels des versions Debian proviennent des personnages du film d'animation Toy Story.
Devuan | Basé sur | Date de publication | Fin du support | Fin du support à long terme |
---|---|---|---|---|
Devuan 1 Jessie | Debian 8 Jessie (release-notes) | 25/05/2017 | 17/06/2018 | 30/06/2020 |
Devuan 2 Ascii (Release_notes) | Debian 9 Stretch (release-notes) | 08/06/2018 | 30/06/2020 | 30/06/2022 |
Devuan 3 Beowulf (Release_notes) | Debian 10.4 Buster | 02/06/2020 | 07/2022 ? | 06/2024 ? |
Devuan 4 Chimaera (release-notes) | Debian 11.1 Bullseye (Release note) | 14/10/2021 | 07/2024 ? | 06/2026 ? |
Devuan 5 Daedalus | Debian 12 Bookworm | |||
Devuan 6 | Debian 13 Trixie |
Bien que le récent programme systemd (absent de Devuan) soit un contre-exemple éloquent, les distributions GNU/Linux restent marquées par le principe KISS des anciens systèmes d’exploitation UNIX consistant à demander à chaque programme d’effectuer une seule tâche simple. Il en résulte que si le fonctionnement de GNU/Linux en mode texte est simple, son fonctionnement en mode graphique devient plus complexe parce qu’il est obligé de faire appel à plusieurs programmes effectuant chacun une tâche simple.
Cette division du travail permet notamment d’augmenter la sécurité en restreignant le plus tôt possible les permissions des programmes qui démarrent en mémoire.
Ainsi, en général pour afficher un bureau cliquable à l’utilisateur, GNU/Linux commence par démarrer à la fois un gestionnaire de session graphique et un gestionnaire de connexion graphique. Le gestionnaire de connexion graphique démarre à son tour le serveur d’affichage graphique (par exemple Xorg) et demande à l’utilisateur un couple identifiant / mot de passe. Si celui-ci fourni la bonne combinaison, le gestionnaire de connexion graphique en lien avec le gestionnaire de connexion graphique, démarre le gestionnaire d’environnement de bureau (par exemple XFCE) avec des permissions limitées, c’est-à-dire sous l’identifiant de l’utilisateur qui a été approuvé. Comme ce gestionnaire d’environnement de bureau fonctionne sous l’identifiant de l’utilisateur, tous les programmes fils qu’il démarre fonctionnent également dans le cadre restreint de cet utilisateur. Parmi ces programmes fils se trouvent par exemple le gestionnaire de fenêtres (qui s’occupe de dessiner les fenêtres à la demande) et l’explorateur de fichiers en mode gestionnaire de bureau (qui s’occupe de démarrer les programmes à la demande par simple clic de souris).
À partir de Devuan 2, l’affichage graphique nécessite l’installation d’un des deux gestionnaires de sessions graphiques suivant à l’exclusion de l’autre : consolekit (/lib/systemd/system/console-kit-daemon.service
) et logind (/etc/init.d/elogind
) (source). Le fonctionnement de ces deux gestionnaires de sessions concurrents repose sur le sous-programme d'authentification Polkit, anciennement nommé PolicyKit.
Attention : l’exclusion / inclusion des paquets logiciels n’est pas toujours indiquée dans les méta-données des paquets principaux consolekit et logind. C’est pourquoi afin qu’un de ces deux gestionnaires de sessions fonctionne correctement, il faut s’assurer que tous ses paquets logiciels sont installés et qu’aucun paquet de l’autre gestionnaire ne l’est.
Paquets qui doivent être installés exclusivement pour logind pas pour consolekit :
elogind libpam-elogind libelogind0 libpolkit-backend-elogind-1-0 libpolkit-gobject-elogind-1-0
Paquets qui doivent être installés exclusivement pour consolekit (pas pour logind) :
consolekit libpam-ck-connector libpolkit-backend-consolekit-1-0 libpolkit-gobject-consolekit-1-0 libck-connector0
Test de présence des paquets en ligne de commande :
LOGIND="elogind libpam-elogind libelogind0 libpolkit-backend-elogind-1-0 libpolkit-gobject-elogind-1-0" CONSOLEKIT="consolekit libpam-ck-connector libpolkit-backend-consolekit-1-0 libpolkit-gobject-consolekit-1-0 libck-connector0" for i in $LOGIND; do dpkg -s $i &>/dev/null && echo "logind: $i installé" || echo "logind: $i non installé"; done for i in $CONSOLEKIT; do dpkg -s $i &>/dev/null && echo "consolekit: $i installé" || echo "consolekit: $i non installé"; done
Sous Devuan 1, consolekit est obligatoirement installé par dépendance du paquet policykit-1 (sous-programme Polkit avec le programme /usr/bin/pkexec
).
À partir de Devuan 2, le paquet logiciel policykit-1 dépend du méta-paquet transitionnel libpolkit-gobject-1-0 (PolicyKit Authorization API) qui par dépendance, laisse le choix entre le paquet libpolkit-gobject-consolekit-1-0 et le paquet libpolkit-gobject-elogind-1-0
Cependant, sous Devuan 2, le choix de l’environnement de bureau lightdm nécessite pour fonctionner correctement que l’administrateur opte pour le gestionnaire de session logind au lieu de consolekit.
Sous Devuan 3, n’importe lequel des deux gestionnaires de session consolekit et logind peut être installé à l’exclusion de l’autre (source).
Synthèse des configurations recommandées :
Version Devuan | Environnement de bureau | Gestionnaire de connexion graphique | Gestionnaire de session graphique |
Devuan 1 | XFCE | slim ou lightdm | consolekit requis par le paquet policykit-1 |
Devuan 2 | XFCE | slim | consolekit |
Cinnamon | lightdm | logind | |
KDE | lightdm | logind | |
LXQT | lightdm | logind | |
MATE | slim | consolekit | |
Devuan 3 | XFCE | slim (par défaut) ou lightdm | logind (par défaut) ou consolekit |
Cinnamon | lightdm (par défaut ou slim | logind (par défaut) ou consolekit | |
KDE | lightdm (par défaut ou slim | logind | |
LXQT | lightdm (par défaut ou slim | logind | |
MATE | lightdm (par défaut ou slim | logind |
Note : LXDE reste encore installable sous Devuan 3 mais est toujours déconseillé à cause de bugs non corrigés pour cet environnement de bureau dont le développement a été suspendu au profit de LXQT (source).
Devuan 1 est basée sur Debian 8 mais conserve le SysV init de Debian 7 (provenant de UNIX_System_V) comme système d’initialisation du système dexploitation. Cette initialisation est moins rapide que Systemd adopté sur Debian 8 et suivant, mais il conserve l’esprit UNIX et du hacking (personnalisation) accessible.
À partir de Devuan 2, le paquet logiciel eudev remplace le paquet logicielUdevparce que celui-ci dépend désormais de l’usine à gaz Systemd. Ceci est transparent pour la plupart des utilisateurs, sauf pour les personnes expérimentées qui cherchent par exemple à adapter certains pilotes de (vieux) périphériques.
Note pour Debian : À cause de systemd, le paragraphe wiki.debian.org > NewInBuster > Network interface name migration indique : "The buster release notes warn that the /etc/udev/rules.d/70-persistent-net.rules/
method for assigning persistent network interface names is no longer supported. However, it may be difficult to predict what the new "predictable" interface name will be. The udevadm command suggested in the release notes, when run under stretch, may not show all of the possible interface name choices. Even in the cases where the name is shown, it may be difficult to see which of the choices will be the correct one."
grub>
/etc/os-release
contient Devuan au lieu de Debian. Il en résulte que l'affectation de la variable GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
dans /etc/default/grub
renvoie désormais Devuan. Cest pourquoi le programme grub-install construit ses deux programmes bootloaders UEFI grubx64.efi et shimx64.efi (secure boot) dans /boot/efi/EFI/devuan
alias <partition EFI>/EFI/devuan
au lieu de /boot/efi/EFI/debian
alias <partition EFI>/EFI/debian
. Mais ces deux programmes continuent de chercher en vain le fichier /boot/efi/EFI/debian/grub.cfg
alias <partition EFI>/EFI/debian/grub.cfg
(comme l'indique la commande strings /boot/efi/EFI/debian/grubx64.efi | grep /EFI/debian
), ce qui oblige l'utilisateur à taper manuellement configfile (hdX,gptY)/EFI/devuan/grub.cfg
afin de booter le système1. Récupérer la valeur de la partition FAT EFI en faisant echo $prefix. Exemple :
grub> echo $prefix (hd0,gpt1)/EFI/debian
2. Charger le fichier de configuration depuis le chemin correct en remplaçant dans la valeur $prefix précédemment affichée debian par devuan. Exemple :
grub> configfile (hd0,gpt1)/EFI/devuan/grub.cfg
1. Créé le fichier /etc/default/grub.d/grub_set_efi_debian.cfg
:
## /etc/default/grub.d/grub_set_efi_debian.cfg ## ## This is a workaround to the devuan 3.1 bug that prevent ## grub-install to make /boot/efi/EFI/devuan/ instead of /boot/efi/EFI/debian/ ## because with /boot/efi/EFI/devuan/, the binaries grubx64.efi and ## shimx64.efi still points to <EFI partition>/EFI/debian/grub.cfg ## instead of <EFI partition>/EFI/devuan/grub.cfg GRUB_DISTRIBUTOR=`(dpkg -s grub-efi-amd64 1>/dev/null 2>&1 && echo Debian) || (lsb_release -i -s 2> /dev/null || echo Debian)`
2. Exécuter grub-install /dev/sda
(si /dev/sda
est le disque de boot)
Préambule :
Le caractère envahissant du sous-programme d’init (usine à gaz) systemd, et d’une manière plus générale, la tendance – y compris désormais chez Debian – à privilégier la course à l’innovation (hackers open source de l’OSI) sur la solidité et l’indépendance (hackers logiciels libres de la FSF) bouleverse l’écosystème Linux en altérant le fonctionnement ordinaire des programmes qui existaient antérieurement à systemd. C’est pourquoi bien que la distribution Devuan (basée sur Debian) soit indépendante du sous-programme d’init systemd, certains des programmes qu’elle contient subissent des transformations successives qui compliquent au fil du temps son utilisation, à l’instar des autres systèmes d’exploitation GNU/Linux.
Bien que beaucoup de distributions GNU/Linux revendiquent l’universalité (en particulier Debian), on peut craindre que l’utilisateur expérimenté qui n’a pas le temps de recompiler les programmes soit un jour contraint d’utiliser deux distributions GNU/Linux différentes pour continuer d’accéder à tous ses logiciels préférés.
/etc/dbus-1/system.d/wicd.conf
qui est fourni par le paquet wicd-daemonadduser nom_utilisateur netdev ; dpkg-reconfigure wicd-daemon ; apt-get -y –reinstall install wicd-daemon
/etc/adduser.conf
. Par exemple : EXTRA_GROUPS="users fax cdrom floppy tape audio dip video plugdev fuse scanner vboxusers powerdev netdev"
Note : Le programme /usr/bin/apt
distribué avec Linux Mint est un script python, tandis que celui qui est distribué avec Debian, Devuan et Ubuntu est un fichier binaire ELF.
Différences entre /usr/bin/apt
et /usr/bin/apt-get
:
À partir de Devuan 2, les vieux microprocesseurs 32 bits de la famille i586 (Intel P5 = Intel Pentium MMX et AMD-K5) ne sont plus pris en charge (note officielle Debian). Cependant, la famille de microprocesseurs 32 bits i686 (Intel P6 = Intel Pentium Pro et AMD-K6) reste toujours supportée.
Ce fil du forum de discussion Devuan précise que les possesseurs de PC 32 bits i586 peuvent se tourner vers les distributions de la famille BSD, comme par exemple NetBSDet FreeBSD. Les utilisateurs expérimentés peuvent également installer la distribution GNU/Linux Slackware.
Pour des raisons de sécurité, à partir de la version 1.1~exp3 du 24/09/2014 du paquet apt (publié dans debian 9), les répertoires suivants doivent appartenir à _apt:root avec les permissions octales 700 :
/var/lib/apt/lists/partial
(base de données APT partielle)/var/cache/apt/archives/partial
(cache APT partiel des paquets deb)Les répertoires suivants continuent d’appartenir à root:root en permission (chmod)octale 755 :
/var/cache/apt/archives
(base de données APT)/var/lib/apt/lists
(cache APT des paquets deb, purgé via la commande apt-get clean
)Réinitialiser le cache APT depuis debian 9 / devuan 2 :
rm -rf /var/lib/apt/lists mkdir -pm 755 /var/lib/apt/lists/partial\\ chown -R _apt:root /var/lib/apt/lists/partial /var/cache/apt/archives/partial\\ chmod 700 /var/lib/apt/lists/partial /var/cache/apt/archives/partial
Réinitialiser le cache APT quelque soit la distribution debian dérivée :
rm -rf /var/lib/apt/lists mkdir -pm 755 /var/lib/apt/lists/partial if dpkg --compare-versions $(dpkg -s apt | awk '$1=="Version:"{print $2}') ge 1.1~exp3; then ## Changelog à partir de apt (1.1~exp3) du 24/09/2014 : ## * Make /var/lib/apt/lists and /var/cache/apt/archives owned ## by the new _apt user ## * Use _apt as our unprivileged user name chown -R _apt:root /var/lib/apt/lists /var/cache/apt/archives/partial chmod 700 /var/lib/apt/lists/partial /var/cache/apt/archives/partial else chmod 755 /var/lib/apt/lists/partial /var/cache/apt/archives/partial fi apt-get update
Les paquets logiciels noyaux Linux fournis par Debian 10+ recommandent l’installation du paquet logiciel apparmor qui permet de configurer et de gérer la conteneurisation des programmes par le noyau Linux. Il s’ensuit que si un fichier de configuration apparmor est mal configuré, alors il peut ralentir le démarrage du système.
Source documentaire :
À partir de Devuan 3 (Debian 10), le programme /bin/su
n’est plus fourni par le paquet logiciel login mais par le paquet util-linux.
Et à partir de la version 2.33.1-0.1 du paquet util-linux distribué par Debian, le programme /bin/su
modifie sa stratégie de préservation des variables d’environnement USER LOGNAME PATH IFS XAUTHORITY et DISPLAY sur le même schéma que celui du programme /bin/su
des développeurs amonts.
Pour initialiser correctement les variables d’environnement à leurs valeur par défaut pour l’utilisateur NOM, il faut désormais utiliser l’une des options suivantes :
su - NOM
su -l NOM
su --login NOM
Pour autant, utiliser su avec les options suivantes devient beaucoup moins intuitif :
su NOM
su -c PROGRAMME NOM
Annonces officielles par les développeurs amont du paquet util-linux :
Annonce officielle du portage du /bin/su
par les mainteneurs debian du paquet util-linux :
util-linux (2.32-0.4) unstable; urgency=medium
The util-linux implementation of /bin/su is now used, replacing the
one previously supplied by src:shadow (shipped in login package), and
bringing Debian in line with other modern distributions. The two
implementations are very similar but have some minor differences (and
there might be more that was not yet noticed ofcourse), e.g.
- new su (with no args, i.e. when preserving the environment) also
preserves PATH and IFS, while old su would always reset PATH and IFS
even in preserve environment mode.
- new su - (creating new environment) will do just that, while old
su would always preserve content of DISPLAY and XAUTHORITY
environment variables. Set them as needed (but beware X doesnt give
you any real privileges separation anyway if you can access an X
server of another user). See pam_xauth(8) if you want to reconfigure
pam for seamless xauth keys.
- su (empty user string) used to give root, but now returns an error.
- previously su only had one pam config, but now su - is configured
separately in /etc/pam.d/su-l. This file additionally invokes
pam_keyinit to revoke the session keyring.
The first difference is probably the most user visible one. Doing
plain su is a really bad idea for many reasons, so using su - is
strongly recommended to always get a newly set up environment similar
to a normal login. If you want to restore behaviour more similar to
the previous one you can add ALWAYS_SET_PATH yes in /etc/login.defs.
– Andreas Henriksson <…> Fri, 03 Aug 2018 10:52:22 +0200
Tableau de synthèse Préserve la variable d’environnement |
|||||
USER LOGNAME | PWD | PATH IFS | XAUTHORITY DISPLAY |
||
su nom | su root | OUI (Devuan 2 : NON) | OUI | OUI (Devuan 2 : NON) | OUI |
su demo2 | NON | OUI | OUI | OUI | |
su -c bash nom | su -c bash root | OUI (Devuan 2 : NON) | OUI | OUI (Devuan 2 : NON) | OUI |
su -c bash demo2 | NON | OUI | OUI | OUI | |
su - nom | su - root | NON | NON | NON | NON (Devuan 2 : OUI) |
su - demo2 | NON | NON | NON | NON (Devuan 2 : OUI) |
|
su -l nom su --login nom | su -l root su –login root | NON | NON | NON | NON (Devuan 2 : OUI) |
su -l demo2 su --login demo2 | NON | NON | NON | NON (Devuan 2 : OUI) |
Note : Comme l’écrit un utilisateur sur le forum dev1galaxy.org, pour revenir approximativement à l'ancien comportement de /bin/su
, il faut ajouter une ligne "ALWAYS_SET_PATH yes" dans le fichier /etc/login.defs
(et non dans le fichier /etc/default/su
comme c’est indiqué par erreur dans le man de su !!!)
L’utilisateur qui pratiquait déjà /bin/su
doit s’habituer à utiliser su -
ou su -l
ou su –login
au lieu de su
tout seul. Mais même s’il fait l’effort d’adopter de nouveaux automatismes, il doit conserver en mémoire que les variables d’environnement XAUTHORITY et DISPLAY ne sont plus préservées avec ces commandes.
Concrètement, si l’utilisateur veut lancer une commande externe d’administration comme nft sans être obligé de taper son chemin complet /usr/sbin/nft
, il commencera par écrire su -
ou su -l
ou su –login
.
Un programme, et en particulier un script shell, ne peut plus tester l'utilisateur avec certitude via les variables USER et LOGNAME. Il est recommandé de vérifier et corriger tous les anciens scripts shell (bash, dash, C shell, Korn shell, Z Shell, etc.) de personnalisation avant la mise à niveau de Devuan 2 vers Devuan 3 :
`id -u`
, recours à la chaîne `id -un`
ou à la chaîne `whoami`
. Exemple d’ajout en début de script :## /bin/su debian 10+ update fix: dash/bash compliant workaround ## Doc: https://sources.debian.org/src/util-linux/2.33.1-0.1/debian/util-linux.NEWS export USER=`id -un`; export LOGNAME=$USER if test `id -u` -eq 0; then echo $PATH | grep -Eq /sbin\> || export PATH="$PATH:/usr/local/sbin:/usr/sbin:/sbin" fi
Les autres programmes ne doivent plus utiliser des méthodes basées sur l’environnement pour récupérer le nom d’utilisateur et son répertoire personnel. Par exemple, les scripts python ne doivent plus utiliser os.getlogin()
, os.getenv("USER")
, os.environ["USER"]
ou os.environ["LOGNAME"]
mais plutôt : pwd.getpwuid(os.getuid()).pw_name
Les programmes graphiques d'exécution de commandes par élévation de privilège gksu et gksudo ont disparu des dépôt GNU/Linux à partir des distribution Debian 10 / Devuan 3, Ubuntu 18.04, etc., au profit de /usr/bin/pkexec
qui rend la vie beaucoup plus compliquée (sous-programme Polkit avec le programme /usr/bin/pkexec
fourni dans toutes les distributions GNU/Linux en complément alternatif du programme sudo).
Explications :
Contournements du bug :
pkexec
est recommandée en remplacement de gksu
et gksudo
, mais elle nécessite qu'un fichier de configuration correspondant au programme concerné ait été créé au préalable (Documentation wiki.debian.org > PolicyKit)kde-runtime
qui contient le programme /usr/lib/kde4/libexec/kdesu-distrib/kdesu
(manpage debian). /usr/lib/kde4/libexec/kdesu
est un lien symbolique vers l'alternative /etc/alternatives/kdesu
qui est lui-même un lien symbolique vers le programme /usr/lib/kde4/libexec/kdesu-distrib/kdesu
installé par le paquet kde-runtime
)
Prérequis pour exécuter un programme en tant que root via pkexec
:
1. Un programme résident ("agent") doit être chargé en mémoire au démarrage de la session utilisateur graphique. Selon la configuration il s’agit de l’un des programmes suivants :
Programme résident "agent" pour pkexec | Paquet logiciel |
---|---|
/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 | policykit-1-gnome |
/usr/lib/x86_64-linux-gnu/libexec/polkit-kde-authentication-agent-1 | polkit-kde-agent-1 |
/usr/lib/x86_64-linux-gnu/polkit-mate/polkit-mate-authentication-agent-1 | mate-polkit |
/usr/bin/lxqt-policykit-agent | lxqt-policykit |
/usr/bin/lxpolkit | lxpolkit |
/usr/bin/gnome-shell | gnome-shell |
/usr/bin/gnome-flashback | gnome-flashback |
2. La valeur de la variable SHELL de l’utilisateur appelant doit être présent dans la liste /etc/shells
3. Un fichier de règle au format .policy et avec les permissions 644 doit exister pour ce programme dans le répertoire /usr/share/polkit-1/actions/
. Exemple simplifié pour le gestionnaire graphique de paquet synaptic :
demo@devuan3:~$ cat /usr/share/polkit-1/actions/com.ubuntu.pkexec.synaptic.policy <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd"> <policyconfig> <action id="com.ubuntu.pkexec.synaptic"> <message>Authentication is required to run the Synaptic Package Manager</message> <message xml:lang="en_GB">Authentication is required to run the Synaptic Package Manager</message> <message xml:lang="fr">Une authentification est requise pour exécuter le gestionnaire de paquets Synaptic</message> <icon_name>synaptic</icon_name> <defaults> <allow_any>auth_admin</allow_any> <allow_inactive>auth_admin</allow_inactive> <allow_active>auth_admin</allow_active> </defaults> <annotate key="org.freedesktop.policykit.exec.path">/usr/sbin/synaptic</annotate> <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate> </action>
Niveau d’encre : Le paquet officiel epson-printer-utility reposant sur les bibliothèques Linux Standard Base (LSB) abandonnées dans Debian depuis 2015, cet utilitaire est incompatible avec Debian 10+ et Devuan 3+.
Plus d'explications : wiki.debian.org > LSB et lwn.net > Debian dropping the Linux Standard Base (LSB semble toujours exister chez Ubuntu).
Niveau d'encre en console :
ink -p usb
sudo escputil -i -r /dev/usb/lp0
(GUI : possibilité d'adapter le très vieux script python stylus-toolbox)
Le programme /usr/sbin/update-usbids
du paquet usbutils
est supprimé.
À partir de Debian 10, le programme /usr/sbin/update-usbids
est supprimé du paquet usbutils, semble-t-il au profit d'une méthode basée sur systemd :
À partir de la version 1.5 du paquet apt
– donc de Debian 10 / Devuan 3 –, la méthode de transport https est nativement prise en charge par le programme APT. Le méta-paquet apt-transport-https
peut donc être désinstallé.
Avant toute mise à niveau de Devuan 2 vers Devuan 3, il est OBLIGATOIRE sous peine de casse du système, que tous les paquets provenant du dépôt deb-multimedia.org soient remplacés (rétrogradés) par leurs versions provenant du dépôt Devuan 2 officiel. Tous les paquets du dépôts deb-multimedia.org ont un numéro de version qui se termine par "-dmo1". Si bien que la commande dpkg -l | grep "\-dmo1"
permet de savoir si le système est concerné par ce problème. Si c’est le cas, voici la procédure à suivre :
1. Configuration d’un pinning APT provisoire :
cat > /etc/apt/preferences.d/temp.50_remove_deb-multimedia.org.pref <<\EOF Explanation: Pin-Priority < 0: Only install package updates from deb-multimedia.org manually Package: * Pin: origin *.deb-multimedia.org Pin-Priority: -1 EOF chmod 644 /etc/apt/preferences.d/temp.50_remove_deb-multimedia.org.pref cat > /etc/apt/preferences.d/temp.60_force_install_from_devuan.org.pref <<\EOF Explanation: Pin-Priority > 1000: Automatically install a package from Debian even if it forces to downgrade from a greater installed version Package: * Pin: release o=devuan Pin-Priority: 1001 EOF chmod 644 /etc/apt/preferences.d/temp.60_force_install_from_devuan.org.pref
2. Rétrogradation des paquets concernés :
apt-get -y --allow-downgrades --simulate dist-upgrade 2>&1 | tee apt-get_downgrade.log ## Si tout est OK dans le fichier apt-get_downgrade.log, enlever le mode simulation : apt-get -y --allow-downgrades dist-upgrade
3. Désinstallation des paquets restants qui proviennent de deb-multimedia.org :
(par exemple le paquet avidemux qui est n'est pas fourni par les dépôts officiels Debian et reste officiellement disponible au format AppImage)
dpkg -l | awk '$3~/^[0-9].*-dmo[0-9]/&&$1~/^.[iufh]$/{print $2}' | xargs apt-get -y --simulate purge 2>&1 | tee apt-get_purge.log ## Si tout est OK dans le fichier apt-get_purge.log, enlever le mode simulation : dpkg -l | awk '$3~/^[0-9].*-dmo[0-9]/&&$1~/^.[iufh]$/{print $2}' | xargs apt-get -y purge 2>&1 | tee apt-get_purge.log ## Conseil : Grâce au paquet logiciel apt-show-versions, vérifier si d’autres paquets absents des dépôts ne sont pas inutiles sur le disque dur ## (vieux noyaux Linux, vieux pilotes d’imprimantes, etc.) : apt-show-versions -a | awk -F: '$0~/No available version in archive/{print $1}'
4. Suppression manuelle dans /etc/apt/sources.list
ou dans /etc/apt/sources.list.d/
de toute référence à deb-multimedia.org
(Vérification : grep -Hrn deb-multimedia.org /etc/apt
)
5. Suppression du pinning APT provisoire :
rm -v/etc/apt/preferences.d/temp.*.pref
Après cette dernière étape, la mise à niveau vers Devuan 3 est possible sans grande difficulté.
aptitude why not nom_paquet
est notre ami. Concrètement, le paquet gimp 2.10.8-2 dépend du paquet bibliothèque de sous-programmes libmypaint-1.3-0 qui dépend du paquet libmypaint-common dont la méta-donnée de paquet indique quil est en conflit avec le paquet mypaint-data. Or le paquet mypaint dépend du paquet mypaint-data. Les développeurs de MyPaint ont été avertis en 2018 de ce problème qui concerne toutes les distributions GNU/Linux :apt-get -y –allow-downgrades install libbabl-0.1-0=0.1.62-1
) en cassant la cohérence de l'arbre des dépendances des paquetsdh_auto_configure
" affichées dans les pages de liens "Maybe-Successfull" de la page buildd.debian.org > Build logs for k3b pour les versions de paquets k3b sans buglibreoffice-gtk3