Améliorer la stabilité d'Arch Linux

De ArchwikiFR


L'objectif de cet article est de donner des conseils en vue d'obtenir un système sous Arch aussi stable que possible. Bien que les développeurs et les utilisateurs de confiance (NdT Trusted users) travaillent à produire des paquets de haute qualité, étant donné le système de publications rapides et permanent d'Arch, Arch Linux peut ne pas être approprié pour un système ayant une mission critique ou pour un environnement de production commercial.

Cependant, Arch est intrinsèquement stable en raison de son engagement en faveur de la simplicité dans la configuration, couplé à un cycle rapide rapport de problème/résolution ainsi qu'à l'utilisation de code source en amont non modifié (Arch applique très peu de correctifs). Ainsi, en suivant les conseils suivants sur le paramétrage et la maintenance d'Arch, l'utilisateur doit être capable de jouir d'un système très stable. De plus, des conseils qui permettront de réparer le système en cas de dysfonctionnements majeurs sont fournis.

Jusqu'à quel point Archlinux peut-il être stable ? Il y a de nombreux témoignages sur les forums d'Arch Linux d'administrateurs systèmes expérimentés ayant réussi à utiliser Arch Linux sur des serveurs en production. Archlinux.org est un de ces exemples. Sur une machine de bureau (NdT: Desktop), une installation proprement configurée et maintenue offre une excellente stabilité.

Paramétrer Archlinux

Lors de l'installation et de la configuration d'Arch Linux, l'utilisateur a plusieurs choix à faire concernant la configuration, les logiciels ou les pilotes. Ces choix impacteront la stabilité globale du système.

Conseils spécifiques à Arch

Prévoir une grande partition /var et garder les anciens paquets

Lorsque vous paramétrez les partitions lors de l'installation, prévoyez toujours beaucoup d'espace disque pour une partition /var séparée (ou prenez en compte cette taille dans votre racine). Une partition /var devrait avoir 6 à 8 Go d'espace pour ne pas avoir à vider le cache trop souvent (pacman -Sc), voire plus pour l'utilisation de serveurs. Pacman archive tous les paquets précédemment installés dans /var/cache/pacman/pkg ce qui nécessite une certaine quantité d'espace de stockage. Conserver ces paquets est utile dans le cas où un paquet récemment mis à jour entraîne une instabilité et nécessite de revenir à sa version précédente.

Soyez prudent avec les paquets non officiels et moins testés

Évitez l'utilisation du dépôt testing ou de paquets individuels provenant de testing. Ces paquets expérimentaux sont destinés au développement et aux tests, pas à un système stable.

Utilisez avec précaution les paquets provenant de AUR. La plupart de ces paquets sont fournis par les utilisateurs et peuvent ne pas répondre aux mêmes standards d'empaquetage que ceux des dépôts officiels. Vérifiez toujours le PKGBUILD des paquets d'AUR pour y rechercher la présence éventuelle de code malicieux ou d'erreurs avant de les construire et de les installer.

Soyez prudent avec les assistants AUR qui simplifient l'installation de paquets AUR et peuvent conduire à la construction et à l'installation de paquets mal conçus ou malicieux. Vous devez toujours vérifier la validité des PKGBUILDs avant de construire ou d'installer ces paquets.

Enfin, il est fortement déconseillé d'utiliser un assistant AUR, ou la commande makepkg en tant qu'administrateur (root).


N'utilisez des dépôts tiers qu'en cas de nécessité absolue et si vous savez ce que vous faites. En tout état de cause, n'utilisez que les dépôts fournis par une source de confiance.

Utilisez des miroirs à jour

Utilisez des miroirs qui sont mis fréquemment à jour avec les derniers paquets du serveur FTP principal d'Arch. Consultez la page de statut des mirroirs pour vérifier que le miroir que vous avez choisi est à jour. En utilisant des miroirs récemment synchronisés, vous êtes sûr de toujours avoir les paquets les plus récents et une disponibilité des bases de données de paquets pendant l'entretien de routine.

Si nécessaire, éditez votre liste de miroirs dans /etc/pacman.d en y plaçant les miroirs locaux, ceux de votre pays ou de votre région en haut de la liste. Reportez-vous à la page Miroirs pour plus de détails. Ces étapes vous assureront d'avoir les dépôts les rapides et les plus sûrs.

