Chapitre 11. Personnaliser votre installation de Debian GNU/Linux

Table des matières

11.1. Comment puis-je m'assurer que tous les programmes utilisent le même format de papier ?
11.2. Comment autoriser l'accès aux périphériques matériels sans compromettre la sécurité ?
11.3. Comment charger une police pour la console au démarrage de Debian ?
11.4. Comment configurer les paramètres par défaut des programmes X11 ?
11.5. Comment démarre un système Debian ?
11.6. Et qu'en est-il de Debian et de l'initialisation traditionnelle par System V ?
11.7. Et existe-t-il encore d'autres manières d'amorcer un système Debian ?
11.8. Comment le système de gestion de paquets traite-t-il les paquets qui contiennent des fichiers de configuration pour d'autres paquets ?
11.9. Comment remplacer un fichier installé par un paquet, de sorte qu'une version différente puisse être employée à la place ?
11.10. Comment puis-je inclure mon paquet construit localement dans la liste des paquets disponibles connus par le système de gestion des paquets ?
11.11. Certains utilisateurs apprécient mawk, d'autres gawk ; certains utilisent vim, d'autres elvis ; certains préfèrent trn, d'autres tin ; comment Debian gère-t-elle la diversité ?

11.1. Comment puis-je m'assurer que tous les programmes utilisent le même format de papier ?

Installez le paquet libpaper1, il vous sera demandé d'indiquer le format de papier utilisé sur le système. Cette configuration sera sauvegardée dans le fichier /etc/papersize.

Les utilisateurs peuvent modifier la configuration du format de papier en utilisant la variable d'environnement PAPERSIZE. Pour plus d'informations, reportez-vous à la page de manuel papersize(5).

11.2. Comment autoriser l'accès aux périphériques matériels sans compromettre la sécurité ?

De nombreux fichiers de périphérique du répertoire /dev appartiennent à des groupes prédéfinis. Par exemple, /dev/sr0 appartient au groupe cdrom.

Si vous souhaitez que certains utilisateurs puissent accéder à ces périphériques, vous devez juste ajouter les utilisateurs dans le groupe du périphérique. Faites

adduser utilisateur groupe

Cette méthode vous permet de ne pas changer les permissions sur le fichier du périphérique.

Si vous effectuez cette opération depuis l'interpréteur de commandes d'un utilisateur ou en utilisant une interface graphique, vous devez vous déconnecter puis vous reconnecter pour devenir effectivement un membre de ce groupe. Pour vérifier à quels groupes vous appartenez, lancez la commande groups.

Faites attention, car depuis l'introduction de udev, si vous modifiez les droits d'un périphérique, ils pourraient être modifiés au lancement du système pour certains périphériques ; si cela arrive à un périphérique qui vous intéresse en particulier, vous devrez modifier les règles dans /etc/udev.

11.3. Comment charger une police pour la console au démarrage de Debian ?

Le paquet kbd permet cela, éditez le fichier /etc/kbd/config.

11.4. Comment configurer les paramètres par défaut des programmes X11 ?

Les programmes X de Debian installent leurs données de configuration dans le répertoire /etc/X11/app-defaults/. Si vous souhaitez personnaliser globalement les applications X, mettez vos personnalisations dans ces fichiers. Ils sont considérés comme fichiers de configuration, donc leur contenu sera conservé pendant les mises à jour.

11.5. Comment démarre un système Debian ?

Like all Unices, Debian boots up by executing the program init. Like most Linux distributions, a default Debian system uses systemd as the implementation of init. Traditional System-V style init and other methods are also supported. [6]

Pour contrôler l'ordre de lancement des services, les systèmes Unix utilisant la méthode traditionnelle System-V ont runlevels. Ceux-ci sont remplacés par des targets sous systemd. Pour afficher la cible par défaut (default targt) du système visée par systemd, lancez la commande

systemctl get-default

Lors de l'amorçage, systemd démarre les services ou les autres cibles listées dans le fichier de cibles par défaut /lib/systemd/system/default.target. Les fichiers de ces services et de ces cibles sont installés et les services sont activés lors de l'installation du paquet Debian. Si vous ne voulez pas démarrer un service en particulier lors de l'amorçage, plutôt que de supprimer le paquet correspondant, vous pouvez lancer la commande

systemctl disable service.service

en utilisant le nom du fichier du service installé dans /lib/systemd/system (généralement basé sur le nom du paquet).

The service file /lib/systemd/system/rc-local.service provides an easy way to run customized scripts in the file /etc/rc.local after boot-up, similar to what's offered on Debian systems running System-V style init. Beware: this script will fail if it tries to interact with the console such as asking for a user password or trying to clear the screen.

Vous pouvez vérifier l'état d'un service avec la commande

service paquet status

. Pour démarrer ou arrêter un service, lancez

service paquet start

et

service paquet stop

. La commande service fonctionne avec n'importe quel service d'initialisation supporté par un système Debian et pas seulement avec systemd. Si vous préférez toutefois utiliser la même commande que sur tous les systèmes Linux supportant systemd, lancez

systemctl status paquet.service

pour vérifier l'état et obtenir les mêmes informations.

Pour plus d'informations sur systemd pour Debian, consultez https://wiki.debian.org/systemd.

11.6. Et qu'en est-il de Debian et de l'initialisation traditionnelle par System V ?

Debian supporte l'amorçage par System V, via le paquet sysvinit-core. Le fichier de configuration init pour System V (qui est /etc/inittab) précise que le premier script à exécutr devrait être /etc/init.d/rcS. Ce fichier lance tous les scripts de /etc/rcS.d/ en forkant les sous-processus pour procéder à des initialiations telles que la vérification et le montage des systèmes de fichiers, le chargement de modules, le démarrage des services réseax, le réglage de l'horloge, et autres.

Après avoir fini le processus de démarrage, init exécute tous les scripts de démarrage du niveau d'exécution (« runlevel ») par défaut (ce niveau d'exécution est indiqué par le champ id du fichier /etc/inittab ). Comme la plupart des Unix compatibles System V, Linux a sept niveaux d'exécution :

  • 0 (arrêt du système),

  • 1 (mode mono-utilisateur ou mode maintenance),

  • 2 à 5 (différents modes multi-utilisateur) et

  • 6 (redémarrage du système).

Les systèmes Debian sont configurés avec id=2, ce qui implique que le niveau d'exécution par défaut est '2' lorsqu'on entre dans l'état multi-utilisateur et ce sont les scripts de /etc/rc2.d/ qui seront exécutés.

Debian utilise l'ordonnancement du démarrage basé sur les dépendances avec insserv, grâce aux en-têtes LSB de chaque script de /etc/init.d/, comme le démarrage concurrent en parallèle utilisant startpar pour accélérer le processus de démarrage.

Les scripts dans tous les répertoires /etc/rcN.d/ sont simplement des liens symboliques vers les scripts du répertoire /etc/init.d/. Cependant, c'est le nom des liens dans chacun des répertoires /etc/rcN.d/ qui indique la manière dont les scripts de /etc/init.d/ seront exécutés. Spécifiquement, avant d'entrer dans un niveau d'exécution, tous les scripts commençant par un 'K' sont lancés, ces scripts arrêtent les services. Puis les scripts commençant avec 'S' sont lancés, ils démarrent les services. Le nombre à deux chiffres suivant les lettres 'K' ou 'S' indique l'ordre dans lequel seront exécutés les scripts. Les scripts ayant les chiffres les plus petits sont exécutés en premier.

Cette approche fonctionne parce que les scripts de /etc/init.d/ prennent tous un paramètre qui peut être « start », « stop », « reload », « restart » ou « force-reload » et puis exécuteront la fonction indiquée par le paramètre. Ces scripts peuvent être aussi utilisés après le démarrage du système, pour contrôler divers services.

Par exemple, avec l'argument « reload » la commande

/etc/init.d/sendmail reload

envoie au démon sendmail un signal pour relire son fichier de configuration.

Veuillez noter qu'invoke-rc.d ne devrait pas être utilisé pour appeler les scripts /etc/init.d/, service devrait être utilisé à la place.

11.7. Et existe-t-il encore d'autres manières d'amorcer un système Debian ?