Après avoir changé les serveurs utilisés pour les mises à jour, assurez-vous que le système est à jour en lançant la commande pacman -Syu.

Évitez les paquets de type développement

Afin de vous prémunir de sérieux problèmes, n'installez pas les paquets de développement que l'on trouve généralement dans AUR ou parfois dans community. Ces paquets prennent le code directement dans la branche de développement du projet et possèdent dans le nom du paquet l'extension suivante : dev, devel, svn, cvs, git, hg, bzr, ou darcs.

Plus précisément, évitez d'installer toute version de développement pour des paquets critiques comme le noyau (linux) ou la glibc tels que ceux trouvés dans les dépôts testing ou community.

Si vous construisez un paquet personnalisé en utilisant makepkg, vérifiez que le PKGBUILD respecte les standards d'empaquetage d'Arch, incluant la liste de dépendances. Utilisez namcap pour vérifier l'archive finale (.tar.gz) ou le fichier PKGBUILD.

Installez le noyau LTS

Le paquet linux-lts est un noyau alternatif basé sur le noyau linux 3.0 et se trouve dans le dépôt core. Cette version particulière du noyau joui d'un soutien de longue durée (Long Term Support) de la part des mainteneurs du noyau, notamment pour la résolution des failles de sécurité, de bugs et le rétroportage (backport) de certaines fonctionnalités.

Ce noyau est idéal pour un serveur ou comme noyau d'appoint pour le cas où le plus récent pose problème.

Pour l'installer:

pacman -S linux-lts
Note: kernel et initrd pour le LTS présents dans /boot sont vmlinuz-linux-lts, initramfs-linux-lts.img et initramfs-linux-lts-fallback.img.

Il vous restera à rajouter les entrées appropriées dans le menu de votre chargeur de démarrage.

Astuce: Le noyau LTS peut nécessiter quelques aménagements par rapport à la version courante du noyau: installer nvidia-lts pour les utilisateurs du pilote nvidia, charger explicitement certains modules si besoin (d'expérience: pour le réseau ^^).

Bonnes pratiques génériques

Utilisez le gestionnaire de paquets pour installer les logiciels

Le gestionnaire de paquet (dans Arch: pacman) fait un meilleur travail que vous pour garder la trace des fichiers. Si vous installez manuellement certaines choses, vous oublierez tôt ou tard ce que vous aviez fait, où vous l'aviez installé, les conflits, etc..

D'un point de vue stabilité, vous devez essayer d'éviter les paquets non-supportés et les logiciels personnalisés, mais si vous en avez réellement besoin, fabriquer un paquet est préférable à une compilation et une installation manuelles.

Vous devriez aussi désactiver la commande make install (qui est typiquement le début de tous les problèmes) dans /root/.bashrc en rajoutant:

 make() {
   [ "$1" == 'install' ] &&
     echo -e "WARNING:\nDON'T INSTALL SOFTWARE MANUALY\nDON'T USE unset make TO OVERRIDE" &&
     echo "Tip: It's easy to make own custom package see: man PKGBUILD makepkg" &&
     return 1;
   /usr/bin/make $@;
 }

Utilisez des paquets courants et éprouvés

Installez des logiciels matures, éprouvés et courants tout en évitant les logiciels avant-gardistes qui sont encore buggués. Essayez d'éviter d'installer les «points-zéro», i.e. les versions x.y.0. Par exemple, au lieu d'installer toto 2.5.0, attendez que 2.5.1 soit disponible. Ne déployez pas des logiciels nouvellement développés tant qu'il n'est pas prouvé qu'ils sont fiables. Ainsi, les premières versions de PulseAudio pouvaient ne pas être fiables : les utilisateurs intéressés dans un maximum de stabilité préférant utiliser ALSA à la place. Enfin, utilisez des logiciels qui possèdent une communauté de développement forte et active.

Choisissez des pilotes libres

Autant que possible, choisissez des pilotes libres. Essayez d'éviter les pilotes propriétaires. La plupart du temps, les pilotes libres sont plus stables et plus fiables. Les bugs des pilotes libres sont réparés plus rapidement et plus facilement. Bien que les pilotes propriétaires puissent offrir plus de fonctionnalités, ceci peut se faire au détriment de la stabilité. Pour éviter ce dilemme, choisissez des composants matériels connus pour avoir un pilote libre mature avec toutes les fonctionnalités. Des informations à propos du matériel possédant des pilotes libres pour Linux est disponible sur linux-drivers.org.

Maintenir Arch

Faire attention à quelques détails d'administration et de maintenance du système contribuera à assurer sa fiabilité.

Conseils spécifiques pour Arch

Mettez à jour votre système à une fréquence raisonnable

De nombreux utilisateurs d'Arch mettent à jour fréquemment, jusqu'à mettre à jour leurs systèmes quotidiennement avec la commande pacman -Syu. Alors que mettre à jour aussi souvent n'est pas nécessaire, on doit mettre à jour suffisamment souvent pour profiter des dernières corrections et des mises à jours de sécurité. La mise à jour hebdomadaire ou tous les 15 jours est une bonne idée.

Si le système possède des paquets depuis AUR, mettez les à jour en utilisant un assistant AUR.

N'automatisez pas à outrance

Sous Arch, les tâches de maintenance vous reviennent: aucune mise à jour ou configuration n'est automatique, à vous d'en déterminer le rythme et la nature. Il peut-être tentant d'automatiser ces tâches, mais faites-le avec parcimonie: préparer automatiquement la mise à jour à un horaire donné en téléchargeant simplement les paquets via une tâche cron mais faites la mise à jour effective par vous-même pour toujours voir ce qu'il se passe.

Lisez avant de mettre à jour

Avant de mettre à jour Arch, lisez toujours les dernières nouvelles pour voir s'il y a des changements majeurs dans les logiciels ou les configurations avec les derniers paquets. Avant de mettre à jour un logiciel fondamental, tel que le noyau, le serveur X ou glibc, regarder dans le forum approprié (y compris le forum anglophone si vous pouvez) pour voir si des problèmes ont été rapportés.

Agissez à la suite d'alertes lors d'une mise à jour

En mettant à jour le système, faites attention aux messages fournis par pacman. Si des actions supplémentaires de la part de l'utilisateur sont nécessaires, faites en sorte de les prendre en considération. Si une alerte de pacman n'est pas claire, recherchez sur les forums et sur les messages de récentes nouvelles pour plus de détails.

Traitez rapidement les fichiers .pacnew, .pacsave, et .pacorig

Lorsque pacman vous informe de tels fichiers, ne les laissez pas traîner. Voir Gestion_des_fichiers_de_configurations.

Évitez certaines commandes avec pacman

  • Arch étant une distribution de type rolling release, il peut être dangereux de rafraîchir la base de donnée de pacman sans procéder à une mise à jour complète après. Évitez d'utiliser pacman -Sy paquet pour installer un paquet, mais utilisez toujours pacman -S paquet à la place. De plus, mettez à jour votre système régulièrement avec pacman -Syu.
  • Évitez d'utiliser l'option --force avec pacman, spécialement dans des commandes comme pacman -Syu --force engageant plus d'un paquet ! L'option --force passe outre les conflits de fichiers et peut causer aussi la perte de fichiers lorsque les fichiers sont relocalisés entre différents paquets ! Dans un système proprement maintenu et à moins d'une annonce spécifique, on ne doit jamais avoir besoin d'utiliser une telle option.
  • N'utilisez pas pacman -Rd package. Utiliser la sous-option -d passe outre les vérifications de dépendances pendant la suppression du paquet. Par conséquent, un paquet fournissant une dépendance critique peut être retiré entraînant un système cassé.
  • Ne lancez pas pacman -Scc à moins qu'il y ait un besoin désespéré d'espace disque et pas ou peu de besoin pour les paquets archivés. Il est plus sûr de garder les anciens paquets disponibles en cache dans le cas où une mise à jour pose problème et demandant le retour à l'ancienne version. À la place, utiliser simplement pacman -Sc pour retirer de vos paquets archivés dans le cache de pacman, les paquets précédemment retirés de la base de pacman.

Rétrograder un paquet causant une instabilité

Dans le cas où la mise à jour d'un paquet particulier entraîne l'instabilité du système, revenez à la dernière version stable connue du paquet depuis le cache de pacman. Consultez la page rétrograder un paquet pour plus d'informations.

Une fois le paquet rétrogradé, ajoutez-le temporairement dans la section IgnorePkg de pacman.conf, tant que la difficulté avec le paquet mis à jour n'est pas résolue. Consultez le wiki d'archlinux et/ou les forums pour obtenir des conseils et remplir un rapport de bug si nécessaire.

Sauvegardez régulièrement la liste des paquets installés

À intervalle régulier, créez une liste des paquets installés et enregistrez-en une copie sur au moins un support externe tel qu'une clé USB, un disque dur externe, un CD-R... Utilisez la commande suivante pour créer la liste des paquets courants:

pacman -Qqe | grep -vx "$(pacman -Qqm)" > /path/to/chosen/directory/pkg.list

Dans le cas d'une défaillance critique nécessitant une réinstallation complete, ces paquets peuvent être réinstallés rapidement en utilisant la commande :

xargs -a /path/to/chosen/directory/pkg.list pacman -S --needed
Note: Cette liste ne prend en compte que les paquets issus des dépôts officiels. La liste des paquets issus de AUR peut-être obtenue par:
pacman -Qqme > /path/to/chosen/directory/aur.list

Elle devra être restaurée indépendamment (par un assistant AUR si vous en utilisez un).

Sauvegardez régulièrement la base de données Pacman

La commande suivante peut être utilisée pour sauvegarder la base de données locale de pacman (située dans /var/lib/pacman/local/):

tar -cjf /chemin/vers/où/sauver/pacman-database.tar.bz2 /var/lib/pacman/local

Mettez la sauvegarde de la base de données pacman sur un ou plusieurs média externe comme une clé USB, un disque dur externe ou un CD-R.

Pour restaurer la sauvegarde:

tar -xjvf /chemin/vers/sauvegarde/pacman-database.tar.bz2 -C /
Note: Pour le cas où la base de données est corrompue et qu'il n'existe pas de sauvegarde disponible, il existe quelques espoirs de reconstruire la base de données à partir de /var/log/pacman.log ! Voyez How To Restore Pacman's Local Database (en).

Bonnes pratiques génériques

Sauvegardez toujours vos fichiers de configuration avant de les éditer

Avant d'éditer tout fichier de configuration, sauvegardez toujours une version fonctionnelle de ce fichier de configuration. Dans le cas où des changements dans le fichier de configuration posent problèmes, vous pourrez revenir à la version stable. Faites ceci depuis un éditeur texte en commençant par sauver le fichier sous un autre nom avant de le modifier. Vous pouvez aussi exécuter la commande suivante :

cp config config.bak
Note: L'utilisation de l'extension .bak assure la distinction entre une sauvegarde effectuée par l'administrateur et des fichiers créés par pacman (.pacnew, .pacsave, .pacorig).

Sauvegardez régulièrement les répertoires /etc, /home, /srv, et /var

Puisque les répertoires /etc, /home, /srv, et /var contiennent d'importants fichiers systèmes et de configuration, il est conseillé de garder des sauvegardes de ces répertoires faites à intervalle régulier. La suite est composée de lignes directrices à ce propos, compte tenu qu'il existe de nombreux moyens pour effectuer ce type de sauvegarde.

  • /etc: Sauvegardez les fichiers de configuration de votre système en exécutant la commande suivante en root ou via une tâche cron :
tar -cjf /chemin/vers/où/sauver/etc-backup.tar.bz2 /etc

Mettez la sauvegarde de /etc sur un ou plusieurs média externes comme une clé USB ou un disque dur externe. Occasionnellement, vérifiez l'intégrité du processus de sauvegarde en comparant la version originale et les copies.

Restaurez les fichiers corrompus de /etc en extrayant l'archive etc-backup.tar.bz2 dans un répertoire temporaire et remplacez les fichiers le nécessitant un à un. Pour restaurer tout le répertoire /etc avec tout son contenu, lancez en tant que root :

tar -xvjf /chemin/où/trouver/etc-backup.tar.bz2 -C /
  • /home: les données de vos utilisateurs.
  • /srv: essentiel pour vos serveurs.
  • /var: les données de nombre de vos applications en cours d'utilisation, le cache de pacman, etc..