Si vous tenez à l'initialisation par System V, mis que vous n'aimez pas les liens /etc/rc?.d/*, vous pouvez installer le paquet file-rc. Il convertira les liens en un fichier de configuration /etc/runlevel.conf.

Si vous n'aimez ni System V ni systemd, vous pourriez aimer openrc, runit ou daemontools.

11.8. Comment le système de gestion de paquets traite-t-il les paquets qui contiennent des fichiers de configuration pour d'autres paquets ?

Certains utilisateurs souhaitent créer, par exemple, un nouveau serveur en installant des paquets provenant de Debian et un paquet créé localement, contenant des fichiers de configuration. Ce n'est généralement pas une bonne idée, parce que dpkg ne connaîtra pas ces fichiers de configuration s'ils sont dans un paquet différent et risque de modifier les fichiers de configuration quand l'un des paquets initiaux sera mis à jour.

Au lieu de cela, créez un paquet local pour modifier les fichiers de configuration des paquets de Debian. Puis dpkg et le reste du système de gestion de paquets verront que les fichiers ont été modifiés par l'administrateur et n'essayeront pas de les écraser quand ces paquets sont mis à jour.

11.9. Comment remplacer un fichier installé par un paquet, de sorte qu'une version différente puisse être employée à la place ?

Supposez qu'un administrateur ou un utilisateur local souhaite utiliser un programme « login-local » plutôt que le programme « login » fourni par le paquet Debian login.

Ne pas :

  • remplacer /bin/login avec login-local.

Le système de gestion des paquets ne saura rien de ce changement et écrasera simplement votre /bin/login personnalisé à chaque fois que login (ou tout autre paquet fournissant /bin/login) sera installé ou mis à jour.

Faites, plutôt

  • Exécutez :

    dpkg-divert --divert /bin/login.debian /bin/login
    

    afin que toutes les installations futures du paquet Debian login écrivent le fichier /bin/login dans /bin/login.debian.

  • puis tapez :

    cp login-local /bin/login
    

    pour déplacer votre programme construit localement au bon endroit.

Exécutez dpkg-divert --list pour obtenir la liste des remplacements actuellement actifs sur votre système.

Pour plus d'informations, lisez la page de manuel dpkg-divert(8).

11.10. Comment puis-je inclure mon paquet construit localement dans la liste des paquets disponibles connus par le système de gestion des paquets ?

Lancer la commande :

dpkg-scanpackages BIN_DIR OVERRIDE_FILE [PATHPREFIX] > mes_Paquets

Où :

  • BIN-DIR est le répertoire où les archives Debian (généralement ils ont « .deb » comme extension) sont conservés.

  • OVERRIDE_FILE is a file that is edited by the distribution maintainers and is usually stored on a Debian archive at indices/override.main.gz for the Debian packages in the "main" distribution. You can ignore this for local packages.

  • PATHPREFIX est une chaîne optionnelle qui peut être ajoutée au début du fichier mes_Paquets créé.

Une fois que vous avez construit le fichier mes_Paquets, appelez le système de gestion des paquets en utilisant la commande :

dpkg --merge-avail mes_Paquets

Si vous utilisez APT, vous pouvez aussi ajouter votre dépôt local dans votre fichier sources.list(5).

11.11. Certains utilisateurs apprécient mawk, d'autres gawk ; certains utilisent vim, d'autres elvis ; certains préfèrent trn, d'autres tin ; comment Debian gère-t-elle la diversité ?

Il y a plusieurs cas où deux paquets fournissent deux versions différentes d'un programme et où tous les deux fournissent la même fonctionnalité. Les utilisateurs pourraient préférer un plutôt qu'un autre inhabituel, ou parce que l'interface utilisateur d'un paquet est d'une façon ou d'une autre plus agréable que l'interface des autres. D'autres utilisateurs sur le même système pourraient faire des choix différents.

Debian emploie un système de paquets « virtuels » pour permettre aux administrateurs de choisir (ou laisser les utilisateurs choisir) leurs outils favoris quand il y en a plusieurs qui fournissent la même fonctionnalité de base, en répondant aux exigences de dépendance du paquet sans indiquer de paquet particulier.

Par exemple, il peut y avoir sur un système deux versions différentes d'un programme de lecture de nouvelles. L'installation d'un serveur de nouvelles peut recommander la présence d'un programme de lecture de nouvelles sur le système et laisser le choix de tin ou de trn aux utilisateurs. Ceci est possible parce que les paquets tin et trn fournissent le paquet virtuel news-reader. Le programme qui sera appelé est déterminé par le lien symbolique /etc/alternatives/news-reader pointant vers le programme choisi, par exemple /usr/bin/trn.

Un lien simple est insuffisant pour gérer l'utilisation complète d'un programme alternatif ; normalement, les pages de manuel et probablement d'autres fichiers de support doivent être aussi accessibles. Le script Perl update-alternatives fournit le moyen de s'assurer que le système choisit bien par défaut tous les fichiers associés au paquet indiqué.

Par exemple, pour vérifier quel exécutable fournit le gestionnaire de fenêtres (x-window-manager), exécutez :

update-alternatives --display x-window-manager

Si vous souhaitez le modifier, tapez la commande :

update-alternatives --config x-window-manager

et suivez les instructions affichées à l'écran (saisissez le nombre correspondant à votre choix)

Si un paquet ne s'enregistre pas lui-même comme gestionnaire de fenêtres pour différentes raisons, (remplissez un rapport de bogue si c'est une erreur) ou si vous utilisez un gestionnaire de fenêtres présent dans le répertoire /usr/local, les choix sur l'écran ne contiendront pas votre entrée préférée. Vous pouvez mettre à jour le lien par des options de ligne de commande, comme ceci :

update-alternatives --install /usr/bin/x-window-manager \
  x-window-manager /usr/local/bin/wmaker-cvs 50

Le premier paramètre de l'option « --install » est un lien symbolique qui pointe vers /etc/alternatives/NOM, où NOM est le deuxième paramètre. Le troisième paramètre est le programme vers lequel /etc/alternatives/NOM pointe et le quatrième paramètre est la priorité (une plus grande valeur signifie que l'alternative sera très probablement sélectionnée automatiquement).

Pour supprimer une alternative que vous avez ajoutée, lancez simplement :

update-alternatives --remove x-window-manager /usr/local/bin/wmaker-cvs


[6] In 2014, Debian changed its default init system from System V init to systemd. Debian 8 "jessie" in April 2015 was the first release to ship with systemd as default init. Four decisions of the Debian Technical Committee were involved: Bug #727708 2014-02-11: "The committee decided that the default init system for Linux architectures in jessie should be systemd." Bug #746715 2014-08-01: "The technical committee expects maintainers to continue to support the multiple available init systems", and merge reasonable contributions. Bug #746578 2014-11-15: "The committee decided that systemd-shim should be the first listed alternative dependency of libpam-systemd instead of systemd-sysv." This decision made it easier to keep running a non-systemd Debian system. Bug #7621942017-11-04: "On automatic init system switching on upgrade"