Référence Debian Osamu Aoki Copyright © 2007-2012 Osamu Aoki Ce guide de référence Debian (v2) (2013-06-26 08:16:48 UTC) est destiné à procurer un large aperçu du système Debian en tant que     guide de l’utilisateur d’un système installé. Il couvre de nombreux aspects de l’administration du système à l’aide d'exemples de commandes de l’interpréteur pour les non-développeurs. Résumé Ce livre est libre ; vous pouvez le redistribuer et le modifier selon les termes de la Licence Publique Général GNU (« GNU GPL ») à n'importe quelle version compatible avec les Règles des Logiciels Libres selon Debian (DFSG). --------------------------------------------------------------------- Table des matières Préface 1. Clause de non responsabilité 2. Ce qu'est Debian 3. À propos de ce document 3.1. Règles 3.2. Exigences de départ 3.3. Conventions 3.4. Le concours de popularité (« popcon ») 3.5. Taille du paquet 3.6. Signalements de bogues concernant ce document 4. Quelques citations pour les nouveaux utilisateurs 1. Didacticiels GNU/Linux 1.1. Bases pour la console 1.1.1. L’invite de l’interpréteur de commandes 1.1.2. Invite de l’interpréteur de commandes sous X 1.1.3. Compte de l’administrateur (root) 1.1.4. Invite de l’interpréteur de commandes pour l’administrateur 1.1.5. Outils graphiques d'administration du système 1.1.6. Consoles virtuelles 1.1.7. Comment quitter l’invite de l’interpréteur de commandes 1.1.8. Comment arrêter le système 1.1.9. Récupérer une console propre 1.1.10. Suggestions de paquets supplémentaires pour le débutant 1.1.11. Compte pour un utilisateur supplémentaire 1.1.12. Configuration de sudo 1.1.13. À vous de jouer 1.2. Système de fichiers de type UNIX 1.2.1. Bases concernant les fichiers UNIX 1.2.2. Fonctionnement interne du système de fichiers 1.2.3. Permissions du système de fichiers 1.2.4. Contrôle des permissions pour les fichiers nouvellement créés : umask 1.2.5. Permissions pour les groupes d'utilisateurs (group) 1.2.6. Horodatage 1.2.7. Liens 1.2.8. Tubes nommés (FIFO) 1.2.9. Sockets 1.2.10. Fichiers de périphériques 1.2.11. Fichiers spéciaux de périphériques 1.2.12. procfs et sysfs 1.2.13. tmpfs 1.3. Midnight Commander (MC) 1.3.1. Personnalisation de MC 1.3.2. Démarrer MC 1.3.3. Gestionnaire de fichiers de MC 1.3.4. Astuces de la ligne de commandes dans MC 1.3.5. Éditeur interne de MC 1.3.6. Visualisateur interne de MC 1.3.7. Possibilités de démarrage automatique de MC 1.3.8. Système de fichiers FTP virtuel de MC 1.4. L’environnement élémentaire de travail de type UNIX 1.4.1. L’interpréteur de commandes de connexion 1.4.2. Personnaliser bash 1.4.3. Combinaisons particulières de touches 1.4.4. Opérations de style UNIX avec la souris 1.4.5. Le visualisateur de fichiers 1.4.6. L’éditeur de texte 1.4.7. Définir un éditeur de texte par défaut 1.4.8. Personnaliser vim 1.4.9. Enregistrer les actions de l’interpréteur de commandes 1.4.10. Commandes UNIX de base 1.5. La commande simple de l’interpréteur de commandes 1.5.1. Exécution d'une commande et variables d'environnement 1.5.2. Variable « $LANG » 1.5.3. Variable « $PATH » 1.5.4. Variable « $HOME » 1.5.5. Options de la ligne de commandes 1.5.6. Motifs génériques (« glob ») de l’interpréteur de commandes 1.5.7. Valeur de retour d'une commande 1.5.8. Séquences de commandes typiques et redirection de l’interpréteur de commandes 1.5.9. Alias de commande 1.6. Traitement des données textuelles à la UNIX 1.6.1. Outils de traitement du texte d’UNIX 1.6.2. Expressions rationnelles 1.6.3. Expressions de remplacement 1.6.4. Substitution globale avec des expressions rationnelles 1.6.5. Extraire des données d'un tableau contenu dans un fichier texte 1.6.6. Bouts de scripts pour les tubes 2. Gestion des paquets Debian 2.1. Prérequis pour la gestion des paquets Debian 2.1.1. Configuration de paquets 2.1.2. Précautions de base 2.1.3. La vie avec d'éternelles mises à jour 2.1.4. Bases concernant l’archive Debian 2.1.5. Debian est totalement libre 2.1.6. Dépendances des paquets 2.1.7. Flux des événements dans la gestion d'un paquet 2.1.8. Première réponse aux problèmes de gestion de paquets 2.2. Opérations de base de la gestion des paquets 2.2.1. apt-get / apt-cache comparés à aptitude 2.2.2. Opérations de base de gestion des paquets en ligne de commandes 2.2.3. Utilisation interactive d'aptitude 2.2.4. Raccourcis clavier d'aptitude 2.2.5. Vues des paquets sous aptitude 2.2.6. Options de la méthode de recherche avec aptitude 2.2.7. Les formules d'expressions rationnelles d'aptitude 2.2.8. Résolution des dépendances par aptitude 2.2.9. Journaux d'activité des paquets 2.3. Exemples d'opérations avec aptitude 2.3.1. Afficher les paquets dont les noms correspondent à une expression rationnelle 2.3.2. Parcours en correspondance avec une expression rationnelle 2.3.3. Purger pour de bon les paquets supprimés 2.3.4. Toilettage de l’état d'installation automatique / manuel 2.3.5. Mise à jour pour l’ensemble du système 2.4. Opérations avancées de gestion des paquets 2.4.1. Opérations avancées de gestion des paquets en ligne de commandes 2.4.2. Vérifier les fichiers de paquets installés 2.4.3. Protection contre les problèmes de paquets 2.4.4. Rechercher dans les métadonnées du paquet 2.5. Fonctionnement interne de la gestion des paquets Debian 2.5.1. Métadonnées de l'archive 2.5.2. Fichier « Release » de plus haut niveau et authenticité 2.5.3. Fichiers « Release » au niveau de l’archive 2.5.4. Récupérer les métadonnées d'un paquet 2.5.5. État des paquets pour APT 2.5.6. État des paquets pour aptitude 2.5.7. Copies locales des paquets téléchargés 2.5.8. Nom de fichier d'un paquet Debian 2.5.9. La commande dpkg 2.5.10. Commande update-alternative 2.5.11. Commande dpkg-statoverride 2.5.12. Commande dpkg-divert 2.6. Récupérer un système cassé 2.6.1. Incompatibilité avec une ancienne configuration de l’utilisateur 2.6.2. Différents paquets ayant des fichiers communs 2.6.3. Corriger les scripts cassés des paquets 2.6.4. Récupération avec la commande dpkg 2.6.5. Récupérer les données de sélection des paquets 2.7. Astuces pour la gestion des paquets 2.7.1. Comment obtenir des paquets Debian 2.7.2. Paquets venant de sources mélangées 2.7.3. Ajuster la version candidate 2.7.4. Mises à jour et rétroportages 2.7.5. Blocage des paquets installés par « Recommends » 2.7.6. Suivre testing avec quelques paquets d'unstable 2.7.7. Suivre unstable avec quelques paquets d'experimental 2.7.8. Chargement et mise à niveau automatique de paquets 2.7.9. Diminuer la bande passante utilisée par APT 2.7.10. Retour d'urgence à une version précédente (downgrade) 2.7.11. Qui a envoyé le paquet ? 2.7.12. Paquet equivs 2.7.13. Porter un paquet vers le système stable 2.7.14. Serveur mandataire (proxy) pour APT 2.7.15. Petite archive publique de paquets 2.7.16. Enregistrer et copier la configuration du système 2.7.17. Convertir ou installer un paquet binaire non Debian 2.7.18. Extraire un paquet sans dpkg 2.7.19. Autres lectures concernant la gestion des paquets 3. Initialisation du système 3.1. Aperçu du processus d'amorçage du système 3.2. Étage 1 : le BIOS 3.3. Étage 2 : le chargeur initial 3.4. Étage 3 : le système mini-Debian 3.5. Étage 4 : le système Debian normal 3.5.1. Signification du niveau de fonctionnement (« runlevel ») 3.5.2. Configuration des niveaux de fonctionnement (« runlevel ») 3.5.3. Exemple de gestion de niveau de fonctionnement 3.5.4. Paramètre par défaut de chaque script init 3.5.5. Nom de machine (« hostname ») 3.5.6. Le système de fichiers 3.5.7. Initialisation de l’interface réseau 3.5.8. Initialisation des services réseau 3.5.9. Messages du système 3.5.10. Messages du noyau 3.5.11. Le système udev 3.5.12. Initialisation des modules du noyau 4. Authentification 4.1. Authentification normale d’UNIX 4.2. Gestion des informations des comptes et des mots de passes 4.3. Mot de passe de qualité 4.4. Créer un mot de passe chiffré 4.5. PAM et NSS 4.5.1. Fichiers de configuration auxquels accèdent PAM et NSS 4.5.2. Le système de gestion centralisée moderne 4.5.3. « Pourquoi la commande su de GNU ne gère-t-elle pas le groupe wheel » 4.5.4. Règle de mots de passe plus stricte 4.6. Autres contrôles d'accès 4.6.1. sudo 4.6.2. PolicyKit 4.6.3. SELinux 4.6.4. Restreindre l’accès à certains services du serveur 4.7. Sécurité de l’authentification 4.7.1. Mot de passe sûr avec Internet 4.7.2. Le shell sûr (Secure Shell) 4.7.3. Mesures de sécurité supplémentaires pour Internet 4.7.4. sécuriser le mot de passe de l’administrateur 5. Configuration du réseau 5.1. L’infrastructure de base du réseau 5.1.1. Nom de domaine 5.1.2. Résolution du nom d'hôte 5.1.3. Nom de l’interface réseau 5.1.4. Plage d'adresses réseau du réseau local (« LAN ») 5.1.5. La gestion du périphérique réseau 5.2. Configuration moderne de réseau pour l’ordinateur de bureau 5.2.1. Outils graphiques de configuration du réseau 5.3. Ancienne méthode de configuration et connexion réseau 5.4. Méthode de connexion réseau (ancienne) 5.4.1. La connexion DHCP avec Ethernet 5.4.2. Connexion Ethernet avec une adresse IP statique 5.4.3. La connexion PPP avec pppconfig 5.4.4. Autre connexion PPP avec wvdialconf 5.4.5. La connexion PPPoE avec pppoeconf 5.5. Configuration de base du réseau avec ifupdown (ancienne) 5.5.1. La syntaxe de commande simplifiée 5.5.2. Syntaxe de base de « /etc/network/interfaces » 5.5.3. L’interface réseau de rebouclage (« loopback ») 5.5.4. Interfaces réseau gérées par DHCP 5.5.5. Interface réseau avec une adresse IP fixe 5.5.6. Les bases de l’interface réseau sans fil 5.5.7. L’interface de réseau local sans fil avec WPA/WPA2 5.5.8. L’interface réseau local sans fil avec WEP 5.5.9. La connexion PPP 5.5.10. La connexion alternative PPP 5.5.11. La connexion PPPoE 5.5.12. État de configuration réseau de ifupdown 5.5.13. Configuration réseau de base 5.5.14. La paquet ifupdown-extra 5.6. Configuration réseau avancée avec ifupdown (ancienne) 5.6.1. La paquet ifplugd 5.6.2. Le paquet ifmetric 5.6.3. L’interface virtuelle 5.6.4. Syntaxe de commande avancée 5.6.5. L’entrée « mapping » 5.6.6. Configuration réseau commutable manuellement 5.6.7. Scripts avec le système ifupdown 5.6.8. Cartographie réseau avec guessnet 5.7. Configuration réseau de bas niveau 5.7.1. Commandes Iproute2 5.7.2. Opérations sûres de bas niveau sur le réseau 5.8. Optimisation du réseau 5.8.1. Rechercher le MTU optimum 5.8.2. Définir le MTU 5.8.3. Optimisation de TCP sur le réseau Internet 5.9. Infrastructure de netfilter 6. Applications réseau 6.1. Navigateurs Web 6.1.1. Configuration du navigateur 6.2. Le système de courrier électronique 6.2.1. Bases du courrier électronique 6.2.2. Bases du service de courrier électronique moderne 6.2.3. Stratégie de configuration du courrier électronique pour une station de travail 6.3. Agent de transport de courrier électronique (« MTA ») 6.3.1. Configuration d'exim4 6.3.2. Configuration de postfix avec SASL 6.3.3. Configuration de l’adresse de courriel 6.3.4. Opération de base du MTA 6.4. Agent de courrier électronique de l’utilisateur (« MUA ») 6.4.1. Le MUA de base — Mutt 6.5. Utilitaire de récupération et de rediffusion du courriel distant 6.5.1. configuration de getmail 6.5.2. configuration de fetchmail 6.6. Agent de distribution du courriel (MDA) avec filtre 6.6.1. configuration de maildrop 6.6.2. configuration de procmail 6.6.3. Redistribuer le contenu d'une « mbox » 6.7. serveur POP3/IMAP4 6.8. Le serveur et les utilitaires d'impression 6.9. Le serveur et les utilitaires d'accès à distance (SSH) 6.9.1. Bases de SSH 6.9.2. Redirection de port pour un tunnel SMTP/POP3 6.9.3. Se connecter sans mot de passe distant 6.9.4. Clients SSH exotiques 6.9.5. Configurer ssh-agent 6.9.6. Comment arrêter le système distant par SSH 6.9.7. Résoudre les problèmes avec SSH 6.10. Autres serveurs d'applications réseau 6.11. Autres clients d'applications réseau 6.12. Le diagnostic des démons du système 7. Le système X Window 7.1. Paquets clés 7.2. Configurer l’environnement de bureau 7.2.1. Menu Debian 7.2.2. Menu de Freedesktop.org 7.2.3. Menu Debian avec l’environnement de bureau GNOME 7.3. La relation client - serveur 7.4. Le serveur X 7.4.1. La (re-)configuration du serveur X 7.4.2. Les méthodes de connexion au serveur X 7.5. Démarrer le système X Window 7.5.1. Démarrer une session X avec gdm3 7.5.2. Personnaliser la session X session (méthode classique) 7.5.3. Personnaliser la session X session (nouvelle méthode) 7.5.4. Connecter un client X distant par SSH 7.5.5. Sécuriser le terminal X au travers d'Internet 7.6. Polices dans X Window 7.6.1. Polices de base 7.6.2. Polices supplémentaires 7.6.3. Polices CJK 7.7. Applications X 7.7.1. Applications X de bureautique 7.7.2. Applications utilitaires pour X 7.8. Les infos de X 7.8.1. Cartographie des claviers et affectation des boutons de souris sous X 7.8.2. Clients X classiques 7.8.3. Émulateur de terminal X — xterm 7.8.4. Faire tourner X avec le compte de l’administrateur 8. I18N et L10N 8.1. L’entrée clavier 8.1.1. Prise en charge de la méthode d'entrée avec iBus 8.1.2. Un exemple pour le japonais 8.1.3. Désactiver la méthode d'entrée 8.2. L’affichage de sortie 8.3. Les paramètres linguistiques (« locale ») 8.3.1. Bases du codage 8.3.2. Justification de l’utilisation d'UTF-8 dans les paramètres linguistiques 8.3.3. Reconfiguration des paramètres linguistiques 8.3.4. Valeur de la variable d'environnement « $LANG » 8.3.5. Paramètre linguistique spécifique sous X Window 8.3.6. Coder les noms de fichiers 8.3.7. Messages et documentation traduits 8.3.8. Effet des paramètres linguistiques 9. Astuces du système 9.1. Le programme screen 9.1.1. Scénario d'utilisation de screen(1) 9.1.2. Raccourcis clavier de la commande screen 9.2. Enregistrer et présenter des données 9.2.1. Le démon de journal 9.2.2. Analyseur de journaux 9.2.3. Enregistrer proprement l’activité de la console 9.2.4. Affichage personnalisé des données de texte 9.2.5. Affichage personnalisé de la date et de l’heure 9.2.6. Écho colorisé de l’interpréteur de commandes 9.2.7. Commandes colorisées 9.2.8. Enregistrer l’activité de l’éditeur pour des répétitions complexes 9.2.9. Enregistrer l’image graphique d'une application X 9.2.10. Enregistrer les modifications dans des fichiers de configuration 9.3. Astuces relatives au stockage des données 9.3.1. Utilisation de l'espace disque 9.3.2. Configuration de la partition du disque 9.3.3. Accès à une partition en utilisant l’UUID 9.3.4. Configuration de systèmes de fichiers 9.3.5. Création et vérification de l’intégrité d'un système de fichiers 9.3.6. Optimisation du système de fichiers à l’aide des options de montage 9.3.7. Optimisation du système de fichiers à l’aide du superbloc 9.3.8. Optimisation du disque dur 9.3.9. Optimisation du SSD 9.3.10. Utiliser SMART pour prédire les défaillances des disques durs 9.3.11. Indication du répertoire de stockage temporaire à l'aide de $TMPDIR 9.3.12. Étendre l’espace de stockage utile à l’aide de LVM 9.3.13. Extension de l’espace de stockage en montant une autre partition 9.3.14. Extension de l'espace de stockage en remontant un autre répertoire 9.3.15. Extension de l’espace utilisable à l’aide de liens symboliques 9.3.16. Extension de l’espace utilisable à l’aide de aufs 9.4. Astuces de chiffrement des données 9.4.1. Chiffrement des disques amovibles à l’aide de dm-crypt /LUKS 9.4.2. Partition d'échange chiffrée avec dm-crypt 9.4.3. Chiffrer les fichiers automatiquement avec eCryptfs 9.4.4. Montage automatique de eCryptfs 9.5. Surveiller, contrôler et démarrer l’activité des programmes 9.5.1. Temps d'un processus 9.5.2. La priorité d'ordonnancement 9.5.3. La commande ps 9.5.4. La commande top 9.5.5. Afficher les fichier ouverts par un processus 9.5.6. Tracer l’activité d'un programme 9.5.7. Identification des processus qui utilisent des fichiers ou des sockets 9.5.8. Répéter une commande avec un intervalle constant 9.5.9. Répéter une commande en bouclant entre des fichiers 9.5.10. Lancer un programme depuis l’interface graphique 9.5.11. Personnaliser le programme à lancer 9.5.12. Tuer un processus 9.5.13. Planifier des tâches qui s'exécutent une fois 9.5.14. Planifier des tâches qui s'exécutent régulièrement 9.5.15. touche Alt-SysRq 9.6. Astuces de maintenance du système 9.6.1. Qui se trouve sur le système ? 9.6.2. Prévenir tout le monde 9.6.3. Identification du matériel 9.6.4. Configuration matérielle 9.6.5. Heure système et matérielle 9.6.6. Configuration du terminal 9.6.7. L’infrastructure de gestion du son 9.6.8. Désactiver l’économiseur d'écran 9.6.9. Désactiver les bips 9.6.10. Utilisation de la mémoire 9.6.11. Vérification de la sécurité et de l’intégrité du système 9.7. Le noyau 9.7.1. Noyau Linux 2.6 9.7.2. Paramètres du noyau 9.7.3. En-têtes du noyau 9.7.4. Compiler le noyau et les modules associés 9.7.5. Compiler les sources du noyau : recommandations de l'équipe en charge du noyau Debian 9.7.6. Pilotes de matériel et microprogramme 9.8. Système virtualisé 9.8.1. Outils de virtualisation 9.8.2. Étapes de virtualisation 9.8.3. Monter le fichier image du disque virtuel 9.8.4. Système protégé (chroot) 9.8.5. Systèmes de bureaux multiples 10. Gestion des données 10.1. Partager, copier et archiver 10.1.1. Outils d'archivage et de compression 10.1.2. Outils de copie et de synchronisation 10.1.3. Idiomes pour les archive 10.1.4. Idiomes pour la copie 10.1.5. Idiomes pour la sélection de fichiers 10.1.6. Sauvegarde et restauration 10.1.7. Suites d'utilitaires de sauvegarde 10.1.8. Script d'exemple pour la sauvegarde du système 10.1.9. Un script de copie pour la sauvegarde des données 10.1.10. Périphériques d'enregistrement amovibles 10.1.11. Choix de système de fichiers pour les données partagées 10.1.12. Partage de données au travers du réseau 10.1.13. Support d'archive 10.2. Le fichier image du disque 10.2.1. Créer le fichier image du disque 10.2.2. Écrire directement sur le disque 10.2.3. Monter le fichier image dur disque 10.2.4. Nettoyage d'un fichier image du disque 10.2.5. Réaliser le fichier image d'un disque vide 10.2.6. Créer le fichier image ISO9660 10.2.7. Écriture directe sur CD/DVD-R/RW 10.2.8. Monter le fichier image ISO9660 10.3. Les données binaires 10.3.1. Afficher et éditer des données binaires 10.3.2. Manipulation des fichiers sans monter le disque 10.3.3. Redondance des données 10.3.4. Récupération de fichier de données et analyse par autopsie 10.3.5. Éclater un gros fichier en petits fichiers 10.3.6. Effacer le contenu d'un fichier 10.3.7. Fichiers fictifs 10.3.8. Effacer l’ensemble du disque dur 10.3.9. Effacer l’ensemble du disque dur 10.3.10. Récupérer des fichiers supprimés mais encore ouverts 10.3.11. Rechercher tous les liens physiques 10.3.12. Consommation d'espace disque invisible 10.4. Infrastructure de sécurité des données 10.4.1. Gestion de clés pour GnuPG 10.4.2. Utilisation de GnuPG sur des fichiers 10.4.3. Utiliser GnuPG avec Mutt 10.4.4. Utiliser GnuPG avec Vim 10.4.5. La somme de contrôle MD5 10.5. Outils pour fusionner le code source 10.5.1. extraire des différences pour des fichiers sources 10.5.2. Fusionner les mises à jour des fichiers source 10.5.3. Mise à jour par fusion de 3 sources 10.6. Systèmes de contrôle de version 10.6.1. Comparaison de commandes VCS 10.7. CVS 10.7.1. Configuration du dépôt CVS 10.7.2. Accès local à CVS 10.7.3. Accès distant à CVS avec pserver 10.7.4. Accès distant à CVS avec ssh 10.7.5. Importer une nouvelle source dans CVS 10.7.6. Permissions des fichiers du dépôt CVS 10.7.7. Flux de travail avec CVS 10.7.8. Derniers fichiers venant du CVS 10.7.9. Administration de CVS 10.7.10. Bit d'exécution pour la vérification (« checkout ») du CVS 10.8. Subversion 10.8.1. Configuration du dépôt Subversion 10.8.2. Accès à Subversion par l’intermédiaire d'un serveur Apache2 10.8.3. Accès local à Subversion par un groupe 10.8.4. Accès distant à Subversion avec SSH 10.8.5. Structure de répertoires de Subversion 10.8.6. Importer une nouvelle source vers Subversion 10.8.7. Flux de travail avec Subversion 10.9. Git 10.9.1. Configuration du client Git 10.9.2. Références de Git 10.9.3. Commandes de Git 10.9.4. Git pour le dépôt Subversion 10.9.5. Git pour l’enregistrement de l’historique de la configuration 11. Conversion de données 11.1. Outils de conversion de données textuelles 11.1.1. Convertir un fichier texte avec iconv 11.1.2. Vérifier que les fichiers sont codés en UTF-8 avec iconv 11.1.3. Convertir les noms de fichiers avec iconv 11.1.4. Convertir les fins de ligne (EOL) 11.1.5. Convertir les tabulations (TAB) 11.1.6. Éditeurs avec conversion automatique 11.1.7. Extraire du texte brut 11.1.8. Mettre en évidence et formater des données en texte brut 11.2. Données XML 11.2.1. Conseils de base pour XML 11.2.2. Traitement XML 11.2.3. Extraire des données XML 11.3. Données imprimables 11.3.1. Ghostscript 11.3.2. Fusionner deux fichiers PS ou PDF 11.3.3. Utilitaires pour les données imprimables 11.3.4. Imprimer avec CUPS 11.4. Composition 11.4.1. Composition roff 11.4.2. TeX/LaTeX 11.4.3. Imprimer convenablement une page de manuel 11.4.4. Créer une page de manuel 11.5. La conversion de données de courrier électronique 11.5.1. Bases concernant les données de courrier électroniques 11.6. Outils de données graphiques 11.7. Diverses conversions de données 12. Programmation 12.1. Les scripts de l’interpréteur de commande 12.1.1. Compatibilité de l’interpréteur de commandes avec POSIX 12.1.2. Paramètres de l’interpréteur de commandes 12.1.3. Opérateurs conditionnels de l’interpréteur 12.1.4. Boucles de l’interpréteur de commandes 12.1.5. Séquence de traitement de la ligne de commandes de l’interpréteur 12.1.6. Programmes utilitaires pour les scripts de l’interpréteur de commandes 12.1.7. Dialogue de l’interpréteur de commandes 12.1.8. Exemple de script avec zenity 12.2. Make 12.3. C 12.3.1. Programme simple en C (gcc) 12.4. Déboguer 12.4.1. Exécution de base de gdb 12.4.2. Déboguer un paquet Debian 12.4.3. Obtenir une trace 12.4.4. Commandes avancées de gdb ; 12.4.5. Déboguer les erreurs de X 12.4.6. Vérifier les dépendances avec les bibliothèques 12.4.7. Outils de détection des fuites de mémoire 12.4.8. Outils d'analyse du code statique 12.4.9. Désassembler un binaire 12.5. Flex -- un meilleur Lex 12.6. Bison -- un meilleur Yacc 12.7. Autoconf 12.7.1. Compiler et installer un programme 12.7.2. Désinstaller un programme 12.8. Folie de courts scripts en Perl 12.9. Web 12.10. La conversion du code source 12.11. Créer un paquet Debian A. Annexe A.1. Le labyrinthe de Debian A.2. Historique du Copyright A.3. Format du document Liste des tableaux 1.1. Liste de paquets de programmes intéressants en mode texte 1.2. Liste de paquets de documentation 1.3. Utilisation des répertoires-clés 1.4. Liste des premiers caractères de la sortie de « ls -l » : 1.5. Mode numérique des permissions de fichiers dans les commandes chmod(1) 1.6. Exemples de valeurs de umask 1.7. Liste des groupes importants fournis par le système pour l’accès aux fichiers 1.8. Liste des groupes importants fournis par le système pour l’exécution de commandes particulières 1.9. Liste des types d'horodatage 1.10. Liste des fichiers spéciaux de périphériques 1.11. Touches de raccourcis de MC 1.12. Réaction à la touche Entrée dans MC 1.13. Liste de d'interprétateurs de commandes (« shells ») 1.14. Liste des raccourcis clavier de bash 1.15. Liste des opérations de style UNIX avec la souris 1.16. Liste des commandes UNIX de base 1.17. Les trois parties des paramètres linguistiques 1.18. Liste des recommandations de paramètres linguistiques 1.19. Afficher les valeurs de la variable « $HOME » 1.20. Motifs génériques d'expansion du nom de fichier de l’interpréteur de commandes 1.21. Codes de retour de la commande 1.22. Idiomes des commandes de l’interpréteur 1.23. Descripteurs de fichier prédéfinis 1.24. Métacaractères pour BRE et ERE 1.25. Expressions de remplacement 1.26. Liste de parties de scripts pour enchaîner (piping) les commandes 2.1. Liste des outils de gestion des paquets de Debian 2.2. Liste des sites d'archive de Debian 2.3. Liste des sections de l'archive de Debian 2.4. Relation entre version et nom de code 2.5. Liste de sites web clés pour résoudre les problèmes avec un paquet particulier 2.6. Opérations de base de gestion des paquets avec la ligne de commandes en utilisant aptitude(8), apt-get(8) et apt-cache(8) 2.7. Options importantes de la commande aptitude(8) 2.8. Liste des raccourcis clavier d'aptitude 2.9. Liste des vues d'aptitude 2.10. Classement par catégories des vues de paquets standard 2.11. Liste des formules d'expressions rationnelles d'aptitude 2.12. Fichiers journaux de l’activité des paquets 2.13. Liste des opérations avancées de gestion des paquets 2.14. Contenu des métadonnées de l’archive Debian 2.15. Structure du nom des paquets Debian : 2.16. Caractères utilisables pour chacune des composantes des noms de paquets Debian 2.17. Fichiers particuliers créés par dpkg 2.18. Liste de valeurs remarquables des priorités d'épinglage (Pin-Priority) pour la technique d'épinglage apt (« apt-pinning ») : 2.19. Liste des outils de proxy spécifiques à l’archive Debian 3.1. Liste des chargeurs initiaux 3.2. Signification des paramètres de GRUB 3.3. Liste d'utilitaires d'amorçage initial pour le système Debian : 3.4. Liste des niveaux de fonctionnement et description de leur utilisation 3.5. Liste des niveaux d'erreur du noyau 4.1. 3 fichiers de configuration importants pour pam_unix(8) 4.2. Contenu de la seconde entrée de « /etc/passwd » 4.3. Liste des commandes servant à gérer les informations des comptes 4.4. Liste d'outils permettant de générer des mots de passe 4.5. Liste des paquets importants des systèmes PAM et NNS 4.6. Liste des fichiers de configuration auxquels PAM accède 4.7. Liste des services et ports sûrs et non sûrs 4.8. Liste des outils fournissant des mesures de sécurité supplémentaires 5.1. Liste des outils de configuration du réseau 5.2. Liste des plages d'adresses de réseau 5.3. Liste des méthodes de connexions réseau et des chemins de connexion 5.4. Liste des configurations de connexions réseau 5.5. Liste des acronymes de connexion au réseau 5.6. Liste des fichiers de configuration pour la connexion PPP avec pppconfig 5.7. Liste des fichiers de configuration pour une connexion PPP avec wvdialconf 5.8. Liste des fichiers de configuration pour une connexion PPPoE avec pppoeconf 5.9. Liste des commandes de base de configuration du réseau avec ifupdown 5.10. Liste des entrées de « /etc/network/interfaces » 5.11. Liste d'acronymes pour le WLAN 5.12. Terminologie des périphériques réseau 5.13. Liste des commandes avancées de configuration du réseau par ifupdown 5.14. Liste des variables d'environnement passées par le système ifupdown 5.15. Table de conversion depuis les commandes obsolètes net-tools vers les nouvelles commandes iproute2 5.16. Liste des commande de réseau de bas niveau 5.17. Liste des outils d'optimisation du réseau. 5.18. Lignes directrices pour une valeur optimum de MTU 5.19. Liste d'outils de pare-feu 6.1. Liste de navigateurs web 6.2. Liste des paquets de greffons pour les navigateurs 6.3. Liste des paquets liés à l’agent de transport du courrier pour une station de travail 6.4. Liste des choix de paquets Debian d'agent de transport du courrier électronique (MTA) 6.5. Liste des pages de manuel importantes de postfix 6.6. Liste des fichiers de configuration liés aux adresses de courriel 6.7. Liste des opérations de base du MTA 6.8. Liste d'agents de courrier électronique de l’utilisateur (MUA) 6.9. Listes des utilitaires de récupération et de rediffusion du courriel 6.10. Liste de MDA avec filtrage 6.11. Liste de serveurs POP3/IMAP4 6.12. Liste des serveurs et utilitaires d'impression. 6.13. Liste des serveurs et des utilitaires d'accès à distance 6.14. Liste des protocoles et méthodes d'authentification SSH 6.15. Liste des fichiers de configuration de SSH 6.16. Liste d'exemples de démarrage du client SSH 6.17. Liste des clients SSH libres pour d'autres plateformes 6.18. Liste d'autres serveurs d'applications réseau 6.19. Liste de clients d'applications réseau 6.20. Liste des RFC courantes 7.1. Liste des (méta)paquets clés pour X Window 7.2. Liste de terminologie client/serveur 7.3. Liste des méthodes de connexion au serveur X 7.4. Table de paquets prenant en charge les systèmes de polices de X Window 7.5. Table de correspondance des polices PostScript Type 1 7.6. Table de correspondance des polices TrueType 7.7. Table de mots-clés utilisés dans les noms de polices CJK afin d'indiquer les types de polices 7.8. Liste d'applications de bureautique de base pour X 7.9. Liste d'applications utilitaires de base pour X 8.1. Liste des méthodes de reconfiguration du clavier : 8.2. Liste des méthodes d'entrées prises en charge par iBus 9.1. Liste de programmes gérant les interruptions de connexion au réseau 9.2. Liste des raccourcis clavier de screen 9.3. Liste des analyseurs de journaux système 9.4. Exemples d'affichage de la date et de l’heure pour la commande « ls -l » avec wheezy 9.5. Liste des outils de manipulation d'images 9.6. Liste de paquets pour enregistrer un historique de configuration dans VCS 9.7. Listes de paquets de gestion de la partition du disque 9.8. Liste des paquets de gestion des systèmes de fichiers 9.9. Liste d'utilitaires de chiffrement des données 9.10. Liste des outils de surveillance et de contrôle de l’activité des programmes 9.11. Liste des valeurs de politesse pour la priorité d'ordonnancement 9.12. Liste des styles de la commande ps 9.13. Liste des commandes pour top 9.14. Liste des signaux couramment utilisés avec la commande kill 9.15. Listes des touches de commande SAK (« Secure attention keys ») 9.16. Listes des outils d'identification du matériel 9.17. Liste des outils de configuration du matériel 9.18. Liste des paquets son 9.19. Liste des commandes pour désactiver l’économiseur d'écran 9.20. Taille mémoire affichée 9.21. Liste d'outils pour la vérification et la sécurité et de l’intégrité du système 9.22. Liste des paquets-clés à installer pour la compilation du noyau sur un système Debian 9.23. Liste des outils de virtualisation 10.1. Liste des outils d'archivage et de compression 10.2. Liste des outils de copie et de synchronisation 10.3. Liste de suites d'utilitaires de sauvegarde 10.4. Liste de choix de systèmes de fichiers pour des périphériques amovibles avec des scénarios typiques d'utilisation 10.5. Liste des services réseau à choisir avec le scénario typique d'utilisation 10.6. Liste des paquets permettant de visualiser et d'éditer des données binaires 10.7. Liste des paquets pour manipuler les fichiers sans monter le disque 10.8. Liste d'outils pour ajouter des données de redondance aux fichiers 10.9. Liste de paquets pour pour la récupération de données et l’analyse par autopsie 10.10. Liste es outils d'une infrastructure de sécurité des données 10.11. Liste des commandes de GNU Privacy Guard pour la gestion des clés 10.12. Liste de la signification des codes de confiance 10.13. Liste des commandes de GNU Privacy Guard sur des fichiers 10.14. Liste d'outils destinés à fusionner du code source 10.15. Liste d'outils pour les systèmes de contrôle de version 10.16. Comparaison des commandes natives de VCS 10.17. Options importantes des commandes CVS (à utiliser comme premier(s)paramètre(s) à cvs(1)) 10.18. Options importantes des commandes de Subversion (à utiliser comme premier(s) paramètre(s) de svn(1)) 10.19. Liste des paquets et des commandes relatifs à git 11.1. Liste des outils de conversion de texte 11.2. Liste de valeurs de codage et leur utilisation 11.3. Liste des styles d'EOL pour différentes plateformes 11.4. Liste des commande de conversion de TAB des paquets bsdmainutils et coreutils 11.5. Liste d'outils pour extraite des données en texte brut 11.6. Liste des outils pour mettre en évidence des données de texte brut 11.7. Liste des entités XML prédéfinies 11.8. Liste d'outils XML 11.9. Liste des outils DSSL 11.10. Liste d'outils d'extraction de données XML 11.11. Liste d'outils sympa d'impression XML 11.12. Liste des interpréteurs Ghostscript PostScript 11.13. Liste des utilitaires pour les données imprimables 11.14. Liste des outils de typographie 11.15. Liste de paquets facilitant la création de pages de manuel 11.16. Liste de paquets facilitant la conversion de données de courrier électronique 11.17. Liste d'outils pour les données graphiques 11.18. Liste d'outils divers de conversion de données 12.1. Liste de paquets pour aider à la programmation 12.2. Liste de bashismes typiques 12.3. Liste des paramètres de l’interpréteur de commandes 12.4. Liste des expansions de paramètres de l’interpréteur 12.5. Liste des substitutions-clés de paramètres de l’interpréteur 12.6. Liste des opérateurs de comparaison dans les expressions conditionnelles 12.7. Liste des opérateurs de comparaison de chaîne de caractères dans les expressions conditionnelles 12.8. Lites des paquets comportant des petits programmes utilitaires pour les scripts de l’interpréteur de commandes 12.9. Liste d'interfaces utilisateur 12.10. Liste des variables automatiques de make 12.11. Liste de l’expansion des variables de make 12.12. Liste des commandes avancées de gdb 12.13. Liste des outils de détection des fuites de mémoire 12.14. Liste des outils d'analyse du code statique : 12.15. Liste de générateurs d'analyseur LALR compatibles avec Yacc 12.16. Liste des outils de conversion de code source Préface Table des matières 1. Clause de non responsabilité 2. Ce qu'est Debian 3. À propos de ce document 3.1. Règles 3.2. Exigences de départ 3.3. Conventions 3.4. Le concours de popularité (« popcon ») 3.5. Taille du paquet 3.6. Signalements de bogues concernant ce document 4. Quelques citations pour les nouveaux utilisateurs Cette Référence Debian (version 2) (http://www.debian.org/doc/manuals /debian-reference/) (2013-06-26 08:16:48 UTC) est destinée à fournir un large aperçu de l’administration système de Debian et un guide de l’utilisateur sur un système installé. Le lecteur cible est quelqu'un qui désire apprendre les scripts de l’interpréteur de commandes mais qui ne souhaite pas lire toutes les sources en C pour comprendre le fonctionnement du système GNU (http:/ /fr.wikipedia.org/wiki/GNU) /Linux (http://fr.wikipedia.org/wiki/ Linux) . 1. Clause de non responsabilité     Toute garantie est rejetée. Toutes les marques déposées sont la propriété de leurs détenteurs respectifs. Le système Debian lui-même est une cible mouvante. Cela rend difficile le maintien à jour et l’exactitude de sa documentation.     Bien que la version instable (« unstable ») du système Debian ait été utilisée pour écrire ce document, certaines parties peuvent être dépassées au moment où vous lisez cela. Veuillez prendre ce document comme une référence secondaire. Ce document ne remplace aucun des guides autorisés. L’auteur et les     contributeurs ne pourront être tenus pour responsables des conséquences des erreurs, omissions ou ambiguïtés que comporte ce document. 2. Ce qu'est Debian Le Projet Debian (http://www.debian.org) est une association de     personnes qui ont fait cause commune afin de créer un système d'exploitation libre. Sa distribution est caractérisée par : * un engagement dans la liberté du logiciel : Le contrat social Debian et les Lignes directrices du logiciel libre selon Debian (DFSG) (http://www.debian.org/social_contract)  ; * un effort distribué, volontaire et bénévole, basé sur Internet : http://www.debian.org (http://www.debian.org)  ; * un grand nombre de logiciels de grande qualité et déjà compilés ;     * l’accent sur la stabilité et la sécurité avec un accès facile aux mises à jour de sécurité ; * l’accent sur une mise à niveau en douceur vers les dernières versions des logiciels par l’utilisation des archives unstable et testing ; * la prise en charge d'un grand nombre d'architectures matérielles. Les éléments des logiciels libres de Debian proviennent de GNU (http://fr.wikipedia.org/wiki/GNU) , Linux (http:// fr.wikipedia.org/wiki/Linux) , BSD (http://fr.wikipedia.org/wiki/ Berkeley_Software_Distribution) , X (http://fr.wikipedia.org/wiki /X_Window_System) , ISC (http://fr.wikipedia.org/wiki/ Internet_Systems_Consortium) , Apache (http://fr.wikipedia.org/ wiki/Apache_Software_Foundation) , Ghostscript (http:// fr.wikipedia.org/wiki/Ghostscript) , Common UNIX Printing System (http://fr.wikipedia.org/wiki/Common_Unix_Printing_System) , Samba (http://fr.wikipedia.org/wiki/Samba_(informatique)) , GNOME (http://fr.wikipedia.org/wiki/GNOME) , KDE (http:// fr.wikipedia.org/wiki/KDE) , Mozilla (http://fr.wikipedia.org/ wiki/Mozilla) , OpenOffice.org (http://fr.wikipedia.org/wiki/ OpenOffice.org) , Vim (http://fr.wikipedia.org/wiki/Vim) , TeX (http://fr.wikipedia.org/wiki/TeX) , LaTeX (http://     fr.wikipedia.org/wiki/LaTeX) , DocBook (http://fr.wikipedia.org/ wiki/DocBook) , Perl (http://fr.wikipedia.org/wiki/Perl_ (langage)) , Python (http://fr.wikipedia.org/wiki/Python_ (langage)) , Tcl (http://fr.wikipedia.org/wiki/ Tool_Command_Language) , Java (http://fr.wikipedia.org/wiki/Java_ (langage)) , Ruby (http://fr.wikipedia.org/wiki/Ruby) , PHP (http://fr.wikipedia.org/wiki/PHP:_Hypertext_Preprocessor) , Berkeley DB (http://fr.wikipedia.org/wiki/Berkeley_DB) , MySQL (http://fr.wikipedia.org/wiki/MySQL) , PostgreSQL (http:// fr.wikipedia.org/wiki/PostgreSQL) , Exim (http://fr.wikipedia.org /wiki/Exim) , Postfix (http://fr.wikipedia.org/wiki/Postfix) , Mutt (http://fr.wikipedia.org/wiki/Mutt) , FreeBSD (http:// fr.wikipedia.org/wiki/FreeBSD) , OpenBSD (http://fr.wikipedia.org /wiki/OpenBSD) , Plan 9 (http://fr.wikipedia.org/wiki/ Plan_9_from_Bell_Labs) et de nombreux autres projets de logiciels libres indépendants. Debian intègre cette diversité de logiciels libres dans un seul système. 3. À propos de ce document 3.1. Règles     Les règles suivantes ont été suivies lors de la compilation de ce document : * fournir un aperçu et passer les cas marginaux (vue d'ensemble ) ; * le garder court et simple (KISS) ; * ne pas réinventer la roue (utiliser des liens pointant vers     les références existantes) ; * mettre l’accent sur les outils n'ayant pas d'interface graphique ou en mode console (utiliser des exemples en ligne de commande) ; * être objectif (utiliser popcon (http://popcon.debian.org/) , etc.). Astuce     J'ai essayé d'élucider les aspects hiérarchiques et les niveaux les plus bas du système. 3.2. Exigences de départ Avertissement     On attend de vous que vous fassiez des efforts pour rechercher des réponses par vous-même au-delà de cette documentation. Ce document ne donne que des points de départs efficaces.     Vous devez chercher vous-même une solution dans les sources primaires : * le site Debian en http://www.debian.org (http:// www.debian.org) pour les informations générales ; * la documentation dans le répertoire « /usr/share/doc/  » : * les pages de manuel (manpage) de style UNIX : « dpkg -L |grep '/man/man.*/' » ; * les pages info de style GNU : « dpkg -L |grep '/ info/' » ; * les signalements de bogues : http://bugs.debian.org/ (http://bugs.debian.org/)  ;     * le Wiki Debian en http://wiki.debian.org/ (http:// wiki.debian.org/) pour les sujets spécifiques ou changeants ; * les HOWTOs du Projet de documentation Linux (TLDP) en http:// tldp.org/ (http://tldp.org/) et leurs traductions disponibles sur la partie francophone en http://fr.tldp.org/ (http:// fr.tldp.org/)  ; * « The Single UNIX Specification » depuis la page d'entrée « The UNIX System » de l’Open Group en http://www.unix.org/ (http://www.unix.org/)  ; * l’encyclopédie libre de Wikipedia en http://www.wikipedia.org / (http://www.wikipedia.org/) . Note     Pour accéder à une documentation détaillée, vous devrez installer les paquets de documentation qui correspondent au nom du paquet avec le suffixe « -doc ». 3.3. Conventions Ce document fournit des informations en utilisant le style de     présentation simplifié suivant, avec des exemples de commandes de l’interpréteur bash(1) :     # $ Ces invites de l’interpréteur de commandes permettent de distinguer le compte utilisé et correspondent à la définition des     variables d'environnement « PS1='\$' » et « PS2=' ' ». Ces valeurs ont été choisies pour ce document dans un but de lisibilité, elles ne sont pas représentatives d'un système réel. Note     Consultez la signification des variables d'environnement « $PS1 » et « $PS2 » dans bash(1). L’action demandée à l’administrateur du système est écrite sous     forme d'une phrase impérative, par exemple « Pressez la touche Entrée après la saisie de chaque chaîne de commande dans l’interpréteur de commandes. » La colonne de description ou similaire dans le tableau peut contenir une locution nominale selon la convention de description courte du paquet (http://www.debian.org/doc/manuals/ developers-reference/best-pkging-practices#bpp-desc-basics) qui supprime les articles se trouvant en tête tels que  « un » et « le » (« a », « the »). Elle peut contenir une phrase à l’infinitif comme locution nominale sans le « to » de tête (NdT :     en français, une phrase impérative commençant par un verbe à l’infinitif), suivie de la description courte de la commande selon la convention des pages de manuel. Cela peut sembler bizarre à certaines personnes mais ce sont les choix voulus par l’auteur afin de garder cette documentation la plus simple possible. Ces locutions nominales, selon cette convention de description courte, n'ont pas de majuscule à la première lettre et ne se terminent pas par un point. Note     Les noms propres, y compris les noms de commandes, gardent leur casse indépendamment de l’endroit où ils se trouvent. Un morceau de commande cité dans le paragraphe d'un texte sera     signalé par une police « typewriter » (machine à écrire) entre guillemets, comme par exemple « aptitude safe-upgrade ». Les données textuelles d'un fichier de configuration citées dans     un paragraphe seront signalées par une police de type machine à écrire entre guillemets, comme par exemple « deb-src ». Une commande sera indiquée par son nom dans la police machine à écrire suivi, de manière facultative, par le numéro de section de     la page de manuel entre parenthèses, comme par exemple bash(1). Vous êtes encouragé à rechercher des informations complémentaires en entrant :     $ man 1 bash Une page de manuel est indiquée par son nom dans la police machine à écrire suivie, entre parenthèses, du numéro de la     section de la page de manuel, comme par exemple, sources.list (5) . Vous êtes encouragé à rechercher des informations complémentaires en entrant :     $ man 5 sources.list Une page info est indiquée par un fragment entre guillemets de la     commande correspondante dans la police machine à écrire, comme par exemple, « info make ». Vous êtes encouragé à rechercher des informations complémentaires en entrant :     $ info make Un nom de fichier est indiqué par une police machine à écrire     entre guillemets, comme par exemple, « /etc/passwd ». En ce qui concerne les fichiers de configuration, vous êtes encouragé à rechercher des informations complémentaires en entrant :     $ sensible-pager "/etc/passwd" Un nom de répertoire est indiqué par la police machine à écrire     entre guillemets, comme par exemple, « /etc/init.d/ ». Vous êtes encouragé à explorer son contenu en entrant :     $ mc "/etc/init.d/" Un nom de paquet est indiqué par son nom dans la police machine à     écrire, comme par exemple vim. Vous êtes encouragé à rechercher des informations complémentaires en entrant : $ dpkg -L vim     $ apt-cache show vim $ aptitude show vim On peut indiquer l’emplacement d'une documentation par son nom de fichier dans la police machine à écrire entre guillemets, comme par exemple « /usr/share/doc/sysv-rc/README.runlevels.gz » et « /     usr/share/doc/base-passwd/users-and-groups.html » ou par son URL (http://fr.wikipedia.org/wiki/Uniform_Resource_Locator) , comme par exemple http://www.debian.org (http://www.debian.org) . Vous êtes encouragé à lire la documentation en entrant : $ zcat "/usr/share/doc/sysv-rc/README.runlevels.gz" | sensible-pager     $ sensible-browser "/usr/share/doc/base-passwd/users-and-groups.html" $ sensible-browse "http://www.debian.org" Une variable d'environnement est indiquée par son nom précédé     d’un « $ » dans la police machine à écrire entre guillemets, comme par exemple « $TERM ». Vous êtes encouragé à obtenir sa valeur actuelle en entrant :     $ echo "$TERM" 3.4. Le concours de popularité (« popcon ») Les données du popcon (http://popcon.debian.org/) sont présentées comme une manière objective de mesurer la popularité de chaque     paquet. Elles sont téléchargées depuis 2012-11-26 14:28:42 UTC et contiennent un total de 129766 soumissions de rapports pour 126956 paquets binaires et 23 architectures. Note     Vous remarquerez que l’archive amd64 unstable ne contient actuellement que 39011 paquets. Les données de popularité contiennent des rapports venant de nombreuses installations anciennes. Le numéro de « popcon », précédé par un « V: » pour « votes »,     est calculé par « 1000 * (soumissions popcon pour le paquet exécuté récemment sur le PC)/(nombre total des soumissions popcon) ». Le numéro de « popcon », précédé par un « I: » pour     « installations », est calculé par « 1000 * (soumissions popcon pour le paquet installé sur le PC)/(nombre total des soumissions popcon) ». Note Les données numériques de popcon ne doivent pas être considérées comme des mesures absolues de l’importance des paquets. Il y a de     nombreux facteurs qui peuvent fausser les statistiques. Par exemple, certains systèmes participant au popcon ont monté des répertoires tels que « /bin » avec l’option « noatime » afin d'améliorer les performances du système et ont, de ce fait, désactivé le « vote » de tels systèmes. 3.5. Taille du paquet Les données correspondant à la taille du paquet sont aussi présentées comme une mesure objective de chacun des paquets. Elles sont basées sur « Installed-Size: » (« taille installée »)     indiquée par la commande « apt-cache show » ou « aptitude show  » (actuellement sur l’architecture amd64 et pour la version unstable). La taille est indiquée en Kio (kibioctet (http:// en.wikipedia.org/wiki/Kibibyte) = unité pour 1024 octets). Note Si un paquet a une taille de faible valeur numérique, cela peut     vouloir dire que le paquet de la version unstable est un paquet « dummy » qui permet l’installation par dépendances d'autres paquets ayant un contenu significatif. Un paquet dummy permet une transition en douceur ou un éclatement du paquet. Note     Une taille de paquet suivie de « (*) » indique que la version unstable du paquet est absente et que la taille du paquet venant de la version experimental a été utilisée en remplacement. 3.6. Signalements de bogues concernant ce document Si vous découvrez des problèmes dans ce document, veuillez signaler les bogues du paquet debian-reference en utilisant     reportbug(1). Veuillez inclure des suggestions de correction en lançant « diff -u » sur la version en texte brut ou sur le source. 4. Quelques citations pour les nouveaux utilisateurs Voici quelques citations intéressantes venant de la liste de     diffusion Debian et qui peuvent aider les nouveaux utilisateurs à y voir plus clair : * « This is UNIX. It gives you enough rope to hang yourself. » --- Miquel van Smoorenburg (C'est UNIX. Il vous donne assez de corde pour vous pendre vous-même).     * « UNIX IS user friendly... It's just selective about who its friends are. » --- Tollef Fog Heen (UNIX est l’ami de l’utilisateur… Il choisit juste qui sont ses amis). Chapitre 1. Didacticiels GNU/Linux Je pense qu’apprendre un système d'exploitation est comme apprendre une nouvelle langue étrangère. Bien que les livres de     didacticiels et de documentation soient utiles, vous devrez pratiquer vous-même. Pour vous aider à vous lancer en douceur, je vais développer quelques points fondamentaux. La puissance de la conception de Debian (http://www.debian.org) GNU (http://fr.wikipedia.org/wiki/GNU) /Linux (http:// fr.wikipedia.org/wiki/Linux) vient du système d'exploitation UNIX (http://fr.wikipedia.org/wiki/UNIX) , c'est-à-dire un système     d'exploitation multi-utilisateurs (http://fr.wikipedia.org/wiki/ Multi-utilisateur) , multi-tâches (http://fr.wikipedia.org/wiki/ Multitâche) . Vous devrez apprendre à tirer parti de la puissance de ces fonctionnalités et des similitudes entre UNIX et GNU/ Linux. N’écartez pas des textes orientés UNIX en ne vous reposant que     sur les textes GNU/Linux, cela vous priverait de beaucoup d'informations utiles. Note Si vous avez utilisé pendant un certain temps des systèmes     ressemblant à UNIX (http://fr.wikipedia.org/wiki/Type_Unix) avec des outils en ligne de commande, vous connaissez sans doute tout ce que j'explique ici. Vous pourrez utiliser ce document pour actualiser vos connaissances. 1.1. Bases pour la console 1.1.1. L’invite de l’interpréteur de commandes Au démarrage du système, si vous n'avez pas installé le système X Window (http://fr.wikipedia.org/wiki/X_Window_System) avec un     gestionnaire d'affichage tel que gdm3, un écran d'identification en mode caractères vous est présenté. Supposons que le nom d'hôte de votre machine soit toto, l’invite d'identification ressemblera alors à ceci :     toto login: Si vous avez installé un environnement graphique (http:// fr.wikipedia.org/wiki/Environnement_graphique) (GUI) tel que GNOME (http://fr.wikipedia.org/wiki/GNOME) ou KDE (http://     fr.wikipedia.org/wiki/KDE) , vous pouvez alors obtenir une telle invite d'identification par Ctrl-Alt-F1, vous pourrez ensuite revenir à l’environnement graphique par Alt-F7 (consultez Section 1.1.6, « Consoles virtuelles » ci-dessous pour davantage d'informations). À l’invite d'identification, entrez votre nom d'utilisateur, par     exemple pingouin, et pressez la touche Entrée, entrez ensuite votre mot de passe et pressez de nouveau la touche Entrée. Note Conformément à la tradition UNIX, l’identifiant de l’utilisateur et le mot de passe sur un système Debian sont sensibles à la     casse. L’identifiant de l’utilisateur est habituellement choisi uniquement en minuscules. Le premier compte d'utilisateur est normalement créé lors de l’installation. Des comptes d'utilisateurs supplémentaires peuvent être créés avec la commande adduser(8) par l’administrateur (root). Le système démarre avec le message de bienvenue qui se trouve     dans « /etc/motd » (Message du jour : « Message Of The Day ») et présente une invite de commande comme : Debian GNU/Linux lenny/sid toto tty1 toto login: pingouin Password: Last login: Sun Apr 22 09:29:34 2007 on tty1 Linux snoopy 2.6.20-1-amd64 #1 SMP Sun Apr 15 20:25:49 UTC 2007 x86_64     The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. toto:~$ Dans cet exemple, la partie principale du message d'accueil peut     être personnalisée en éditant le fichier « /etc/motd.tail ». La première ligne est générée à partir des informations du système obtenues par la commande «  uname -snrvm ». Vous êtes maintenant sous l’interpréteur de commandes (http://     fr.wikipedia.org/wiki/Shell_(informatique)) (« shell »). Le shell interprète vos commandes. 1.1.2. Invite de l’interpréteur de commandes sous X Si, lors de l’installation, vous avez installé, avec le système X Window (http://fr.wikipedia.org/wiki/X_Window_System) , un gestionnaire graphique de session tel que gdm3 de GNOME (http:// fr.wikipedia.org/wiki/GNOME) en sélectionnant la tâche     « Environnement de bureau », un écran d'identification graphique vous sera présenté au démarrage de votre système. Entrez votre nom d'utilisateur et votre mot de passe pour vous connecter à un compte d'utilisateur sans privilège. Utilisez la touche de tabulation pour passer du champ d'entrée de l’utilisateur à celui du mot de passe ou utilisez la souris et un clic-gauche. Sous X, vous pouvez obtenir une invite de l’interpréteur de commandes en lançant un programme d'émulation de terminal-x comme     gnome-terminal(1), rxvt(1) ou xterm(1). Sous l’environnement de bureau GNOME, il suffit de cliquer « Applications » → « Accessoires » → « Terminal ».     Vous pouvez aussi consulter la Section 1.1.6, « Consoles virtuelles » ci-dessous. Sous d'autres environnements de bureau (comme fluxbox), il peut     ne pas y avoir de point d'entrée de menu évident. Si cela se produit, essayez simplement de faire un clic-droit au milieu de l’écran en espérant voir apparaître un menu. 1.1.3. Compte de l’administrateur (root) Le compte de l’administrateur (root) est encore appelé     superutilisateur (http://fr.wikipedia.org/wiki/Utilisateur_root) ou utilisateur privilégié. Depuis ce compte, vous pouvez effectuer les opérations d'administrations du système suivantes : * lire, écrire et effacer n'importe quel fichier du système quelles que soient ses permissions ; * définir le propriétaire et les permissions de n'importe quel     fichier du système ; * définir le mot de passe de n'importe quel utilisateur non-privilégié du système ; * vous connecter à n'importe quel compte sans mot de passe.     La puissance illimitée du compte de l’administrateur fait que vous devez être attentif et responsable lorsque vous l’utilisez. Avertissement     Ne donnez jamais le mot de passe de l’administrateur à d'autres personnes. Note Les permissions d'un fichier (y compris les fichiers de périphériques tels que les CD-ROM ou autres, qui ne sont que des fichiers parmi d'autres pour le système Debian) peuvent le rendre     inutilisable ou inaccessible à des utilisateurs autres que l’administrateur. Bien que l’utilisation du compte de l’administrateur soit un moyen rapide de test dans une telle situation, sa résolution devra être effectuée en définissant les droits de fichiers et les membres des groupes d'utilisateurs corrects (consultez Section 1.2.3, « Permissions du système de fichiers »). 1.1.4. Invite de l’interpréteur de commandes pour l’administrateur Voici quelques méthodes de base pour obtenir l’invite de     l’interpréteur de commande de l’administrateur en utilisant le mot de passe de « root » : * entrez root à l’invite de connexion en mode caractère ; * sous l’environnement de bureau GNOME, cliquez « Applications » → « Accessoires » → « Terminal administrateur » ; * entrez « su -l » depuis une invite quelconque de l’interpréteur de commandes ;     o cela ne préserve pas l’environnement de l’utilisateur actuel ; * entrez « su » depuis une invite quelconque de l’interpréteur de commandes ; o cela préserve une partie de l’environnement de l’utilisateur actuel. 1.1.5. Outils graphiques d'administration du système Lorsque le menu de votre environnement de bureau ne démarre pas automatiquement, avec les droits appropriés, l’interface graphique des outils d'administration du système, vous pouvez les démarrer depuis l’invite de l’interpréteur du compte de     l’administrateur dans un émulateur de terminal X, tel que gnome-terminal(1), rxvt(1) ou xterm(1). Consultez Section 1.1.4, « Invite de l’interpréteur de commandes pour l’administrateur » et Section 7.8.4, « Faire tourner X avec le compte de l’administrateur ». Avertissement     Ne jamais lancer un affichage X ou un gestionnaire de session avec le compte de l’administrateur en entrant root à l’invite d'un gestionnaire d'écran tel que gdm3(1). Avertissement     Ne jamais faire tourner de programme distant non sûrs avec une interface graphique sous X window lorsque des informations critiques sont affichées parce votre écran X peut être espionné. 1.1.6. Consoles virtuelles Il y a, dans le système Debian par défaut, six consoles commutables en mode caractères de type VT100 (http:// fr.wikipedia.org/wiki/VT100) disponibles pour lancer directement l’interpréteur de commandes sur la machine Linux. À moins que vous ne disposiez d'un environnement graphique, vous pouvez     basculer entre les consoles virtuelles en pressant la touche Alt de gauche et, simultanément, l’une des touches F1 à F6. Chaque console en mode caractères permet de se connecter de manière indépendante à un compte et offre un environnement multi-utilisateurs. Cet environnement multi-utilisateurs est une fonctionnalité intéressante d’UNIX, très vite, on ne peut plus s'en passer. Depuis le système, vous avez accès à la console 1 en pressant la combinaison de touches Ctrl-Alt-F1, c'est-à-dire que la touche     Ctrl de gauche, la touche Alt de gauche et la touche F1 sont pressées simultanément. Vous pouvez revenir au système X Window, qui tourne normalement sur la console virtuelle 7, en pressant Alt-F7.     Vous pouvez aussi changer de console virtuelle, par exemple pour la console 1, par la commande :     # chvt 1 1.1.7. Comment quitter l’invite de l’interpréteur de commandes Pour arrêter l’activité de l’interpréteur de commandes, entrez Ctrl-D, c'est-à-dire la touche Ctrl de gauche et la touche d pressées simultanément, à l’invite de l’interpréteur. Si vous     êtes sur une console en mode caractères, cela vous fera retourner alors à l’invite d'identification. Même si on se réfère à ces caractères de commande avec « control D » en majuscule, il n'est pas nécessaire de presser la touche majuscule. Le raccourci ^D, est aussi utilisé pour Ctrl-D. Vous pouvez aussi entrer « exit ». Si vous êtes sur un émulateur de x-terminal(1), vous pouvez     fermer la fenêtre de l’émulateur de terminal-x de la même manière. 1.1.8. Comment arrêter le système Comme tout autre système d'exploitation moderne où les opérations sur les fichiers mettent en œuvre un cache de données (http:// fr.wikipedia.org/wiki/M%C3%A9moire_cache) en mémoire afin d'améliorer les performances, le système Debian demande que l’on exécute une procédure d'arrêt adaptée avant que le système ne     puisse être mis hors tension. Cela permet de maintenir l’intégrité des fichiers, en forçant l’écriture sur disque de toutes les informations conservées en mémoire. Si un logiciel de contrôle de l’alimentation est disponible, la procédure d'arrêt coupera automatiquement l’alimentation du système. (Sinon, vous devrez presser le bouton d'alimentation pendant quelques secondes une fois la procédure d'arrêt terminée).     Dans le mode normal multi-utilisateurs, vous pouvez arrêter le système depuis la ligne de commandes :     # shutdown -h now     Dans le mode normal mono-utilisateur, vous pouvez arrêter le système depuis la ligne de commandes :     # poweroff -i -f Pour arrêter le système, vous pouvez aussi utiliser Ctrl-Alt-Suppr (la touche Ctrl de gauche, la touche Alt de gauche     et la touche Suppr pressées simultanément) si la ligne ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now » se trouve dans le fichier « /etc/inittab ». Consultez inittab(5) pour davantage d'informations.     Consultez Section 6.9.6, « Comment arrêter le système distant par SSH ». 1.1.9. Récupérer une console propre Lorsque l’écran est corrompu après que vous ayez fait des choses amusantes comme « cat  » entrez « reset » à     l’invite de commande. Il est possible que vous ne voyiez pas ce que vous entrez. Vous pouvez aussi entrer « clear » pour nettoyer l’écran. 1.1.10. Suggestions de paquets supplémentaires pour le débutant Bien que même une installation minimale du système Debian sans aucune tâche d'environnement de bureau fournisse les fonctionnalités UNIX de base, c'est une bonne idée pour les     débutants d'installer pour commencer quelques paquets de ligne de commandes ou de terminal en mode caractères basé sur « curses » comme mc et vim avec apt-get(8) en utilisant les commandes suivantes : # apt-get update     ... # apt-get install mc vim sudo ...     Si vous avez déjà installé ces paquets, aucun nouveau paquet ne sera installé. Tableau 1.1. Liste de paquets de programmes intéressants en mode texte +-------------------------------------------------------------------------+ |paquet |popcon |taille |description | |-------------------+-------------+----------------------+----------------| | |V:100, I:261 | |gestionnaire de | |mc (http:// |(http:// |1300 (http:// |fichiers plein | |packages.debian.org|qa.debian.org|packages.qa.debian.org|écran en mode | |/sid/mc) |/popcon.php? |/m/mc.html) |texte | | |package=mc) | | | |-------------------+-------------+----------------------+----------------| | |V:432, I:741 | |programme | |sudo (http:// |(http:// |1844 (http:// |donnant aux | |packages.debian.org|qa.debian.org|packages.qa.debian.org|utilisateurs des| |/sid/sudo) |/popcon.php? |/s/sudo.html) |privilèges | | |package=sudo)| |d'administration| | | | |limités | |-------------------+-------------+----------------------+----------------| | | | |éditeur de texte| | |V:168, I:400 | |UNIX Vi amélioré| |vim (http:// |(http:// |1877 (http:// |(Vi IMproved), | |packages.debian.org|qa.debian.org|packages.qa.debian.org|éditeur de texte| |/sid/vim) |/popcon.php? |/v/vim.html) |pour | | |package=vim) | |programmeurs | | | | |(version | | | | |standard) | |-------------------+-------------+----------------------+----------------|     | | | |éditeur de texte| | |V:118, I:951 | |UNIX Vi amélioré| |vim-tiny (http:// |(http:// |830 (http:// |(Vi IMproved), | |packages.debian.org|qa.debian.org|packages.qa.debian.org|éditeur de texte| |/sid/vim-tiny) |/popcon.php? |/v/vim-tiny.html) |pour | | |package= | |programmeurs | | |vim-tiny) | |(version | | | | |compacte) | |-------------------+-------------+----------------------+----------------| | |V:49, I:101 | |projet GNU | |emacs23 (http:// |(http:// |13035 (http:// |Emacs, éditeur | |packages.debian.org|qa.debian.org|packages.qa.debian.org|de texte | |/sid/emacs23) |/popcon.php? |/e/emacs23.html) |extensible basé | | |package= | |sur Lisp | | |emacs23) | |(version 23) | |-------------------+-------------+----------------------+----------------| | |V:283, I:869 | | | |w3m (http:// |(http:// |2082 (http:// |navigateurs WWW | |packages.debian.org|qa.debian.org|packages.qa.debian.org|en mode texte | |/sid/w3m) |/popcon.php? |/w/w3m.html) | | | |package=w3m) | | | |-------------------+-------------+----------------------+----------------| | |V:24, I:37 | |couper-coller à | |gpm (http:// |(http:// |499 (http:// |la mode UNIX sur| |packages.debian.org|qa.debian.org|packages.qa.debian.org|une console | |/sid/gpm) |/popcon.php? |/g/gpm.html) |texte (démon) | | |package=gpm) | | | +-------------------------------------------------------------------------+     Ce peut être une bonne idée de lire quelques documentations. Tableau 1.2. Liste de paquets de documentation +---------------------------------------------------------------------------------------+ |paquet |popcon |taille |description | |---------------------+---------------------+--------------------------+----------------| | |I:847 (http:// | |projet de | |doc-debian (http:// |qa.debian.org/ |142 (http:// |documentation | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/d/ |Debian, (FAQ | |sid/doc-debian) |doc-debian) |doc-debian.html) |Debian) et | | | | |autres documents| |---------------------+---------------------+--------------------------+----------------| |debian-policy (http:/|I:86 (http:// |3648 (http:// |Charte Debian et| |/packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/d/ |documents | |sid/debian-policy) |popcon.php?package= |debian-policy.html) |associés | | |debian-policy) | | | |---------------------+---------------------+--------------------------+----------------| |developers-reference |I:11 (http:// | |Guides et | |(http:// |qa.debian.org/ |1046 (http:// |informations | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/d/ |pour les | |sid/ |developers-reference)|developers-reference.html)|responsables | |developers-reference)| | |Debian | |---------------------+---------------------+--------------------------+----------------|     |maint-guide (http:// |I:8 (http:// |699 (http:// |Guide des | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/m/ |nouveaux | |sid/maint-guide) |popcon.php?package= |maint-guide.html) |responsables | | |maint-guide) | |Debian | |---------------------+---------------------+--------------------------+----------------| |debian-history (http:|I:2 (http:// |4306 (http:// | | |//packages.debian.org|qa.debian.org/ |packages.qa.debian.org/d/ |Histoire du | |/sid/debian-history) |popcon.php?package= |debian-history.html) |projet Debian | | |debian-history) | | | |---------------------+---------------------+--------------------------+----------------| |debian-faq (http:// |I:798 (http:// |1151 (http:// | | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/d/ |FAQ Debian | |sid/debian-faq) |popcon.php?package= |debian-faq.html) | | | |debian-faq) | | | |---------------------+---------------------+--------------------------+----------------| | | | |Guide de | |sysadmin-guide (http:|I:2 (http:// |964 (http:// |l’administrateur| |//packages.debian.org|qa.debian.org/ |packages.qa.debian.org/s/ |système (« The | |/sid/sysadmin-guide) |popcon.php?package= |sysadmin-guide.html) |Linux System | | |sysadmin-guide) | |Administrators' | | | | |Guide ») | +---------------------------------------------------------------------------------------+     Vous pouvez installer quelques-uns de ces paquets en passant les commandes suivantes :     # apt-get install nom_paquet 1.1.11. Compte pour un utilisateur supplémentaire Si vous ne souhaitez pas utiliser votre compte d'utilisateur     principal pour les activités de formation qui suivent, vous pouvez créer un compte de formation, par exemple poisson en passant la commande qui suit :     # adduser poisson     Répondez à toutes les questions. Cela va créer un nouveau compte appelé poisson. Après vos     exercices, vous pourrez supprimer ce compte d'utilisateur et son répertoire personnel par :     # deluser --remove-home poisson 1.1.12. Configuration de sudo Pour une station de travail typique avec un seul utilisateur tel que le système de bureau Debian sur un PC de bureau, il est habituel de mettre en œuvre une configuration simple de sudo(8)     comme suit afin que l’utilisateur non privilégié, par exemple pingouin, puisse obtenir les privilèges d'administration avec simplement son mot de passe personnel et non avec le mot de passe de l’administrateur :     # echo "pingouin ALL=(ALL) ALL" >> /etc/sudoers Il est aussi habituel, en remplacement, de faire comme suit afin     que l’utilisateur non privilégié, par exemple pingouin, puisse obtenir les privilèges d'administration sans aucun mot de passe personnel.     # echo "pingouin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers Cette astuce ne doit être utilisée qu'avec une station de travail     que vous administrez, n'ayant qu'un seul utilisateur et dont vous êtes le seul utilisateur. Avertissement     Ne configurez pas de cette manière les utilisateurs normaux d'une station de travail multi-utilisateurs parce que cela serait très grave pour la sécurité du système. Attention     Le mot de passe et le compte du pingouin de l’exemple précédent doivent bénéficier de la même protection que le mot de passe et le compte de l’administrateur. Attention Le privilège d'administration, dans ce contexte, appartient à     quelqu'un autorisé à effectuer les tâches d'administration du système sur la station de travail. Ne jamais donner un tel privilège à un responsable du département administratif de votre entreprise ni à votre patron, à moins qu'ils n'y soient autorisés et en soient capables. Note     Pour donner un accès privilégié à certains périphériques et certains fichiers, vous devriez envisager l’utilisation d'un groupe donnant un accès limité plutôt que d'utiliser le privilège de root par l’intermédiaire de sudo(8). Note Avec une configuration plus approfondie et prudente, sudo(8) peut permettre à d'autres utilisateurs d'obtenir des privilèges     limités d'administration sur un système partagé sans partager le mot de passe de l’administrateur. Cela peut améliorer la confiance sur les machines ayant plusieurs administrateurs de manière à ce que vous puissiez dire qui a fait quoi. D'un autre côté, vous ne devriez pas confier de tels privilèges à quelqu'un d'autre. 1.1.13. À vous de jouer Vous êtres maintenant prêt à jouer avec le système Debian, sans     risque aussi longtemps que vous utiliserez un compte d'utilisateur sans privilège. Cela, parce que le système Debian, même après l’installation initiale, est configuré avec des permissions de fichiers adaptées qui évitent aux utilisateurs non privilégiés d'endommager le     système. Bien entendu, il peut y avoir certaines failles qui peuvent être exploités mais ceux qui s’inquiètent de ces problèmes ne devraient pas lire cette section mais plutôt le Manuel de sécurisation (http://www.debian.org/doc/manuals/ securing-debian-howto/) (« Securing Debian Manual »). Nous allons apprendre le système Debian en tant que système     semblable à UNIX (http://fr.wikipedia.org/wiki/Type_Unix) (« UNIX-like ») avec : * Section 1.2, « Système de fichiers de type UNIX » (concept de base) ; * Section 1.3, « Midnight Commander (MC) » (méthode de survie)  ;     * Section 1.4, « L’environnement élémentaire de travail de type UNIX » (méthode de base) ; * Section 1.5, « La commande simple de l’interpréteur de commandes » (mécanisme de l’interpréteur de commandes) ; * Section 1.6, « Traitement des données textuelles à la UNIX » (méthode de traitement des données textuelles). 1.2. Système de fichiers de type UNIX Avec GNU/Linux et d'autres systèmes d'exploitation semblables à UNIX (http://fr.wikipedia.org/wiki/Type_Unix) , les fichiers (http://fr.wikipedia.org/wiki/Fichier_informatique) sont organisés en répertoires (http://fr.wikipedia.org/wiki/     Répertoire_(informatique)) . Tous les fichiers et les répertoires sont disposés sous forme d'une grosse arborescence ancrée sur « /  ». On l’appelle un arbre parce que si vous dessinez le système de fichiers, il ressemble à un arbre qui se trouverait disposé la tête en bas. Ces fichiers et répertoires peuvent être répartis sur plusieurs périphériques. La commande mount(8) sert à attacher les systèmes de fichiers se trouvant sur certains périphériques à la grosse arborescence des fichiers. À l’opposé, la commande umount(8) les détachera de nouveau. Avec les noyaux Linux récents, mount(8)     avec certaines options peut lier une partie d'une arborescence de fichiers à un autre emplacement ou peut monter un système de fichiers de manière partagée, privée, esclave ou « non-liable ». Vous trouverez les options de montage prises en compte par chaque système de fichiers dans « /share/doc/linux-doc-2.6.*/ Documentation/filesystems/ ». Les répertoires d'un système UNIX sont appelés dossiers sur d'autres systèmes. Vous remarquez aussi qu'il n'y a, sur aucun     système UNIX, de concept de lecteur tel que « A: ». Il y a un système de fichiers qui comprend tout. C'est un gros avantage comparé à Windows. 1.2.1. Bases concernant les fichiers UNIX     Voici les bases des fichiers UNIX : * les noms de fichiers sont sensibles à la casse. Ce qui veut dire que « MONFICHIER » et « MonFichier » sont des fichiers différents ; * on se réfère au répertoire racine (« root directory »), qui est la racine du système de fichiers, simplement par « / ». Ne pas le confondre avec le répertoire personnel de l’utilisateur root : « /root » ; * un nom de répertoire peut être constitué de n'importe quelle lettre ou symbole sauf « / ». Le répertoire racine est une exception, son nom est « / » (prononcé « slash » ou « le répertoire racine »), il ne peut pas être renommé ; * chaque fichier ou répertoire est désigné par un nom de fichier entièrement qualifié, nom de fichier absolu ou chemin , indiquant la séquence de répertoires que l’on doit traverser pour l’atteindre. Les trois expressions sont synonymes ; * tous les noms de fichiers entièrement qualifiés commencent par le répertoire « / » et il y a un / » entre chaque répertoire ou fichier dans le nom du fichier. Le premier « /  » est le répertoire de plus haut niveau, et les autres « / » séparent les sous-répertoires successifs jusqu'à ce que l’on atteigne la dernière entrée qui est le nom fichier proprement dit. Les mots utilisés ici peuvent être source de confusion. Prenez comme exemple le nom pleinement qualifié suivant : « / usr/share/keytables/us.map.gz ». Cependant, les gens utiliseront souvent son nom de base « us.map.gz » seul comme nom de fichier ;     * le répertoire racine comporte de nombreuses branches, telles que « /etc/ » et « /usr/ ». Ces sous-répertoires se décomposent eux-mêmes en d'autres sous-répertoires comme « / etc/init.d/ » et « /usr/local/ ». L’ensemble de la chose, vu globalement, s'appelle l’arborescence des répertoires. Vous pouvez imaginer un nom de fichier absolu comme une route partant de la base de l’arbre (« / ») jusqu'à l’extrémité de certaines branches (le fichier). Vous entendrez aussi certains parler de l'arborescence des répertoires comme d'un arbre généalogique englobant tous les descendants directs d'un seul personnage appelé le répertoire racine (« / ») : les sous-répertoires ont alors des parents et un chemin montre l’ascendance complète d'un fichier. Il y a aussi des chemins relatifs qui commencent quelque part ailleurs qu'au niveau du répertoire racine. Il faut vous souvenir que le répertoire « ../ » indique le répertoire parent. Cette terminologie s'applique de la même manière aux autres structures ressemblant aux répertoires comme les structures de données hiérarchiques ; * il n'y a pas de chemin de répertoire spécial correspondant à un périphérique physique tel que votre disque dur. C'est différent de RT-11 (http://en.wikipedia.org/wiki/RT-11) , CP/ M (http://fr.wikipedia.org/wiki/Control_Program/Monitor) , OpenVMS (http://fr.wikipedia.org/wiki/Virtual_Memory_System) , MS-DOS (http://fr.wikipedia.org/wiki/MS-DOS) , AmigaOS (http://fr.wikipedia.org/wiki/AmigaOS) et Microsoft Windows (http://fr.wikipedia.org/wiki/Microsoft_Windows) , où le chemin comporte le nom du périphérique comme « C:\ ». (Il existe cependant des entrées de répertoire qui font référence aux périphériques physique en tant qu'élément du système de fichiers normal. Consultez Section 1.2.2, « Fonctionnement interne du système de fichiers »). Note Bien que vous puissiez utiliser la plupart des lettres ou symboles dans un nom de fichier, c'est en pratique un mauvaise idée de le faire. Il est préférable d'éviter tous les caractères qui ont une signification particulière sur la ligne de commandes,     comme les espaces, tabulations, sauts de ligne, et autres caractères spéciaux : { } ( ) [ ] ' ` " \ / > < | ; ! # & ^ * % @ $. Si vous voulez séparer des mots dans un nom, de bons choix sont le point, le tiret et le tiret souligné. Vous pouvez aussi mettre une majuscule en tête de chaque mot « CommeCeci ». Les utilisateurs Linux expérimentés on tendance à aussi à éviter les espaces dans les noms de fichiers. Note     Le mot « root » signifie soit « utilisateur root », soit « répertoire root » Le contexte de son utilisation devrait permettre de les distinguer. Note     Le mot chemin (« path ») n’est pas utilisé que pour les noms de fichiers entièrement qualifiés comme ci-dessus mais aussi pour le chemin de recherche des commandes. La signification voulue est habituellement claire selon le contexte. Les meilleures façons de faire en ce qui concerne la hiérarchie des fichiers sont détaillées dans la « norme de hiérarchie du     système de fichiers » (« Filesystem Hierarchy Standard ») (« /usr /share/doc/debian-policy/fhs/fhs-2.3.txt.gz » et hier(7)). Vous devriez, pour commencer, mémoriser les éléments suivants : Tableau 1.3. Utilisation des répertoires-clés +---------------------------------------------------------------+ |répertoire|utilisation du répertoire | |----------+----------------------------------------------------| |/ |répertoire racine | |----------+----------------------------------------------------|     |/etc/ |fichiers de configuration valables pour l’ensemble | | |du système | |----------+----------------------------------------------------| |/var/log/ |fichiers journaux du système | |----------+----------------------------------------------------| |/home/ |tous les répertoires personnels des utilisateurs non| | |privilégiés | +---------------------------------------------------------------+ 1.2.2. Fonctionnement interne du système de fichiers En suivant la tradition UNIX, le système Debian GNU/Linux fournit un système de fichiers (http://fr.wikipedia.org/wiki/ Syst%C3%A8me_de_fichiers) où les données physiques se trouvent     sur des disques durs et d’autres périphériques de stockage et où les interaction avec les périphériques physiques tels que les écrans de console et les consoles distantes connectées en séries sont représentées de manière unifiée dans « /dev/ ». Chaque fichier, répertoire, tube nommé (une manière pour les programmes de partager des données) ou périphérique physique sur un système Debian GNU/Linux possède une structure de données appelée inœud (http://fr.wikipedia.org/wiki/Inode) (« inode ») qui décrit les attributs qui lui sont associés comme l’utilisateur qui le possède (propriétaire), le groupe auquel il     appartient, l’heure de dernier accès, etc. Si vous êtes vraiment intéressé, consultez « /usr/include/linux/fs.h » la définition exacte de « struct inode » dans le système Debian GNU/Linux. L’idée de pouvoir presque tout représenter dans le système de fichiers était une innovation d’UNIX, et les noyaux modernes de Linux ont encore développé plus loin cette idée. À l’heure actuelle, même les informations concernant les processus qui tournent sur le système se trouvent sur le système de fichiers. Cette représentation abstraite et unifiée des entités physiques et des processus internes est très puissante puisque cela nous permet d'utiliser la même commande pour le même type d'opération     sur des périphériques complètement différents. Il est même possible de changer la manière dont fonctionne le noyau en écrivant des données dans des fichiers spéciaux liés aux processus en cours d'exécution. Astuce     Si vous avez besoin de connaître la correspondance entre une arborescence de fichiers et un périphérique physique, lancez la commande mount(8) sans paramètre. 1.2.3. Permissions du système de fichiers Les permissions du système de fichiers (http://fr.wikipedia.org/     wiki/Permissions_Unix) d'un système basé sur UNIX (http:// fr.wikipedia.org/wiki/Type_Unix) sont définies pour trois catégories d'utilisateurs : * l’utilisateur qui possède le fichier (u) ; * les autres utilisateurs du groupe à qui appartient le fichier     (g) ; * tous les autres utilisateurs (o) dont on parle aussi en tant que « monde entier » ou « tout le monde ».     Pour les fichiers, chaque permission correspondante permet les actions suivantes : * la permission en lecture (r) permet à son propriétaire de voir le contenu du fichier ;     * la permission en écriture (w) permet à son propriétaire de modifier le fichier ; * la permission d'exécution (x) permet à son propriétaire de lancer le fichier comme une commande.     Pour les répertoires, chaque permission correspondante permet les actions suivantes : * la permission en lecture (r) permet à son propriétaire d'afficher le contenu du répertoire ;     * la permission en écriture (w) permet à son propriétaire d'ajouter ou supprimer des fichiers de ce répertoires ; * la permission d'exécution (x) permet à son propriétaire d'accéder aux fichiers du répertoire. Ici, la permission en exécution sur un répertoire ne signifie pas     uniquement l’autorisation de lire des fichiers dans ce répertoire mais aussi l’autorisation de voir leurs attributs, tels que leur taille et l’heure de modification. ls(1) est utilisé pour afficher les informations de permissions     (et davantage) des fichiers et répertoires. Lorsque cette commande est passée avec l’option « -l », elle affiche les informations suivantes dans l’ordre donné : * type de fichier (premier caractère) ; * autorisation d'accès au fichier (neuf caractères, constitués de trois caractères pour l’utilisateur, le groupe et « les autres », dans cet ordre) ; * nombre de liens physiques vers le fichier ;     * nom de l’utilisateur propriétaire du fichier ; * nom du groupe a qui appartient le fichier ; * taille du fichier en caractères (octets) ; * date et heure du fichier (mtime) ; * nom du fichier. Tableau 1.4. Liste des premiers caractères de la sortie de « ls -l » : +------------------------------------------------+ |caractère|signification | |---------+--------------------------------------| |- |fichier normal | |---------+--------------------------------------| |d |répertoire | |---------+--------------------------------------|     |l |lien symbolique | |---------+--------------------------------------| |c |nœud de périphérique en mode caractère| |---------+--------------------------------------| |b |nœud de périphérique en mode bloc | |---------+--------------------------------------| |p |tube nommé | |---------+--------------------------------------| |s |socket | +------------------------------------------------+ chown(1) est utilisé depuis le compte de l’administrateur pour modifier le propriétaire d'un fichier. chgrp(1) est utilisé depuis le compte du propriétaire du fichier ou de     l’administrateur pour changer le groupe du fichier. chmod(1) est utilisé depuis le compte du propriétaire du fichier ou de l’administrateur pour changer les droits d'accès à un fichier ou un répertoire. La syntaxe de base pour manipuler le fichier toto est la suivante : # chown toto     # chgrp toto # chmod [ugoa][+-=][rwxXst][,...] toto Vous pouvez, par exemple, faire qu'une arborescence de     répertoires soit la propriété de l’utilisateur toto et partagée par le groupe titi en faisant ce qui suit : # cd /un/emplacement/     # chown -R toto:titi . # chmod -R ug+rwX,o=rX .     Il existe trois bits qui donnent des permissions particulières : * le bit set user ID (s ou S situé à la place du x) de l’utilisateur ;     * le bit set group ID (s ou S situé à la place du x) du groupe ; * le bit collant « sticky bit » (t ou T situé à la place du x) des « autres ».     Ici la sortie de « ls -l » avec ces bits est en majuscules si les bits d'exécution cachés par ces sorties ne sont pas positionnés. Définir set user ID sur un fichier exécutable permet à un utilisateur d'exécuter les fichier avec l’identifiant du propriétaire du fichier (par exemple root). De la même manière,     définir set group ID sur un fichier exécutable permet d'exécuter le fichier avec l’identifiant de groupe du fichier (par exemple root). Parce que ces positionnements de bits peuvent créer des risques de sécurité, il ne faut les activer qu'avec des précautions extrêmes. Définir set group ID sur un répertoire permet la création de     fichiers à la BSD (http://fr.wikipedia.org/wiki/ Berkeley_Software_Distribution) où tous les fichiers créés dans un répertoire appartiennent au groupe du répertoire. Positionner le sticky bit d'un répertoire empêche un fichier de ce répertoire d'être supprimé par un utilisateur qui n'est pas le propriétaire du fichier. Pour sécuriser le contenu d'un fichier dans des répertoires pouvant être écrits par tout le monde tels     que « /tmp » ou dans des répertoires pouvant être écrits par le groupe, il ne faut pas uniquement supprimer la permission du fichier en écriture mais aussi positionner le sticky bit sur le répertoire. Sinon, le fichier pourra être supprimé et un nouveau fichier créé avec le même nom par un utilisateur quelconque ayant accès en écriture au répertoire.     Voici quelques exemples intéressants de permissions de fichiers. $ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/exim4 crw------- 1 root root 108, 0 oct. 20 07:12 /dev/ppp -rw-r--r-- 1 root root 2718 oct. 5 22:09 /etc/passwd -rw-r----- 1 root shadow 1741 oct. 5 22:09 /etc/shadow -rwsr-xr-x 1 root root 973824 sept. 23 07:04 /usr/sbin/exim4     $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src drwxrwxrwt 17 root root 102400 oct. 20 16:42 /tmp drwxrwsr-x 10 root staff 4096 nov. 29 2011 /usr/local drwxr-xr-x 13 root root 4096 sept. 30 11:24 /usr/src drwxrwsr-x 2 root mail 4096 sept. 27 11:07 /var/mail drwxrwxrwt 5 root root 4096 oct. 20 09:14 /var/tmp Il existe aussi un mode numérique pour décrire les permissions     des fichiers avec chmod(1). Ce mode numérique utilise des nombres en base 8 (radix=8) codés sur 3 ou 4 chiffres. Tableau 1.5. Mode numérique des permissions de fichiers dans les commandes chmod(1) +---------------------------------------------------------------+ |chiffre |signification | |------------+--------------------------------------------------| |1er chiffre |somme de set user ID (=4), set group ID (=2), et | |optionnel |sticky bit (=1) |     |------------+--------------------------------------------------| |2ème chiffre|somme des permissions de lecture (=4), écriture (=| | |2), et exécution (=1) pour l’utilisateur | |------------+--------------------------------------------------| |3ème chiffre|identique pour groupe | |------------+--------------------------------------------------| |4ème chiffre|identique pour autres | +---------------------------------------------------------------+ Cela peut sembler compliqué mais c'est en fait assez simple. Si vous regardez les quelques premières colonnes (2-10) de la sortie de la commande « ls -l » et que vous lisez en représentation     binaire (base 2) les permissions des fichiers (le « - » représentant « 0 » et « rwx » représentant « 1 »), les trois derniers chiffres de la valeur numérique du mode devraient vous donner la représentation des permissions du fichier en octal (base 8).     Essayez, par exemple, ce qui suit : $ touch toto titi $ chmod u=rw,go=r toto     $ chmod 644 titi $ ls -l toto titi -rw-r--r-- 1 pingouin pingouin 0 oct. 20 16:46 titi -rw-r--r-- 1 pingouin pingouin 0 oct. 20 16:46 toto Astuce Si vous avez besoin d'accéder aux informations affichées par « ls     -l » depuis un script de l’interpréteur de commandes, vous devrez utiliser des commandes pertinentes telles que test(1), stat(1) et readlink(1). Vous pouvez aussi utiliser les commandes internes du shell, telles que « [ » ou « test ». 1.2.4. Contrôle des permissions pour les fichiers nouvellement créés : umask Les permissions appliquées à un fichier ou à un répertoire venant     d'être créé sont restreintes par la commande interne du shell umask. Consultez dash(1), bash(1) etbuiltins(7).     (permissions du fichier) = (permissions demandées pour le fichier) & ~(valeur de umask) Tableau 1.6. Exemples de valeurs de umask +---------------------------------------------------------------+ |umask|permissions des |permissions des |utilisation | | |fichiers créés |répertoires créés | | |-----+----------------+------------------+---------------------|     |0022 |-rw-r--r-- |-rwxr-xr-x |ne peut être écrit | | | | |que par l’utilisateur| |-----+----------------+------------------+---------------------| |0002 |-rw-rw-r-- |-rwxrwxr-x |peut être écrit par | | | | |le groupe | +---------------------------------------------------------------+ Le système Debian utilise par défaut un schéma de groupe privé par utilisateur (UPG). Un UPG est créé chaque fois qu'un utilisateur est ajouté au système. Un UPG a le même nom que l’utilisateur pour lequel il a été créé et cet utilisateur est le     seul membre de l’UPG. Un principe d'UPG rend sûr le positionnement de umask à 0002 car chaque utilisateur a son propre groupe privé. (Sur certaines variantes d’UNIX, il est assez courant de faire appartenir tous les utilisateurs au même groupe users et, dans ce cas, c'est une bonne idée de définir umask à 0022 pour des raisons de sécurité). Astuce     Activez UPG en plaçant « umask 002 » dans le fichier ~/.bashrc. 1.2.5. Permissions pour les groupes d'utilisateurs (group) Pour que les droits d'un groupe s'appliquent à un utilisateur     particulier, il faut donner à cet utilisateur l’appartenance au groupe en utilisant « sudo vigr ». Note Vous pouvez aussi ajouter dynamiquement des utilisateurs aux     groupes durant le processus d'authentification en ajoutant la ligne « auth optional pam_group.so » au fichier « /etc/pam.d/ common-auth » et en définissant « /etc/security/group.conf » (consultez Chapitre 4, Authentification). Sous le système Debian, les périphériques ne sont qu'un autre type de fichier. Si vous avez des problèmes pour accéder à des     périphériques tel qu'un CD-ROM ou une clé USB depuis le compte d'un utilisateur, il faudra rendre cet utilisateur membre du groupe concerné. Certains groupes importants fournis par le système permettent à     leurs membres l’accès à des fichiers et des périphériques particuliers sans avoir les privilèges de l’administrateur. Tableau 1.7. Liste des groupes importants fournis par le système pour l’accès aux fichiers +---------------------------------------------------------------+ |groupe |description des fichiers et périphériques accessibles | |-------+-------------------------------------------------------| |dialout|accès complet et direct aux ports série (« /dev/ttyS | | |[0-3] ») | |-------+-------------------------------------------------------| |dip |accès limité aux ports série pour une connexion «  | | |Dialup IP (réseau commuté) vers des pairs de confiance | |-------+-------------------------------------------------------|     |cdrom |lecteurs et graveurs de CD-ROM, DVD+/-RW. | |-------+-------------------------------------------------------| |audio |périphérique audio | |-------+-------------------------------------------------------| |video |périphérique vidéo | |-------+-------------------------------------------------------| |scanner|dispositifs de numérisation (scanners) | |-------+-------------------------------------------------------| |adm |journaux de surveillance du système | |-------+-------------------------------------------------------| |staff |quelques répertoires où effectuer du travail | | |d'administration de début : « /usr/local », « /home ». | +---------------------------------------------------------------+ Astuce Vous devez être membre du groupe dialout pour pouvoir reconfigurer un modem, numéroter vers n'importe où, etc. Mais si     l’administrateur crée dans « /etc/ppp/peers/ » des fichiers de configuration pour des pairs de confiance, vous ne devrez appartenir qu'au groupe dip pour créer une connexion commutée (« Dialup IP ») vers ces pairs de confiance avec commandes pppd (8), pon(1) et poff(1). Certains groupes faisant partie du système, permettent à leurs     membres d'exécuter des commandes particulières sans les privilèges de l’administrateur (root). Tableau 1.8. Liste des groupes importants fournis par le système pour l’exécution de commandes particulières +---------------------------------------------------------------+ |groupe |commandes accessibles | |-------+-------------------------------------------------------|     |sudo |exécuter sudo sans son mot de passe. | |-------+-------------------------------------------------------| | |exécuter des commandes pour ajouter, modifier et | |lpadmin|supprimer des imprimantes de la base de données des | | |imprimantes | +---------------------------------------------------------------+ Pour une liste complète des groupes et des utilisateurs fournis par les système, veuillez consulter une version récente du     document « Utilisateurs et groupes » (« Users and Groups » se trouvant dans  /usr/share/doc/base-passwd/users-and-groups.html » qui est fourni par le paquet base-passwd. Consultez passwd(5), group(5), shadow(5), newgrp(1), vipw(8),     vigr(8) et pam_group(8) pour les commande de gestion des utilisateurs et des groupes du système. 1.2.6. Horodatage     Il existe trois types d'horodatage pour un fichier GNU/Linux. Tableau 1.9. Liste des types d'horodatage +---------------------------------------------------+ |type |signification | |-----+---------------------------------------------|     |mtime|date de modification du fichier (ls -l) | |-----+---------------------------------------------| |ctime|date de changement d'état du fichier (ls -lc)| |-----+---------------------------------------------| |atime|date de dernier accès au fichier (ls -lu) | +---------------------------------------------------+ Note     ctime n'est pas la date de création du fichier. * Écraser un fichier va modifier tous les attributs mtime, ctime et atime du fichier.     * Modifier le propriétaire ou les droits d'un fichier va changer les attributs ctime et atime du fichier. * La lecture d'un fichier va modifier l’attribut atime du fichier. Note Sur un système Debian, même la simple lecture d'un fichier provoque normalement une opération d'écriture afin de mettre à jour les informations atime dans l’inœud. Monter un système de     fichiers avec l’option « noatime » ou « relatime » fait que le système n'effectuera pas cette opération et, en conséquence, les accès aux fichiers en lecture seront plus rapides. C'est souvent recommandé pour les portables, parce que cela réduit l’activité disque et préserve l’autonomie de la batterie. Consultez mount(8) .     Utilisez la commande touch(1) pour modifier l’horodatage des fichiers existants. En ce qui concerne l’horodatage, la commande ls affiche des     chaînes différentes avec les paramètres linguistiques non anglais (« fr_FR.UTF-8 ») qu'avec le vénérable (« C »). $ LANG=fr_FR.UTF-8 ls -l foo     -rw-rw-r-- 1 pingouin pingouin 0 oct. 16 21:35 foo $ LANG=C ls -l foo -rw-rw-r-- 1 pingouin pingouin 0 Oct 16 21:35 foo$ LANG=en_US.UTF-8 ls -l toto Astuce     Consultez Section 9.2.5, « Affichage personnalisé de la date et de l’heure » pour personnaliser la sortie de « ls -l ». 1.2.7. Liens     Il existe deux méthodes pour associer le fichier « toto » avec un nom de fichier différent « titi » : * Lien physique (http://fr.wikipedia.org/wiki/ Lien_mat%C3%A9riel) o Nom dupliqué d'un fichier existant o « ln toto titi »     * Lien symbolique ou (http://fr.wikipedia.org/wiki/ Lien_symbolique) o Fichier spécial pointant vers un autre fichier par son nom o « ln -s toto titi » Consultez l’exemple suivant pour des modifications du nombre de     liens et les subtiles différences dans le résultat de la commande rm. $ umask 002 $ echo "Contenu d'origine" > toto $ ls -li toto 1449840 -rw-rw-r-- 1 pingouin pingouin 18 oct. 20 16:50 toto $ ln toto titi # lien physique $ ln -s toto tutu # lien symbolique $ ls -li toto titi tutu 1449840 -rw-rw-r-- 2 pingouin pingouin 18 oct. 20 16:50 titi 1449840 -rw-rw-r-- 1 pingouin pingouin 18 oct. 20 16:50 toto     1450180 lrwxrwxrwx 2 pingouin pingouin 18 oct. 20 16:55 tutu -> toto $ rm toto $ echo "Nouveau contenu" > toto $ ls -li toto titi tutu 1450183 -rw-rw-r-- 2 pingouin pingouin 18 oct. 20 16:56 titi 1449840 -rw-rw-r-- 1 pingouin pingouin 18 oct. 20 16:50 toto 1450180 lrwxrwxrwx 2 pingouin pingouin 18 oct. 20 16:55 tutu -> toto $ cat titi Contenu d'origine $ cat tutu Nouveau contenu Un lien physique peut être mis en place à l’intérieur du même     système de fichiers, il partage le même numéro d'inœud, ce que montre l’option « -i » de ls(1). Le lien symbolique a les permissions d'accès nominales au fichier     de « rwxrwxrwx » comme il apparaît dans l’exemple ci-dessus, alors que les permissions d'accès effectives sont celles du fichier vers lequel il pointe. Attention En général, il n'est pas souhaitable de créer des liens     symboliques compliqués ou pas du tout de liens physiques, à moins que vous n'ayez une très bonne raison. Cela peut provoquer des cauchemars lorsque la combinaison logique des liens symboliques crée une boucle dans le système de fichiers. Note     Il est généralement préférable d'utiliser des liens symboliques plutôt que des liens physiques à moins que vous n'ayez une bonne raison d'utiliser un lien physique. Le répertoire « . » est lié au répertoire dans lequel il apparaît, le nombre de liens de n'importe quel nouveau répertoire     commence donc à 2. Le répertoire « .. » est lié au répertoire parent, le nombre de liens du répertoire augmente donc lors de l’ajout de nouveaux sous-répertoires. Si vous venez de passer à Linux depuis Windows, la bonne conception d'un système de fichiers UNIX comparé à l’équivalent le plus proche que sont les « raccourcis Windows » deviendra vite     claire. Parce qu'il est implémenté dans le système de fichiers, les application ne voient pas de différence entre un fichier lié et son original. Dans le cas de liens physiques, il n'y a vraiment aucune différence. 1.2.8. Tubes nommés (FIFO) Un tube nommé (http://fr.wikipedia.org/wiki/Tube_nommé) est un fichier qui se comporte comme un tuyau. Vous mettez quelque chose     dans le tuyau et il ressort à l’autre bout. C'est donc appelé une FIFO, ou « premier entré - premier sorti » (First-In-First-Out) : la première chose que vous mettez dans le tuyau est la première chose qui ressortira à l’autre bout. Si vous écrivez vers un tube nommé, le processus qui écrit dans le tube ne se termine pas avant que l’information ne soit lue depuis le tube. Si vous effectuez une lecture depuis un tube nommé, le processus de lecture attendra jusqu'à ce qu'il n'y ait plus rien à lire avant de se terminer. La taille d'un tube est     toujours nulle --- il ne stocke pas de données, ce n'est qu'un lien entre deux processus comme le « | » de l’interpréteur de commandes. Cependant, comme ce tube a un nom, il n'est pas nécessaire que les deux processus se trouvent sur la même ligne de commandes ni même qu'ils soient lancés par le même utilisateur. Les tubes sont une innovation influente d’UNIX.     Essayez, par exemple, ce qui suit : $ cd; mkfifo montube $ echo "salut" >montube & # mettre en arrière-plan [1] 8022 $ ls -l montube prw-r--r-- 1 pingouin pingouin 0 oct. 20 17:02 montube     $ cat montube salut [1]+ Fini echo "salut" > montube $ ls montube montube $ rm montube 1.2.9. Sockets Les sockets sont utilisées de manière intensives dans les communications par Internet, les bases de données et le système d'exploitation lui-même. Elles sont semblables aux tubes nommés (FIFO) et permettent aux processus d'échanger des informations même s'ils tournent sur des ordinateurs différents. Pour la socket, ces processus n'ont pas besoin de tourner en même temps ni de tourner en tant que fils du même processus père. C'est le     point d'aboutissement du processus d'intercommunication (IPC) (http://fr.wikipedia.org/wiki/Communication_inter-processus) . (« interprocess communication »). L’échange d'informations peut avoir lieu entre deux machines au travers du réseau. Les deux plus courantes sont la socket Internet (http://fr.wikipedia.org/ wiki/Sockets_du_domaine_Internet) (« Internet socket ») et la socket du domaine UNIX (http://fr.wikipedia.org/wiki/ Sockets_du_domaine_UNIX) (« UNIX domain socket »). Astuce     « netstat -an » fournit un aperçu très utile des sockets qui sont ouvertes sur un système donné. 1.2.10. Fichiers de périphériques Fichiers de périphériques (http://fr.wikipedia.org/wiki/Devfs) fait référence aux périphériques virtuels ou physiques de votre     système, tels que vos disques durs, carte vidéo, écran ou clavier. Un exemple de périphérique virtuel est la console, représentée par « /dev/console »     Il y a 2 types de fichiers de périphériques : * périphérique en mode caractère (« character device ») : o permettent l’accès à un caractère à la fois o 1 caractère = 1 octet o par exemple, les claviers, les ports série, …     * Périphériques en mode bloc (« block device ») : o accèdent aux données par éléments plus importants appelés blocs o 1 bloc > 1 octet o par exemple, les disques durs, … Vous pouvez lire et écrire sur les fichiers de périphériques, cependant, le fichier peut fort bien contenir des données binaires qui peuvent être du charabia incompréhensible pour les êtres humains. Écrire des données directement dans ces fichiers     est parfois utile pour déboguer des connexions matérielles. Vous pouvez, par exemple, vider un fichier texte vers le périphérique d'impression « /dev/lp0 » ou envoyer des commandes de modem vers le port série approprié « /dev/ttyS0 ». Mais, à moins que ce ne soit fait avec précautions, cela peut provoquer un désastre majeur. Soyez donc prudent. Note     Pour l’accès normal à une imprimante, utilisez lp(1).     On affiche le numéro de nœud du périphérique en utilisant la commande ls(1) comme suit : $ ls -l /dev/sda /dev/sr0 /dev/ttyS0 /dev/zero brw-rw---- 1 root disk 8, 0 20 oct. 07:13 /dev/sda     brw-rw----+ 1 root cdrom 11, 0 20 oct. 07:13 /dev/sr0 crw-rw---- 1 root dialout 4, 64 20 oct. 07:13 /dev/ttyS0 crw-rw-rw- 1 root root 1, 5 20 oct. 07:13 /dev/zero * « /dev/sda » a le numéro majeur de périphérique 3 et le numéro mineur de périphérique 0. Il est accessible en lecture et écriture aux utilisateurs qui appartiennent au groupe disk. * « /dev/sr0 » a le numéro majeur de périphérique 11 et le numéro mineur de périphérique 0. Il est accessible en lecture et écriture aux utilisateurs qui appartiennent au groupe     cdrom. * « /dev/ttyS0 » a le numéro majeur de périphérique 4 et le numéro mineur de périphérique 64. Il est accessible en lecture et écriture aux utilisateurs qui appartiennent au groupe dialout. * « /dev/zero » a le numéro majeur de périphérique 1 et le numéro mineur de périphérique 5. Il est accessible en lecture et écriture à tout le monde.     Sur les systèmes Linux modernes, le système de fichiers sous « / dev/ » est automatiquement rempli par udev(7). 1.2.11. Fichiers spéciaux de périphériques     Il y a aussi certains fichiers spéciaux de périphériques. Tableau 1.10. Liste des fichiers spéciaux de périphériques +---------------------------------------------------------------+ |fichier de |action|description de la réponse | |périphérique| | | |------------+------+-------------------------------------------| |/dev/null |lire |retourne le « caractère fin de fichier | | | |(EOF) » | |------------+------+-------------------------------------------| |/dev/null |écrire|ne retourne rien (un puits de données sans | | | |fond) | |------------+------+-------------------------------------------|     |/dev/zero |lire |retourne le « caractère \0 (NULL) » (qui | | | |n'est pas identique au chiffre zéro ASCII) | |------------+------+-------------------------------------------| | | |retourne des caractères aléatoires depuis | |/dev/random |lire |un générateur de nombres aléatoires réel, | | | |en donnant une vraie entropie (lent) | |------------+------+-------------------------------------------| | | |retourne des caractères aléatoires depuis | |/dev/urandom|lire |un générateur de nombres pseudo-aléatoires,| | | |sécurisé par chiffrement | |------------+------+-------------------------------------------| |/dev/full |écrire|retourne une erreur disque plein (ENOSPC) | +---------------------------------------------------------------+ Ils sont fréquemment utilisés en conjonction avec une redirection     du shell (consultez Section 1.5.8, « Séquences de commandes typiques et redirection de l’interpréteur de commandes »). 1.2.12. procfs et sysfs procfs (http://fr.wikipedia.org/wiki/Procfs) et sysfs (http:// fr.wikipedia.org/wiki/Sysfs) montés sur « /proc » et « /sys sont des pseudo-systèmes de fichiers, ils présentent dans l’espace     utilisateur des structures de données internes du noyau. En d'autres termes, ces entrées sont virtuelles, ce qui signifie qu'elles présentent une fenêtre sur le fonctionnement du système d'exploitation. Le répertoire « /proc » contient (entre autres choses), pour chacun des processus tournant sur le système, un sous-répertoire     dont le nom est l’identifiant du processus (PID). Les utilitaires du système qui accèdent aux information des processus, tels que ps(1), obtiennent leurs informations depuis cette structure de répertoires. Les répertoires qui se trouvent sous « /proc/sys/ » contiennent une interface permettant de modifier certains paramètres du     système alors qu'il est en fonctionnement. (Vous pouvez faire la même chose au travers de la commande spécialisée sysctl(8) ou de son fichier de configuration « /etc/sysctrl.conf ). Note Le noyau de Linux peut émettre un message « Too many open files »     (trop de fichiers ouverts). Vous pouvez corriger cela en augmentant la valeur de « file-max » depuis l’interpréteur de commandes de l’administrateur. Par exemple, « echo "65536" > / proc/sys/fs/file-max » (c'était nécessaire avec les noyaux plus anciens). Certaines personnes paniquent lorsqu'elles remarquent un fichier particulier - « /proc/kcore » — qui est particulièrement énorme.     C'est (plus ou moins) le contenu de la mémoire de votre ordinateur. Il est utilisé pour déboguer le noyau. C'est un fichier virtuel qui pointe vers la mémoire de l’ordinateur, ne vous inquiétez donc pas de sa taille. Les répertoires sous « /sys » contiennent des structures de     données exportées depuis le noyau, leurs attributs et les liens entre elles. Ils contiennent aussi des interfaces pour modifier certains paramètres du noyau pendant son fonctionnement. Consultez « proc.txt(.gz) », « sysfs.txt(.gz) » et d'autres     documents en rapport dans la documentation du noyau de Linux (« / usr/share/doc/linux-doc-2.6.*/Documentation/filesystems/* ») fournie par le paquet linux-doc-2.6.*. 1.2.13. tmpfs Le tmpfs (http://fr.wikipedia.org/wiki/Tmpfs) est un système de fichiers temporaire qui garde tous les fichiers en mémoire virtuelle (http://fr.wikipedia.org/wiki/Mémoire_virtuelle) . Les     données du tmpfs dans le page cache (http://en.wikipedia.org/wiki /Page_cache) en mémoire peuvent être déplacées dans l'espace d'échange (http://fr.wikipedia.org/wiki/Mémoire_virtuelle# M.C3.A9moire_virtuelle_pagin.C3.A9e) sur disque en cas de besoin. Le répertoire « /run » est monté en tmpfs au tout début du processus de démarrage. Cela permet d'écrire dessus même quand le répertoire racine « / » est monté en lecture seule. C'est le     nouvel emplacement pour le stockage de fichiers en état transitoire qui remplace plusieurs emplacements décrits dans la norme de hiérarchie du système de fichiers (« Filesystem Hierarchy Standard ») (http://fr.wikipedia.org/wiki/ Filesystem_Hierarchy_Standard) version 2.3 : * « /var/run » → « /run »     * « /var/lock » → « /run/lock » * « /dev/shm » → « /run/shm » Consultez « tmpfs.txt(.gz) » dans la documentation du noyau de     Linux (« /usr/share/doc/linux-doc-*/Documentation/filesystems/ * ») fournie par le paquet linux-doc-*. 1.3. Midnight Commander (MC) Midnight Commander (MC) (http://fr.wikipedia.org/wiki/ Midnight_Commander) est un « couteau de l’armée Suisse » GNU pour     la console Linux et d'autres environnements de terminaux. Il permet au débutant d'acquérir une expérience de la console pilotée par des menus, ce qui est bien plus facile à apprendre que les commandes UNIX standard.     Il vous faudra peut-être installer le paquet Midnight Commander dont le nom est « mc » en effectuant ce qui suit :     $ sudo apt-get install mc Utilisez la commande mc(1) pour parcourir le système Debian.     C'est la meilleure manière d'apprendre. Vous pouvez explorer certains emplacements intéressants en utilisant simplement les touches de curseur et la touche Entrée : * « /etc » et ses sous-répertoires * « /var/log » et ses sous-répertoires     * « /usr/share/doc » et ses sous-répertoires * « /sbin » et « /bin » 1.3.1. Personnalisation de MC Pour que MC modifie le répertoire de travail en quittant, et cd     vers le répertoire, je vous suggère de modifier « ~/.bashrc » afin d'inclure un script fourni par le paquet mc :     . /usr/lib/mc/mc.sh Vous trouverez une explication dans mc(1) (option « -P »). (Si     vous ne comprenez pas exactement ce dont je parle ici, vous pourrez le faire plus tard). 1.3.2. Démarrer MC     MC peut être lancé par :     $ mc MC prend en charge toutes les opérations sur les fichiers par l’intermédiaire de son menu, ce qui ne demande que peu d'effort     de la part de l’utilisateur. Pressez simplement F1 pour obtenir l’écran d'aide. Vous pouvez jouer avec MC simplement en pressant les touches de curseur et les touches de fonctions. Note     Sur certaines consoles telles que gnome-terminal(1), les actions sur les touches de fonctions peuvent être récupérées par le programme de console. Vous pouvez désactiver cette fonctionnalité par « Éditer » → « Raccourcis clavier » pour le terminal gnome. Si vous rencontrez un problème de codage de caractères qui     entraîne une corruption de l’affichage, ajouter « -a » à la ligne de commandes de MC peut aider à éviter les problèmes.     Si cela ne résout pas vos problèmes d'affichage avec MC, consultez Section 9.6.6, « Configuration du terminal ». 1.3.3. Gestionnaire de fichiers de MC Il y a par défaut, deux panneaux de répertoires affichant les listes de fichiers. Un autre mode utile est de définir la fenêtre de droite à « information » afin de voir les informations de     privilèges d'accès aux répertoires. Vous trouverez ci-après quelques raccourcis clavier essentiels. Si le démon gpm(8) tourne, une souris iest utilisable avec les consoles Linux en mode caractères. (Assurez-vous de presser la touche majuscules pour obtenir le comportement normal de couper-coller avec MC). Tableau 1.11. Touches de raccourcis de MC +---------------------------------------------------------------+ |touche |affectation | |-----------+---------------------------------------------------| |F1 |menu d'aide | |-----------+---------------------------------------------------| |F3 |visualisateur interne de fichiers | |-----------+---------------------------------------------------| |F4 |éditeur interne | |-----------+---------------------------------------------------| |F9 |activer le menu déroulant | |-----------+---------------------------------------------------|     |F10 |quitter Midnight Commander | |-----------+---------------------------------------------------| |Tabulation |passer d'une fenêtre à l’autre | |-----------+---------------------------------------------------| |Ins ou |marquer le fichier pour des opérations sur | |Ctrl-T |plusieurs fichiers telles que copier | |-----------+---------------------------------------------------| |Suppr |effacer le fichier (attention---configurez MC dans | | |le mode d'effacement sécurisé) | |-----------+---------------------------------------------------| |Touches de |autoexplicatif | |curseur | | +---------------------------------------------------------------+ 1.3.4. Astuces de la ligne de commandes dans MC * la commande cd changera le répertoire affiché sur l’écran sélectionné ; * Ctrl-Entrée ou Alt-Entrée copiera un nom de fichier sur la ligne de commandes. Utilisez cela avec les commandes cp(1) et mv(1) en association avec l’édition de la ligne de commandes ; * Alt-Tab affichera les choix de l’interpréteur de commandes pour l’expansion du nom de fichier ;     * on peut indiquer le répertoire de départ pour les deux fenêtres en paramètre de MC. Par exemple « mc /etc /root » ; * Échap + touche n → Fn (par exemple Échap + 1 → F1, etc. ; Échap + 0 → F10) ; * Presser la touche Échap avant une touche a le même effet que presser simultanément Alt et la touche. Par exemple, entrez Échap + c pour Alt-C. Échap est appelée métatouche et parfois notée « M- ». 1.3.5. Éditeur interne de MC L’éditeur interne possède une manière intéressante d'effectuer un copier-coller. Presser F3 marque le début de la sélection, F3 pressé une seconde fois marque la fin de la sélection et la met en surbrillance. Vous pouvez ensuite déplacer votre curseur. Si     vous appuyez sur F6, la zone sélectionnée sera déplacée jusqu'à l’emplacement du curseur. Si vous pressez sur F5, la zone sélectionnée sera copiée et insérée à l’emplacement du curseur. F2 enregistrera le fichier. F10 vous permettra de quitter l’éditeur. La plupart des touches de déplacement du curseur fonctionnent de manière intuitive.     Cet éditeur peut être directement lancé avec un fichier en utilisant l’une des commandes suivantes :     $ mc -e fichier_à_éditer     $ mcedit fichier_à_éditer Il ne s'agit pas d'un éditeur multi-fenêtres mais on peut faire usage de plusieurs consoles Linux pour obtenir le même effet.     Pour copier d'une fenêtre sur l’autre, utilisez les touches Alt-F pour basculer d'une console virtuelle à l’autre et utilisez « File→Insert file » ou «File→Copy to file» pour déplacer une portion de fichier dans un autre fichier.     Cet éditeur interne peut être remplacé par n'importe quel autre éditeur externe de votre choix. De nombreux programmes utilisent aussi les variables d'environnement « $EDITOR » ou « $VISUAL » afin de décider quel     éditeur utiliser. Si, au départ, vous n'êtes à l’aise ni avec vim (1) ni avec nano(1), vous pouvez définir ces variable à « mcedit » en ajoutant les lignes suivantes au fichier « ~ /.bashrc » :     export EDITOR=mcedit export VISUAL=mcedit     Je recommande de les définir à « vim » si possible. Si vous n'êtes pas à l’aise avec vim(1), vous pouvez continuer à     utiliser mcedit(1) pour la plupart des tâches de maintenance du système. 1.3.6. Visualisateur interne de MC MC possède un visualisateur intelligent. C'est un très bon outil pour rechercher des mots dans des documents. Je l’utilise     toujours pour lire les fichiers qui sont dans le répertoire « / usr/share/doc ». C'est la manière la plus rapide de naviguer dans les masses d'informations sur Linux. Ce visualisateur peut être chargé directement utilisant l’une des commandes suivantes :     $ mc -v chemin/vers/fichier_à_voir     $ mcview chemin/vers/fichier_à_voir 1.3.7. Possibilités de démarrage automatique de MC Pressez Entrée sur un fichier, et le programme approprié prendra     en charge le contenu du fichier (consultez Section 9.5.11, « Personnaliser le programme à lancer »). Il s'agit là d'une fonctionnalité très pratique de MC. Tableau 1.12. Réaction à la touche Entrée dans MC +---------------------------------------------------------------+ |type de fichier |réaction à la touche Entrée | |-----------------------+---------------------------------------| |fichier exécutable |exécuter la commande | |-----------------------+---------------------------------------| |fichier de page de |envoyer (« pipe ») le contenu au |     |manuel |logiciel de visualisation | |-----------------------+---------------------------------------| |fichier html |envoyer (« pipe ») le contenu au | | |navigateur web | |-----------------------+---------------------------------------| |fichiers « *.tar.gz » |parcourir le contenu comme si c'était | |et « *.deb » |un sous-répertoire | +---------------------------------------------------------------+ Afin de permettre le fonctionnement de ces visualisateurs et de ces fonctionnalités de fichiers virtuels, les fichiers pouvant     être visualisés ne doivent pas être définis comme étant exécutables. Modifiez leur état avec la commande chmod(1) ou par l’intermédiaire du menu fichiers de MC. 1.3.8. Système de fichiers FTP virtuel de MC MC peut être utilisé pour accéder à des fichiers au travers d'Internet en utilisant FTP. Allez au menu en pressant F9, entrez ensuite « p » pour activer le système de fichiers virtuel FTP.     Entrez une URL sous la forme « nomutilisateur:motdepasse@nommachine.nomdomaine » ce qui va permettre de récupérer un répertoire distant qui apparaît alors comme s'il était local.     Essayez l’URL « [http.us.debian.org/debian] » et parcourez l’archive Debian. 1.4. L’environnement élémentaire de travail de type UNIX Bien que MC vous permette de faire à peu près n'importe quoi, il est très important que vous appreniez comment utiliser les outils     en ligne de commande appelés depuis l’invite de l’interpréteur de commandes et que vous vous familiarisiez avec un environnement de travail de type UNIX. 1.4.1. L’interpréteur de commandes de connexion     Vous pouvez choisir votre interpréteur de commandes de connexion à l’aide de chsh(1). Tableau 1.13. Liste de d'interprétateurs de commandes (« shells ») +--------------------------------------------------------------------------------------------+ |paquet |popcon |taille |Interpréteur|description | | | | |POSIX | | |-------------------+-------------+----------------------+------------+----------------------| | |V:904, I:999 | | |Bash (http:// | |bash (http:// |(http:// |3941 (http:// | |fr.wikipedia.org/wiki/| |packages.debian.org|qa.debian.org|packages.qa.debian.org|Oui |Bourne-Again_shell)  :| |/sid/bash) |/popcon.php? |/b/bash.html) | |Shell GNU Bourne | | |package=bash)| | |Again. (standard de | | | | | |fait) | |-------------------+-------------+----------------------+------------+----------------------| | | | | |Shell TENEX C (http://| | |V:34, I:126 | | |fr.wikipedia.org/wiki/| |tcsh (http:// |(http:// |1378 (http:// | |Tcsh)  : version | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Non |améliorée de csh de | |/sid/tcsh) |/popcon.php? |/t/tcsh.html) | |Berkeley (http:// | | |package=tcsh)| | |fr.wikipedia.org/wiki/| | | | | |Csh) | |-------------------+-------------+----------------------+------------+----------------------| | |V:800, I:848 | | |Le Shell Almquist | |dash (http:// |(http:// |212 (http:// | |(http:// | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Oui |fr.wikipedia.org/wiki/| |/sid/dash) |/popcon.php? |/d/dash.html) | |Almquist_shell) de | | |package=dash)| | |Debian. Bon pour les | | | | | |scripts en shell | |-------------------+-------------+----------------------+------------+----------------------| | |V:32, I:68 | | |Z shell (http:// | |zsh (http:// |(http:// |11462 (http:// | |fr.wikipedia.org/wiki/| |packages.debian.org|qa.debian.org|packages.qa.debian.org|Oui |Zsh)  : interpréteur | |/sid/zsh) |/popcon.php? |/z/zsh.html) | |standard avec de | | |package=zsh) | | |nombreuses | | | | | |améliorations | |-------------------+-------------+----------------------+------------+----------------------| | |V:3, I:18 | | |version du domaine | |pdksh (http:// |(http:// |41 (http:// | |public de | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Oui |l’interpréteur Korn | |/sid/pdksh) |/popcon.php? |/p/pdksh.html) | |(http:// | | |package= | | |fr.wikipedia.org/wiki/|     | |pdksh) | | |Korn_shell) | |-------------------+-------------+----------------------+------------+----------------------| | | | | |C Shell OpenBSD (http:| | |V:5, I:18 | | |//fr.wikipedia.org/ | |csh (http:// |(http:// |340 (http:// | |wiki/OpenBSD) , une | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Non |version de csh de | |/sid/csh) |/popcon.php? |/c/csh.html) | |Berkeley (http:// | | |package=csh) | | |fr.wikipedia.org/wiki/| | | | | |Csh) | |-------------------+-------------+----------------------+------------+----------------------| | | | | |Interpréteur de | | | | | |commandes autonome | | |V:2, I:8 | | |(http:// | |sash (http:// |(http:// |946 (http:// | |en.wikipedia.org/wiki/| |packages.debian.org|qa.debian.org|packages.qa.debian.org|Oui |Stand-alone_shell) | |/sid/sash) |/popcon.php? |/s/sash.html) | |avec des commandes | | |package=sash)| | |intégrées. (Ne | | | | | |convient pas en tant | | | | | |que « /bin/sh » | | | | | |standard) | |-------------------+-------------+----------------------+------------+----------------------| | |V:7, I:26 | | |la vraie version de AT| |ksh (http:// |(http:// |3128 (http:// | |&T du shell Korn | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Oui |(http:// | |/sid/ksh) |/popcon.php? |/k/ksh.html) | |fr.wikipedia.org/wiki/| | |package=ksh) | | |Korn_shell) | |-------------------+-------------+----------------------+------------+----------------------| | | | | |implémentation du | | |V:0, I:10 | | |shell rc (http:// | |rc (http:// |(http:// |169 (http:// | |en.wikipedia.org/wiki/| |packages.debian.org|qa.debian.org|packages.qa.debian.org|Non |Rc) Plan 9 de AT&T | |/sid/rc) |/popcon.php? |/r/rc.html) | |(http:// | | |package=rc) | | |fr.wikipedia.org/wiki/| | | | | |Plan_9_from_Bell_Labs)| |-------------------+-------------+----------------------+------------+----------------------| | |V:0, I:0 | | | | |posh (http:// |(http:// |201 (http:// | |Policy-compliant | |packages.debian.org|qa.debian.org|packages.qa.debian.org|Oui |Ordinary SHell (dérivé| |/sid/posh) |/popcon.php? |/p/posh.html) | |de pdksh) | | |package=posh)| | | | +--------------------------------------------------------------------------------------------+     Dans ce chapitre du didacticiel, l’interpréteur interactif sera toujours bash. 1.4.2. Personnaliser bash     Vous pouvez personnaliser le comportement de bash(1) à l’aide de « ~/.bashrc ».     Essayez, par exemple, ce qui suit : # CD en quittant MC . /usr/lib/mc/mc.sh # définir une valeur valable de CDPATH CDPATH=.:/usr/share/doc:~/Desktop:~ export CDPATH     PATH="${PATH}":/usr/sbin:/sbin # définir le PATH pour qu'il comporte un répertoire bin privé de l’utilisateur s'il existe if [ -d ~/bin ] ; then PATH=~/bin:"${PATH}" fi export PATH EDITOR=vim export EDITOR Astuce     Vous pourrez trouver davantage d'informations concertant les astuces de personnalisation de bash, comme Section 9.2.7, « Commandes colorisées », dans Chapitre 9, Astuces du système. 1.4.3. Combinaisons particulières de touches Dans un environnement « de type UNIX (http://fr.wikipedia.org/ wiki/Type_Unix)  », certaines séquences de touches ont une signification particulière. Vous remarquerez que sur une console     Linux normale en mode caractères, seules les touches Ctrl et Alt situées à gauche fonctionnent de la manière voulue. Voici quelques séquences de touches dont il est intéressant de se souvenir : Tableau 1.14. Liste des raccourcis clavier de bash +---------------------------------------------------------------+ |touche |description des raccourcis clavier | |--------------------------+------------------------------------| |Ctrl-U |effacer la ligne avant le curseur | |--------------------------+------------------------------------| |Ctrl-H |effacer le caractère précédant le | | |curseur | |--------------------------+------------------------------------| | |terminer l’entrée (quitter | |Ctrl-D |l’interpréteur si vous en utilisez | | |un) | |--------------------------+------------------------------------| |Ctrl-C |terminer un programme en cours | | |d'exécution | |--------------------------+------------------------------------| |Ctrl-Z |arrêter temporairement un programme | | |en le mettant en tâche de fond | |--------------------------+------------------------------------| |Ctrl-S |arrêter le défilement de l’affichage| | |à l’écran | |--------------------------+------------------------------------|     |Ctrl-Q |reprendre le défilement de | | |l’affichage | |--------------------------+------------------------------------| |Ctrl-Alt-Suppr |redémarrer ou arrêter le système, | | |consultez inittab(5). | |--------------------------+------------------------------------| |Touche Alt de gauche |touche « meta » pour les interfaces | |(optionnellement, touche |utilisateurs Emacs et similaires | |Windows) | | |--------------------------+------------------------------------| |Flèche haute |lancer la recherche dans | | |l’historique des commandes sous bash| |--------------------------+------------------------------------| | |lancer la recherche incrémentale | |Ctrl-R |dans l’historique des commandes sous| | |bash | |--------------------------+------------------------------------| |Tabulation |complèter l’entrée du nom de fichier| | |de la ligne de commandes sous bash | |--------------------------+------------------------------------| |Ctrl-V Tab |entrer une Tabulation sans expansion| | |de la ligne de commande sous bash | +---------------------------------------------------------------+ Astuce     La fonctionnalité Ctrl-S du terminal peut être désactivée en utilisant stty(1). 1.4.4. Opérations de style UNIX avec la souris     Les opérations de style UNIX avec la souris sont basée sur une souris ayant 3 boutons. Tableau 1.15. Liste des opérations de style UNIX avec la souris +---------------------------------------------------------------+ |action |réponse | |--------------------+------------------------------------------| |Clic-gauche et |sélectionner et copier dans le | |glisser de la souris|presse-papiers | |--------------------+------------------------------------------|     |Clic-gauche |sélectionner le début de la sélection | |--------------------+------------------------------------------| |Clic-droit |sélectionner la fin de la sélection et | | |placez-là dans le presse-papiers | |--------------------+------------------------------------------| |Clic du milieu |coller le contenu du presse-papiers à | | |l’emplacement du curseur | +---------------------------------------------------------------+ La molette centrale des souris à molette modernes est considérée comme le bouton du milieu et peut être utilisée pour les clics-milieu. Cliquer simultanément le bouton de gauche et le     bouton de droite sert à émuler le bouton du milieu sur les systèmes ayant une souris à 2 boutons. Pour pouvoir utiliser une souris avec les consoles Linux en mode caractère, il faut que gpm (8) tourne en tant que démon. 1.4.5. Le visualisateur de fichiers less(1) est le visualisateur avancé (afficheur de contenu de fichier). Pressez « h » pour obtenir de l’aide. Il peut faire beaucoup plus de choses que more(1) et peut être surchargé en exécutant « eval $(lesspipe) » ou « eval $(lessfile) » dans le     script de démarrage de l’interpréteur de commandes. Vous trouverez davantage d'informations dans « /usr/share/doc/lessf/ LESSOPEN ». L’option « -R » permet la sortie en mode caractères bruts et permet les séquences d'échappement de couleurs ANSI. Consultez less(1). 1.4.6. L’éditeur de texte Il faudrait que vous soyez compétant avec l’une des variantes des     programmes Vim (http://fr.wikipedia.org/wiki/Vim) ou d'Emacs (http://fr.wikipedia.org/wiki/Emacs) qui sont très populaires sur les systèmes semblables à UNIX. Je pense que s'habituer aux commandes de Vim est une bonne chose, car l’éditeur Vi est toujours présent dans le monde Linux et UNIX. (En pratique, le vi d'origine ou le nouveau nvi sont des     programmes que vous trouvez partout. Pour les débutants, j'ai plutôt choisi Vim parce qu'il propose de l’aide par l’intermédiaire de la touche F1 tout en restant assez semblable et plus puissant). Si vous choisissez plutôt Emacs (http://fr.wikipedia.org/wiki/ Emacs) ou XEmacs (http://fr.wikipedia.org/wiki/XEmacs) comme éditeur, c'est aussi un bon choix évidemment, particulièrement pour la programmation. Emacs possède une pléthore d'autres fonctionnalités, y compris un lecteur de nouvelles, un éditeur de répertoires, un programme de courriel, etc. Lorsqu'il est utilisé     pour programmer ou éditer des scripts en shell, il reconnaît de manière intelligente le format de ce sur quoi vous être en train de travailler et il essaie de vous aider. Certaines personnes affirment que le seul programme dont ils ont besoin sous Linux est Emacs. Dix minutes d'apprentissage d'Emacs maintenant vous économiseront des heures plus tard. Il est grandement recommandé d'avoir le manuel de GNU Emacs comme référence lors de son apprentissage. Tous ces programmes sont habituellement accompagnés d'un programme d'apprentissage pour vous aider à les utiliser par la     pratique. Lancez Vim en entrant « vim » et en pressant la touche F1. Vous devriez au moins en lire les 35 premières lignes. Suivez ensuite le cours en ligne en déplaçant le curseur sur « |tutor| » et en pressant Ctrl-]. Note Avec les options appropriées, de bons éditeurs, tels que Vim et Emacs, peuvent être utilisés pour manipuler correctement des     textes en UTF-8 ou dans d'autres codages exotiques dans un émulateur de terminal x sous X en utilisant les paramètres linguistiques UTF-8 avec le paramétrage de police approprié. Veuillez vous référer à leur documentation relative au texte multi-octets. 1.4.7. Définir un éditeur de texte par défaut     Debian est fourni avec de nombreux éditeurs différents. Nous recommandons d'installer le paquet vim, comme indiqué ci-dessus. Debian offre un accès unifié à l’éditeur par défaut du système par l’intermédiaire de la commande « /usr/bin/editor ». Cela     permet à d'autres programmes (par exemple reportbug(1)) de pourvoir l’appeler. Vous pouvez le modifier par la commande qui suit :     $ sudo update-alternatives --config editor Pour les débutants, je recommande de choisir « /usr/bin/     vim.basic » plutôt que « /usr/bin/vim.tiny » car il prend en charge la mise en évidence de la syntaxe. Astuce De nombreux programmes utilisent les variables d'environnement « $EDITOR » ou « $VISUAL » pour décider de l’éditeur à utiliser     (consultez Section 1.3.5, « Éditeur interne de MC » et Section 9.5.11, « Personnaliser le programme à lancer »). Pour des raisons de cohérence sur le système Debian, définissez-les à « /usr/bin/editor ». (Historiquement « $EDITOR » était défini à « ed » et « $VISUAL » était défini à « vi »). 1.4.8. Personnaliser vim     Vous pouvez personnaliser le comportement de vim(1) à l’aide de « ~/.vimrc ».     Essayez, par exemple, ce qui suit : " ------------------------------- " Configuration des paramètres linguistiques " set nocompatible set nopaste set pastetoggle= syn on if $USER == "root"     set nomodeline set noswapfile else set modeline set swapfile endif " remplissage pour éviter que la ligne du dessus ne soit identifiée comme une ligne de mode (modeline) " remplissage " remplissage 1.4.9. Enregistrer les actions de l’interpréteur de commandes La sortie d'une commande de l’interpréteur peut défiler, quitter votre écran et être définitivement perdue. C'est une bonne     habitude d'enregistrer l’activité de l’interpréteur de commandes dans un fichier afin de la consulter plus tard. Ce type d'enregistrement est essentiel lorsque vous effectuez une tâche d'administration quelconque.     La méthode de base pour enregistrer l’activité de l’interpréteur de commandes est de la lancer sous script(1).     Essayez, par exemple, ce qui suit :     $ script Script started, file is typescript     Lancez une commande quelconque sous script.     Pressez Ctrl-D pour quitter le script.     $ vim typescript     Consultez Section 9.2.3, « Enregistrer proprement l’activité de la console » . 1.4.10. Commandes UNIX de base Apprenons les commandes UNIX de base. J'utilise ici « UNIX » dans son sens générique. Tous les clones d’UNIX proposent habituellement des commandes équivalentes. Le système Debian ne     fait pas exception. Ne vous inquiétez pas si certaines commandes ne fonctionnent pas comme vous le voudriez maintenant. Si un alias est utilisé dans le shell, la sortie correspondante sera différente. Ces exemples ne sont pas destinés à être exécutés dans cet ordre.     Essayez toutes les commandes qui suivent en utilisant un compte non privilégié : Tableau 1.16. Liste des commandes UNIX de base +---------------------------------------------------------------+ |commande |description | |------------------+--------------------------------------------| |pwd |afficher le nom du répertoire actuel ou de | | |travail | |------------------+--------------------------------------------| |whoami |afficher le nom de l’utilisateur actuel. | |------------------+--------------------------------------------| |id |afficher l’identité de l’utilisateur actuel | | |(nom, uid, gid, et groupes associés) | |------------------+--------------------------------------------| |file |afficher le type de fichier du fichier «  | | | » | |------------------+--------------------------------------------| |type -p |afficher l’emplacement du fichier de la | | |commande «   » | |------------------+--------------------------------------------| |which |, , | | | | |------------------+--------------------------------------------| |type |afficher des informations sur la commande « | | | » | |------------------+--------------------------------------------| |apropos |rechercher les commandes ayant un rapport | | |avec «  » | |------------------+--------------------------------------------| |man -k |, , | |------------------+--------------------------------------------| |whatis |afficher une ligne d'explication sur la | | |commande «  » | |------------------+--------------------------------------------| |man -a |afficher une explication sur la commande «  | | | » (style UNIX) | |------------------+--------------------------------------------| |info |afficher une explication assez longue de la | | |commande «  » (style GNU) | |------------------+--------------------------------------------| |ls |afficher le contenu du répertoire (tous les | | |fichiers et répertoires non cachés) | |------------------+--------------------------------------------| |ls -a |afficher le contenu du répertoire (tous les | | |fichiers et répertoires) | |------------------+--------------------------------------------| | |afficher le contenu du répertoire (presque | |ls -A |tous les fichiers et répertoires, par | | |exemple sauter « .. » et « . ») | |------------------+--------------------------------------------| |ls -la |afficher tout le contenu du répertoire de | | |façon détaillée | |------------------+--------------------------------------------| | |afficher tout le contenu du répertoire avec | |ls -lai |les numéros d'inœuds et les informations | | |détaillées | |------------------+--------------------------------------------| |ls -d |afficher tous les sous-répertoires du | | |répertoire actuel | |------------------+--------------------------------------------| |tree |afficher le contenu de l’arborescence des | | |fichiers | |------------------+--------------------------------------------| |lsof |afficher l’état d'ouverture du fichier «  | | | » | |------------------+--------------------------------------------| |lsof -p |afficher les fichiers ouverts par le | | |processus de numéro : «  » | |------------------+--------------------------------------------| |mkdir |créer le nouveau répertoire «  » dans | | |le répertoire en cours | |------------------+--------------------------------------------| |rmdir |supprimer le répertoire «  » du | | |répertoire actuel | |------------------+--------------------------------------------| | |allez au répertoire «  » se trouvant | |cd |dans le répertoire actuel ou dans le | | |répertoire figurant dans la variable | | |« $CDPATH » | |------------------+--------------------------------------------| |cd / |aller au répertoire racine | |------------------+--------------------------------------------| |cd |aller au répertoire personnel de | | |l’utilisateur actuel | |------------------+--------------------------------------------| |cd / |aller au répertoire de chemin absolu « / | | | » | |------------------+--------------------------------------------| |cd .. |aller au répertoire parent | |------------------+--------------------------------------------| | |aller au répertoire «  » se trouvant | |cd ~ |dans le répertoire personnel de | | |l’utilisateur | |------------------+--------------------------------------------| |cd - |aller au répertoire précédent | |------------------+--------------------------------------------| | »| || | |------------------+--------------------------------------------| |cp |copier le fichier «  » existant dans | | |le nouveau fichier «  » | |------------------+--------------------------------------------| |rm |supprimer le fichier «  » | || | |------------------+--------------------------------------------| | |renommer le fichier existant «  » avec| |mv |le nouveau nom «  » («  » ne | | |doit pas exister) | |------------------+--------------------------------------------| | |déplacer le fichier existant «  » vers| |mv |le nouvel emplacement « / » (le | | |répertoire «  » doit exister) | |------------------+--------------------------------------------|     | |déplacer le fichier existant «  » vers| |mv / |un nouvel emplacement avec le nouveau nom « | | |/ » (le répertoire «  » | | |doit exister mais le répertoire « / | | | » ne doit pas exister) | |------------------+--------------------------------------------| | |rendre le fichier «  » non lisible et | |chmod 600 |non modifiable par les autres personnes (non| | |exécutable pour tous) | |------------------+--------------------------------------------| | |rendre un fichier existant «  » | |chmod 644 |accessible en lecture mais non modifiable | | |par les autres personnes (non exécutable | | |pour tous) | |------------------+--------------------------------------------| | |rendre un fichier existant «  » | |chmod 755 |accessible en lecture mais non modifiable | | |par les autres utilisateurs (exécutable pour| | |tous) | |------------------+--------------------------------------------| |find . -name |rechercher les noms de fichier contenant le | | |«  » de l’interpréteur de commandes | | |(plus lent). | |------------------+--------------------------------------------| | |rechercher les noms de fichiers contenant en| |locate -d . |utilisant un «  » de l’interpréteur | | |de commandes (plus rapide si on utilise une | | |base de données régulièrement générée) | |------------------+--------------------------------------------| |grep -e "" |rechercher un «  » dans tous les | |*.html |fichiers se terminant par « .html » dans le | | |répertoire actuel et tous les afficher | |------------------+--------------------------------------------| |top |afficher en plein écran les informations sur| | |les processus, pressez « q » pour quitter | |------------------+--------------------------------------------| |ps aux | |afficher les informations concernant tous | |visualisateur |les processus actifs en utilisant un | | |affichage de type BSD | |------------------+--------------------------------------------| |ps -ef | |afficher les informations concernant tous | |visualisateur |les processus actifs en utilisant un | | |affichage de type UNIX System-V | |------------------+--------------------------------------------| |ps aux | grep -e "|afficher tous les processus faisant appel à | |[e]xim4*" |« exim » et « exim4 » | |------------------+--------------------------------------------| |ps axf | |afficher les informations concernant tous | |visualisateur |les processus en cours en utilisant une | | |sortie ASCII pseudo-graphique | |------------------+--------------------------------------------| |kill <1234> |tuer le processus identifié par | | |l’identifiant de processus : « <1234> » | |------------------+--------------------------------------------| | |compresser «  » afin de créer «  | |gzip |.gz » en utilisant le codage | | |Lempel-Ziv (LZ77) | |------------------+--------------------------------------------| |gunzip .gz |décompresser « .gz » afin de créer «  | | | ». | |------------------+--------------------------------------------| | |compresser «  » pour créer «  | | |.bz2 » en utilisant l’algorithme de | |bzip2 |compression de tri de texte Burrows-Wheeler | | |et le codage de Huffman (meilleure | | |compression que gzip) | |------------------+--------------------------------------------| |bunzip2 .bz2|décompresser « .bz2 » afin de créer « | | | » | |------------------+--------------------------------------------| | |compresser «  » pour créer «  | |xz |.xz » en utilisant l’algorithme de | | |compression de Lempel-Ziv-Markov chain | | |(meilleure compression que bzip2) | |------------------+--------------------------------------------| |unxz .xz |décompresser « .xz » afin de créer «  | | | ». | |------------------+--------------------------------------------| |tar -xvf |extraire les fichiers de l’archive «  | |.tar |.tar » | |------------------+--------------------------------------------| |tar -xvzf |extraire les fichiers d'une archive | |.tar.gz |« gzippée » « .tar.gz » | |------------------+--------------------------------------------| |tar -xvjf |extraire les fichiers de l’archive «  | |.tar.bz2 |.tar.bz2 » | |------------------+--------------------------------------------| |tar -xvJf |extraire les fichiers de l’archive «  | |.tar.xz |.tar.xz » | |------------------+--------------------------------------------| |tar -cvf |archiver le contenu du répertoire « / | |.tar /| » dans l’archive « .tar » | |------------------+--------------------------------------------| |tar -cvzf |archiver le contenu du répertoire « / | |.tar.gz | » dans l’archive compressée «  | |/ |.tar.gz » | |------------------+--------------------------------------------| |tar -cvjf |archiver le contenu du répertoire « / | |.tar.bz2 | » sans l’archive « .tar.bz2 » | |/ | | |------------------+--------------------------------------------| |tar -cvJf |archiver le contenu du répertoire « / | |.tar.xz | » sans l’archive « .tar.xz » | |/ | | |------------------+--------------------------------------------| |zcat README.gz | |afficher le contenu du fichier compressé | |visualisateur |« README.gz » en utilisant le visualisateur | | |(« pager ») par défaut | |------------------+--------------------------------------------| |zcat README.gz > |créer le fichier « toto » avec le contenu | |toto |décompressé de « README.gz » | |------------------+--------------------------------------------| |zcat README.gz >> |ajouter le contenu décompressé de | |toto |« README.gz » à la fin du fichier. (S'il | | |n'existe pas, créez-le d'abord). | +---------------------------------------------------------------+ Note     UNIX a pour tradition de cacher les fichiers dont le nom commence par un « . ». Ce sont traditionnellement des fichiers qui contiennent des informations de configuration et des préférences de l’utilisateur. Note     Pour la commande cd, consultez builtins(7). Note Le visualisateur (« pager ») par défaut d'un système Debian non     personnalisé est more(1) qui ne permet pas le défilement vers l’arrière. En installant le paquet less à l’aide de la ligne de commandes « apt-get install less », less(1) deviendra le visualisateur par défaut et vous pourrez faire défiler le texte vers l’arrière à l’aide des touches de curseur. Note « [ » et « ] » dans l’expression rationnelle de la commande « ps aux | grep -e "[e]xim4*"" » ci-dessus permet d'éviter une correspondance de grep avec lui-même. Le « 4* » de l’expression     rationnelle signifie 0 ou plusieurs instances du caractère « 4 » et permet donc à grep de trouver la correspondance à la fois avec « exim » et « exim4 ». Bien que « * » soit utilisé dans le motif générique (« glob ») des noms de fichiers de l’interpréteur de commandes et dans l’expression rationnelle, leurs significations sont différentes. Vous pourrez apprendre les expressions rationnelles dans grep(1). À titre d'exercice, parcourez les répertoires et jetez un coup     d'œil au système en vous servant des commandes ci-dessus. Si vous avez des questions sur ces commandes de la console, veuillez consulter la page de manuel.     Essayez, par exemple, ce qui suit : $ man man $ man bash     $ man builtins $ man grep $ man ls Il peut être un peu difficile de s'habituer au style des pages de manuel parce qu'elles sont plutôt succinctes, particulièrement     les plus anciennes, celles qui sont vraiment traditionnelles. Mais une fois que vous y serez familiarisé, vous apprécierez leur concision. Remarquez que beaucoup de commandes UNIX, y compris celles de GNU     et BSD, affichent une information d'aide courte si vous les exécutez de l’une des façons suivantes (ou parfois sans paramètre) :     $ --help $ -h 1.5. La commande simple de l’interpréteur de commandes Vous avez maintenant une certaine sensation sur la manière d'utiliser un système Debian. Nous allons regarder plus     profondément le mécanisme d'exécution des commandes sous le système Debian. J'ai ici, pour les débutants, simplifié la réalité. Consultez bash(1) pour l’explication exacte.     Une simple commande est une séquence de : 1. assignations de variables (optionnelles) ; 2. nom de la commande ;     3. paramètres (optionnels) ; 4. redirections (optionnelles : > , >> , < , <<, etc.) ; 5. opérateur de contrôle (optionnels : &&, || , , ;, &, ( , ) ). 1.5.1. Exécution d'une commande et variables d'environnement Les valeurs de certaines variables d'environnement (http://     fr.wikipedia.org/wiki/Variable_d%27environnement) modifient le comportement de certaines commandes UNIX. Les valeurs par défaut des variables d'environnement sont     définies initialement par le système PAM, certaines d'entre-elles peuvent donc être réinitialisées par certains programmes d'application : * le gestionnaire graphique de session tel que gdm3 réinitialise les variables d'environnement ;     * dans son code de démarrage, l’interpréteur de commandes réinitialise les variables d'environnement dans « ~/ bash_profile » et « ~/.bashrc ». 1.5.2. Variable « $LANG »     La valeur complète des paramètres linguistiques indiqués par la variable « $LANG est constituée de trois parties « xx_YY.ZZZZ ». Tableau 1.17. Les trois parties des paramètres linguistiques +---------------------------------------------------------------+ |valeur des | | |paramètres |signification | |linguistiques | | |----------------+----------------------------------------------| | |codes de langue ISO 639 (en minuscules) tel | |xx |que « fr » (http://fr.wikipedia.org/wiki/ |     | |ISO_639) | |----------------+----------------------------------------------| | |codes de pays ISO 3166 (en majuscules), par | |YY |exemple « FR » (http://fr.wikipedia.org/wiki/ | | |ISO_3166-3) | |----------------+----------------------------------------------| | |le jeu de caractères, toujours défini à | |ZZZZ |« UTF-8 » (http://fr.wikipedia.org/wiki/ | | |Codage_de_caract%C3%A8res) | +---------------------------------------------------------------+     Pour les codes de langues et de pays, consultez la description dans « info gettext ». Vous devriez toujours définir le codage des caractères d'un     système Debian moderne en UTF-8 à moins que vous ne vouliez spécifiquement en utiliser un ancien avec de bonnes raisons et les connaissances de bases associées. Pour des informations détaillées sur la configuration des     paramètres linguistiques, consultez Section 8.3, « Les paramètres linguistiques (« locale ») ». Note     « LANG=en_US » n'est pas « LANG=C » ni « LANG=en_US.UTF-8 ». C'est « LANG=en_US.ISO-8859-1 » (consultez Section 8.3.1, « Bases du codage »). Tableau 1.18. Liste des recommandations de paramètres linguistiques +---------------------------------------------------------------+ |recommandation de paramètres |Langue (zone) | |linguistiques | | |-------------------------------------+-------------------------| |en_US.UTF-8 |anglais (USA) | |-------------------------------------+-------------------------| |en_GB.UTF-8 |anglais (Grande-Bretagne)| |-------------------------------------+-------------------------| |fr_FR.UTF-8 |français (France) | |-------------------------------------+-------------------------| |de_DE.UTF-8 |allemand (Allemagne) | |-------------------------------------+-------------------------| |it_IT.UTF-8 |italien (Italie) | |-------------------------------------+-------------------------| |es_ES.UTF-8 |espagnol (Espagne) | |-------------------------------------+-------------------------|     |ca_ES.UTF-8 |catalan (Espagne) | |-------------------------------------+-------------------------| |sv_SE.UTF-8 |suédois (Suède) | |-------------------------------------+-------------------------| |pt_BR.UTF-8 |portugais (Brésil) | |-------------------------------------+-------------------------| |ru_RU.UTF-8 |russe (Russie) | |-------------------------------------+-------------------------| |zh_CN.UTF-8 |chinois (RP de Chine) | |-------------------------------------+-------------------------| |zh_TW.UTF-8 |chinois (Taiwan) | |-------------------------------------+-------------------------| |ja_JP.UTF-8 |japonais (Japon) | |-------------------------------------+-------------------------| |ko_KR.UTF-8 |coréen (République de | | |Corée) | |-------------------------------------+-------------------------| |vi_VN.UTF-8 |vietnamien (Vietnam) | +---------------------------------------------------------------+     L’exécution typique d'une commande utilise une séquence de lignes telle que la suivante : $ date     lundi 29 octobre 2012, 10:38:53 (UTC-0400) $ LANG=en_US.UTF-8 date Mon Oct 29 10:39:00 AST 2012 Ici, le programme date(1) est exécuté comme tâche au premier plan     avec différentes valeurs de la variable d'environnement « $LANG ». * Avec la première commande, « $LANG » est définie à la valeur des paramètres linguistiques (http://fr.wikipedia.org/wiki/ Param%C3%A8tres_r%C3%A9gionaux) par défaut du système « fr_FR.UTF-8 ».     * Avec la deuxième commande, « $LANG » est définie à la valeur des paramètres linguistiques (http://fr.wikipedia.org/wiki/ Param%C3%A8tres_r%C3%A9gionaux) UTF-8 anglais des États-Unis « en_US.UTF-8 ». Habituellement, la plupart des exécutions de commandes ne sont     pas précédées de la définition de variables d'environnement. Pour les exemple ci-dessus, vous pouvez aussi exécuter : $ LANG=en_US.UTF-8     $ date Mon Oct 29 10:40:50 AST 2012 Comme vous pouvez le voir ici, la sortie de la commande est affectée par la variable d'environnement afin que la sortie     s'effectue en français. Si vous désirez que les sous-processus héritent de la variable d'environnement (par exemple en appelant un script shell), vous devrez alors l’exporter de la manière suivante :     $ export LANG Astuce     En déposant un signalement de bogue, c'est une bonne idée de lancer et de vérifier la commande « LANG=en_US.UTF-8 » si vous utilisez un environnement autre que l’environnement anglais.     Consultez locale(5) et locale(7) pour les variables d'environnement « $LANG » et associées. Note     Je vous recommande de configurer l’environnement du système en ne touchant qu'à la variable « $LANG » en laissant de côté les variables « $LC_* » à moins que ce ne soit absolument nécessaire. 1.5.3. Variable « $PATH » Lorsque vous entrez une commande dans l’interpréteur, il recherche la commande dans la liste des répertoires contenus dans     la variable d'environnement « $PATH ». La valeur de la variable d'environnement « $PATH » est aussi appelée « chemin de recherche de l’interpréteur de commandes ». Dans une installation Debian par défaut, la variable d'environnement « $PATH » des comptes d'utilisateurs peut ne pas     inclure « /sbin » ni « /usr/sbin ». Par exemple, la commande ifconfig doit être lancée avec son chemin complet « /sbin/ ifconfig ». (La commande similaire ip est située dans « /bin ».) Vous pouvez modifier la variable d'environnement « $PATH » de     l’interpréteur de commandes Bash par l’intermédiaire des fichiers« ~/.bash_profile » ou « ~/.bashrc ». 1.5.4. Variable « $HOME » De nombreuses commandes enregistrent la configuration spécifique     à un utilisateur dans son répertoire personnel et modifient leur comportement en fonction de son contenu. Le répertoire personnel est identifié par la variable d'environnement « $HOME ». Tableau 1.19. Afficher les valeurs de la variable « $HOME » +---------------------------------------------------------------+ |valeur de « $HOME » |situation d'exécution d'un programme | |--------------------+------------------------------------------| |/ |programme lancé par le processus init | | |(démon) | |--------------------+------------------------------------------| | |programme lancé depuis l’interpréteur de | |/root |commandes normal de l’administrateur | | |(« root ») | |--------------------+------------------------------------------|     |/home/ |programme lancé depuis l’interpréteur de | ||commandes d'un utilisateur normal | |--------------------+------------------------------------------| |/home/ |programme lancé depuis le menu du bureau | ||de l’interface graphique de l’utilisateur | |--------------------+------------------------------------------| |/home/ |programmes lancé en tant qu'administrateur| ||avec « sudo programme » | |--------------------+------------------------------------------| |/root |programme lancé en tant qu'administrateur | | |avec « sudo -H programme » | +---------------------------------------------------------------+ Astuce     L’interpréteur de commandes étend « ~/ » pour former le répertoire personnel réel de l’utilisateur, par exemple, « $HOME/  ». L’interpréteur de commandes étend « ~foo/ » sous la forme du répertoire personnel de foo, par exemple, « /home/foo/ ». 1.5.5. Options de la ligne de commandes Certaines commandes prennent des paramètres. Les paramètres qui     commencent par « - » ou « -- » sont appelés options et contrôlent le comportement de la commande. $ date     lundi 29 octobre 2012, 10:34:38 (UTC-0400) $ date -R Mon, 29 Oct 2012 10:34:40 -0400 Ici, le paramètre de la ligne de commandes « -R » modifie le     comportement de la commande date(1) afin qu'elle donne en sortie une chaîne de date conforme à la RFC2822 (http://tools.ietf.org/ html/rfc2822) . 1.5.6. Motifs génériques (« glob ») de l’interpréteur de commandes Souvent, vous voudrez utiliser une commande sur un groupe de fichiers sans avoir à tous les entrer. C'est facilité par     l’utilisation des motifs génériques d'expansion du nom de fichier de l’interpréteur de commandes (glob), (on les appelle parfois jokers). Tableau 1.20. Motifs génériques d'expansion du nom de fichier de l’interpréteur de commandes +---------------------------------------------------------------+ |motif générique | | |de |description de la règle de correspondance | |l’interpréteur | | |----------------+----------------------------------------------| |* |nom de fichier (segment) ne commençant pas par| | |« . » | |----------------+----------------------------------------------| |.* |nom de fichier (segment) commençant par « . » |     |----------------+----------------------------------------------| |? |exactement un caractère | |----------------+----------------------------------------------| |[…] |un caractère exactement, chaque caractère | | |étant l’un de ceux entre crochets | |----------------+----------------------------------------------| |[a-z] |exactement un caractère, chaque caractère | | |étant compris entre « a » et « z » | |----------------+----------------------------------------------| | |exactement un caractère devant être différent | |[^…] |de tous les caractères entre crochets (sauf « | | |^ ») | +---------------------------------------------------------------+     Essayez, par exemple, ce qui suit : $ mkdir poubelle; cd poubelle; touch 1.txt 2.txt 3.c 4.h .5.txt ..6.txt $ echo *.txt 1.txt 2.txt $ echo * 1.txt 2.txt 3.c 4.h $ echo *.[hc]     3.c 4.h $ echo .* . .. .5.txt ..6.txt $ echo .*[^.]* .5.txt ..6.txt $ echo [^1-3]* 4.h $ cd ..; rm -rf poubelle     Consultez glob(7). Note Contrairement à l’expansion normale du nom de fichier par     l’interpréteur de commandes, le motif « * » de l’interpréteur testé par find(1) avec « -name » test etc., correspond au « . » du nom de fichier. (Nouvelle fonctionnalité POSIX (http:// fr.wikipedia.org/wiki/POSIX) ). Note On peut modifier le comportement d'expansion de fichiers selon     des motifs génériques de BASH (« glob ») avec ses options « shopt » incluses telles que « dotglob », « noglob », « nocaseglob », « nullglob », « nocaseglob », « extglob  », etc. Consultez bash(1). 1.5.7. Valeur de retour d'une commande     Toutes les commandes retournent comme valeur de retour leur état de fin d'exécution (variable : « $? »). Tableau 1.21. Codes de retour de la commande +---------------------------------------------------------------+ |état de sortie de la |valeur numérique de |valeur logique de | |commande |retour |retour |     |----------------------+--------------------+-------------------| |succès |zéro, 0 |VRAI | |----------------------+--------------------+-------------------| |erreur |non-nulle, -1 |FAUX | +---------------------------------------------------------------+     Essayez, par exemple, ce qui suit : $ [ 1 = 1 ] ; echo $?     0 $ [ 1 = 2 ] ; echo $? 1 Note     Vous remarquerez que, dans le contexte logique de l’interpréteur de commandes, un succès est traité comme la valeur logique VRAIE qui possède la valeur 0 (zéro). C'est parfois un peu contre-intuitif et il fallait le rappeler ici. 1.5.8. Séquences de commandes typiques et redirection de l’interpréteur de commandes Essayez de retenir les idiomes suivants de l’interpréteur de     commandes entrés sur une seule ligne en tant qu'extrait d'une commande de l’interpréteur. Tableau 1.22. Idiomes des commandes de l’interpréteur +---------------------------------------------------------------+ |idiome de |description | |commande | | |----------+----------------------------------------------------| |commande &|exécuter la commande en arrière-plan dans le | | |sous-shell | |----------+----------------------------------------------------| |commande1 |la sortie standard de commande1 est passée | || |(« piped ») à l’entrée standard de commande2. Les | |commande2 |deux commandes peuvent tourner simultanément | |----------+----------------------------------------------------| |commande1 |La sortie standard et la sortie d'erreur standard de| |2>&1 | |commande1 sont toutes les deux passées à l’entrée | |commande2 |standard de commande2. Les deux commandes peuvent | | |tourner simultanément | |----------+----------------------------------------------------| |commande1 | | |; |exécuter commande1 et commande2 séquentiellement | |commande2 | | |----------+----------------------------------------------------| |commande1 |exécuter commande1, en cas de succès, exécuter | |&& |commande2 séquentiellement (retourne un succès si à | |commande2 |la fois commande1 et commande2 ont été réussies) | |----------+----------------------------------------------------| |commande1 |exécuter commande1, en cas d'échec, exécuter | ||| |commande2 séquentiellement (retourne un succès si |     |commande2 |commande1 ou commande2 a été réussie) | |----------+----------------------------------------------------| |commande >|rediriger la sortir standard de commande vers le | |toto |fichier toto (l’écraser) | |----------+----------------------------------------------------| |commande |rediriger la sortie d'erreur standard de la commande| |2> toto |vers le fichier toto (l’écraser) | |----------+----------------------------------------------------| |commande |rediriger la sortie standard de la commande vers le | |>> toto |fichier toto (ajouter à la fin du fichier) | |----------+----------------------------------------------------| |commande |rediriger la sortie d'erreur standard de la commande| |2>> toto |vers le fichier toto (ajouter à la fin du fichier) | |----------+----------------------------------------------------| |commande >|rediriger à la fois la sortie standard et l’erreur | |toto 2>&1 |standard de la commande vers le fichier « toto » | |----------+----------------------------------------------------| |commande <|rediriger l’entrée standard de la commande vers le | |toto |fichier toto | |----------+----------------------------------------------------| |commande |rediriger l’entrée standard de la commande vers les | |<< |lignes suivantes jusqu'à ce que le « délimiteur » | |délimiteur|soit rencontré (ce document) | |----------+----------------------------------------------------| |command |rediriger l’entrée standard de commande vers les | |<<- |lignes qui suivent jusqu'à ce que le « délimiteur » | |délimiteur|soit rencontré, les caractères de tabulation de tête| | |sont supprimés des lignes d'entrée) | +---------------------------------------------------------------+ Le système Debian est un système multi-tâches. Les travaux s'exécutant en arrière-plan permettent aux utilisateur de faire tourner plusieurs programmes depuis un seul interpréteur de     commandes. La gestion des processus en arrière-plan fait appel aux commandes internes de l’interpréteur : jobs, fg, bg et kill. Veuillez lire les sections de bash(1) se trouvant sous « SIGNAUX » et « CONTRÔLE DES TÂCHES » ainsi que builtins(1).     Essayez, par exemple, ce qui suit :     $ toto $ exec 3titi # ouvrir les fichiers     $ cat <&3 >&4 # rediriger stdin vers 3, stdout vers 4 $ exec 3<&- 4>&- # fermer les fichiers $ cat titi Hello     Les descripteurs de fichiers 0-2 sont prédéfinis. Tableau 1.23. Descripteurs de fichier prédéfinis +---------------------------------------------------+ |périphérique|description |descripteur de fichier| |------------+---------------+----------------------|     |stdin |entrée standard|0 | |------------+---------------+----------------------| |stdout |sortie standard|1 | |------------+---------------+----------------------| |stderr |erreur standard|2 | +---------------------------------------------------+ 1.5.9. Alias de commande     Vous pouvez définir des alias pour les commandes fréquemment utilisées.     Essayez, par exemple, ce qui suit :     $ alias la='ls -la' Maintenant, « la » fonctionnera comme un raccourci pour « ls     -la » qui donne la liste de tous les fichier dans le format de liste long. Vous pouvez afficher la liste de tous les alias existants par la     commande alias (consultez bash(1) sous « COMMANDES INTERNES DU SHELL »). $ alias     ... alias la='ls -la' Vous pouvez identifier le chemin exact ou identifier la commande     par type (consultez bash(1) sous « COMMANDES INTERNES DU SHELL  »).     Essayez, par exemple, ce qui suit : $ type ls ls is hashed (/bin/ls) $ type la     la is aliased to ls -la $ type echo echo is a shell builtin $ type file file is /usr/bin/file Ici, ls a été récemment recherché alors que « file » ne l’a pas     été, donc « ls » est « hachée », c'est-à-dire que l’interpréteur de commandes possède un enregistrement interne permettant un accès rapide à l’emplacement de la commande « ls ». Astuce     Consultez Section 9.2.7, « Commandes colorisées ». 1.6. Traitement des données textuelles à la UNIX Dans un environnement de travail à la UNIX, le traitement du     texte est effectué en passant le texte par des tubes au travers d'une chaîne d'outils standard de traitement du texte. C'est une autre innovation cruciale d’UNIX. 1.6.1. Outils de traitement du texte d’UNIX     Il existe quelques outils standard de traitement du texte qui sont très souvent utilisés sur les systèmes « UNIX-like ». * Aucune expression rationnelle n'est utilisée : o cat(1) concatène des fichiers et en affiche le contenu complet ; o tac(1) concatène des fichiers et les affiche en ordre inverse ; o cut(1) sélectionne des parties de lignes et les affiche  ; o head(1) affiche le début d'un fichier ; o tail(1) affiche la fin d'un fichier ; o sort(1) trie des lignes de texte ; o uniq(1) supprime les lignes dupliquées d'un fichier trié  ; o tr(1) traduit ou supprime des caractères ; o diff(1) compare des fichiers ligne par ligne. * Une expression rationnelle de base (« Basic regular expression - BRE ») est utilisée : o grep(1) analyse la correspondance d'un texte avec des motifs ;     o ed(1) est un éditeur par ligne primitif ; o sed(1) est un éditeur de flux ; o vim(1) est un éditeur en mode écran ; o emacs(1) est un éditeur en mode écran. (un peu étendu BRE ). * Une expression rationnelle étendue (« Extended regular expression - ERE ») est utilisée : o egrep(1) fait correspondre du texte avec des motifs ; o awk(1) effectue un traitement simple du texte ; o tcl(3tcl) peut effectuer tous les traitements possibles du texte : re_syntax(3). Souvent utilisé avec tk(3tk) ; o perl(1) peut effectuer tous les traitements imaginables sur du texte.perlre(1) ; o pcregrep(1) du paquet pcregrep fait la correspondance de texte avec des motifs d'expressions rationnelles compatibles avec Perl (PCRE) (http://fr.wikipedia.org/ wiki/PCRE) (« Perl Compatible Regular Expressions ») ; o python(1) avec le module re peut faire tous les traitements imaginables sur du texte. Consultez « /usr/ share/doc/python/html/index.html ». Si vous n'êtes pas certain de ce que font exactement ces     commandes veuillez utiliser la commande « man » pour vous en faire une idée par vous-même. Note L’ordre de tri et la plage d'une expression dépendent des     paramètres linguistiques. Si vous désirez obtenir le comportement traditionnel d'une commande, utilisez alors C plutôt que UTF-8 en faisant précéder la commande de « LANG=C » (consultez Section 1.5.2, « Variable « $LANG » » and Section 8.3, « Les paramètres linguistiques (« locale ») »). Note Les expressions rationnelles de Perl (http://fr.wikipedia.org/ wiki/Perl_(langage)) (perlre(1)), Expressions rationnelles     compatible avec Perl (PCRE) (http://fr.wikipedia.org/wiki/PCRE) et les expressions rationnelles de Python (http:// fr.wikipedia.org/wiki/Python_(langage)) proposées par le module re ont de nombreuses extensions courantes par rapport aux expressions rationnelles étendues ERE. 1.6.2. Expressions rationnelles Les expressions rationnelles (http://fr.wikipedia.org/wiki/ Expression_rationnelle) sont utilisées avec de nombreux outils de     traitement du texte. Elles sont analogues aux motifs génériques « globs » du shell mais elles sont plus compliquées et plus puissantes.     L’expression rationnelle décrit le motif de correspondance, elle est constituée de caractères de texte et de métacaractères. Un métacaractère est simplement un caractère ayant une     signification particulière. Il en existe deux styles principaux, BRE et ERE suivant les outils de texte décrits ci-dessus. Tableau 1.24. Métacaractères pour BRE et ERE +---------------------------------------------------------------+ |BRE |ERE |description de l’expression rationnelle | |--------+------+-----------------------------------------------| |\ . [ ] |\ . [ | | |^ $ * |] ^ $ |métacaractères courants | | |* | | |--------+------+-----------------------------------------------| |\+ \? \(| |meta-caractères uniquement BRE, déspécifiés par| |\) \{ \}|  |« \ » | |\| | | | |--------+------+-----------------------------------------------| | |+ ? ( |meta-caractères uniquement ERE, non déspécifiés| |  |) { } |par « \ » | | || | | |--------+------+-----------------------------------------------| |c |c |correspond au non métacaractère « c » | |--------+------+-----------------------------------------------| |\c |\c |correspond au caractère littéral « c » même si | | | |« c » est un métacaractère en lui-même | |--------+------+-----------------------------------------------| |. |. |correspond à n'importe quel caractère y compris| | | |le saut de ligne | |--------+------+-----------------------------------------------| |^ |^ |position au début d'une chaîne de caractères | |--------+------+-----------------------------------------------|     |$ |$ |position à la fin d'une chaîne de caractères | |--------+------+-----------------------------------------------| |\< |\< |position au début d'un mot | |--------+------+-----------------------------------------------| |\> |\> |position à la fin d'un mot | |--------+------+-----------------------------------------------| |[abc…] |[abc…]|correspond à n'importe quel caractère dans | | | |« abc… » | |--------+------+-----------------------------------------------| |[^abc…] |[^ |correspond à n'importe quel caractère sauf ceux| | |abc…] |se trouvant dans « abc… » | |--------+------+-----------------------------------------------| |r* |r* |correspond à aucune ou plusieurs instances de | | | |l’expression rationnelle identifiée par « r » | |--------+------+-----------------------------------------------| |r\+ |r+ |correspond à une ou plusieurs instances de | | | |l’expression rationnelle identifiée par « r » | |--------+------+-----------------------------------------------| |r\? |r? |correspond à aucune ou une instance de | | | |l’expression rationnelle identifiée par « r » | |--------+------+-----------------------------------------------| |r1\|r2 |r1|r2 |correspond à une instance de l’expression | | | |rationnelle identifiée par « r1 » ou« r2 ». | |--------+------+-----------------------------------------------| |\(r1\|r2|(r1| |correspond à une des expressions rationnelles | |\) |r2) |identifiées par « r1 » ou « r2 » et la traite | | | |comme une expression rationnelle entre crochets| +---------------------------------------------------------------+ Une expression rationnelle d'emacs est BRE de base mais elle a été étendue afin de traiter « + » et « ? » comme des     métacaractères comme dans les ERE. Il n'est dont pas nécessaire de les déspécifier avec « \ » dans les expressions rationnelles d'emacs.     grep(1) peut être utilisé pour effectuer de la recherche de texte en utilisant une expression rationnelle.     Essayez, par exemple, ce qui suit : $ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL     GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE Yoyodyne, Inc., hereby disclaims all copyright interest in the program Astuce     Consultez Section 9.2.7, « Commandes colorisées ». 1.6.3. Expressions de remplacement     Pour l’expression de remplacement, certains caractères ont une signification particulière. Tableau 1.25. Expressions de remplacement +---------------------------------------------------------------+ |expressions de |description du texte destiné à remplacer | |remplacement |l’expression de replacement | |---------------+-----------------------------------------------|     |& |ce à quoi correspond l’expression rationnelle | | |(utilisez \& avec emacs) | |---------------+-----------------------------------------------| |\n |ce à quoi la nième expression rationnelle entre| | |crochets correspond (« n » étant un nombre) | +---------------------------------------------------------------+     Pour les chaînes de remplacement en Perl « $n » est utilisé à la place de « \n » et « & » n'a pas de signification particulière.     Essayez, par exemple, ce qui suit : $ echo zzz1abc2efg3hij4 | \ sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/' zzz=1abc2efg3hij4= $ echo zzz1abc2efg3hij4 | \ sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/'     zzzefg3hij4===1abc $ echo zzz1abc2efg3hij4 | \ perl -pe 's/(1[a-z]*)[0-9]*(.*)$/$2===$1/' zzzefg3hij4===1abc $ echo zzz1abc2efg3hij4 | \ perl -pe 's/(1[a-z]*)[0-9]*(.*)$/=&=/' zzz=&= Vous prêterez ici une attention particulière au style de     l’expression rationnelle entre crochets et à la manière dont les chaînes qui correspondent sont utilisées dans le processus de remplacement du texte avec les différents outils. Ces expressions rationnelles peuvent aussi être utilisées pour     les déplacements du curseur et des actions de remplacement de texte dans certains éditeurs. Un « back slash » (« \ ») en fin de ligne sur la ligne de     commandes du shell déspécifie le saut de ligne en un caractère d'espacement et permet de poursuivre la ligne de commandes de l’interpréteur sur la ligne suivante.     Pour apprendre ces commandes, veuillez lire les pages de manuel correspondantes. 1.6.4. Substitution globale avec des expressions rationnelles     La commande ed(1) peut remplacer toutes les instances de « REGEX_SOURCE » par « TEXTE_DESTINATION dans « fichier » : $ ed fichier <, et combinés. Faites attention en utilisant cette astuce IFS dans un shell. Des     choses étranges peuvent survenir lorsque le shell interprète certaines parties du script comme son entrée. $ IFS=":," # utiliser « : » et « , » pour IFS $ echo IFS=$IFS, IFS="$IFS" # echo est une commande interne de Bash IFS= , IFS=:, $ date -R # simplement une sortie de commande     Sat, 23 Aug 2003 08:30:15 +0200 $ echo $(date -R) # sous-shell --> entrée du shell principal Sat 23 Aug 2003 08 30 36 +0200 $ unset IFS # réinitialiser IFS à sa valeur par défaut $ echo $(date -R) Sat, 23 Aug 2003 08:30:50 +0200 1.6.6. Bouts de scripts pour les tubes     Les scripts suivants font des choses sympa avec les tubes. Tableau 1.26. Liste de parties de scripts pour enchaîner (piping) les commandes +---------------------------------------------------------------+ |fragment de script (à entrer |effet de la commande | |sur une seule ligne) | | |------------------------------+--------------------------------| |find /usr -print |rechercher tous les fichiers se | | |trouvant sous « /usr » | |------------------------------+--------------------------------| |seq 1 100 |imprimer 1 à 100 | |------------------------------+--------------------------------| | |lancer la commande de manière | || xargs -n 1 |répétitive en utilisant chaque | | |élément provenant du tube (pipe)| | |comme paramètre | |------------------------------+--------------------------------| | |scinder les éléments séparés par| || xargs -n 1 echo |des espaces provenant du tube | | |(pipe) en différentes lignes | |------------------------------+--------------------------------| || xargs echo |concaténer les lignes provenant | | |du tube en une seule ligne | |------------------------------+--------------------------------| || grep -e |extraire du tube les lignes | ||contenant | | | | |------------------------------+--------------------------------| || grep -v -e |extraire du tube les lignes ne | ||contenant pas | | | | |------------------------------+--------------------------------| | |extraire du tube le troisième | || cut -d: -f3 - |champ, séparé par « : » (fichier| | |passwd, etc.) | |------------------------------+--------------------------------| | |extraire du tube le troisième |     || awk '{ print $3 }' |champ séparé par des caractères | | |d'espacement | |------------------------------+--------------------------------| || awk -F'\t' '{ print $3 }' |extraire du tube le troisième | | |champ séparé par une tabulation | |------------------------------+--------------------------------| | |supprimer le retour arrière | || col -bx |(backspace) et convertir les | | |tabulations en espaces | |------------------------------+--------------------------------| || expand - |convertir les tabulations en | | |espaces | |------------------------------+--------------------------------| || sort| uniq |trier et supprimer les doublons | |------------------------------+--------------------------------| || tr 'A-Z' 'a-z' |convertir de majuscules en | | |minuscules | |------------------------------+--------------------------------| || tr -d '\n' |concaténer les lignes en une | | |seule ligne | |------------------------------+--------------------------------| || tr -d '\r' |supprimer le retour à la ligne | | |(CR) | |------------------------------+--------------------------------| || sed 's/^/# /' |ajouter « # » au début de chaque| | |ligne | |------------------------------+--------------------------------| || sed 's/\.ext//g' |supprimer « .ext » | |------------------------------+--------------------------------| || sed -n -e 2p |afficher la seconde ligne | |------------------------------+--------------------------------| || head -n 2 - |afficher les deux premières | | |lignes | |------------------------------+--------------------------------| || tail -n 2 - |afficher les deux dernières | | |lignes | +---------------------------------------------------------------+ Un script de l’interpréteur d'une seule ligne peut reboucler sur de nombreux fichier en utilisant find(1) et xargs(1) afin     d'effectuer des tâches assez complexes. Consultez Section 10.1.5, « Idiomes pour la sélection de fichiers » et Section 9.5.9, « Répéter une commande en bouclant entre des fichiers ». Lorsque l’utilisation de l’interpréteur de commandes en mode     interactif devient trop compliquée, pensez à écrire un script en shell (consultez Section 12.1, « Les scripts de l’interpréteur de commande »). Chapitre 2. Gestion des paquets Debian Note     Ce chapitre a été écrit en supposant que le nom de code de la dernière version stable est Squeeze. Debian (http://www.debian.org) est une association de volontaires     qui construit des distributions cohérentes de paquets binaires de logiciels libres pré-compilés et les distribue depuis son archive. L’archive Debian (http://ftp.fr.debian.org/debian/) est proposée depuis de nombreux sites-miroirs distants (http://www.debian.org/     mirror/) , on peut y accéder par les méthodes HTTP et FTP. Elle est aussi disponible sous forme de CD-ROM/DVD (http:// www.debian.org/CD/) . Le système de gestion des paquets Debian, lorsqu'il est proprement utilisé, permet à l’utilisateur d'installer sur le     système des ensembles cohérents de paquets binaires à partir de l’archive. Il y a actuellement 39011 paquets disponibles pour l’architecture amd64. Le système de gestion des paquets de Debian possède un riche     historique et de nombreux choix de programmes d'interface pour l’utilisateur final et de méthodes de fond pour l’accès aux archives. Actuellement, nous recommandons ce qui suit : * apt-get(8) pour toutes les opérations en ligne de commandes, y compris, l'installation et la suppression de paquets et dist-upgrades.     * aptitude(8) pour une interface interactive en mode texte permettant de gérer les paquets installés et de faire des recherches parmi les paquets disponibles. * update-manager(8) pour maintenir à jour votre système si vous utilisez l’environnement de bureau GNOME par défaut. Tableau 2.1. Liste des outils de gestion des paquets de Debian +-------------------------------------------------------------------------------------------+ |paquet |popcon |taille |description | |---------------------+---------------------+--------------------------+--------------------| | | | |Advanced Packaging | | | | |Tool (APT) (« outil | | | | |avancé de | | | | |paquetage »), | |apt (http:// |V:898, I:999 (http://|3232 (http:// |frontal de dpkg | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/a/ |permettant les | |sid/apt) |popcon.php?package= |apt.html) |méthodes d'accès à | | |apt) | |l’archive « http », | | | | |« ftp » et « file » | | | | |(les commandes | | | | |apt-get et apt-cache| | | | |sont comprises) | |---------------------+---------------------+--------------------------+--------------------| |aptitude (http:// |V:220, I:989 (http://|4541 (http:// |gestionnaire de | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/a/ |paquets interactif | |sid/aptitude) |popcon.php?package= |aptitude.html) |en mode terminal | | |aptitude) | |avec aptitude(8) | |---------------------+---------------------+--------------------------+--------------------| |update-manager-gnome |V:153, I:230 (http://| |application GNOME | |(http:// |qa.debian.org/ |1267 (http:// |gérant les mises à | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/u/ |jour du logiciel | |sid/ |update-manager-gnome)|update-manager-gnome.html)|avec update-manager | |update-manager-gnome)| | |(8) | |---------------------+---------------------+--------------------------+--------------------| | |V:55, I:955 (http:// | |outil de sélection | |tasksel (http:// |qa.debian.org/ |714 (http:// |de tâches pour | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/t/ |l’installation sur | |sid/tasksel) |tasksel) |tasksel.html) |un système Debian | | | | |(frontal d'APT) | |---------------------+---------------------+--------------------------+--------------------| | | | |paquet | |unattended-upgrades |V:57, I:416 (http:// | |d'amélioration d'APT| |(http:// |qa.debian.org/ |320 (http:// |permettant une | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/u/ |installation | |sid/ |unattended-upgrades) |unattended-upgrades.html) |automatique des | |unattended-upgrades) | | |mises à niveau de | | | | |sécurité | |---------------------+---------------------+--------------------------+--------------------| | | | |gestionnaire de |     | |V:13, I:125 (http:// | |paquets en mode | |dselect (http:// |qa.debian.org/ |2452 (http:// |terminal (standard | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/d/ |précédent, frontal | |sid/dselect) |dselect) |dselect.html) |d'APT et d'autres | | | | |anciennes méthodes | | | | |d'accès) | |---------------------+---------------------+--------------------------+--------------------| |dpkg (http:// |V:953, I:999 (http://|6344 (http:// |système de gestion | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/d/ |des paquets pour | |sid/dpkg) |popcon.php?package= |dpkg.html) |Debian | | |dpkg) | | | |---------------------+---------------------+--------------------------+--------------------| |synaptic (http:// |V:126, I:417 (http://|7711 (http:// |gestionnaire de | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/s/ |paquets graphique | |sid/synaptic) |popcon.php?package= |synaptic.html) |(interface graphique| | |synaptic) | |GNOME pour APT) | |---------------------+---------------------+--------------------------+--------------------| | | | |Programmes | |apt-utils (http:// |V:435, I:997 (http://|1296 (http:// |utilitaires d'APT : | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/a/ |apt-extracttemplates| |sid/apt-utils) |popcon.php?package= |apt-utils.html) |(1), apt-ftparchive | | |apt-utils) | |(1) et apt-sortpkgs | | | | |(1) | |---------------------+---------------------+--------------------------+--------------------| |apt-listchanges |V:357, I:654 (http://|203 (http:// |outil de | |(http:// |qa.debian.org/ |packages.qa.debian.org/a/ |notification des | |packages.debian.org/ |popcon.php?package= |apt-listchanges.html) |modifications d'un | |sid/apt-listchanges) |apt-listchanges) | |paquet | |---------------------+---------------------+--------------------------+--------------------| |apt-listbugs (http://|V:11, I:18 (http:// |443 (http:// |affiche la liste des| |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/a/ |bogues critiques | |sid/apt-listbugs) |popcon.php?package= |apt-listbugs.html) |avant chaque | | |apt-listbugs) | |installation par APT| |---------------------+---------------------+--------------------------+--------------------| |apt-file (http:// |V:22, I:98 (http:// |69 (http:// |utilitaire de | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/a/ |recherche de paquet | |sid/apt-file) |popcon.php?package= |apt-file.html) |d'APT — interface en| | |apt-file) | |ligne de commandes | |---------------------+---------------------+--------------------------+--------------------| |apt-rdepends (http://|V:1, I:7 (http:// |64 (http:// |afficher de manière | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/a/ |récursive la liste | |sid/apt-rdepends) |popcon.php?package= |apt-rdepends.html) |des dépendances du | | |apt-rdepends) | |paquet | +-------------------------------------------------------------------------------------------+ 2.1. Prérequis pour la gestion des paquets Debian 2.1.1. Configuration de paquets     Voici quelques points-clés de la configuration des paquets sur un système Debian : * la configuration manuelle effectuée par l’administrateur du système est respectée. En d'autres termes, le système de configuration des paquets effectue, pour des raisons de commodité, une configuration non intrusive ; * chaque paquet possède son propre script de configuration avec une interface utilisateur standardisée appelée debconf(7) qui permet de faciliter le processus initial d'installation du paquet ; * les développeurs Debian font de leur mieux pour que vos mises à jour se fassent de manière impeccable avec les scripts de configuration du paquet ;     * l’administrateur du système peut utiliser toutes les fonctionnalités des paquets de logiciels. Cependant, celles qui présentent un risque de sécurité sont désactivées lors de l’installation par défaut ; * si vous activez vous-même un service qui présente certains risques de sécurité, vous êtes responsable du confinement du risque ; * des configurations ésotériques peuvent être activées manuellement par l’administrateur du système. Cela peut créer des interférences avec les programmes génériques d'assistance à la configuration du système. 2.1.2. Précautions de base Avertissement Ne pas installer de paquets provenant d'un mélange aléatoire de suites. Cela va probablement casser la cohérence des paquets et     demande une connaissance en profondeur de la gestion du système, comme l’ABI (http://fr.wikipedia.org/wiki/ Application_binary_interface) , d'un compilateur, la version d'une bibliothèque (http://fr.wikipedia.org/wiki/ Biblioth%C3%A8que_logicielle) , les fonctionnalités d'un interpréteur, etc. L’administrateur débutant (http://fr.wikipedia.org/wiki/Newbie) d'un système Debian devrait conserver la version stable de Debian     en appliquant les mises à jour de sécurité. Je veux dire qu'il vaut mieux éviter, par précaution, certaines des actions valables suivantes, jusqu'à ce que vous ayez très bien compris le système Debian. Voici quelques rappels : * ne pas inclure testing, ni unstable dans « /etc/apt/ sources.list » ; * ne pas mélanger des archives standard de Debian avec d'autres archives telles qu'Ubuntu dans « /etc/apt/sources.list » ; * ne pas créer le fichier « /etc/apt/preferences » ; * ne pas modifier le comportement par défaut des outils de gestion des paquets au travers des fichiers de configuration sans en connaître toutes les conséquences ;     * ne pas installer de paquets quelconques à l’aide de « dpkg -i  » ; * ne jamais installer de paquets quelconques à l’aide de « dpkg --force-all -i  » ; * ne pas effacer ni modifier les fichiers se trouvant dans « / var/lib/dpkg/ » ; * ne pas écraser les fichiers systèmes en installant des logiciels directement depuis les sources. o Au besoin, les installer dans « /usr/local » ou « /opt ». Les effets non compatibles avec le système de gestion des paquets     Debian engendrés par les actions ci-dessus peuvent rendre votre système inutilisable. L’administrateur système Debian sérieux, qui s'occupe de serveurs     dont la mission est critique, devra prendre des précautions supplémentaires : * ne pas installer de paquets, y compris les mises à jour de sécurité provenant de Debian sans les avoir testés soigneusement, avec votre configuration particulière, dans des conditions sûres.     o Vous êtes finalement, en tant qu'administrateur système, responsable de votre système. o La longue histoire de stabilité du système Debian n'est pas, en elle-même, une garantie. 2.1.3. La vie avec d'éternelles mises à jour En dépit de mes avertissements précédents, je sais que de nombreux lecteurs de ce document voudront utiliser les versions     testing ou unstable de Debian comme système principal pour des environnements de bureau autoadministrés. Cela parce qu'elles fonctionnent très bien, sont fréquemment mises à jour et offrent les fonctionnalités les plus récentes. Attention Pour votre serveur de production, la suite stable avec les mises     à jour de sécurité est recommandée. On peut dire la même chose des PC de bureau sur lesquels vous ne pouvez dépenser que des efforts limités d'administration, par exemple le PC de votre belle-mère. Cela ne demande rien d'autre que de définir la chaîne de la distribution dans « /etc/apt/sources.list » avec le nom de suite     « testing » ou « unstable », ou le nom de code « wheezy » ou « sid ». Cela vous permettra de vivre la vie des mises à jour éternelles. Il y a beaucoup de plaisir à prendre en utilisant testing ou unstable mais aussi quelques risques. Même si la version unstable du système Debian semble très stable la plupart du temps, il y a     eu certains problèmes de paquets sur les versions testing et unstable et certains d'entre-eux n'ont pas été aisé à résoudre. Ce peut être assez douloureux pour vous. Quelquefois, vous pouvez avoir un paquet cassé ou une fonctionnalité manquante pendant quelques semaines.     Voici quelques idées pour vous assurer une récupération rapide et facile lors de bogues dans les paquets Debian : * faites un système avec un double démarrage en installant la suite stable du système Debian sur une autre partition ; * tenez à disposition le CD d'installation pour un démarrage de secours ; * pensez à installer apt-listbugs afin de vérifier les informations du Système Debian de suivi des bogues (BTS)     (http://www.debian.org/Bugs/) avant de faire une mise à jour ; * apprenez suffisamment l’infrastructure du système de paquets pour contourner le problème ; * Créez un environnement isolé (« chroot ») ou similaire et faites-y tourner à l’avance la dernière version du système (consultez Section 9.8, « Système virtualisé »). (si vous ne savez pas faire l’une quelconque de ces actions de     précaution, vous n'êtes probablement pas prêt pour les versions testing et unstable). La Lumière (http://fr.wikipedia.org/wiki/Bodhi) provenant de ce qui suit sauvera une personne de l’éternelle lutte karmique     (http://fr.wikipedia.org/wiki/Karma) de l’enfer (http:// en.wikipedia.org/wiki/Naraka) des mises à jour et lui permettra d'atteindre le nirvana (http://fr.wikipedia.org/wiki/Nirvāna) de Debian. 2.1.4. Bases concernant l’archive Debian     Jetez un œil sur l’archive Debian (http://ftp.fr.debian.org/ debian/) avec le point de vue d'un utilisateur du système. Astuce     La charte officielle de l’archive Debian est définie dans la Charte Debian, chapitre 2 - l’archive Debian (http:// www.debian.org/doc/debian-policy/ch-archive) . Pour un accès HTTP typique, l’archive est indiquée de la manière     suivante dans le fichier « /etc/apt/sources.list », par exemple pour le système stable = squeeze actuel : deb http://ftp.XX.debian.org/debian/ squeeze main contrib non-free deb-src http://ftp.XX.debian.org/debian/ squeeze main contrib non-free     deb http://security.debian.org/ squeeze/updates main contrib deb-src http://security.debian.org/ squeeze/updates main contrib Veuillez noter que « ftp.XX.debian.org » doit être remplacé par l’URL du site miroir approprié à votre lieu de résidence, « ftp.us.debian.org » pour les États-Unis (et     « ftp.fr.debian.org » pour la France). On peut la trouver dans la liste mondiale des sites miroirs Debian (http://www.debian.org/ mirror/list) . L’état de ces serveurs peut être vérifié sur le site de vérification des miroirs Debian (http://ftp.de.debian.org /dmc/) . Ici, j'ai tendance à utiliser le nom de code « squeeze » plutôt     que le nom de la suite « stable » afin d'éviter des surprises lorsque la version stable suivante sera diffusée.     La signification de « /etc/apt/sources.list » est décrite dans sources.list(5), ses points-clés sont les suivants : * la ligne « deb » définit les paquets binaires ; * la ligne « deb-src » définit les paquets sources ; * le premier paramètre est l’URL-racine de l’archive Debian ;     * le deuxième paramètre est le nom de la distribution : soit le nom de la suite, soit son nom de code ; * le troisième paramètre et les suivants sont la liste des noms de sections d'archives valables dans l’archive Debian. Les lignes deb-src peuvent être omises sans risque (ou mises en commentaire en mettant un « # » au début de la ligne) si ce n'est     qu'aptitude ne pourra pas avoir accès aux métadonnées liées aux sources. Cela accélérera les mises à jour des métadonnées de l’archive. L’URL peut-être « http:// », « ftp:// », « file:// », etc. Astuce Si « sid » est utilisé dans l’exemple ci-dessus plutôt que     « squeeze », il n’est pas obligatoire d'avoir la ligne « deb: http://security.debian.org/ … » pour les mises à jour de sécurité dans le fichier « /etc/apt/sources.list » parce qu’il n'y a pas de mises à jour de sécurité pour « sid » (unstable). Voici la liste des URL des sites d'archives de Debian et les noms     de suite ou les noms de code utilisés dans le fichier de configuration : Tableau 2.2. Liste des sites d'archive de Debian +---------------------------------------------------------------+ |URL de l’archive |nom de la suite (nom de|but | | |code) | | |-------------------+-----------------------+-------------------| |http:// | | | |ftp.XX.debian.org/ | |édition stable | |debian/ (http:// |stable (squeeze) |(Squeeze) | |ftp.fr.debian.org/ | | | |debian/) | | | |-------------------+-----------------------+-------------------| |http:// | | | |ftp.XX.debian.org/ | |édition testing | |debian/ (http:// |testing (wheezy) |(Wheezy) | |ftp.fr.debian.org/ | | | |debian/) | | | |-------------------+-----------------------+-------------------| |http:// | | | |ftp.XX.debian.org/ | |édition unstable | |debian/ (http:// |unstable (sid) |(Sid) | |ftp.fr.debian.org/ | | | |debian/) | | | |-------------------+-----------------------+-------------------| |http:// | |pré-version | |ftp.XX.debian.org/ | |expérimental | |debian/ (http:// |experimental |(optionnelle, | |ftp.fr.debian.org/ | |uniquement pour les| |debian/) | |développeurs) | |-------------------+-----------------------+-------------------| |http:// | |mises à jour pour |     |ftp.XX.debian.org/ | |la prochaine | |debian/ (http:// |stable-proposed-updates|version de stable | |ftp.fr.debian.org/ | |(optionnel) | |debian/) | | | |-------------------+-----------------------+-------------------| |http:// | |mises à jour de | |security.debian.org| |sécurité pour la | |/ (http:// |stable/updates |version stable | |security.debian.org| |(important) | |/) | | | |-------------------+-----------------------+-------------------| |http:// | |mises à jour de | |security.debian.org| |sécurité pour la | |/ (http:// |testing/updates |version testing | |security.debian.org| |(important) | |/) | | | |-------------------+-----------------------+-------------------| | | |mises à jour | |http:// | |compatibles pour le| |ftp.XX.debian.org/ | |filtrage de spam, | |debian/ (http:// |squeeze-updates |les clients de | |ftp.fr.debian.org/ | |messagerie | |debian/) | |instantanée, etc. | | | |pour Squeeze | |-------------------+-----------------------+-------------------| |http:// | |paquets plus | |ftp.XX.debian.org/ | |récents rétroportés| |debian/ (http:// |squeeze-backports |pour Squeeze | |ftp.fr.debian.org/ | |(optionnel) | |debian/) | | | +---------------------------------------------------------------+ Attention Seule la version stable pure avec les mises à jour de sécurité présente la meilleure stabilité. Faire tourner une version principalement stable mélangée à quelques paquets venant des versions testing ou unstable est plus risqué que d'utiliser une     version unstable pure parce que des versions de bibliothèques peuvent ne pas correspondre, etc. Si vous avez réellement besoin de la dernière version de certains programme sous la version stable, utilisez alors les paquets venant de squeeze-updates (http://www.debian.org/News/2011/20110215) et des services backports.debian.org (http://backports.debian.org) (consultez Section 2.7.4, « Mises à jour et rétroportages »). Ces services doivent être utilisés avec des précautions supplémentaires. Attention De base, vous ne devriez avoir qu'une seule des suites stable, testing ou unstable sur la ligne « deb ». Si vous avez une     combinaison des suites stable, testing et unstable sur la ligne « deb », les programmes APT vont être ralentis bien que seule la dernière archive soit utilisée. Des mentions multiples ont un intérêt lorsqu'on utilise le fichier « /etc/apt/preferences » avec des objectifs clairs (consultez Section 2.7.3, « Ajuster la version candidate »). Astuce Pour les systèmes Debian ayant les versions stable et testing,     c'est une bonne idée d'inclure les lignes ayant « http:// security.debian.org/ » dans le fichier « /etc/apt/sources.list » afin d'activer les mises à jour de sécurité comme dans l’exemple ci-dessus. Note Les bogues de sécurité de l’archive stable sont corrigés par l’équipe de sécurité de Debian. Cette activité a été assez rigoureuse et fiable. Ceux de l’archive testing peuvent être corrigés par l’équipe de sécurité de Debian. Pour diverses (http: //lists.debian.org/debian-testing-security-announce/2008/12/ msg00019.html) raisons (http://lists.debian.org/     debian-testing-security-announce/2010/01/msg00000.html) , cette activité n’est pas aussi rigoureuse que pour stable et vous pouvez avoir à attendre la migration de paquets corrigés de unstable. Ceux de l’archive unstable sont corrigés par les responsables individuels. Les paquets de unstable maintenu de manière active sont habituellement maintenu dans un assez bon état par mise à niveau avec les dernières corrections de sécurité des développeurs amonts. Consultez FAQ de sécurité de Debian (http://www.debian.org/security/faq) concernant la manière dont Debian gère les bogues de sécurité. Tableau 2.3. Liste des sections de l'archive de Debian +---------------------------------------------------------------+ |section |nombre de |critères de composant du paquet | | |paquets | | |--------+-------------+----------------------------------------| |main |38274 |conforme à DFSG sans dépendance vers |     | | |non-free | |--------+-------------+----------------------------------------| |contrib |229 |conforme à DFSG mais avec des | | | |dépendances vers non-free | |--------+-------------+----------------------------------------| |non-free|508 |non conforme à DFSG | +---------------------------------------------------------------+ Ici, le nombre de paquets est celui de l’architecture amd64. La     section main fournit le système Debian (consultez Section 2.1.5, « Debian est totalement libre »). La meilleure manière d'étudier l’organisation de l’archive Debian     est de pointer votre navigateur vers chacune des URL des archives en y ajoutant dists ou pool. On se réfère à la distribution de deux manières, la version ou le nom de code (http://www.debian.org/doc/manuals/     developers-reference/resources.html#codenames) . Le mot « distribution » est aussi utilisé comme synonyme de version dans de nombreuses documentations. La relation entre la version et le nom de code peut être résumée comme suit : Tableau 2.4. Relation entre version et nom de code +---------------------------------------------------------------+ |calendrier |version = |version = |version = | | |stable |testing |unstable | |--------------------+--------------+--------------+------------|     |après la diffusion |nom de code = |nom de code = |nom de code | |de squeeze |squeeze |wheezy |= sid | |--------------------+--------------+--------------+------------| |après la diffusion |nom de code = |nom de code = |nom de code | |de wheezy |wheezy |jessie |= sid | +---------------------------------------------------------------+ L’histoire des noms de code a été décrite dans la FAQ Debian :     6.3.1 Quels noms de code ont déjà été utilisés ? (http:// www.debian.org/doc/manuals/debian-faq/ch-ftparchives# s-oldcodenames) Dans la terminologie la plus stricte de l’archive Debian, le mot « section » est spécifiquement utilisé pour la catégorisation des     paquets par zone d'application. (Cependant l’expression « section principale » peut parfois être utilisée pour décrire la section de l’archive Debian qui fournit la zone « main »). Chaque fois qu'un nouveau chargement est fait par un développeur Debian (DD) vers l’archive unstable (par l’intermédiaire du     traitement d'incoming (http://incoming.debian.org/) ), le DD doit s'assurer que les paquets envoyés sont compatibles avec le dernier ensemble de paquets de l’archive unstable. Si le DD casse intentionnellement cette compatibilité en raison     de la mise à jour d'une bibliothèque importante, etc., il y a habituellement une annonce sur la liste de diffusion debian-devel (http://lists.debian.org/debian-devel/) , etc. Avant qu'un ensemble de paquets ne soit déplacé par le script de maintenance de l’archive Debian depuis l’archive unstable vers l’archive testing, le script de maintenance de l’archive ne se     contente pas vérifier sa maturité (environ 10 jours) et l’état des rapports de bogues pour ces paquets mais essaie aussi de s'assurer qu'ils sont compatibles avec le dernier ensemble des paquets de l’archive testing. Ce processus rend l’archive testing très actuelle et utilisable. Par le processus de gel progressif de l’archive dirigé par l’équipe de diffusion (« release team »), l’archive testing est mûrie afin de la rendre entièrement cohérente et sans bogue avec quelques interventions manuelles. Ensuite, la nouvelle version     stable est créée en assignant le nom de code de l’ancienne archive testing à la nouvelle archive stable et en créant un nouveau nom de code pour la nouvelle archive testing. Le contenu initial de la nouvelle archive testing est exactement le même que celui de l’archive stable qui vient d'être diffusée.     Les archives unstable et testing peuvent toutes les deux souffrir temporairement de problèmes en raison de divers facteurs : * chargement vers l’archive cassé (la plupart du temps, cela concerne unstable) ; * délai pour accepter un nouveau paquet dans l’archive (la plupart du temps, cela concerne unstable) ;     * problème de temps de synchronisation de l’archive (à la fois pour testing et unstable) ; * intervention manuelle sur l’archive comme la suppression d'un paquet (davantage pour testing), etc.     Si vous décidez donc d'utiliser ces archives, vous devriez être capable de corriger ou de contourner ces types de problèmes. Attention Pendant les quelques mois qui suivent la diffusion d'une nouvelle version stable, la plupart des utilisateur de machines de bureau devraient utiliser l’archive stable avec ses mises à jour de sécurité même s'ils utilisent habituellement les archives unstable ou testing. Pendant cette période de transition, les archives unstable et testing ne sont pas bonnes pour la plupart     des gens. Votre système sera difficile à conserver dans un bon état de fonctionnement avec l’archive unstable car elle souffre de pics d'importantes mises à jour de paquets fondamentaux. L’archive testing n'est pas utile non plus car elle a sensiblement le même contenu que l’archive stable sans la prise en compte de la sécurité (Debian testing-security-announce 2008-12 (http://lists.debian.org/debian-testing-security-announce /2008/12/msg00019.html) ). Après environ un mois, l’archive unstable peut être utilisée avec précautions. Astuce     Lors du suivi de l’archive testing, un problème causé par la suppression d'un paquet est habituellement contourné en installant le paquet correspondant de l’archive unstable qui est envoyé pour la correction du bogue.     Consultez la Charte Debian (http://www.debian.org/doc/ debian-policy/) pour la définition des archives. * « Sections (http://www.debian.org/doc/debian-policy/ ch-archive#s-subsections)  » * « Priorités (http://www.debian.org/doc/debian-policy/ ch-archive#s-priorities)  »     * « Système de base (http://www.debian.org/doc/debian-policy/ ch-binary#s3.7)  » * « Paquets essentiels (http://www.debian.org/doc/debian-policy /ch-binary#s3.8)  » 2.1.5. Debian est totalement libre     Debian est totalement libre pour les raisons suivantes : * Debian n'installe que des logiciels libres par défaut pour respecter les libertés des utilisateurs ; * Debian ne fournit que des logiciels libres dans main ;     * Debian recommande de n'utiliser que des logiciels libres de main ; * Aucun paquet de main ne dépend ou ne recommande de paquets de non-free ni de contrib.     Certaines personnes se demandent si les deux faits suivants sont contradictoires ou non. * « Debian demeurera totalement libre. » (Premier point du contrat social Debian (http://www.debian.org/social_contract)     ). * Debian héberge des paquets non-free (non libres) et contrib (contributions).     Ce n'est pas contradictoire pour les raisons suivantes. * Le système Debian est totalement libre et ses paquets sont hébergés par les serveurs Debian dans la section main de l'archive.     * Des paquets hors du système Debian sont hébergés par les serveurs Debian dans les sections non-free et contrib de l'archive. C'est précisément expliqué dans les quatrième et cinquième points     du contrat social Debian (http://www.debian.org/social_contract) ) comme suit. * Nos priorités sont nos utilisateurs et les logiciels libres. o Les besoins de nos utilisateurs et de la communauté des logiciels libres nous guideront. Nous placerons leurs intérêts en tête de nos priorités. Nous répondrons aux besoins de nos utilisateurs dans de nombreux types d'environnements informatiques différents. Nous ne nous opposerons pas aux travaux non libres prévus pour fonctionner sur les systèmes Debian. Nous permettrons, sans réclamer rétribution, que d'autres créent des distributions contenant conjointement des logiciels Debian et d'autres travaux. Pour servir ces objectifs, nous fournirons un système intégrant des composants de grande qualité sans restrictions légales incompatibles avec ces modes d'utilisation.     * Travaux non conformes à nos standards sur les logiciels libres. o Nous reconnaissons que certains de nos utilisateurs demandent à pouvoir utiliser des travaux qui ne sont pas conformes aux principes du logiciel libre selon Debian. Les paquets correspondant prennent place dans des sections nommées « contrib » (« contributions ») et « non-free » (« non libre »). Les paquets de ces sections ne font pas partie du système Debian, bien qu'ils aient été configurés afin d'être utilisés avec lui. Nous encourageons les fabricants de CD à lire les licences de ces paquets afin de déterminer s'ils peuvent les distribuer. Ainsi, bien que les travaux non libres ne fassent pas partie de Debian, nous prenons en compte leur utilisation et fournissons donc l'infrastructure nécessaire (à l'image de notre système de suivi des bogues et de nos listes de diffusion).     Les utilisateurs doivent être conscients des risques lors de l'utilisation des sections non-free et contrib de l'archive. * l'absence de liberté pour de tels paquets de logiciel ; * l'absence de suivi de la part de Debian pour de tels paquets     de logiciel (Debian ne peut pas suivre correctement un logiciel sans avoir accès à son code source) ; * la contamination de votre système Debian totalement libre. Les principes du logiciel libre selon Debian (http:// www.debian.org/social_contract#guidelines) sont les normes du logiciel libre pour Debian (http://www.debian.org) . Debian     interprète « logiciel » de la façon la plus large possible, y compris la documentation, les microprogrammes, les logos et données artistiques des paquets. Cela rend les normes du logiciel libre de Debian très strictes. Afin de respecter ces normes strictes du logiciel libre nécessaires pour main, Debian démarque les paquets des programmes     de Mozilla (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug= 354622) comme Firefox, Thunderbird et Seamonkey en retirant leurs logos et certaines données artistiques, et les distribue respectivement sous les noms Iceweasel, Icedove et Iceape.     Les paquets typiques de non-free et contrib contiennent des paquets librement distribuables des types suivants. * Les paquets de documentation sous licence de documentation libre GNU (http://fr.wikipedia.org/wiki/ Licence_de_documentation_libre_GNU) avec des sections invariables comme celles de GCC et Make (la plupart sont dans la section non-free/doc).     * Les paquets de microprogramme contenant des données binaires sans source comme celles de Section 9.7.6, « Pilotes de matériel et microprogramme » dans non-free (la plupart sont dans la sectionnon-free/kernel). * Les paquets de jeu ou de police avec des restrictions sur l'utilisation commerciale ou la modification de contenu. Veuillez remarquer que le nombre de paquets de non-free et contrib est inférieur à 2 % de ceux dans main. Activer l'accès     aux sections non-free et contrib ne cache pas la provenance des paquets. L'utilisation interactive d'aptitude(8) fournit une visibilité totale et un contrôle complet des paquets installés et de leur section pour garder le système aussi libre que voulu. 2.1.6. Dépendances des paquets Le système Debian offre un ensemble cohérent de paquets binaires     par l’intermédiaire de son mécanisme de déclaration de dépendances binaires versionnées dans les champs du fichier « control ». En voici une définition un peu simplifiée : * « Depends » o Cela déclare une dépendance absolue du paquet et tous les paquets listés dans ce champ doivent être installés en même temps ou à l’avance. * « Pre-Depends » o Comme pour « Depends » excepté que cela demande une installation complète et à l’avance des paquets cités. * « Recommends » o Cela déclare une dépendance forte mais non absolue. La plupart des utilisateurs n'installeront pas le paquet si tous les paquets cités dans ce champs ne sont pas installés. * « Suggests » o Cela déclare une dépendance lâche. De nombreux utilisateurs de ce paquet pourront tirer profit de l’installation des paquets cités dans ce champs mais auront cependant des fonctionnalités acceptables sans eux.     * « Enhances » o Cela déclare une dépendance lâche comme « Suggests » mais fonctionne à l’inverse. * « Casse » o Cela déclare une incompatibilité de paquet avec habituellement une indication de version. La solution est en général de mettre à jour tous les paquets indiqués dans ce champ. * « Conflicts » o Cela déclare une incompatibilité absolue. Tous les paquets cités dans ce champs doivent être supprimés pour installer ce paquet. * « Replaces » o C'est déclaré lorsque les fichiers installés par ce paquet remplacent des fichiers des paquets cités. * « Provides » o C'est déclaré lorsque ce paquet fournit tous les fichiers et les fonctionnalités des paquets cités. Note Remarquez que définir simultanément « Provides », « Conflicts »     and « Replaces » pour un paquet virtuel est une configuration saine. Cela permet de s'assurer qu'un seul paquet réel fournissant ce paquet virtuel ne puisse être installé à un moment donné. La définition officielle, y compris les dépendances de sources,     se trouve dans la Charte Debian ; Chapitre 7 - Déclaration des dépendances entre paquets (http://www.debian.org/doc/ debian-policy/ch-relationships) . 2.1.7. Flux des événements dans la gestion d'un paquet     Voici un résumé du flux simplifié des événements de la gestion d'un paquet par APT. * Mettre à jour (« update ») (« aptitude update » ou « apt-get update ») : 1. Rechercher les métadonnées d'une archive depuis l’archive distante 2. Reconstruire et mettre à jour les métadonnées locales pour qu'elles puissent être utilisées par APT * Mettre à niveau (« upgrade ») (« aptitude safe-upgrade » et « aptitude full-upgrade » ou « apt-get upgrade » et « apt-get dist-upgrade ») : 1. Choisir la version candidate, qui est habituellement la dernière version disponible, pour tous les paquets installés (consultez Section 2.7.3, « Ajuster la version candidate » pour les exceptions) 2. Effectuer la résolution des dépendances du paquet 3. Rechercher le paquet binaire sélectionné depuis l’archive distante si la version candidate est différente de la version installée 4. Dépaqueter les paquets binaires ayant été téléchargés 5. Lancer le script preinst 6. Installer les fichiers binaires 7. Lancer le script postinst * Installer (« aptitude install … » ou « apt-get install … ») : 1. Choisir les paquets indiqués sur la ligne de commandes     2. Effectuer la résolution des dépendances du paquet 3. Récupérer les paquets binaires sélectionnés depuis l’archive distante 4. Dépaqueter les paquets binaires ayant été téléchargés 5. Lancer le script preinst 6. Installer les fichiers binaires 7. Lancer le script postinst * Supprimer (« aptitude remove … » ou « apt-get remove … ») : 1. Choisir les paquets indiqués sur la ligne de commandes 2. Effectuer la résolution des dépendances du paquet 3. Lancer le script prerm 4. Supprimer les fichiers installés à l’exception des fichiers de configuration 5. Lancer le script postrm * Purger (« aptitude purge … » ou « apt-get purge … ») : 1. Choisir les paquets indiqués sur la ligne de commandes 2. Effectuer la résolution des dépendances du paquet 3. Lancer le script prerm 4. Supprimer les fichiers installés y compris leurs fichiers de configuration 5. Lancer le script postrm     J'ai ici intentionnellement sauté des détails techniques dans le souci d’avoir un vue d'ensemble. 2.1.8. Première réponse aux problèmes de gestion de paquets Vous devriez lire l’excellente documentation officielle. Le premier document à lire est « /usr/share/doc// README.Debian » qui est spécifique à Debian. Les autres documents     dans « /usr/share/doc// » devraient aussi être consultés. Si vous avez configuré l’interpréteur de commande comme dans Section 1.4.2, « Personnaliser bash », entrez ce qui suit : $ cd     $ pager README.Debian $ mc Vous aurez besoin d'installer le paquet de documentation     correspondant au paquet dont le nom possède le suffixe « -doc » pour des informations détaillées. Si vous rencontrez des problèmes avec un paquet particulier,     faites d'abord une recherche sur le site du système de suivi des bogues Debian (BTS) (http://bugs.debian.org/) . Tableau 2.5. Liste de sites web clés pour résoudre les problèmes avec un paquet particulier +---------------------------------------------------------------+ |site web |commande | |-------------------------------------+-------------------------| |Page d'accueil du système de suivi |sensible-browser « http:/| |des bogues Debian (BTS) (http:// |/bugs.debian.org/ » | |bugs.debian.org/) | |     |-------------------------------------+-------------------------| |Signalement de bogue d'un nom de |sensible-browser « http:/| |paquet connu |/bugs.debian.org/ | | | » | |-------------------------------------+-------------------------| |Rapport de bogue concernant un numéro|sensible-browser « http:/| |de bogue connu |/bugs.debian.org/ | | | » | +---------------------------------------------------------------+ Rechercher sur Google (http://www.google.com) avec des mots de     recherche comprenant « site:debian.org », « site:wiki.debian.org », « site:lists.debian.org », etc.     Pour déposer un signalement de bogue, veuillez utiliser la commande reportbug(1). 2.2. Opérations de base de la gestion des paquets Les opérations de base de gestion des paquets avec le système Debian peuvent être réalisées à l'aide de n'importe quel outil de     gestion de paquets disponible avec le système Debian. Nous décrirons ici les outils de base de gestion des paquets : apt-get / apt-cache et aptitude. Pour les opérations de gestion des paquets qui concernent     l'installation des paquets ou les mises à jour des métadonnées des paquets, vous aurez besoin des privilèges de l’administrateur. 2.2.1. apt-get / apt-cache comparés à aptitude     Les commandes apt-get et apt-cache sont les outils les plus basiques de gestion des paquets. * apt-get et apt-cache n’offre qu’une interface utilisateur en ligne de commandes. * apt-get est le mieux adapté pour les mises à jour majeures du système entre les versions, etc. * apt-get offre un système de résolution des paquets robuste et stable qui utilise les données habituelles d’états des paquets. * apt-get nécessite moins de ressources matérielles. Il consomme moins de mémoire et fonctionne plus rapidement.     * apt-get a été mis à jour afin de prendre en charge l’installation automatique et la suppression automatique des paquets recommandés. * apt-get a été mis à jour afin de prendre en charge la tenue d’un journal de l’activité des paquets. * apt-cache offre une recherche basée sur des expressions rationnelles standard sur les noms et les descriptions des paquets. * apt-get et apt-cache peuvent gérer des versions multiples des paquets en utilisant /etc/apt/preferences mais est assez lourd.     La commande aptitude est l’outil de gestion des paquets le plus flexible. * aptitude offre une interface utilisateur interactive en plein écran en mode texte. * aptitude offre aussi une interface utilisateur en ligne de commandes. * aptitude est le mieux adapté pour la gestion interactive journalière des paquets comme, par exemple, la vérification des paquets installés et la recherche de paquets disponibles. * aptitude nécessite plus de ressources matérielles. Il consomme plus de mémoire et fonctionne moins rapidement. * aptitude offre un solveur avancé de paquets qui utilise aussi     des données d’état supplémentaires des paquets qui ne sont utilisées que par aptitude. * aptitude prend en charge l’installation automatique et la suppression automatique des paquets recommandés. * aptitude prend en charge la tenue d’un journal de l’activité des paquets. * aptitude offre une recherche avancée basée sur des expressions rationnelles pour la recherche sur toutes les métadonnées des paquets. * aptitude peut gérer des versions multiples des paquets sans utiliser /etc/apt/preferences et est assez intuitif. Note Bien que la commande aptitude soit disponible avec de riches fonctionnalités comme son solveur de paquets avancé, cette     complexité a causé (et peut encore causer) certaines régressions comme le bogue #411123 (http://bugs.debian.org/411123) , le bogue #514930 (http://bugs.debian.org/514930) et le bogue #570377 (http://bugs.debian.org/570377) . En cas de doute, veuillez utiliser les commandes apt-get et apt-cache plutôt que la commande aptitude. 2.2.2. Opérations de base de gestion des paquets en ligne de commandes     Voici les opérations de base de gestion des paquets en ligne de commandes en utilisant aptitude(8), apt-get(8) et apt-cache(8) : Tableau 2.6. Opérations de base de gestion des paquets avec la ligne de commandes en utilisant aptitude(8), apt-get(8) et apt-cache(8) +---------------------------------------------------------------+ |syntaxe |syntaxe | | |d'aptitude |d'apt-get et |description | | |apt-cache | | |-------------+-------------+-----------------------------------| |aptitude |apt-get |mettre à jour les métadonnées de | |update |update |l’archive du paquet | |-------------+-------------+-----------------------------------| |aptitude |apt-get |installer la version candidate du | |install toto |install toto |paquet « toto » ainsi que ses | | | |dépendances | |-------------+-------------+-----------------------------------| |aptitude |apt-get |installer les versions candidates | |safe-upgrade |upgrade |des paquets installés sans | | | |supprimer aucun autre paquet | |-------------+-------------+-----------------------------------| |aptitude |apt-get |installer les versions candidates | |full-upgrade |dist-upgrade |des paquets installés en supprimant| | | |d'autres paquets si nécessaire | |-------------+-------------+-----------------------------------| |aptitude |apt-get |supprimer le paquet « toto » en | |remove toto |remove toto |laissant ses fichiers de | | | |configuration | |-------------+-------------+-----------------------------------| | |apt-get |supprimer les paquets installés | |N/A |autoremove |automatiquement lorsqu'ils ne sont |     | | |plus nécessaires | |-------------+-------------+-----------------------------------| |aptitude |apt-get purge|purger le paquet « toto » ainsi que| |purge toto |toto |ses fichiers de configuration | |-------------+-------------+-----------------------------------| |aptitude | |nettoyer complètement le dépôt | |clean |apt-get clean|local des fichiers de paquets | | | |récupérés | |-------------+-------------+-----------------------------------| |aptitude |apt-get |nettoyer le dépôt local des | |autoclean |autoclean |fichiers des paquets périmés | |-------------+-------------+-----------------------------------| |aptitude show|apt-cache |afficher des informations | |toto |show |détaillées concernant le paquet | | | |« toto » | |-------------+-------------+-----------------------------------| |aptitude |apt-cache |rechercher les paquets qui | |search |search |correspondent à l’ | |rationnelle> |rationnelle> | | |-------------+-------------+-----------------------------------| |aptitude why | |expliquer les raisons qui font que | | | | devront | | | |être installés | |-------------+-------------+-----------------------------------| |aptitude | |expliquer les raisons pour lesquels| |why-not |N/A |les paquets qui correspondent à l’ | | ne peuvent| |rationnelle> | |pas être installés | +---------------------------------------------------------------+ Note Puisqu'apt-get et aptitude partagent l'état de paquet installé     automatiquement (consultez Section 2.5.5, « État des paquets pour APT ») après lenny, vous pouvez mélanger ces outils sans trop de problème (consultez le Bogue #594490 (http://bugs.debian.org/ 594490) ). La différence entre « safe-upgrade »/« upgrade » et « full-upgrade »/« dist-upgrade » n'apparaît que lorsque les     nouvelles versions des paquets reposent sur des relations de dépendances différentes des anciennes versions de ces paquets. La commande « aptitude safe-upgrade » n'installe pas de nouveau paquet et ne supprime aucun des paquets installés. « aptitude why  » peut afficher plus     d'informations par « aptitude -v why  ». On peut obtenir des informations similaires par « apt-cache rdepends  ». Lorsque la commande aptitude est lancée en mode ligne de     commande, et rencontre des problèmes tels que des conflits de paquets, vous pouvez passez en mode plein écran en pressant ensuite la touche « e » à l’invite de commande     Vous pouvez indiquer les options de commande juste après « aptitude ». Tableau 2.7. Options importantes de la commande aptitude(8) +---------------------------------------------------------------+ |option de la|description | |commande | | |------------+--------------------------------------------------| |-s |simuler le résultat de la commande |     |------------+--------------------------------------------------| |-d |télécharger seulement les paquets sans les | | |installer ni les mettre à jour | |------------+--------------------------------------------------| |-D |afficher une courte explication avant les | | |installations ou les suppressions automatiques | +---------------------------------------------------------------+ Consultez aptitude(8) et le « manuel de l’utilisateur     d'aptitude » à « /usr/share/doc/aptitude/README » pour en apprendre davantage. Astuce     Le paquet dselect est encore disponible et était l’outil de gestion des paquets en mode plein écran préféré des versions précédentes. 2.2.3. Utilisation interactive d'aptitude Pour une gestion interactive des paquets, lancez aptitude en mode     interactif depuis l’invite de l’interpréteur de commandes à la console comme suit :     $ sudo aptitude -u Password: Cela va mettre à jour la copie locale des informations de     l’archive et afficher la liste des paquets en plein écran avec un menu. On trouvera la configuration d'aptitude dans « ~/.aptitude/ config ». Astuce     Si vous désirez utiliser la configuration de l’administrateur (root) plutôt que celle de l’utilisateur, utilisez la commande « sudo -H aptitude … » en remplacement de « sudo aptitude … » dans l’expression précédente. Astuce     Aptitude définit automatiquement les actions en attente lorsqu'il est lancé de manière interactive. Si elles ne vous conviennent pas, vous pouvez le réinitialiser depuis le menu : « Action » → « Annuler les opérations en attente ». 2.2.4. Raccourcis clavier d'aptitude Les raccourcis clavier principaux pour parcourir l’état des     paquets et pour définir les « actions prévues » sur ces paquets dans le mode plein écran sont les suivants : Tableau 2.8. Liste des raccourcis clavier d'aptitude +---------------------------------------------------------------+ |touche |affectation | |-------------------+-------------------------------------------| |F10 ou Ctrl-t |menu | |-------------------+-------------------------------------------| |? |afficher l’aide pour les raccourcis clavier| | |(liste plus complète) | |-------------------+-------------------------------------------| |F10 → Aide → Manuel|afficher le Manuel de l’utilisateur | |de l’utilisateur | | |-------------------+-------------------------------------------| |u |mettre à jour les informations de l’archive| | |des paquets | |-------------------+-------------------------------------------| |+ |marquer le paquet pour mise à niveau ou | | |installation | |-------------------+-------------------------------------------| |- |marquer le paquet pour suppression | | |(conserver ses fichiers de configuration) | |-------------------+-------------------------------------------| |_ |marquer le paquet pour être purgé | | |(supprimer ses fichiers de configuration) | |-------------------+-------------------------------------------| |= |mettre le paquet dans l’état « conservé » |     |-------------------+-------------------------------------------| | |marquer tous les paquets susceptibles de | |U |mise à niveau (fonctionne comme | | |full-upgrade) | |-------------------+-------------------------------------------| |g |lancer le téléchargement et l’installation | | |des paquets sélectionnés | |-------------------+-------------------------------------------| |q |quitter l’écran actuel et enregistrer les | | |modifications | |-------------------+-------------------------------------------| |x |quitter l’écran actuel en abandonnant les | | |modifications | |-------------------+-------------------------------------------| |Entrée |afficher les informations concernant un | | |paquet | |-------------------+-------------------------------------------| |C |afficher le journal des modifications | | |(« changelog ») d'un paquet | |-------------------+-------------------------------------------| |l |modifier les limites pour les paquets | | |affichés | |-------------------+-------------------------------------------| |/ |rechercher la première correspondance | |-------------------+-------------------------------------------| |\ |répéter la dernière recherche | +---------------------------------------------------------------+ L’indication du nom de fichier sur la ligne de commandes et à l’invite du menu après avoir pressé « l » et « // » prend     l’expression rationnelle d'aptitude telle que décrite ci-dessous. Une expression rationnelle d'aptitude peut correspondre explicitement à un nom de paquet en utilisant une chaîne de caractère commençant par « ~n » et suivie du nom de paquet. Astuce Vous devrez presser « U » pour obtenir la mise à niveau de tous     les paquets installés vers la version candidate de l’interface visuelle. Sinon, seuls les paquets sélectionnés et certains paquets ayant des dépendances versionnées sur ces paquets seront mis à niveau vers la version candidate. 2.2.5. Vues des paquets sous aptitude Dans le mode interactif en plein écran d'aptitude(8), les paquets     de la liste des paquets sont affichés comme dans l’exemple suivant.     idA libsmbclient -2220ko 3.0.25a-1 3.0.25a-2     Cette ligne signifie, en partant de la gauche : * Indicateur d'« état actuel » (la première lettre) * Indicateur d'« action prévue » (la seconde lettre) * Indicateur « automatique » (la troisième lettre)     * Nom du paquet * Modification de l’utilisation du disque attribuée à l’« action prévue » * Version actuelle du paquet * Version candidate du paquet Astuce     La liste complète des indicateurs est donnée en bas de l’écran d’ Aide affiché en pressant « ? ». La version candidate est choisie en fonction des préférences     locales actuelles (consultez apt_preferences(5) et Section 2.7.3, « Ajuster la version candidate »).     Plusieurs types de vues de paquets sont disponibles depuis le menu « Vues ». Tableau 2.9. Liste des vues d'aptitude +---------------------------------------------------------------+ |vue |état |description de la vue | |---------------+----------+------------------------------------| | | |consultez Tableau 2.10, « Classement| |Vue des paquets|Bon |par catégories des vues de paquets | | | |standard » (défaut) | |---------------+----------+------------------------------------| | | |liste des paquets qui sont | |Recommendations|Bon |recommandés par certains paquets | |d'audit | |installés mais qui ne sont pas | | | |encore installés sur le système |     |---------------+----------+------------------------------------| |Liste de paquet| |liste des paquets sans regroupement | |« à plat » |Bon |par catégories (pour l’utilisation | | | |avec des expressions rationnelles) | |---------------+----------+------------------------------------| |Navigateur de |Très |liste des paquets classés selon leur| |Debtags |utilisable|entrée debtags (http:// | | | |debtags.alioth.debian.org/) | |---------------+----------+------------------------------------| |Navigateur par | |liste des paquets classés selon leur| |catégories |Obsolète |catégorie (utiliser plutôt Debtags | | | |Browser) | +---------------------------------------------------------------+ Note     Merci de nous aider à améliorer le marquage des paquets avec debtags ! (http://debtags.alioth.debian.org/todo.html)     La « Vue des paquets » standard classe les paquets un peu comme le fait dselect avec quelques fonctionnalités supplémentaires. Tableau 2.10. Classement par catégories des vues de paquets standard +---------------------------------------------------------------+ |catégorie |description de la vue | |-------------------+-------------------------------------------| |Paquets |liste des paquets organisée sous la forme | |susceptibles de |section → zone → paquet | |mise à jour | | |-------------------+-------------------------------------------| |Nouveaux paquets |, , | |-------------------+-------------------------------------------| |Paquets installés |, , |     |-------------------+-------------------------------------------| |Paquets non |, , | |installés | | |-------------------+-------------------------------------------| |Paquets obsolètes |, , | |ou créés localement| | |-------------------+-------------------------------------------| |Paquets virtuels |liste des paquets ayant la même fonction | |-------------------+-------------------------------------------| | |liste des paquets ayant les différentes | |Tâches |fonctions généralement nécessaires à une | | |tâche | +---------------------------------------------------------------+ Astuce     La vue des tâches peut être utilisée pour choisir les paquets nécessaires à votre tâche. 2.2.6. Options de la méthode de recherche avec aptitude     Aptitude vous offre différentes options pour rechercher des paquets en utilisant sa formule d'expressions rationnelles. * Ligne de commande du shell : o « aptitude search '' » afin d'afficher l’état d'installation, le nom du paquet et une courte description des paquets correspondants o « aptitude show '' » pour afficher la description détaillée du paquet * Mode interactif plein écran :     o « l » pour limiter la vue des paquets à ceux qui correspondent o « / » pour rechercher un paquet correspondant o « \ » pour rechercher en arrière un paquet correspondant o « n » pour rechercher le suivant o « N » pour rechercher le suivant (en arrière) Astuce     La chaîne du est traitée comme la correspondance exacte de chaîne pour le nom de paquet à moins qu'il ne soit lancé explicitement avec « ~ » pour être la formule d'expression rationnelle. 2.2.7. Les formules d'expressions rationnelles d'aptitude La formule des expressions rationnelles d'aptitude est étendue ERE de manière similaire à mutt (consultez Section 1.6.2,     « Expressions rationnelles ») et la signification des extensions de règles de correspondance spécifiques à aptitude est la suivante : Tableau 2.11. Liste des formules d'expressions rationnelles d'aptitude +--------------------------------------------------------------------+ |description des | | |règles étendues |formules d'expressions rationnelles | |de correspondance| | |-----------------+--------------------------------------------------| |correspond au nom|~n | |du paquet | | |-----------------+--------------------------------------------------| |correspond à la |~d | |description | | |-----------------+--------------------------------------------------| |correspond au nom|~t | |de la tâche | | |-----------------+--------------------------------------------------| |correspond à | | |l’étiquette |~G | |debtag | | |-----------------+--------------------------------------------------| |correspond au | | |responsable du |~m | |paquet | | |-----------------+--------------------------------------------------| |correspond à la |~s | |section du paquet| | |-----------------+--------------------------------------------------| |correspond à la |~V | |version du paquet| | |-----------------+--------------------------------------------------| |correspond à |~A{sarge,etch,sid} | |l’archive | | |-----------------+--------------------------------------------------| |correspond à |~O{debian,…} | |l’origine | | |-----------------+--------------------------------------------------| |correspond à la |~p{extra,important,optional,required,standard} | |priorité | | |-----------------+--------------------------------------------------| |correspond aux | | |paquets |~E | |essentiels | | |-----------------+--------------------------------------------------| |correspond aux |~v | |paquets virtuels | | |-----------------+--------------------------------------------------| |correspond aux |~N | |nouveaux paquets | | |-----------------+--------------------------------------------------| |correspond aux |~a | |actions en |{install,upgrade,downgrade,remove,purge,hold,keep}| |attente | | |-----------------+--------------------------------------------------| |correspond aux |~i | |paquets installés| | |-----------------+--------------------------------------------------| |correspond aux | | |paquets installés| | |ayant la marque A|~M | |(paquets | | |installés | | |automatiquement) | | |-----------------+--------------------------------------------------| |correspond aux | | |paquets installés| | |n'ayant pas la |~i!~M | |marque A (paquets| | |sélectionnés par | | |l’administrateur)| | |-----------------+--------------------------------------------------| |correspond aux | | |paquets installés|~U | |et pouvant être | | |mis à jour | | |-----------------+--------------------------------------------------| |correspond aux | | |paquets supprimés|~c |     |mais non purgés | | |-----------------+--------------------------------------------------| |correspond aux | | |paquets | | |supprimés, purgés|~g | |ou pouvant être | | |supprimés | | |-----------------+--------------------------------------------------| |correspond aux | | |paquets ayant une|~b | |relation cassée | | |-----------------+--------------------------------------------------| |correspond aux | | |paquets ayant des| | |dépendances, |~B | |prédépendances ou| | |conflits cassés | | |-----------------+--------------------------------------------------| |correspond aux | | |paquets depuis | | |lesquels une |~D[:] | |relation | | |est définie vers | | |le paquet | | |-----------------+--------------------------------------------------| |correspond aux | | |paquets depuis | | |lesquels une | | |relation de |~DB[:] | | casse est | | |définie vers le | | |paquet | | |-----------------+--------------------------------------------------| |correspond aux | | |paquets vers | | |lesquels le |~R[:] | |paquet | | |définit une | | |relation | | |-----------------+--------------------------------------------------| |correspond aux | | |paquets vers | | |lesquels le |~RB[:] | |paquet | | |définit un | | |de relation casse| | |-----------------+--------------------------------------------------| |correspond aux | | |paquets desquels | | |dépendent |~R~i | |d'autres paquets | | |installés | | |-----------------+--------------------------------------------------| |correspond aux | | |paquets desquels |!~R~i | |ne dépend aucun | | |autre paquet | | |-----------------+--------------------------------------------------| |correspond aux | | |paquets vers | | |lesquels d'autres| | |paquets installés|~R~i|~Rrecommends:~i | |dépendent ou | | |qu'ils | | |recommandent | | |-----------------+--------------------------------------------------| |correspond au | | |paquet |~S filter | |dont la version | | |est filtrée | | |-----------------+--------------------------------------------------| |correspond à tous| | |les paquets |~T | |(vrai) | | |-----------------+--------------------------------------------------| |ne correspond à | | |aucun paquet |~F | |(faux) | | +--------------------------------------------------------------------+ * La partie expression rationnelle est la même ERE que celle utilisée dans les outils UNIX typiques en utilisant « ^ », « .* », « $ » etc. comme dans egrep(1), awk(1) et perl(1).     * La relation est prise dans la liste (depends, predepends, recommends, suggests, conflicts, replaces, provides). * Le type de relation par défaut est « depends ». Astuce     Lorsqu'un (« regex_pattern> ») est une chaîne de caractère vide, placez « ~T » directement après la commande.     Voici quelques raccourcis. * « ~P » == « ~Dprovides: »     * « ~C » == « ~Dconflicts: » * « …~W term » == « (…|term) » Les utilisateurs familiers avec mutt comprendront rapidement car mutt a été la source d'inspiration pour la syntaxe des     expressions. Consultez « SEARCHING, LIMITING, AND EXPRESSIONS » dans le manuel de l’utilisateur (« /usr/share/doc/aptitude/ README »). Note Avec la version lenny d'aptitude(8), la nouvelle forme longue de la syntaxe comme « ?broken » peut être utilisée pour la     correspondance des expressions rationnelles en remplacement de l’ancien équivalent « ~b » en forme courte. Le caractère d'espacement «   » est maintenant considérée comme l’un des caractères de terminaison d'une expression rationnelle en plus du caractère tilde « ~ ». Consultez la syntaxe de la nouvelle forme longue dans le « Manuel de l’utilisateur ». 2.2.8. Résolution des dépendances par aptitude La sélection d'un paquet dans aptitude récupère non seulement les paquets définis dans son champ « Depends: » mais aussi ceux définis dans le champ « Recommends: » si la configuration a été     faite dans ce sens dans le menu « F10 → Options → Préférences → Gestion des dépendances ». Ces paquets installés automatiquement seront supprimés automatiquement s'ils ne sont plus nécessaires sous aptitude. Note     Avant la diffusion de lenny, apt-get et d'autre outils standard d'APT n'offraient pas la fonctionnalité de suppression automatique (« autoremove »). 2.2.9. Journaux d'activité des paquets     Vous pouvez vérifier l’activité de l’historique des paquets dans les fichiers journaux. Tableau 2.12. Fichiers journaux de l’activité des paquets +---------------------------------------------------------------+ |fichier |contenu | |-------------+-------------------------------------------------| |/var/log/ |Enregistrement des actions au niveau de dpkg pour| |dpkg.log |l’activité de tous les paquets |     |-------------+-------------------------------------------------| |/var/log/apt/|Journal de l’activité générique d'APT | |term.log | | |-------------+-------------------------------------------------| |/var/log/ |Journal des actions de la commande aptitude | |aptitude | | +---------------------------------------------------------------+ En réalité, il n'est pas aussi facile de comprendre la     signification de ces journaux. Consultez Section 9.2.10, « Enregistrer les modifications dans des fichiers de configuration » pour une façon de faire plus simple. 2.3. Exemples d'opérations avec aptitude     Voici quelques exemples d'opérations d'aptitude(8). 2.3.1. Afficher les paquets dont les noms correspondent à une expression rationnelle     La commande suivante affiche les paquets dont les noms correspondent à une expression rationnelle. $ aptitude search '~n(pam|nss).*ldap'     p libnss-ldap - NSS module for using LDAP as a naming service p libpam-ldap - Pluggable Authentication Module allowing LDAP interfaces     Il vous est assez facile de trouver le nom exact d'un paquet. 2.3.2. Parcours en correspondance avec une expression rationnelle L’expression rationnelle « ~dipv6 » entrée dans la vue « Nouvelle liste des paquets » (« New Flat Package List » depuis l’invite     « l » limite la vue aux paquets dont la description correspond à cette expression rationnelle et vous permet de parcourir les informations de manière interactive. 2.3.3. Purger pour de bon les paquets supprimés     Vous pouvez supprimer tous les fichiers de configuration subsistant des paquets supprimés.     Vérifiez le résultat de la commande suivante :     # aptitude search '~c'     Si vous pensez que les paquets affichés doivent être purgés, exécutez la commande suivante :     # aptitude purge '~c'     Vous pouvez avoir envie de faire la même chose en mode interactif avec un contrôle plus fin. Indiquez l’expression rationnelle « ~c » dans la « Nouvelle liste des paquets » en utilisant l’invite « l ». Cela limite la vue des     paquets à ceux qui correspondent à l’expression rationnelle, c'est-à-dire « supprimé mais non purgé ». On peut visualiser tous les paquets correspondant à cette expression rationnelle en pressant « [ » depuis une section de haut niveau. Pressez ensuite « _ » depuis une fenêtre de haut niveau comme « Paquets installés ». Seuls les paquets correspondants à     l’expression rationnelle se trouvant dans cette section seront marqués comme devant être purgés par cette commande. Vous pouvez exclure certains paquets de cette opération en pressant de manière interactive la touche « = » en face de chacun d'eux.     Cette technique est assez pratique et fonctionne avec de nombreuses autres touches de commande. 2.3.4. Toilettage de l’état d'installation automatique / manuel Voici comment je nettoie l’état d'installation automatique /     manuel des paquets (après avoir utilisé un installateur de paquets autre qu'aptitude, etc.). 1. Démarrer aptitude en mode interactif en tant qu'administrateur. 2. Entrer « u », « U », « f » et « g » pour mettre à jour la liste des paquets et mettre à niveau les paquets. 3. Entrer « l » afin de définir la limite d'affichage des paquets avec « ~i(~R~i|~Rrecommends:~i) » et entrez « M » sur « Paquets installés » automatiquement. 4. Entrer « l » afin de définir la limite d'affichage des paquets avec « ~prequired|~pimportant|~pstandard|~E » et entrez « m » sur les « Paquets installés » manuellement. 5. Entrer « l » pour définir la limite d'affichage des paquets avec « ~i!~M » et supprimez tous les paquets inutilisés en entrant - » sur chacun d'eux après les avoir affichés en entrant « [ » sur « Paquets installés ».     6. Entrer « l » pour définir la limite d'affichage des paquets avec « ~i » et entrez m » sur les « Tâches » manuellement installées. 7. Quitter aptitude. 8. Lancer « apt-get -s autoremove|less » en tant qu'administrateur pour vérifier les paquets non utilisés. 9. Redémarrer aptitude en mode interactif et marquer les paquets nécessaires comme « m ». 10. Redémarrer « apt-get -s autoremove|less » en tant qu'administrateur et vérifier à nouveau que « REMOVED » ne contient que les paquets voulus. 11. Lancer « apt-get autoremove|less » en tant qu'administrateur pour supprimer automatiquement les paquets inutilisés.     L’action « m » sur les « Tâches » est facultative pour éviter une situation de suppression en masse de paquets dans le futur. 2.3.5. Mise à jour pour l’ensemble du système Note Lors du changement vers une nouvelle version, etc., vous devriez envisager d'effectuer une installation propre d'un nouveau système même si Debian peut être mis à niveau comme décrit ci-dessous. Cela vous donne une chance de supprimer les résidus     amassés et vous présente la meilleure combinaison des derniers paquets. Bien entendu, vous devrez effectuer une sauvegarde totale de votre système vers un endroit sûr (consultez Section 10.1.6, « Sauvegarde et restauration ») avant de faire cela. Je vous recommande de faire une configuration dual boot en utilisant des partitions différentes afin d'effectuer une transition en douceur. Vous pouvez effectuer une mise à niveau de l’ensemble du système vers une nouvelle version en modifiant le contenu du fichier « /     etc/apt/sources.list » pour qu'il pointe vers la nouvelle version et en lançant la commande « apt-get update; apt-get dist-upgrade ». Pour effectuer la mise à jour depuis stable vers testing ou     unstable, remplacez « squeeze » dans le fichier « /etc/apt/ sources.list » d'exemple donné dans Section 2.1.4, « Bases concernant l’archive Debian » par « wheezy » ou « sid ». En réalité, vous pouvez rencontrer quelques complications en raison de problèmes de transition de paquets, le plus souvent pour des problèmes de dépendances de paquets. Plus la mise à jour est importante, plus vous avez de chances de rencontrer des     problèmes importants. Lors de la transition de l’ancienne version stable vers la nouvelle version stable après sa diffusion, afin de minimiser les problèmes vous pouvez lire ses nouvelles Notes de diffusion (http://www.debian.org/releases/stable/releasenotes) et suivre la procédure exacte qui y est décrite. Lorsque vous décidez de changer de la version stable vers la version testing avant sa diffusion formelle, il n'y a pas de Notes de diffusion (http://www.debian.org/releases/stable/     releasenotes) pour vous aider. La différence entre stable et testing peut être devenue assez importante depuis la diffusion de la version stable précédente et rendre compliquée la situation de la mise à jour. Vous devriez aller vers la mise à niveau complète avec précaution     tout en récupérant les dernières informations depuis les listes de diffusion et en usant de bon sens. 1. Lire les « Notes de diffusion » précédentes. 2. Faire la sauvegarde de l’ensemble du système (particulièrement les données et les informations de configuration). 3. Avoir un support amorçable prêt au cas où le chargeur initial serait cassé. 4. Informer les utilisateurs du système bien à l’avance. 5. Enregistrer l’activité de mise à jour avec script(1). 6. Appliquer « unmarkauto » aux paquets nécessaires, par exemple « aptitude unmarkauto vim », afin d'en éviter la suppression. 7. Minimiser les paquets installés pour réduire les chances de conflits de paquets, par exemple supprimer les paquets de la     tâche « bureau ». 8. Supprimer le fichier « /etc/apt/preferences » (désactiver l’épinglage apt « apt-pinning »). 9. Essayer de mettre à jour par étapes  : oldstable → stable → testing → unstable. 10. Mettre à jour le fichier « /etc/apt/sources.list » afin qu'il pointe uniquement vers la nouvelle archive et lancer « aptitude update ». 11. Installer d'abord, de manière facultative, le nouveau core packages, par exemple « aptitude install perl » 12. Lancer la commande « apt-get -s dist-upgrade » pour contrôler quel en sera l’impact. 13. Et enfin lancer la commande « apt-get dist-upgrade ». Attention     Il n'est pas sage de sauter une version majeure de Debian lors de la mise à niveau entre versions stable. Attention     Dans les « Notes de diffusion » précédentes, GCC, Linux Kernel, initrd-tools, Glibc, Perl, APT tool chain, etc. ont demandé une attention particulière pour une mise à niveau de l’ensemble du système.     Pour une mise à jour quotidienne d'unstable, consultez Section 2.4.3, « Protection contre les problèmes de paquets ». 2.4. Opérations avancées de gestion des paquets 2.4.1. Opérations avancées de gestion des paquets en ligne de commandes Voici la liste des autres opérations de gestion des paquets pour     lesquelles aptitude est de trop haut niveau ou n'a pas la fonctionnalité requise. Tableau 2.13. Liste des opérations avancées de gestion des paquets +---------------------------------------------------------------+ |commande |action | |---------------------+-----------------------------------------| |COLUMNS=120 dpkg -l |afficher l’état d'un paquet installé pour| | |le signalement de bogue | |---------------------+-----------------------------------------| |dpkg -L |afficher le contenu d'un paquet installé.| |---------------------+-----------------------------------------| |dpkg -L |afficher les pages de manuel d'un paquet | || egrep '/usr/share/ |installé. | |man/man.*/.+' | | |---------------------+-----------------------------------------| |dpkg -S |afficher les paquets installés dont le | | |nom correspond | |---------------------+-----------------------------------------| |apt-file search |afficher les paquets de l’archive dont le| | |nom correspond | |---------------------+-----------------------------------------| |apt-file list |afficher le contenu d'un paquet | | |correspondant de l’archive | |---------------------+-----------------------------------------| |dpkg-reconfigure |reconfigurer le paquet exact | | | | |---------------------+-----------------------------------------| |dpkg-reconfigure -p= |reconfigurer le paquet exact avec la | |low |question la plus détaillée | |---------------------+-----------------------------------------| |configure-debian |reconfigurer les paquets depuis le menu | | |en plein écran | |---------------------+-----------------------------------------| |dpkg --audit |système de vérification des paquets | | |partiellement installés | |---------------------+-----------------------------------------| |dpkg --configure -a |configurer tous les paquets partiellement| | |installés | |---------------------+-----------------------------------------| |apt-cache policy |afficher la version disponible, la | | |priorité et les informations concernant | | |l’archive du paquet binaire | |---------------------+-----------------------------------------| |apt-cache madison |afficher la version disponible et les | | |informations de l’archive concernant un | | |paquet | |---------------------+-----------------------------------------| |apt-cache showsrc |afficher les informations concernant le | | |paquet source d'un paquet binaire |     |---------------------+-----------------------------------------| |apt-get build-dep |installer les paquets nécessaires à la | | |construction d'un paquet | |---------------------+-----------------------------------------| |aptitude build-dep |installer les paquets nécessaires à la | | |construction d'un paquet | |---------------------+-----------------------------------------| |apt-get source |télécharger une source (depuis l’archive | | |standard) | |---------------------+-----------------------------------------| |dget |autre archive) | |---------------------+-----------------------------------------| |dpkg-source -x |construire une arborescence source depuis| |_ |un ensemble de paquets source | |- |(« *.tar.gz » et « *.diff.gz ») | |.dsc | | |---------------------+-----------------------------------------| |debuild binary |construire des paquets depuis une | | |arborescence source locale | |---------------------+-----------------------------------------| |make-kpkg |construire un paquet du noyau à partir de| |kernel_image |l’arborescence source du noyau | |---------------------+-----------------------------------------| |make-kpkg --initrd |construire un paquet du noyau à partir de| |kernel_image |l’arborescence source du noyau avec | | |initramfs activé | |---------------------+-----------------------------------------| |dpkg -i _| | |- |installer un paquet local sur le système | |_ | | |.deb | | |---------------------+-----------------------------------------| |debi _ | | |- |installer des paquets locaux sur le | |_ |système | |.dsc | | |---------------------+-----------------------------------------| |dpkg --get-selections|enregistrer l’information d'état de la | |'*' >selection.txt |sélection des paquets au niveau de dpkg | |---------------------+-----------------------------------------| |dpkg --set-selections|définir l’information d'état de sélection| | |définir l’information d'état de sélection| |hold | dpkg |des paquets au niveau de dpkg à hold | |--set-selections |(gelé, équivalent à aptitude hold | | |) | +---------------------------------------------------------------+ Attention Un outil de plus bas niveau tel que « dpkg -i … » et « debi … » devra être utilisé avec précautions par l’administrateur du     système. Il ne s'assure pas automatiquement des dépendances exigées par le paquet. Les options « --force-all » et similaires de la ligne de commandes de dpkg (consultez dpkg(1)) ne sont prévues pour être utilisées que par des experts. Les utiliser sans comprendre entièrement leurs effets peut casser l’ensemble de votre système.     Veuillez noter ce qui suit : * Toutes les commandes de configuration et d'installation doivent être lancées avec le compte de l’administrateur. * Au contraire d'aptitude qui utilise des expressions rationnelles (consultez Section 1.6.2, « Expressions rationnelles »), les autres commandes de gestion des paquets utilisent des motifs semblables aux motifs génériques (« glob ») de l’interpréteur de commandes (consultez Section 1.5.6, « Motifs génériques (« glob ») de l’interpréteur de commandes »). * apt-file(1) fourni par le paquet apt-file doit être précédé de l’exécution de la commande « apt-file update ». * configure-debian(8) fourni par le paquet configure-debian exécute en fond dpkg-reconfigure(8).     * dpkg-reconfigure(8) exécute les scripts du paquet en utilisant en fond debconf(1). * Les commandes « apt-get build-dep », « apt-get source » et « apt-cache showsrc » ont besoin d'une entrée « deb-src » dans « /etc/apt/sources.list ». * dget(1), debuild(1) etdebi(1) ont besoin du paquet devscripts. * Consultez la procédure de (re)paquetage en utilisant « apt-get source » dans Section 2.7.13, « Porter un paquet vers le système stable ». * La commande make-kpkg exige le paquet kernel-package (consultez Section 9.7, « Le noyau »). * Consultez Section 12.11, « Créer un paquet Debian » pour la réalisation de paquets en général. 2.4.2. Vérifier les fichiers de paquets installés L’installation de debsums permet, avec debsums(1), la vérification des fichiers des paquets installés d'après les     valeurs de MD5sum se trouvant dans le fichier « /var/lib/dpkg/ info/*.md5sums » Consultez Section 10.4.5, « La somme de contrôle MD5 » pour le fonctionnement de MD5sum. Note Comme la base de données MD5sum peut être trafiquée par un     intrus, debsums(1) est d'une utilité restreinte en tant qu'outil de sécurité. Il n'est bon que pour la vérification locale des modifications de l’administrateur ou des défectuosités en raison de problèmes de support. 2.4.3. Protection contre les problèmes de paquets De nombreux utilisateurs préfèrent suivre la version unstable du     système Debian parce qu'elle propose de nouvelles fonctionnalités et de nouveaux paquets. Cela rend le système davantage sujet aux bogues critiques de paquets. L’installation du paquet apt-listbugs protège votre système     contre les bogues critiques en recherchant automatiquement dans le BTS de Debian les bogues critiques lors de la mise à jour par l’intermédiaire du système APT. L’installation du paquet apt-listchanges indique les nouveautés     importantes se trouvant dans « NEWS.Debian » lors de la mise à jour du système avec APT. 2.4.4. Rechercher dans les métadonnées du paquet Bien que visiter le site Debian à http://packages.debian.org/     (http://packages.debian.org/) permette aujourd'hui de rechercher facilement les métadonnées des paquets, voyons les méthodes plus traditionnelles : Les commandes grep-dctrl(1), grep-status(1) et grep-available(1)     peuvent être utilisées pour effectuer des recherches dans tous les fichiers dont le format général est celui d'un fichier de contrôle de Debian. « dpkg -S  » peut être utilisé pour rechercher les noms de paquets installés par dpkg.qui contiennent des     fichiers dont le nom correspond au motif. Mais les fichiers créés par les scripts du responsable du paquet ne sont pas pris en compte. Si vous devez faire des recherches plus élaborées sur les métadonnées de dpkg, il vous faudra lancer la commande « grep -e     motif_expression_rationnelle * » dans le répertoire « /var/lib/ dpkg/info/ ». Cela vous permet de rechercher des mots mentionnés dans les scripts des paquets et les textes des requêtes d'installation.     Pour rechercher de manière récursive les dépendances de paquets, vous devrez utiliser apt-rdepends(8). 2.5. Fonctionnement interne de la gestion des paquets Debian Voyons comment le système Debian de gestion des paquets     fonctionne de manière interne. Cela vous permettra de créer votre propre solution à certains problèmes de paquets. 2.5.1. Métadonnées de l'archive Les fichiers de métadonnées de chaque distribution se trouvent sur chaque miroir Debian, dans « dist/ », par     exemple, « http://ftp.fr.debian.org/debian/ ». On peut parcourir la structure de son archive à l'aide d'un navigateur web. Il existe 6 types de métadonnées clés : Tableau 2.14. Contenu des métadonnées de l’archive Debian +---------------------------------------------------------------+ |fichier |emplacement |contenu | |--------------+-----------------------+------------------------| | |sommet de la |description de l’archive| |Release |distribution |et informations | | | |d'intégrité | |--------------+-----------------------+------------------------| | | |fichier signature du | |Release.gpg |sommet de la |fichier « Release » | | |distribution |signé avec la clé de | | | |l’archive | |--------------+-----------------------+------------------------| | | |liste de tous les | |Contents- |sommet de la |fichiers pour tous les | ||distribution |paquets dans l’archive |     | | |pertinente | |--------------+-----------------------+------------------------| | |sommet de chaque |description de l’archive| |Release |combinaison de |utilisée pour la règle | | |distribution/section/ |de apt_preferences(5) | | |architecture | | |--------------+-----------------------+------------------------| | |sommet de chaque |debian/control | |Packages |combinaison de |concaténés des paquets | | |distribution/section/ |binaires | | |architecture binaire | | |--------------+-----------------------+------------------------| | |sommet de chaque |debian/control | |Sources |combinaison |concaténés des paquets | | |distribution/section/ |sources | | |source | | +---------------------------------------------------------------+ Dans les archives récentes, ces métadonnées sont enregistrées     sous forme compressée et différentielle afin de limiter le trafic réseau. 2.5.2. Fichier « Release » de plus haut niveau et authenticité Astuce     Le fichier « Release » de plus haut niveau est utilisé pour signer l’archive au moyen du système secure APT. Chaque version de l’archive Debian possède un fichier « Release »     de plus haut niveau, par exemple, « http://ftp.fr.debian.org/ debian/dists/unstable/Release », comme ci-dessous : Origin: Debian Label: Debian Suite: unstable Codename: sid Date: Sat, 14 May 2011 08:20:50 UTC Valid-Until: Sat, 21 May 2011 08:20:50 UTC     Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc Components: main contrib non-free Description: Debian x.y Unstable - Not Released MD5Sum: bdc8fa4b3f5e4a715dd0d56d176fc789 18876880 Contents-alpha.gz 9469a03c94b85e010d116aeeab9614c0 19441880 Contents-amd64.gz 3d68e206d7faa3aded660dc0996054fe 19203165 Contents-armel.gz ... Note Vous pouvez trouver ici ma justification pour l’utilisation de     « suite », « nom de code » dans Section 2.1.4, « Bases concernant l’archive Debian ». La « distribution » est utilisée pour désigner à la fois « suite » et « nom de code ». Tous les noms possibles de « sections » de l'archive sont indiqués dans l'archive sous « Composant ». L’intégrité du fichier « Release » de plus haut niveau est     vérifiée par une infrastructure cryptographique appelée secure apt (http://wiki.debian.org/SecureApt) . * Le fichier de signature chiffré « Release.gpg » est créé à partir du fichier « Release » réel de plus haut niveau et de la clé secrète de l’archive Debian. * La clé publique de l’archive Debian peut être placée dans « / etc/apt/trusted.gpg » ; o automatiquement en installant le trousseau de clés avec     la dernière version du paquet base-files, ou o manuellement, avec les outils gpg ou apt-key en utilisant la dernière clé publique de l’archive postée sur ftp-master.debian.org (http://ftp-master.debian.org/) . * Le système secure APT vérifie de manière cryptographique, à l’aide du fichier « Release.gpg » et de la clé publique de l’archive Debian de « /etc/apt/trusted.gpg », l’intégrité du fichier « Release » de plus haut niveau téléchargé . L’intégrité de tous les fichiers « Packages » et « Sources » est vérifiée en utilisant les valeurs des sommes MD5 se trouvant dans son fichier de plus haut niveau « Release ». L’intégrité de tous     les fichiers de paquets est vérifiée en utilisant les valeurs des sommes MD5 se trouvant dans les fichiers « Packages » et « Sources ». Consultez debsums(1) et Section 2.4.2, « Vérifier les fichiers de paquets installés ». Comme la vérification de la signature cryptographique est un processus beaucoup plus consommateur de processeur que les calculs de sommes MD5, l’utilisation d'une somme MD5 pour chacun     des paquets tout en utilisant une signature cryptographique pour le fichier « Release » de plus haut niveau allie une bonne sécurité avec de bonnes performances (http://www.infodrom.org/ ~joey/Writing/Linux-Journal/secure-apt/) (consultez Section 10.4, « Infrastructure de sécurité des données »). 2.5.3. Fichiers « Release » au niveau de l’archive Astuce     Les fichiers « Release » au niveau de l’archive sont utilisés pour la règle d'apt_preferences(5). Il y a des fichiers « Release » du niveau de l’archive pour tous les emplacements d’archives indiqués par une ligne « deb » dans     « /etc/apt/sources.list » comme, par exemple, « http:// ftp.fr.debian.org/debian/dists/unstable/main/binary-amd64/ Release » ou « http://ftp.fr.debian.org/debian/dists/sid/main/ binary-amd64/Release » comme suit : Archive: unstable Origin: Debian     Label: Debian Component: main Architecture: amd64 Attention Pour l’entrée « Archive: », les noms de version (« stable »,     « testing », « unstable », …) sont utilisés dans l’archive Debian (http://ftp.fr.debian.org/debian/) alors que les noms de code (« dapper", « feisty », « gutsy », « hardy », « intrepid », …) sont utilisés dans l’archive Ubuntu (http://archive.ubuntu.com/ ubuntu/) . Pour certaines archives, comme experimental et squeeze-backports, qui contiennent des paquets qui ne devraient pas être installés     automatiquement, il y a une ligne supplémentaire, par exemple « http://ftp.fr.debian.org/debian/dists/experimental/main/ binary-amd64/Release » comme suit : Archive: experimental Origin: Debian     Label: Debian NotAutomatic: yes Component: main Architecture: amd64 Remarquez que les archives normales, sans « NotAutomatic: yes », la valeur par défaut de « Pin-Priority » est de 500, alors que     pour les archives spéciales avec « NotAutomatic: yes » la valeur par défaut de « Pin-Priority » est de 1 (consultez apt_preferences(5) et Section 2.7.3, « Ajuster la version candidate »). 2.5.4. Récupérer les métadonnées d'un paquet Lorsqu'on utilise les outils APT, comme aptitude, apt-get, synaptic, apt-file, auto-apt, etc., il faut mettre à jour les copies locales des métadonnées contenant les informations de     l’archive Debian. Ces copies locales ont les noms de fichier suivants, correspondant aux noms de la distribution, de la section et de l’architecture indiquées dans « /etc/apt/ sources.list » (consultez Section 2.1.4, « Bases concernant l’archive Debian »). * « /var/lib/apt/lists/ftp.us.debian.org_debian_dists_ _Release » * « /var/lib/apt/lists/ftp.us.debian.org_debian_dists_ _Release.gpg »     * « /var/lib/apt/lists/ftp.us.debian.org_debian_dists_ __binary-_Packages » * « /var/lib/apt/lists/ftp.us.debian.org_debian_dists_ __source_Sources » * « /var/cache/apt/apt-file/ftp.us.debian.org_debian_dists_ _Contents-.gz » (pour apt-file) Les quatre premiers types de fichiers sont partagés par toutes les commandes APT pertinentes et sont mis à jour depuis la ligne de commandes par « apt-get update » et « aptitude update ». Les     métadonnées « Packages » sont mises à jour s'il y a une ligne « deb » dans le fichier « /etc/apt/sources.list ». Les métadonnées « Sources » sont mises à jour s'il y a une ligne « deb-src » dans le fichier « /etc/apt/sources.list ». Les métadonnées « Packages » et « Sources » contiennent une entrée « Filename: » pointant vers l’emplacement du paquet     binaire et du paquet source. Actuellement, ces paquets sont situés dans l’arborescence du répertoire « pool/ » afin d'améliorer le passage d'une version à l’autre. On peut effectuer des recherches interactivement dans les copies locales des métadonnées « Packages » à l’aide d'aptitude. La     commande de recherche spécialisée grep-dctrl(1) peut effectuer des recherches dans les copies locales des métadonnées « Packages » et « Sources ». La copie locale des métadonnées « Contents- » peut être mise à jour par « apt-file update », son emplacement est     différent des quatre autres. Consultez apt-file(1). (auto-apt utilise par défaut un emplacement différent pour la copie locale de « Contents-.gz »). 2.5.5. État des paquets pour APT En plus des métadonnées récupérées par téléchargement, l’outil APT des versions ultérieures à Lenny enregistre l'état de     l’installation généré localement dans « /var/lib/apt/ extended_states » qui est utilisé par tous les outils APT afin de suivre tous les paquets installés automatiquement. 2.5.6. État des paquets pour aptitude En plus des métadonnées récupérées par téléchargement, la     commande aptitude enregistre l'état de l'installation généré localement dans « /var/lib/aptitude/pkgstates » qu'il est le seul à utiliser. 2.5.7. Copies locales des paquets téléchargés Tous les paquets ayant été téléchargés au moyen du mécanisme APT     sont enregistrés dans le répertoire « /var/cache/apt/archives » jusqu'à ce qu'ils en soient supprimés. 2.5.8. Nom de fichier d'un paquet Debian     Les fichiers de paquets Debian ont une structure de nom particulière. Tableau 2.15. Structure du nom des paquets Debian : +---------------------------------------------------------------+ |type de paquet |structure du nom | |-------------------------+-------------------------------------| |Paquet binaire (encore |_:-| |appelé deb) |-.deb | |-------------------------+-------------------------------------| |Paquet binaire (encore |_:-| |appelé udeb) |-.udeb | |-------------------------+-------------------------------------|     |paquet source (source |_:-| |amont) |.orig.tar.gz | |-------------------------+-------------------------------------| |Paquet source 1.0 |_:-| |(modifications Debian) |.diff.gz | |-------------------------+-------------------------------------| |Paquet source 3.0 (quilt)|_:-| |(modifications Debian) |.debian.tar.gz | |-------------------------+-------------------------------------| |paquet source |_:-| |(description) |.dsc | +---------------------------------------------------------------+ Astuce     Seuls les formats de paquets source de base sont décrits ici. Consultez dpkg-source(1) pour davantage d’informations. Tableau 2.16. Caractères utilisables pour chacune des composantes des noms de paquets Debian +---------------------------------------------------------------+ |nom de la |caractères utilisables (expression |existence | |composante |rationnelle) | | |----------------+-----------------------------------+----------|     | |[a-z,A-Z,0-9,.,+,-]+ |nécessaire| |----------------+-----------------------------------+----------| |: |[0-9]+: |optionnel | |----------------+-----------------------------------+----------| | |[a-z,A-Z,0-9,.,+,-,:]+ |nécessaire| |----------------+-----------------------------------+----------| ||[a-z,A-Z,0-9,.,+,~]+ |optionnel | +---------------------------------------------------------------+ Note     Vous pouvez vérifier l’ordre des versions d'un paquet à l’aide de dpkg(1), par exemple, « dpkg --compare-versions 7.0 gt 7.~pre1 ; echo $? ». Note L’installateur Debian (d-i) (http://www.debian.org/devel/ debian-installer/) utilise udeb comme extension du nom de fichier     de ses paquets binaires plutôt que le deb normal. Un paquet udeb est un paquet deb allégé dont certaines parties non essentielles du contenu, comme la documentation, sont supprimées afin d'économiser de la place en relâchant les exigences de la charte des paquets. Les paquet deb et udeb partagent la même structure de paquet. Le « u » signifie micro. 2.5.9. La commande dpkg dpkg(1) est l’outil de plus bas niveau pour la gestion des     paquets de Debian. C'est un outil très puissant et il faut l’utiliser avec précaution.     Lors de l’installation d'un paquet appelé «  », dpkg le traite selon l’ordre suivant : 1. dépaquetage du fichier deb (équivalent à « ar -x ») ; 2. exécution de « .preinst » en utilisant debconf(1)  ;     3. installation du contenu du paquet sur le système (équivalent à « tar -x » ; 4. exécution de « .postinst » en utilisant debconf (1). Le système debconf fournit une interaction standardisée avec     l’utilisateur avec la prise en charge de I18N and L10N ( Chapitre 8, I18N et L10N). Tableau 2.17. Fichiers particuliers créés par dpkg +---------------------------------------------------------------+ |fichier |description du contenu | |----------------------+----------------------------------------| |/var/lib/dpkg/info/ |liste de fichiers de configuration. | |.conffiles|(modifiables par l’utilisateur) | |----------------------+----------------------------------------| |/var/lib/dpkg/info/ |liste des fichiers et répertoires | |.list |installés par le paquet | |----------------------+----------------------------------------| |/var/lib/dpkg/info/ |liste des valeurs de hachage MD5 pour | |.md5sums |les fichiers installés par le paquet | |----------------------+----------------------------------------| |/var/lib/dpkg/info/ |script du paquet exécuté avant | |.preinst |l’installation du paquet | |----------------------+----------------------------------------| |/var/lib/dpkg/info/ |script du paquet exécuté après | |.postinst |l’installation du paquet | |----------------------+----------------------------------------| |/var/lib/dpkg/info/ |script du paquet exécuté avant la | |.prerm |suppression du paquet | |----------------------+----------------------------------------| |/var/lib/dpkg/info/ |script du paquet exécuté après la | |.postrm |suppression du paquet | |----------------------+----------------------------------------| |/var/lib/dpkg/info/ |script du paquet pour le système debconf|     |.config | | |----------------------+----------------------------------------| |/var/lib/dpkg/ |information d'alternative utilisé par la| |alternatives/ |commande update-alternatives command | | | | |----------------------+----------------------------------------| |/var/lib/dpkg/ |information de disponibilité de tous les| |available |paquets | |----------------------+----------------------------------------| |/var/lib/dpkg/ |informations de diversions utilisées par| |diversions |dpkg(1) et définies par `dpkg-divert`(8)| |----------------------+----------------------------------------| |/var/lib/dpkg/ |information « stat override » utilisée | |statoverride |par dpkg(1) et définie par | | |`dpkg-statoverride`(8) | |----------------------+----------------------------------------| |/var/lib/dpkg/status |informations d'état pour tous les | | |paquets | |----------------------+----------------------------------------| |/var/lib/dpkg/ |fichier de sauvegarde de première | |status-old |génération du fichier « var/lib/dpkg/ | | |status » | |----------------------+----------------------------------------| |/var/backups/ |fichier de sauvegarde de seconde | |dpkg.status* |génération du fichier « var/lib/dpkg/ | | |status » | +---------------------------------------------------------------+     Le fichier « status » est aussi utilisé par des outils comme dpkg (1), « dselect update » et « apt-get -u dselect-upgrade ». La commande de recherche spécialisée grep-dctrl(1) peut     rechercher des copies locales des métadonnées « status » et « available » Astuce     Dans l’environnement de l’installateur debian (http:// www.debian.org/devel/debian-installer/) , la commande udpkg est utilisée pour ouvrir les paquets udeb. La commande udpkg est une version allégée de la commande dpkg. 2.5.10. Commande update-alternative Le système Debian possède un mécanisme pour installer paisiblement des paquets qui présentent un certain recouvrement     en utilisant update-alternatives(8). Par exemple, vous pouvez faire que la commande vi choisisse de lancer vim alors que les paquets vim et nvi sont tous deux installés. $ ls -l $(type -p vi) lrwxrwxrwx 1 root root 20 2007-03-24 19:05 /usr/bin/vi -> /etc/alternatives/vi $ sudo update-alternatives --display vi ... $ sudo update-alternatives --config vi     Selection Command ---------------------------------------------- 1 /usr/bin/vim *+ 2 /usr/bin/nvi Appuyez sur pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné : Le système d'alternatives de Debian utilise des liens symboliques     dans « /etc/alternatives/ » pour enregistrer ses sélections. Le processus de sélection utilise le fichier correspondant de « /var /lib/dpkg/alternatives/ ». 2.5.11. Commande dpkg-statoverride Stat overrides, fournie par la commande dpkg-statoverride(8) est un moyen d'indiquer à dpkg(1) d'utiliser un propriétaire ou un     mode différent pour un fichier lorsqu'un paquet est installé. Si « --update » est indiqué et que le fichier existe, il est immédiatement configuré avec le nouveau propriétaire et le nouveau mode. Attention     Une modification directe par l’administrateur du propriétaire ou du mode d'un fichier dont le propriétaire est le paquet en utilisant les commandes chmod ou chown sera réinitialisée lors d'une nouvelle mise à niveau du paquet. Note     J'utilise ici le mot fichier, mais en réalité, ce peut être n'importe quel objet d'un système de fichiers que gère dpkg, y compris les répertoires, les périphériques, etc. 2.5.12. Commande dpkg-divert Les fichiers diversions fournis par la commande dpkg-divert(8) sont un moyen de forcer dpkg(1) à ne pas installer un fichier à     son emplacement par défaut, mais à un emplacement détourné (« diverted »). L’utilisation de dpkg-divert est destinée à la maintenance de paquets par des scripts. Son utilisation occasionnelle par l’administrateur du système est obsolète. 2.6. Récupérer un système cassé En utilisant le système unstable, l’administrateur peut avoir à     restaurer le système à partir d'une situation où la gestion des paquets est défectueuse. Attention     Certaines des méthodes décrites ici sont des actions très risquées. Vous avez été prévenu ! 2.6.1. Incompatibilité avec une ancienne configuration de l’utilisateur Si un programme avec une interface graphique présente une instabilité après une mise à niveau amont importante, vous devriez songer à des interférences avec les anciens fichiers de     configurations locaux qu'il avait créé. S'il est stable avec un compte d'utilisateur fraîchement créé, cette hypothèse est confirmée. (C'est un bogue de réalisation du paquet et c'est le plus souvent évité par le responsable du paquet). Pour retrouver la stabilité, vous devrez déplacer les fichiers de configuration locaux et redémarrer le programme ayant une     interface graphique. Il vous faudra peut-être lire le contenu de l’ancien fichier de configuration pour retrouver plus tard vos informations de configuration. (Ne les effacez pas trop rapidement). 2.6.2. Différents paquets ayant des fichiers communs Les système de gestion d'archive au niveau du paquet, tels qu' aptitude(8) ou apt-get(1) ne tenteront même pas, grâce aux     dépendances des paquets, d'installer des paquet ayant des fichiers qui se superposent (consultez Section 2.1.6, « Dépendances des paquets »). Des erreurs du responsable du paquet ou le déploiement de sources d'archives mélangées et incohérentes (consultez Section 2.7.2, « Paquets venant de sources mélangées ») par l’administrateur du système peuvent créer une situation où les dépendances des     paquets sont décrites de manière incorrecte. Lorsque, dans une telle situation, vous installez un paquet qui écrase des fichiers en utilisant aptitude(8) ou apt-get(1), dpkg(1) qui dépaquette le paquet va retourner une erreur au programme appelant sans écraser les fichiers existants. Attention L’utilisation de programmes tierce partie introduit un risque     significatif par l’intermédiaire des scripts du responsable qui sont lancés avec les privilèges de l’administrateur et peuvent effectuer n'importe quoi sur votre système. La commande dpkg(1) ne protège que contre l’écrasement des fichiers lors du dépaquetage. Vous pouvez contourner un tel problème d'installation cassée en     supprimant d'abord l’ancien paquet, , qui pose des problèmes.     $ sudo dpkg -P 2.6.3. Corriger les scripts cassés des paquets Lorsqu'une commande dans le script du paquet retourne une erreur pour une raison quelconque et que le script retourne une erreur,     le système de gestion des paquets arrête son action et se termine en laissant des paquets partiellement installés. Lorsqu'un paquet comporte des bogues dans les scripts de suppression, le paquet peut devenir impossible à supprimer et assez déplaisant.     Pour les problèmes avec le script de paquet de «  », il vous faudra regarder dans les scripts du paquet suivants : * « /var/lib/dpkg/info/.preinst » * « /var/lib/dpkg/info/.postinst »     * « /var/lib/dpkg/info/.prerm » * « /var/lib/dpkg/info/.postrm »     Éditez le script du paquet posant problème avec le compte de l’administrateur en utilisant les techniques suivantes : * désactiver la ligne posant problème avec un « # » en tête de ligne ;     * forcer un retour avec succès en ajoutant à la fin de la ligne qui pose problème « || true ».     Configurez tous les paquets partiellement installés à l’aide de la commande suivante :     # dpkg --configure -a 2.6.4. Récupération avec la commande dpkg Comme dpkg est un outil de gestion des paquets de très bas niveau, il peut fonctionner dans des situations très difficiles     telles qu'un système qu'on ne peut pas démarrer et qui n'a pas de connexion réseau. Supposons que le paquet toto soit cassé et doive être remplacé. Vous pouvez trouver des copies de l’ancienne version du paquet foo sans bogue dans le répertoire de cache des paquets « /var/     cache/apt/archives/ ». (Si ce n'est pas le cas, vous pouvez télécharger l’archive depuis http://snapshot.debian.net/ (http:// snapshot.debian.net/) ou la copier depuis le cache des paquets d'une machine qui fonctionne).     Si vous pouvez démarrer le système, vous pouvez l’installer avec la commande suivante :     # dpkg -i /chemin/vers/toto__.deb Astuce     Si la casse du système est minime, vous pouvez faire un retour en arrière (downgrade) de tout le système comme Section 2.7.10, « Retour d'urgence à une version précédente (downgrade)  » en utilisant le système de plus haut niveau APT.     Si votre système ne peut pas être démarré depuis le disque dur, vous devrez rechercher d'autres manières de le démarrer : 1. Démarrez le système en utilisant le CD de l’installateur Debian en mode secours (« rescue mode »).     2. Montez le système qui ne veut pas démarrer sur le disque dur sur « /target ». 3. Installez une version plus ancienne du paquet toto en faisant ce qui suit :     # dpkg --root /target -i /chemin/vers/toto__.deb     Cet exemple fonctionne même si la commande dpkg qui se trouve sur le disque dur est cassée. Astuce     Tous les systèmes GNU/Linux démarrés depuis un autre système sur le disque dur, depuis un CD autonome GNU/Linux, depuis une clé USB amorçable, depuis le réseau peuvent être utilisés de manière similaire pour restaurer un système cassé. Si la tentative d'installation d'un paquet de cette manière échoue en raison de la violation de certaines dépendances et que vous voulez vraiment le faire, vous pouvez, en dernier ressort,     outrepasser les dépendances en utilisant les options « --ignore-depends », « --force-depends » de dpkg et d'autres options. Si vous le faites, vous aurez un sérieux effort à faire pour restaurer les dépendances correctes par la suite. Consultez dpkg(8) pour davantage d'informations. Note Lorsque votre système est sérieusement cassé, vous devriez faire     une sauvegarde complète du système dans un endroit sûr (consultez Section 10.1.6, « Sauvegarde et restauration ») et effectuer une installation propre. Cela demande moins de temps et donne, en fin de compte, de meilleurs résultats. 2.6.5. Récupérer les données de sélection des paquets Si le fichier « /var/lib/dpkg/status » est corrompu pour une raison quelconque, le système Debian perd les données de paquets     sélectionnés et est sérieusement endommagé. Regardez l’ancienne version du fichier « /var/lib/dpkg/status » dans « /var/lib/dpkg/ status-old » ou « /var/backups/dpkg.status.* ». Conserver « /var/backups/ » sur une partition séparée peut être     une bonne idée car ce répertoire contient de nombreuses données importantes du système. Pour les casses sévères, je recommande de faire une réinstallation propre après avoir fait une sauvegarde du système.     Même si vous avez perdu tout ce qui se trouve dans « /var/ », vous pouvez encore récupérer certaines informations depuis les répertoires qui se trouvent dans « /usr/share/doc/ » afin de vous guider dans votre nouvelle installation.     Réinstaller un système (de bureau) minimum.     # mkdir -p /chemin/vers/ancien/système     Montez l’ancien système sur « /chemin/vers/ancien/système/ ». # cd /chemin/vers/ancien/système/usr/share/doc # ls -1 >~/ls1.txt     # cd /usr/share/doc # ls -1 >>~/ls1.txt # cd # sort ls1.txt | uniq | less Le système vous présentera alors les noms de paquets à installer.     (Il peut y avoir des noms qui ne soient pas des noms de paquets, comme, par exemple, « texmf »). 2.7. Astuces pour la gestion des paquets 2.7.1. Comment obtenir des paquets Debian Vous pouvez rechercher les paquets qui satisfont à vos besoins     avec aptitude à partir de la description du paquet ou depuis la liste se trouvant dans « Tasks ». Si vous trouvez deux paquets similaires et que vous vous demandez lequel installer sans faire des efforts d'« essais et erreurs »,     vous pouvez user de bon sens. Je considère que les points suivants constituent de bonnes indications pour les paquets à privilégier : * Essential : yes > no * Composante : main > contrib > non-free * Priorité : required > important > standard > optional > extra * Tâches : paquets affichés dans les tâches tels que « Environnement de bureau » * Les paquets sélectionnés par le paquet de dépendances (par exemple, python2.4 par python) * Popcon : les votes et le nombre d'installations les plus     élevés * Journaux des modifications (« Changelog ») : mises à jour régulières par le responsable * BTS : pas de bogue RC (pas de bogue critique, grave ou sérieux) * BTS : réactivité du responsable aux signalements de bogues * BTS : le plus grand nombre de bogues réglés récemment * BTS : le plus faible nombre de bogues restants qui ne soient pas dans la liste des vœux Debian étant un projet basé sur le volontariat avec un modèle     développement distribué, son archive contient de nombreux paquets avec des cibles différentes et de qualité variable. Vous devrez choisir vous-même ce que vous voulez en faire. 2.7.2. Paquets venant de sources mélangées Attention Installer des paquets provenant de sources d'archives mélangées     n'est pas pris en charge par la distribution officielle de Debian sauf pour la prise en charge officielle d'une combinaison particulière d'archives telle que stable avec security updates (http://www.debian.org/security/) et squeeze-updates (http:// www.debian.org/News/2011/20110215) . Voici un exemple des opérations pour inclure des paquets d'une     version amont spécifique plus récente se trouvant dans unstable pour une seule occasion tout en suivant testing : 1. modifier le fichier « /etc/apt/sources.list » de manière temporaire avec la seule entrée « unstable » ; 2. lancer « aptitude update » ;     3. lancer « aptitude install  » ; 4. rétablir le fichier « /etc/apt/sources.list » pour testing. 5. lancer « aptitude update » ; Vous ne créez pas le fichier « /etc/apt/preferences » et vous     n'avez pas besoin de vous préoccuper de l’épinglage apt (« apt-pinning ») avec cette approche manuelle. Mais c'est très lourd. Attention En utilisant une source d'archive mixte, vous devez vous assurer par vous-même de la compatibilité des paquets car Debian ne la     garantit pas. S'il existe des incompatibilités de paquets, vous pouvez casser votre système. Vous devrez être capable d'apprécier ces exigences techniques. L’utilisation de sources mixtes d'archives aléatoires est une opération entièrement facultative et son utilisation est quelque chose que je ne vous encourage pas à faire.     Les règles générales pour l’installation de paquets de différentes archives sont les suivantes : * Les paquets non binaires (« Architecture: all ») sont plus sûrs à installer : o paquets de documentation : pas d'exigence particulière o paquet de programmes d'interpréteur : un interpréteur compatible doit être disponible * Les paquets binaires (qui ne sont pas « Architecture: all ») sont confrontés à de nombreux barrages et ne sont pas sûrs à installer     o compatibilité des versions de bibliothèques (y compris « libc ») o compatibilité des versions des programmes utilitaires en rapport o compatibilité avec l’ABI (http://fr.wikipedia.org/wiki/ Application_binary_interface) du noyau o compatibilité avec l’ABI (http://fr.wikipedia.org/wiki/ Application_binary_interface) C++ o … Note De manière à rendre un paquet plus sûr à installer, certains     programmes commerciaux binaires et non libres peuvent être fournis liés avec des bibliothèques complètement statiques. Vous devrez quand même vérifier leurs problèmes de compatibilité avec l’ABI (http://fr.wikipedia.org/wiki/Application_binary_interface) , etc. Note Sauf pour éviter à court terme un paquet cassé, installer des paquets binaires depuis des archives officiellement non     supportées est en général une mauvaise idée. C'est vrai même si vous utilisez l’épinglage apt (« apt-pinning ») (consultez Section 2.7.3, « Ajuster la version candidate »). Vous devriez envisager chroot ou des techniques similaires (consultez Section 9.8, « Système virtualisé ») afin de faire tourner des programmes en provenance d'archives différentes. 2.7.3. Ajuster la version candidate Sans le fichier « /etc/apt/preferences », le système APT choisit, en utilisant la chaîne de version, la dernière version disponible comme version candidate. C'est l’état normal et l’utilisation la     plus recommandée du système APT. Toutes les combinaisons d'archives officiellement prises en charge n'exigent pas le fichier « /etc/apt/preferences » car certaines archives qui ne peuvent pas être utilisées comme source des mises à jour automatiques sont marquées NotAutomatic et gérées proprement. Astuce     La règle de comparaison de la chaîne de version peut être vérifiée avec, par exemple « dpkg --compare-versions ver1.1 gt ver1.1~1; echo $? » (consultez dpkg(1)). Lorsque vous installez régulièrement des paquets depuis un mélange de sources d'archives (consultez Section 2.7.2, « Paquets venant de sources mélangées »), vous pouvez automatiser ces     opérations compliquées en créant le fichier « /etc/apt/ preferences » avec les entrées correctes et en ajustant la règle de sélection des paquets pour la version candidate comme décrit dans apt_preferences(5). C'est appelé épinglage apt (« apt-pinning »). Avertissement     L’utilisation de l’épinglage apt par un débutant est une source certaine de problèmes majeurs. Vous devriez éviter l’utilisation de l’épinglage apt sauf si vous en avez absolument besoin. Attention     Lorsque vous utilisez l’épinglage apt, vous devez vérifier vous-même de la compatibilité des paquets car le système Debian ne la garantit pas. L’épinglage apt est une opération entièrement facultative et je ne vous encourage pas à l’utiliser. Attention Les fichiers Release au niveau de l’archive (consultez Section 2.5.3, « Fichiers « Release » au niveau de l’archive ») sont utilisés pour la règle de apt_preferences(5). L’épinglage     apt ne fonctionne donc qu'avec le nom de « suite » pour les archives normales de Debian (http://ftp.fr.debian.org/debian/ dists/) et les archives de sécurité de Debian (http:// security.debian.org/dists/) c'est différent des archives Ubuntu (http://www.ubuntu.com/) ). Par exemple, dans le fichier « /etc/ apt/preferences », il est possible de mettre « Pin: release a= unstable  » mais pas « Pin: release a=sid » Attention Lorsque vous utilisez une archive ne venant pas de Debian en tant     que partie d'épinglage apt, vous devez vérifier ce pour quoi elles sont prévues et aussi vérifier leur crédibilité. Par exemple, Ubuntu et Debian ne sont pas prévues pour être mélangées. Note Même si vous ne créez pas le fichier « /etc/apt/preferences »,     vous pouvez effectuer des opérations assez complexes sur le système sans épinglage apt (consultez Section 2.6.4, « Récupération avec la commande dpkg » et Section 2.7.2, « Paquets venant de sources mélangées »).     Voici une explication simplifiée de la technique d'épinglage apt (« apt-pinning ») : Le système APT choisit la mise à niveau du paquet de plus haute priorité d'épinglage (« Pin-Priority ») dans la liste des sources de paquets disponible dans le fichier « /etc/apt/sources.list »     comme paquet de « version candidate. Si la priorité d'épinglage du paquet est supérieure à 1000, cette restriction de version pour la mise à niveau est levée afin de permettre le retour vers une version précédente (consultez Section 2.7.10, « Retour d'urgence à une version précédente (downgrade)  »). La valeur de priorité d'épinglage de chaque paquet est définie     par l’entrée « Pin-Priority » dans le fichier « /etc/apt/ preferences » ou utilise sa valeur par défaut. Tableau 2.18. Liste de valeurs remarquables des priorités d'épinglage (Pin-Priority) pour la technique d'épinglage apt (« apt-pinning ») : +---------------------------------------------------------------+ |priorité |conséquence de l'épinglage apt sur le paquet | |d'épinglage | | |------------+--------------------------------------------------| |1001 |installer le paquet même s'il s'agit d'un retour | | |en arrière | |------------+--------------------------------------------------| |990 |utilisé par défaut pour l'archive version cible |     |------------+--------------------------------------------------| |500 |utilisé par défaut pour l'archive normale | |------------+--------------------------------------------------| |100 |utilisé par défaut pour l'archive non automatique | | |mais mises à niveau automatiques | |------------+--------------------------------------------------| |100 |utilisé pour le paquet installé | |------------+--------------------------------------------------| |1 |utilisé par défaut pour l'archive non automatique | |------------+--------------------------------------------------| |-1 |ne jamais installer le paquet même s'il est | | |recommandé | +---------------------------------------------------------------+     Il y a plusieurs méthodes pour définir l’archive version cible : * fichier de configuration « /etc/apt/apt.conf » avec la ligne « APT::Default-Release "stable"; »     * option de la ligne de commandes, par exemple, « apt-get install -t testing un_paquet » L'archive non automatique mais mises à niveau automatiques est définie par le serveur d'archive dont le fichier Release au niveau de l'archive (consultez Section 2.5.3, « Fichiers     « Release » au niveau de l’archive ») contient à la fois « NotAutomatic: yes » et « ButAutomaticUpgrades: yes ». L'archive non automatique est définie par le serveur d'archive dont le fichier Release au niveau de l'archive contient « NotAutomatic: yes ». La situation d'épinglage apt de provenant de sources     d'archive multiple est affichée par « apt-cache policy  ». * Une ligne commençant par « Package pin: » affiche la version d'épinglage du paquet si l’association n'est définie que pour par exemple, « Package pin: 0.190 ». * Il n'existe pas de ligne avec « Package pin: » s'il n'y a pas d'association définie uniquement avec . * La valeur de Pin-Priority associée uniquement avec est affichée sur la partie droite de toutes les chaînes de     version, par exemple, « 0.181 700 ». * « 0 » est affiché à droite de toutes les chaînes de version s'il n'y a pas d'association définie avec uniquement , par exemple, « 0.181 0 ». * Les valeurs de Pin-Priority des archives (définies par « Package: * » dans le fichier « /etc/apt/preferences ») sont affichées sur la gauche de tous les chemins vers les archives, par exemple, « 100 http://ftp.XX.debian.org/debian/ squeeze-backports/main Packages ». 2.7.4. Mises à jour et rétroportages Les archives du squeeze-updates (http://www.debian.org/News/2011/     20110215) et backports.debian.org (http://backports.debian.org) fournissent des paquets mis à niveau pour stable (squeeze). Afin d'utiliser ces archives, placez la liste de toutes les     archives nécessaires dans le fichier « /etc/apt/sources.list » de la manière suivante : deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free     deb http://security.debian.org/ squeeze/updates main contrib deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free deb http://ftp.us.debian.org/debian/ squeeze-backports main contrib non-free Il n'est pas nécessaire de définir explicitement la valeur de Pin-Priority dans le fichier « /etc/apt/preferences ». Quand de     nouveaux paquets sont disponibles, la configuration par défaut fournit les mises à niveau les plus saines (consultez Section 2.5.3, « Fichiers « Release » au niveau de l’archive »). * Tous les paquets installés les plus anciens sont mis à niveau vers les plus récents à partir de squeeze-updates.     * Seuls les paquets les plus anciens installés à partir de squeeze-backports sont mis à niveau vers les plus récents à partir de squeeze-backports. Chaque fois que vous désirerez installer un paquet nommé «       » avec ses dépendances depuis l’archive squeeze-backports vous-même, vous utiliserez la commande suivante en changeant de version cible avec l’option « -t » :     $ sudo apt-get install -t squeeze-backports 2.7.5. Blocage des paquets installés par « Recommends » Si vous ne voulez pas tirer des paquets particuliers     automatiquement avec « Recommends », vous devez créer le fichier « /etc/apt/preferences » et y placer la liste explicite de tous ces paquets au début du fichier comme suit : Package: Pin: version * Pin-Priority: -1     Package: Pin: version * Pin-Priority: -1 2.7.6. Suivre testing avec quelques paquets d'unstable Voici un exemple de technique d'épinglage apt permettant d'inclure de manière régulière une version amont plus récente de     paquets spécifiques se trouvant dans unstable tout en suivant testing. Listez toutes les archives nécessaires dans le fichier « /etc/apt/sources.list » de la manière suivante : deb http://ftp.fr.debian.org/debian/ testing main contrib non-free     deb http://ftp.fr.debian.org/debian/ unstable main contrib non-free deb http://security.debian.org/ testing/updates main contrib     Configurez le fichier « /etc/apt/preferences » comme suit : Package: *     Pin: release a=unstable Pin-Priority: 100 Lorsque vous désirez installer un paquet appelé «  » avec ses dépendances depuis l’archive unstable avec cette     configuration, vous utilisez la commande suivante qui modifie la version cible avec l’option « -t » (la priorité d'épinglage de unstable devient 990).     $ sudo apt-get install -t unstable Avec cette configuration, l’exécution habituelle de « apt-get upgrade » et « apt-get dist-upgrade » (ou « aptitude safe-upgrade » et « aptitude full-upgrade » met à niveau les     paquets qui avaient été installés depuis l’archive testing en utilisant l’archive testing actuelle et les paquets qui avaient été installés depuis l’archive unstable en utilisant l’archive unstable actuelle. Attention     Faites bien attention à ne pas supprimer l’entrée « testing » du fichier « /etc/apt/sources.list ». Sans l’entrée « testing », le système APT mettra à niveau les paquets en utilisant la nouvelle archive unstable. Astuce J'édite habituellement le fichier « /etc/apt/sources.list » en commentant l’entrée correspondant à l’archive « unstable » juste     après avoir effectué les opérations ci-dessus. Cela évite un processus de mise à jour lent en raison du nombre trop important d'entrées dans le fichier « /etc/apt/sources.list » bien que cela ne permette pas de mettre à niveau les paquets qui avaient été installés depuis l’archive unstable en utilisant l’archive unstable actuelle. Astuce Si on utilise « Pin-Priority: 1 » à la place de Pin-Priority:     100 » pour le fichier « /etc/apt/preferences », les paquets déjà installés ayant une valeur de Pin-Priority de 100 ne seront pas mis à niveau depuis l’archive unstable même si l’entrée « testing » du fichier « /etc/apt/sources.list » est supprimée. Si vous désirez suivre automatiquement un paquet particulier dans unstable sans une installation initiale « -t unstable », vous     devrez créer le fichier « /etc/apt/preferences » et y placer la liste explicite de tous ces paquets au début du fichier de la manière suivante : Package: Pin: release a=unstable Pin-Priority: 700     Package: Pin: release a=unstable Pin-Priority: 700 Cela définit la valeur de Pin-Priority pour chacun de ces paquets spécifiques. Par exemple, pour suivre la dernière version     unstable de cette « Référence Debian » en français, vous devrez ajouter les entrées suivantes dans le fichier « /etc/apt/ preferences ». Package: debian-reference-fr Pin: release a=unstable Pin-Priority: 700     Package: debian-reference-common Pin: release a=unstable Pin-Priority: 700 Astuce     Cette technique d'épinglage apt est aussi valable si vous suivez l’archive stable. Jusqu'à présent et selon mon expérience, les paquets de documentation ont toujours été sûrs à installer depuis l’archive unstable. 2.7.7. Suivre unstable avec quelques paquets d'experimental Voici un autre exemple de technique d'épinglage apt destinée à inclure une version amont plus récente de paquets spécifiques se     trouvant dans experimental tout en suivant unstable. Vous donnez la liste de toutes les archives nécessaires dans fichier « /etc/ apt/sources.list » de la manière suivante : deb http://ftp.fr.debian.org/debian/ unstable main contrib non-free     deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free deb http://security.debian.org/ testing/updates main contrib La valeur de Pin-Priority par défaut pour l’archive experimental est toujours de 1 (<<100) car c'est une archive non automatique (consultez Section 2.5.3, « Fichiers « Release » au niveau de     l’archive »). Il n'y a pas besoin de définir explicitement de valeur de Pin-Priority dans le fichier « /etc/apt/preferences » simplement pour utiliser l’archive experimental à moins que vous ne désiriez suivre des paquets particulier dans cette archive de manière automatique pour la mise à niveau suivante. 2.7.8. Chargement et mise à niveau automatique de paquets Le paquet apt est diffusé avec son propre script d'événements planifiés (cron) « /etc/cron.daily/apt » afin de gérer le téléchargement automatique de paquets. Ce script peut être amélioré afin d'effectuer la mise à niveau automatique des     paquets en installant le paquet unattended-upgrades. Cela peut être personnalisé à l’aide de paramètres se trouvant dans « /etc/ apt/apt.conf.d/02backup » et « /etc/apt/apt.conf.d/ 50unattended-upgrades » comme décrit dans « /usr/share/doc/ unattended-upgrades/README ». Le paquet unattended-upgrades est principalement destiné à des mises à jour de sécurité des systèmes stable. Si le risque de casser un système stable existant par la mise à niveau     automatique est plus faible que celui d'avoir un système cassé par un intrus utilisant une de ses failles de sécurité qui a été fermée par une mise à jour de sécurité, vous devriez envisager d'utiliser cette mise à niveau automatique avec les paramètres de configuration suivants : APT::Periodic::Update-Package-Lists "1";     APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::Unattended-Upgrade "1"; Si vous faites tourner un système unstable, vous ne devriez pas utiliser les mises à niveau automatiques car cela cassera     probablement votre système un jour ou l’autre. Même dans ce cas, avec unstable, vous pourrez télécharger des paquets à l’avance afin de gagner du temps pour la mise à niveau interactive avec les paramètres de configuration suivants : APT::Periodic::Update-Package-Lists "1";     APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::Unattended-Upgrade "0"; 2.7.9. Diminuer la bande passante utilisée par APT Si vous désirez limiter la bande passante utilisée par APT à, par     exemple, 800Kib/sec (=100kio/sec), vous devrez configurer APT avec son paramètre de configuration comme suit :     APT::Acquire::http::Dl-Limit "800"; 2.7.10. Retour d'urgence à une version précédente (downgrade) Attention Le retour vers une version antérieure n'est pas officiellement géré par Debian dans sa conception. Ce ne devrait être fait qu'en     tant que partie d'un processus de récupération d'urgence. Malgré cette situation, on sait que cela fonctionne bien pour de nombreux incidents. Avec les systèmes critiques vous devrez effectuer un sauvegarde des données importantes du système après l’opération de récupération et réinstaller le nouveau système depuis le départ. Vous pouvez être assez chanceux pour revenir en arrière depuis une archive plus récente vers une archive plus ancienne afin de récupérer une mise à jour du système en manipulant la version     candidate (consultez Section 2.7.3, « Ajuster la version candidate »). Cette méthode est un remplacement de paresseux des nombreuses et fastidieuses commandes « dpkg -i _ .deb » (consultez Section 2.6.4, « Récupération avec la commande dpkg »).     Recherchez les lignes du fichier « /etc/apt/sources.list » permettant de suivre unstable ayant la forme suivante :     deb http://ftp.fr.debian.org/debian/ sid main contrib non-free     Remplacez-la avec la suivante pour suivre testing :     deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free     Définissez comme suit le fichier « /etc/apt/preferences » : Package: *     Pin: release a=testing Pin-Priority: 1010     Lancez « apt-get dist-upgrade » pour forcer l’installation à une version antérieure des paquets du système.     Supprimez ce fichier spécial « /etc/apt/preferences » après ce retour en arrière d'urgence. Astuce C'est une bonne idée de supprimer (sans purger) autant de paquets que possible afin de limiter les problèmes de dépendances. Vous     devrez peut-être supprimer et installer manuellement un certain nombre de paquets afin de remettre le système dans un étant antérieur. Le noyau de Linux, le gestionnaire d'amorçage, udev, PAM, APT, et les paquets relatifs au réseau ainsi que leurs fichiers de configuration demandent une attention particulière. 2.7.11. Qui a envoyé le paquet ? Bien que le nom du responsable figure dans « /var/lib/dpkg/ available » et « /usr/share/doc/nom_paquet/changelog » procure quelques informations sur « qui se trouve derrière l’activité de     construction des paquets », celui qui a réellement envoyé le paquet est un peu obscur. who-uploads(1) dans le paquet devscripts identifie celui qui a réellement envoyé les paquets sources Debian. 2.7.12. Paquet equivs Si vous devez compiler un programme à partir de ses sources pour     remplacer un paquet Debian, le mieux est d'en faire un paquet local réellement « debianisé » (*.deb) et d'utiliser une archive privée. Si vous choisissez de compiler un programme depuis ses sources et     de l’installer plutôt sous « /usr/local », vous pouvez avoir besoin d'utiliser equivs en dernier ressort pour satisfaire les dépendances des paquets manquants. Package: equivs Priority: extra     Section: admin Description: Passer outre les dépendances de paquets. Ce paquet factice peut être utilisé pour créer des paquets Debian qui ne contiennent que des informations sur les dépendances. 2.7.13. Porter un paquet vers le système stable Pour des mises à niveau partielles du système stable, il est     souhaitable de reconstruire un paquet dans son environnement en utilisant le paquet source. Cela évite des mises à niveau massives de paquets en raison de leurs dépendances.     Ajoutez les entrées suivantes au fichier « /etc/apt/ sources.list » d'un système stable :     deb-src http://http.us.debian.org/debian unstable main contrib non-free     Installez les paquets nécessaires à la compilation et téléchargez les sources comme suit : # apt-get update # apt-get dist-upgrade     # apt-get install fakeroot devscripts build-essential $ apt-get build-dep toto $ apt-get source toto $ cd toto*     Ajustez les paquets installés si nécessaire.     Exécutez ce qui suit :     $ dch -i     Incrémentez la version du paquet, en ajoutant, par exemple « +bp1 » dans « debian/changelog »     Construisez les paquets et installez-les sur le système en faisant ce qui suit : $ debuild     $ cd .. # debi toto*.changes 2.7.14. Serveur mandataire (proxy) pour APT Comme effectuer le miroir complet d'une sous-section d'une archive Debian gaspille de l’espace disque et de la bande passante du réseau, il est souhaitable, lorsque vous administrez de nombreux systèmes sur le LAN (http://fr.wikipedia.org/wiki/ R%C3%A9seau_local) , de mettre en œuvre un serveur mandataire     (« proxy ») local pour APT. APT peut être configuré pour utiliser un serveur mandataire web (http) générique comme squid (consultez Section 6.10, « Autres serveurs d'applications réseau ») tel que décrit dans apt.conf(5) et dans « /usr/share/doc/apt/examples/ configure-index.gz ». La variable d'environnement « $http_proxy » peut être utilisée pour outrepasser le serveur mandataire définit dans le fichier « /etc/apt/apt.conf ».     Il y a des outils de proxy spécifiques pour l’archive Debian. Vous devriez consulter le BTS avant de les installer. Tableau 2.19. Liste des outils de proxy spécifiques à l’archive Debian +--------------------------------------------------------------------------+ |paquet |popcon |taille |description | |-------------------+--------------+----------------------+----------------| | | | |serveur proxy | | | | |avec cache pour | | |V:2, I:2 | |les fichiers de | |approx (http:// |(http:// |3489 (http:// |l’archive Debian| |packages.debian.org|qa.debian.org/|packages.qa.debian.org|(programme OCaml| |/sid/approx) |popcon.php? |/a/approx.html) |(http:// | | |package= | |fr.wikipedia.org| | |approx) | |/wiki/ | | | | |Objective_Caml) | | | | |compilé) | |-------------------+--------------+----------------------+----------------| | |V:2, I:3 | |proxy avec cache| |apt-cacher (http://|(http:// |313 (http:// |pour les paquets| |packages.debian.org|qa.debian.org/|packages.qa.debian.org|et les fichiers |     |/sid/apt-cacher) |popcon.php? |/a/apt-cacher.html) |source Debian | | |package= | |(programme Perl)| | |apt-cacher) | | | |-------------------+--------------+----------------------+----------------| | |V:4, I:6 | |proxy avec cache| |apt-cacher-ng |(http:// | |pour la | |(http:// |qa.debian.org/|1175 (http:// |distribution de | |packages.debian.org|popcon.php? |packages.qa.debian.org|paquets de | |/sid/apt-cacher-ng)|package= |/a/apt-cacher-ng.html)|logiciel | | |apt-cacher-ng)| |(programme C++ | | | | |compilé) | |-------------------+--------------+----------------------+----------------| | |V:0, I:1 | |proxy bittorrent| | |(http:// | |pour le | |debtorrent (http://|qa.debian.org/|1185 (http:// |téléchargement | |packages.debian.org|popcon.php? |packages.qa.debian.org|de paquets | |/sid/debtorrent) |package= |/d/debtorrent.html) |Debian | | |debtorrent) | |(programme | | | | |Python) | +--------------------------------------------------------------------------+ Attention Lors que Debian réorganise la structure de son archive, ces     outils de proxy spécialisés ont tendance à exiger que le code soit réécrit par le responsable du paquet et peuvent ne plus fonctionner pendant un certain temps. D'un autre côté, les serveur mandataires web (http) génériques sont plus robustes et s'accommodent plus facilement de tel changements. 2.7.15. Petite archive publique de paquets Voici un exemple de création d'une petite archive publique de paquets compatible avec le système moderne d'APT sécurisée system     (consultez Section 2.5.2, « Fichier « Release » de plus haut niveau et authenticité »). Définissons un certain nombre de choses : * Nom du compte : « toto » * Nom de machine : « www.example.com »     * Paquets nécessaires : apt-utils, gnupg, et autres paquets * URL : « http://www.example.com/~toto/ » ( → « /home/foo/ public_html/index.html ») * Architecture des paquets : « amd64 »     Créez une clé d'archive APT de Toto sur votre serveur en faisant ce qui suit : $ ssh foo@www.example.com $ gpg --gen-key ... $ gpg -K     ... sec 1024D/3A3CB5A6 2008-08-14 uid Toto (ARCHIVE KEY) ssb 2048g/6856F4A7 2008-08-14 $ gpg --export -a 3A3CB5A6 >toto.public.key     Publiez le fichier contenant la clé de l’archive « toto.public.key » avec l’ID de clé « 3A3CB5A6 » pour toto     Créez une arborescence d'archive appelée « Origin: Toto » comme suit : $ umask 022 $ mkdir -p ~/public_html/debian/pool/main $ mkdir -p ~/public_html/debian/dists/unstable/main/binary-amd64 $ mkdir -p ~/public_html/debian/dists/unstable/main/source $ cd ~/public_html/debian $ cat > dists/unstable/main/binary-amd64/Release << EOF Archive: unstable Version: 4.0 Component: main Origin: Foo Label: Foo Architecture: amd64 EOF $ cat > dists/unstable/main/source/Release << EOF Archive: unstable Version: 4.0 Component: main Origin: Foo Label: Foo Architecture: source EOF $ cat >aptftp.conf <aptgenerate.conf < "www.example.com", method => "scpb", incoming => "/home/toto/public_html/debian/pool/main", # dinstall de ftp-master s'envoie lui-même des courriels dinstall_runs => 1, };     $cfg{'toto'}{postupload}{'changes'} = " echo 'cd public_html/debian ; apt-ftparchive generate -c=aptftp.conf aptgenerate.conf; apt-ftparchive release -c=aptftp.conf dists/unstable >dists/unstable/Release ; rm -f dists/unstable/Release.gpg ; gpg -u 3A3CB5A6 -bao dists/unstable/Release.gpg dists/unstable/Release'| ssh toto@www.example.com 2>/dev/null ; echo 'Archive de paquets créée.'"; Le script automatique (« hook » postupload lancé par dupload(1)     crée une archive mise à jour des fichiers lors de chaque dépôt (« upload »).     Vous pouvez ajouter cette petite archive publique à la ligne apt de votre système client par ce qui suit : $ sudo bash     # echo "deb http://www.example.com/~foo/debian/ unstable main" \ >> /etc/apt/sources.list # apt-key add toto.public.key Astuce     Si l’archive est située sur le système de fichiers local, vous pouvez utiliser à la place « deb file:///home/toto/debian/ … ». 2.7.16. Enregistrer et copier la configuration du système     Vous pouvez faire une copie locale de l’état de la sélection des paquets et de debconf à l’aide des commandes suivantes :     # dpkg --get-selections '*' > selection.dpkg # debconf-get-selections > selection.debconf     Ici, « * » fait que « selection.dpkg » comportera aussi les entrées de paquets à « purger ».     Vous pouvez transférer ces 2 fichiers vers un autre ordinateur, et les y installer avec : # dselect update     # debconf-set-selections < myselection.debconf # dpkg --set-selections < myselection.dpkg # apt-get -u dselect-upgrade # ou dselect install Si vous envisagez de gérer de nombreux serveur dans une grappe     avec pratiquement la même configuration, vous devriez envisager d'utiliser un paquet spécialisé tel que fai pour gérer l’ensemble du système. 2.7.17. Convertir ou installer un paquet binaire non Debian alien(1) permet de convertir des paquets binaires fournis dans les fichiers de format rpm de Red Hat, slp, de Stampede, tgz de Slackware et pkg de Solaris sous forme de paquet deb de Debian.     Si vous voulez utiliser des paquets d'une autre distribution Linux que celle sur laquelle vous avez installé sur votre système, vous pouvez utiliser alien pour les convertir depuis votre format de paquets préféré et les installer. alien prend aussi en charge les paquets LSB. Avertissement alien(1) ne devrait pas être utilisé pour remplacer des paquets essentiels du système, tels que sysvinit, libc6, libpam-modules,     etc. En pratique, alien(1) ne devrait être utilisé que pour des paquets non libres uniquement binaires qui soient conforme à LSB et liés statiquement. Pour les logiciels libres, vous devriez utiliser leur paquet source pour en faire de vrais paquets Debian. 2.7.18. Extraire un paquet sans dpkg Le contenu du paquet « *.deb » actuel peut être extrait sans     utiliser dpkg(1) sur un environnement quelconque UNIX-like (http: //fr.wikipedia.org/wiki/Type_Unix) en utilisant les commandes standard ar(1) et tar(1). # ar x /path/to/dpkg__.deb # ls total 24 -rw-r--r-- 1 bozo bozo 1320 2007-05-07 00:11 control.tar.gz     -rw-r--r-- 1 bozo bozo 12837 2007-05-07 00:11 data.tar.gz -rw-r--r-- 1 bozo bozo 4 2007-05-07 00:11 debian-binary # mkdir control # mkdir data # tar xvzf control.tar.gz -C control # tar xvzf data.tar.gz -C data     Vous pouvez aussi parcourir le contenu du paquet en utilisant la commande mc. 2.7.19. Autres lectures concernant la gestion des paquets     Vous pouvez en apprendre davantage sur la gestion des paquets dans les documentations suivantes : * Documentations primaires sur la gestion des paquets : o aptitude(8), dpkg(1), tasksel(8), apt-get(8), apt-config (8), apt-key(8), sources.list(5), apt.conf(5), and apt_preferences(5) ; o « /usr/share/doc/apt-doc/guide.html/index.html » et « / usr/share/doc/apt-doc/offline.html/index.html » du paquet apt-doc ; o « /usr/share/doc/aptitude/html/en/index.html » du paquet aptitude-doc-fr. * Documentations officielles et détaillées sur l’archive Debian :     o « Charte Debian, chapitre 2 - L’archive Debian » (http:// www.debian.org/doc/debian-policy/ch-archive) , o « Manuel de référence du développeur Debian, chapitre 4 - Resources pour les développeurs Debian 4.6 L’archive Debian » (http://www.debian.org/doc/manuals/ developers-reference/resources.html#archive) et o « FAQ de Debian GNU/Linux, chapitre 5 - Les archives FTP Debian » (http://www.debian.org/doc/FAQ/ch-ftparchives) . * Didacticiel pour la construction d'un paquet Debian pour les utilisateurs Debian : o «  (http:// www.debian.org/doc/manuals/maint-guide/)  ». Chapitre 3. Initialisation du système En tant tant qu'administrateur du système, il est sage que vous sachiez en gros comment le système Debian est démarré et     configuré. Bien que les détails exacts figurent dans les fichiers sources des paquets installés et dans leurs documentations, c'est un peu pénible pour la plupart d'entre-nous. J'ai fait de mon mieux pour fournir un aperçu rapide des points-clés du système Debian et de sa configuration pour vous servir de référence en me basant sur mes propres connaissances     actuelles et antérieures et celles des autres. Comme le système Debian est une cible changeante, la situation sur le système peut avoir changé. Avant de faire une quelconque modification au système, vous devrez vous référer à la dernière documentation de chacun des paquets. 3.1. Aperçu du processus d'amorçage du système Le système informatique subit plusieurs phases de processus d'amorçage (http://fr.wikipedia.org/wiki/Amorce_(informatique))     (« boot strap process ») depuis l’événement de mise sous tension jusqu'à ce qu'il offre à l’utilisateur un système d'exploitation (OS) pleinement fonctionnel.     Pour des raison de simplicité, je limiterai la discussion à une plateforme PC typique avec l’installation par défaut. Le processus d'amorçage typique est comme une fusée à quatre     étages. Chaque étage de la fusée passe le contrôle du système à l’étage suivant. * Section 3.2, « Étage 1 : le BIOS » * Section 3.3, « Étage 2 : le chargeur initial »     * Section 3.4, « Étage 3 : le système mini-Debian » * Section 3.5, « Étage 4 : le système Debian normal » Bien entendu, elles peuvent être configurées de manière différente. Par exemple, si vous avez compilé votre propre noyau,     vous pouvez sautez l’étape avec le système mini-Debian. Ne supposez donc pas que c'est le cas sur votre système avant de l’avoir vérifié vous-même. Note Pour les plateformes autres que les PC traditionnels tels que les     systèmes SUN ou Macintosh, le BIOS sur la ROM et la partition sur le disque peuvent être assez différents (Section 9.3.2, « Configuration de la partition du disque »). Veuillez dans ce cas rechercher ailleurs une documentation spécifique à votre plateforme. 3.2. Étage 1 : le BIOS Le BIOS (http://fr.wikipedia.org/wiki/Basic_Input_Output_System) est la première étape du processus d'amorçage, il est est démarré par l’événement de mise sous tension. Le BIOS (http:// fr.wikipedia.org/wiki/Basic_Input_Output_System) , qui est     implanté sur une mémoire à lecture seule (ROM) (http:// fr.wikipedia.org/wiki/Mémoire_morte) , est exécuté depuis l’adresse mémoire particulière à laquelle le pointeur de programme du processeur est initialisé par l’événement de mise sous tension. Ce BIOS effectue l’initialisation de base du matériel (POST : autotest à la mise sous tension (http://fr.wikipedia.org/wiki/     Power-On_Self-Test) ) (« power on self test ») et passe le contrôle du système à l’étape suivante que vous luis indiquez. Le BIOS est habituellement fourni avec le matériel. L’écran de démarrage du BIOS indique en général quelle(s) touche (s) presser pour entrer dans l’écran de configuration du BIOS afin de paramétrer son comportement. Des touches courantes sont     F1, F2, F10, Échap, Ins et Suppr. Si l’écran de démarrage de votre BIOS est caché par un bel écran graphique, vous pouvez essayer de presser différentes touches comme Échap pour désactiver cet écran. Ces touches dépendent beaucoup du matériel. L’emplacement du matériel et la priorité du code lancé par le BIOS peuvent être définis depuis l’écran de configuration du     BIOS. Typiquement, quelques secteurs de début du premier périphérique sélectionné qui est trouvé (disque dur, disquette, CD-ROM, …) sont chargés en mémoire et le code initial est exécuté. Ce code peut être l’un des suivants : * code du chargeur initial ; * code du noyau d'un OS de transition comme FreeDOS (http://     www.freedos.org/)  ; * code du système d'exploitation cible s'il peut tenir dans cet espace réduit. Typiquement, le système est amorcé depuis la partition spécifiée du disque dur primaire. Les deux premiers secteurs du disque dur d'un PC traditionnel contiennent l’enregistrement maître     d'amorçage (MBR) (http://fr.wikipedia.org/wiki/ Master_boot_record) . (« master boot record »). Les informations de partition du disque, y compris la sélection de l'amorçage, sont enregistrées à la fin de ce MBR. Le code initial du chargeur d'amorçage exécuté depuis le BIOS occupe le reste de ce MBR. 3.3. Étage 2 : le chargeur initial Le chargeur initial (http://fr.wikipedia.org/wiki/Amorce_ (informatique)) (« boot loader ») est le deuxième étage du processus d'amorçage, il est lancé depuis le BIOS. Il charge en     mémoire l’image du noyau du système et l’image initrd (http:// fr.wikipedia.org/wiki/Initrd) et leur passe le contrôle. Cette image mémoire initiale (« initrd image ») est l’image du système de fichiers racine et sa prise en compte dépend du chargeur initial utilisé. Le système Debian utilise normalement le noyau de Linux comme noyau de système par défaut. L’image mémoire initiale de l’actuel     noyau de Linux 2.6 est techniquement l’image initramfs (initial RAM filesystem : système de fichiers initial en mémoire). L’image initramfs est une archive cpio, compressée à l’aide de gzip des fichiers du système de fichiers racine. L’installation par défaut du système Debian place, pour la plateforme PC, le premier étage du code du chargeur initial GRUB     sur le MBR (http://fr.wikipedia.org/wiki/Master_boot_record) . Il existe de nombreux chargeurs d'amorçage et d'options de configuration possibles. Tableau 3.1. Liste des chargeurs initiaux +-------------------------------------------------------------------------------------------------------------------+ |paquet |popcon |taille |initrd|chargeur initial |description | |-------------------+---------------+----------------------+------+--------------------------+----------------------| | | | | | |assez intelligent pour| |grub-legacy (http:/|V:1, I:6 (http:| | | |comprendre le | |/ |//qa.debian.org|1741 (http:// |Pris |GRUB Legacy (http:// |partitionnement du | |packages.debian.org|/popcon.php? |packages.qa.debian.org|en |fr.wikipedia.org/wiki/ |disque et des systèmes| |/sid/grub-legacy) |package= |/g/grub-legacy.html) |charge|GRand_Unified_Bootloader) |de fichiers tels que | | |grub-legacy) | | | |vfat, ext3, …. (par | | | | | | |défaut sous lenny) | |-------------------+---------------+----------------------+------+--------------------------+----------------------| | |V:89, I:800 | | | |assez intelligent pour| |grub-pc (http:// |(http:// |544 (http:// |Pris |GRUB 2 (http:// |comprendre le | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|en |fr.wikipedia.org/wiki/ |partitionnement du | |/sid/grub-pc) |popcon.php? |/g/grub-pc.html) |charge|GRand_Unified_Bootloader) |disque et des systèmes| | |package= | | | |de fichiers tels que | | |grub-pc) | | | |vfat, ext3, …. | |-------------------+---------------+----------------------+------+--------------------------+----------------------| |grub-rescue-pc |V:0, I:4 (http:|3886 (http:// | | |images de secours | |(http:// |//qa.debian.org|packages.qa.debian.org|Pris |GRUB 2 (http:// |amorçables de GRUB 2 | |packages.debian.org|/popcon.php? |/g/ |en |fr.wikipedia.org/wiki/ |(CD et disquettes) | |/sid/ |package= |grub-rescue-pc.html) |charge|GRand_Unified_Bootloader) |(versions PC/BIOS) | |grub-rescue-pc) |grub-rescue-pc)| | | | | |-------------------+---------------+----------------------+------+--------------------------+----------------------| | |V:2, I:13 | | | |réside sur les | |lilo (http:// |(http:// |595 (http:// |Pris |Lilo (http:// |emplacements des | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|en |fr.wikipedia.org/wiki/ |secteurs de données du| |/sid/lilo) |popcon.php? |/l/lilo.html) |charge|Linux_loader) |disque dur. (Ancien) | | |package=lilo) | | | | |     |-------------------+---------------+----------------------+------+--------------------------+----------------------| | |V:15, I:98 | | | | | |syslinux (http:// |(http:// |179 (http:// |Pris |Isolinux (http:// |il comprend le système| |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|en |fr.wikipedia.org/wiki/ |de fichiers ISO9660. | |/sid/syslinux) |popcon.php? |/s/syslinux.html) |charge|Syslinux) |C'est utilisé pour le | | |package= | | | |CD d'amorçage CD. | | |syslinux) | | | | | |-------------------+---------------+----------------------+------+--------------------------+----------------------| | | | | | |il comprend le système| | |V:15, I:98 | | | |de fichiers MSDOS | |syslinux (http:// |(http:// |179 (http:// |Pris |Syslinux (http:// |(FAT) (http:// | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|en |fr.wikipedia.org/wiki/ |fr.wikipedia.org/wiki/| |/sid/syslinux) |popcon.php? |/s/syslinux.html) |charge|Syslinux) |File_Allocation_Table)| | |package= | | | |. Il est utilisé par | | |syslinux) | | | |la disquette | | | | | | |d'amorçage. | |-------------------+---------------+----------------------+------+--------------------------+----------------------| | |V:0, I:2 (http:| | | | | |loadlin (http:// |//qa.debian.org|105 (http:// |Pris |Loadlin (http:// |un nouveau système est| |packages.debian.org|/popcon.php? |packages.qa.debian.org|en |en.wikipedia.org/wiki/ |démarré depuis le | |/sid/loadlin) |package= |/l/loadlin.html) |charge|Loadlin) |système FreeDOS/MSDOS.| | |loadlin) | | | | | |-------------------+---------------+----------------------+------+--------------------------+----------------------| | | | | | |c'est un logiciel | | |V:2, I:29 | | | |libre qui se substitue| |mbr (http:// |(http:// |72 (http:// |Non |MBR par Neil Turton (http:|au MBR (http:// | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|pris |// |fr.wikipedia.org/wiki/| |/sid/mbr) |popcon.php? |/m/mbr.html) |en |www.chiark.greenend.org.uk|Master_boot_record) de| | |package=mbr) | |charge|/~neilt/) |MSDOS. Il ne comprend | | | | | | |que les partitions sur| | | | | | |disques. | +-------------------------------------------------------------------------------------------------------------------+ Avertissement Ne jouez pas avec les chargeurs d'amorçage sans avoir un support     de secours amorçable (CD ou disquette) créé à partir des images du paquet grub-rescue-pc. Il vous permettra de démarrer votre système sans même avoir de chargeur initial fonctionnel sur le disque dur.     Le menu de configuration de GRUB Legacy est situé en « /boot/grub /menu.lst ». Il peut, par exemple, avoir les entrées suivantes : title Debian GNU/Linux     root (hd0,2) kernel /vmlinuz root=/dev/hda3 ro initrd /initrd.img Le fichier de menu de configuration de GRUB 2 est situé en  /boot /grub/grub.cfg ». Il est automatiquement créé par « /usr/sbin/     update-grub » depuis les modèles situés dans « /etc/grub.d/* » et les paramètres situés en « /etc/default/grub ». Il peut, par exemple, avoir les entrées suivantes : menuentry "Debian GNU/Linux" { set root=(hd0,3)     linux /vmlinuz root=/dev/hda3 initrd /initrd.img }     Les paramètres de GRUB pour ces exemples ont la signification suivantes : Tableau 3.2. Signification des paramètres de GRUB +---------------------------------------------------------------+ |Paramètres|signification | |de GRUB | | |----------+----------------------------------------------------| | |utiliser la 3ème partition du premier disque en la | |root |désignant par « (hd0,2) » avec GRUB legacy ou par « |     | |(hd0,3) » dans GRUB 2 | |----------+----------------------------------------------------| |kernel |utiliser le noyau se trouvant en « /vmlinuz » avec | | |le paramètre du noyau : « root=/dev/hda3 ro » | |----------+----------------------------------------------------| | |utiliser l’image initrd/initramfs (http:// | |initrd |fr.wikipedia.org/wiki/Initrd) située en « / | | |initrd.img » | +---------------------------------------------------------------+ Note     La valeur du numéro de partition utilisé par le programme « GRUB legacy » est inférieure d'un unité à celle normalement utilisée par le noyau de Linux et les outils utilitaires. Le programme GRUB 2 corrige ce problème. Astuce Un UUID (http://fr.wikipedia.org/wiki/     Universal_Unique_Identifier) (consultez Section 9.3.3, « Accès à une partition en utilisant l’UUID ») peut être utilisé pour identifier un périphérique spécial par bloc plutôt que son nom de fichier comme « /dev/hda3 », par exemple, « root=UUID= 81b289d5-4341-4003-9602-e254a17ac232 ro ». Astuce     Vous pouvez démarrer un chargeur d'amorçage depuis un autre chargeur d'amorçage en utilisant une technique appelée chargement en chaîne (http://en.wikipedia.org/wiki/Chain_loading) (« chain loading »).     Consultez « info grub » et grub-install(8). 3.4. Étage 3 : le système mini-Debian Le système mini-Debian est la troisième étape du processus     d'amorçage lancé par le chargeur d'amorçage. Elle lance le noyau du système avec son système de fichiers racine en mémoire. C'est une étape préparatoire facultative du processus de démarrage. Note Le terme « système mini-Debian » est utilisé par l’auteur pour     décrire dans ce document cette 3ème étape du processus de démarrage. On désigne souvent ce système par système initrd (http://fr.wikipedia.org/wiki/Initrd) . Un système semblable en mémoire est utilisé par l’installateur Debian (http:// www.debian.org/devel/debian-installer/) . Le script « /init » est exécuté en tant que premier programme sur le système de fichiers racine en mémoire. C'est un script de l’interpréteur de commandes qui initialise le noyau dans l’espace     utilisateur et passe le contrôle au reste de l’étage. Ce système mini-Debian offre au système d'amorçage une flexibilité comme l’ajout de modules du noyau avant le processus de démarrage principal ou le montage du système de fichiers racines en mode chiffré. Vous pouvez interrompre cette partie du processus d'amorçage afin d'obtenir l’invite de l’interpréteur de l’administrateur en indiquant « break=init » etc. comme paramètre de démarrage du     noyau. Consultez le script « /init » pour d'autres conditions d'interruption. Cet environnement d'interpréteur de commandes est suffisamment sophistiqué pour effectuer une bonne inspection du matériel de votre machine. Les commandes disponibles avec ce système mini-Debian sont des     commandes réduites et sont principalement fournies par un outil GNU appelé busybox(1). Attention     Vous devrez utiliser l’option « -n » de la commande mount lorsque vous êtes sur le système de fichiers en lecture seule. 3.5. Étage 4 : le système Debian normal Tableau 3.3. Liste d'utilitaires d'amorçage initial pour le système Debian : +---------------------------------------------------------------------------------+ |paquet |popcon |taille |description | |-------------------+-----------------+----------------------+--------------------| | |V:901, I:998 | | | |initscripts (http:/|(http:// |178 (http:// |scripts pour | |/ |qa.debian.org/ |packages.qa.debian.org|initialiser et | |packages.debian.org|popcon.php? |/i/initscripts.html) |arrêter le système | |/sid/initscripts) |package= | | | | |initscripts) | | | |-------------------+-----------------+----------------------+--------------------| | |V:878, I:997 | | | |sysvinit (http:// |(http:// |186 (http:// |Utilitaires init(8) | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|de type System-V | |/sid/sysvinit) |popcon.php? |/s/sysvinit.html) | | | |package=sysvinit)| | | |-------------------+-----------------+----------------------+--------------------| | |V:901, I:997 | |Mécanisme de | |sysv-rc (http:// |(http:// |218 (http:// |changement de niveau| |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|de fonctionnement de| |/sid/sysv-rc) |popcon.php? |/s/sysv-rc.html) |type System-V | | |package=sysv-rc) | | | |-------------------+-----------------+----------------------+--------------------| |sysvinit-utils |V:901, I:997 | | | |(http:// |(http:// |172 (http:// |Utilitaires de type | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|System-V (startpar | |/sid/ |popcon.php? |/s/ |(8), bootlogd(8), …)| |sysvinit-utils) |package= |sysvinit-utils.html) | | | |sysvinit-utils) | | | |-------------------+-----------------+----------------------+--------------------| | | | |Linux Standard Base | | |V:901, I:998 | |(http:// | |lsb-base (http:// |(http:// |35 (http:// |fr.wikipedia.org/ | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|wiki/ | |/sid/lsb-base) |popcon.php? |/l/lsb-base.html) |Linux_Standard_Base)| | |package=lsb-base)| |3.2 fonctionnalité | | | | |de script | | | | |d'initialisation | |-------------------+-----------------+----------------------+--------------------| | |V:738, I:836 | |outil pour organiser| |insserv (http:// |(http:// |183 (http:// |la séquence de | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|démarrage en | |/sid/insserv) |popcon.php? |/i/insserv.html) |utilisant les | | |package=insserv) | |dépendances du | | | | |script LSB de init.d|     |-------------------+-----------------+----------------------+--------------------| | |V:0, I:1 (http://| |démon init(8) basé | |upstart (http:// |qa.debian.org/ |1050 (http:// |sur des événements | |packages.debian.org|popcon.php? |packages.qa.debian.org|pour la concurrence | |/sid/upstart) |package=upstart) |/u/upstart.html) |(remplacement de | | | | |sysvinit) | |-------------------+-----------------+----------------------+--------------------| |readahead-fedora |V:5, I:8 (http://|87 (http:// |readahead(8) pour | |(http:// |qa.debian.org/ |packages.qa.debian.org|précharger les | |packages.debian.org|popcon.php? |/r/ |fichiers nécessaires| |/sid/ |package= |readahead-fedora.html)|au démarrage ; | |readahead-fedora) |readahead-fedora)| | | |-------------------+-----------------+----------------------+--------------------| | | | |outil permettant | |uswsusp (http:// |V:11, I:45 (http:|600 (http:// |d'utiliser le | |packages.debian.org|//qa.debian.org/ |packages.qa.debian.org|programme de | |/sid/uswsusp) |popcon.php? |/u/uswsusp.html) |l’espace utilisateur| | |package=uswsusp) | |de mise en veille | | | | |fourni par Linux | |-------------------+-----------------+----------------------+--------------------| |kexec-tools (http:/|V:2, I:7 (http://| |outil kexec pour le | |/ |qa.debian.org/ |279 (http:// |redémarrage par | |packages.debian.org|popcon.php? |packages.qa.debian.org|kexec(8) | |/sid/kexec-tools) |package= |/k/kexec-tools.html) |(redémarrage à | | |kexec-tools) | |chaud) | |-------------------+-----------------+----------------------+--------------------| | |V:0, I:4 (http://| |analyseur des | |bootchart (http:// |qa.debian.org/ |132 (http:// |performances du | |packages.debian.org|popcon.php? |packages.qa.debian.org|processus de | |/sid/bootchart) |package= |/b/bootchart.html) |démarrage | | |bootchart) | | | |-------------------+-----------------+----------------------+--------------------| |bootchart-view |V:0, I:3 (http://|280 (http:// |analyseur des | |(http:// |qa.debian.org/ |packages.qa.debian.org|performances du | |packages.debian.org|popcon.php? |/b/ |processus de | |/sid/ |package= |bootchart-view.html) |démarrage | |bootchart-view) |bootchart-view) | |(virtualisation) | |-------------------+-----------------+----------------------+--------------------| |mingetty (http:// |V:1, I:3 (http://|24 (http:// | | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|getty(8) en mode | |/sid/mingetty) |popcon.php? |/m/mingetty.html) |console uniquement | | |package=mingetty)| | | |-------------------+-----------------+----------------------+--------------------| |mgetty (http:// |V:0, I:4 (http://|416 (http:// |modem intelligent | |packages.debian.org|qa.debian.org/ |packages.qa.debian.org|(« smart modem ») | |/sid/mgetty) |popcon.php? |/m/mgetty.html) |remplaçant de getty | | |package=mgetty) | |(8) | +---------------------------------------------------------------------------------+ Astuce     Tous les mécanismes de redémarrage sont compatibles par l’intermédiaire des scripts « /etc/init.d/rc », « /etc/init.d/ rcS », « /usr/sbin/update-rc.d » et « /usr/sbin/invoke-rc.d ». Astuce     Le paquet readahead-fedora peut accélérer le démarrage d'un système équipé d'une quantité suffisante de DRAM. Le système Debian normal est le quatrième étage du processus d'amorçage, il est lancé par le système mini-Debian. Le noyau du     système mini-Debian continue de tourner dans cet environnement. Le système de fichiers racine passe de celui en mémoire à celui, réel, lu sur le disque dur. Le programme « /sbin/init » est exécuté en tant que premier programme et réalise le processus principal d'amorçage. Debian utilise normalement le schéma sysvinit traditionnel à l’aide du     paquet sysv-rc. Consultez init(8), inittab(5) et « /usr/share/doc /sysv-rc/README.runlevels.gz » pour une explication exacte. Le processus d'amorçage principal effectue essentiellement ce qui suit : 1. Le système Debian passe au niveau de fonctionnement N (« runlevel N ») (aucun) pour initialiser le système selon la description de « /etc/inittab ». 2. Le système Debian passe au niveau de fonctionnement S pour     initialiser le système en mode utilisateur unique afin de terminer l’initialisation matérielle, etc. 3. Pour démarrer les services du système, le système Debian passe alors à l’un des niveaux de fonctionnement multi-utilisateurs (2 à 5) indiqués. Le niveau de fonctionnement initial utilisé pour le mode multi-utilisateurs est indiqué par le paramètre de démarrage     « init= » du noyau ou par la ligne « initdefault » du fichier « / etc/inittab ». Le système Debian tel qu'il est installé démarre au niveau de fonctionnement 2.     Tous les fichiers de scripts réels exécutés par le système init sont situés dans le répertoire « /etc/init.d/ ». 3.5.1. Signification du niveau de fonctionnement (« runlevel ») Chaque niveau de fonctionnement (http://fr.wikipedia.org/wiki/     Run_level) utilise un répertoire pour sa configuration, il possède la signification particulière décrite ci-dessous : Tableau 3.4. Liste des niveaux de fonctionnement et description de leur utilisation +---------------------------------------------------------------+ |niveau de |répertoire|description de l’utilisation du | |fonctionnement| |niveau de fonctionnement (runlevel) | |--------------+----------+-------------------------------------| |N |aucun |niveau d'amorçage du système (NONE) | | | |(pas de répertoire « /etc/rcN.d/ ») | |--------------+----------+-------------------------------------| |0 |/etc/rc0.d|arrêter le système | | |/ | | |--------------+----------+-------------------------------------| |S |/etc/rcS.d|mode utilisateur unique lors du | | |/ |démarrage (alias : « s ») | |--------------+----------+-------------------------------------| |1 |/etc/rc1.d|mode utilisateur unique commuté | | |/ |depuis le mode multi-utilisateurs | |--------------+----------+-------------------------------------| |2 |/etc/rc2.d|mode multi-utilisateurs | | |/ | |     |--------------+----------+-------------------------------------| |3 |/etc/rc3.d|,, | | |/ | | |--------------+----------+-------------------------------------| |4 |/etc/rc4.d|,, | | |/ | | |--------------+----------+-------------------------------------| |5 |/etc/rc5.d|,, | | |/ | | |--------------+----------+-------------------------------------| |6 |/etc/rc6.d|redémarrer le système | | |/ | | |--------------+----------+-------------------------------------| |7 |/etc/rc7.d|mode multi-utilisateurs valable mais | | |/ |normalement non utilisé | |--------------+----------+-------------------------------------| |8 |/etc/rc8.d|,, | | |/ | | |--------------+----------+-------------------------------------| |9 |/etc/rc9.d|,, | | |/ | | +---------------------------------------------------------------+     Vous pouvez aussi changer de niveau de fonctionnement depuis la console, par exemple 4 en faisant ce qui suit :     $ sudo telinit 4 Attention Le système Debian n'assigne pas par avance de différence spéciale de signification entre les niveaux de fonctionnement (http:// fr.wikipedia.org/wiki/Run_level) compris entre de 2 et 5..     L’administrateur du système d'un système Debian peut modifier ce comportement. (C'est-à-dire que Debian n'est ni Red Hat Linux (http://fr.wikipedia.org/wiki/Red_Hat_Linux) , ni Solaris de Sun Microsystems (http://fr.wikipedia.org/wiki/Solaris_ (système_d'exploitation)) , ni HP-UX de Hewlett Packard (http:// fr.wikipedia.org/wiki/HP-UX) , ni AIX d'IBM (http:// fr.wikipedia.org/wiki/AIX) , ni …) Attention Le système Debian ne remplit pas les répertoires des niveaux de     fonctionnement (http://fr.wikipedia.org/wiki/Run_level) entre 7 et 9 lors de l’installation du paquet. Les variantes d’UNIX (http://fr.wikipedia.org/wiki/Type_Unix) traditionnelles n'utilisent pas ces niveaux de fonctionnement (http:// fr.wikipedia.org/wiki/Run_level) . 3.5.2. Configuration des niveaux de fonctionnement (« runlevel ») Lorsque la commande init(8) ou telinit(8) arrive au niveau «       », le système exécute essentiellement les scripts d'initialisation comme suit. 1. Les noms de scripts de « /etc/rc.d/ » commençant par un « K » sont exécutés dans l’ordre alphabétique avec le paramètre unique « stop » (arrêt des services).     2. Les noms de scripts de « /etc/rc.d/ » commençant par un « S » sont exécutés dans l’ordre alphabétique avec le paramètre unique « start » (lancement des services). Par exemple, si vous avez les liens « S10sysklogd » et « S20exim4 » dans un répertoire de niveau de fonctionnement,     « S10sysklogd » qui est lié symboliquement à « ../init.d/ sysklogd » sera lancé avant « S20exim4 » qui est lié symboliquement à « ../init.d/exim4 ». Ce simple système séquentiel d'initialisation est le système de     démarrage classique de type System V (http://fr.wikipedia.org/ wiki/UNIX_System_V) tel qu'il a été utilisé jusqu'au système Debian Lenny.     Les systèmes Debian récents sont optimisés pour exécuter les scripts simultanément. * La commande insserv(8) utilise les renseignements LSB de dépendances du paquet pour calculer les dépendances entre les scripts. o Consultez « /usr/share/doc/insserv/README.Debian ». * Les renseignements LSB de dépendances du paquet définis dans l'en-tête des scripts d'initialisation assurent la     disponibilité des ressources nécessaires. o Consultez la spécification principale de Linux Standard Base 3.1, VII. Initialisation du système (http:// refspecs.linuxbase.org/LSB_3.1.0/LSB-Core-generic/ LSB-Core-generic/tocsysinit.html) . * Annonce du « démarrage en parallèle activé par défaut » (http://lists.debian.org/debian-devel-announce/2010/05/ msg00009.html) . Avertissement     Faire des modifications aux liens symboliques se trouvant dans «  /etc/rcS.d/ » est déconseillé à moins d'en savoir davantage que le responsable du paquet. 3.5.3. Exemple de gestion de niveau de fonctionnement Définissons, par exemple, définissons un niveau de fonctionnement     du système comme Red Hat Linux (http://fr.wikipedia.org/wiki/ Red_Hat_Linux) de la manière suivante : * init démarre le système au niveau 3 qui est la valeur par défaut ;     * init ne démarre pas gdm3(1) aux niveaux 0,1,2,6 ; * init démarre gdm3(1) aux niveaux 3,4,5 ; Cela peut être fait en éditant le fichier « /etc/inittab » afin de modifier les niveaux de lancement et en utilisant des outils conviviaux de gestion des niveaux de fonctionnement tels que     sysv-rc-conf ou bum pour éditer le niveau de fonctionnement. Si vous ne devez utiliser que la ligne de commande, voici comment faire (après l’installation par défaut du paquet gdm3 et sa sélection comme gestionnaire d'affichage).     # cd /etc/rc2.d ; mv S21gdm3 K21gdm3 # cd /etc ; perl -i -p -e 's/^id:.:/id:3:/' inittab Veuillez noter que le fichier « /etc/X11/     default-display-manager » est vérifié lors du démarrage des démon de gestion d'affichage : xdm, gdm3, kdm, et wdm. Note     Vous pouvez toujours lancer X depuis l’interpréteur de commandes de n'importe quelle console avec la commande startx(1). 3.5.4. Paramètre par défaut de chaque script init Le paramètre par défaut de chacun des scripts d'initialisation de « /etc/init.d/ » est donné par le fichier correspondant se trouvant dans « /etc/default/ » qui ne contient que des assignations de variables d'environnement. Ce choix de nom de     répertoire est spécifique au système Debian. Il est en gros l’équivalent du répertoire « /etc/sysconfig » qu'on trouve dans Red Hat Linux (http://fr.wikipedia.org/wiki/Red_Hat_Linux) et d'autres distributions. Par exemple, « /etc/default/cron » peut être utilisé pour contrôler la manière dont fonctionne « /etc/ init.d/cron ». Le fichier « /etc/default/rcS » peut être utilisé pour     personnaliser les valeurs par défaut au moment du démarrage de motd(5), sulogin(8), etc. Si vous ne pouvez pas obtenir le comportement que vous souhaitez en modifiant ces variables, alors vous pouvez modifier les     scripts init (http://www.debian.org/doc/debian-policy/ch-opersys# s9.3.2) eux-mêmes. Ce sont des fichiers de configuration qui peuvent être édités par les administrateurs du système. 3.5.5. Nom de machine (« hostname ») Le noyau conserve le nom de machine du système. Le script d'initialisation du niveau de fonctionnement S qui est lié symboliquement à « /etc/init.d/hostname.sh » définit le nom de     machine « hostname » au moment du démarrage (en utilisant la commande hostname) avec le nom qui est enregistré dans « /etc/ hostname ». Ce fichier ne devra contenirque le nom de machine du système et pas un nom de domaine pleinement qualifié.     Pour afficher le nom de la machine utilisée, lancez la commande hostname (1) sans paramètre. 3.5.6. Le système de fichiers Alors que le système de fichiers racine est monté par le noyau     lors de son démarrage, les autres systèmes de fichiers sont montés dans le niveau de fonctionnement (runlevel) S à l’aide des scripts d'initialisation suivants : * « /etc/init.d/mountkernfs.sh » pour les systèmes de fichiers du noyau se trouvant en « /proc », « /sys », etc. * « /etc/init.d/mountdevsubfs.sh » pour les systèmes de fichiers virtuels de « /dev »     * « /etc/init.d/mountall.sh » pour les systèmes de fichiers normaux qui utilisent « /etc /fstab » * « /etc/init.d/mountnfs.sh » pour les systèmes de fichiers à accès par le réseau en utilisant « /etc/fstab »     Les options de montage des systèmes de fichiers du noyau sont configurés dans « /etc/default/rcS ». Consultez rcS(5). Les options de montage du système de fichiers sont définies dans     « /etc/fstab ». Consultez Section 9.3.6, « Optimisation du système de fichiers à l’aide des options de montage ». Note     Le montage effectif des systèmes de fichiers à accès par le réseau attendra le démarrage de l’interface réseau. Avertissement     Une fois de tous les systèmes de fichiers montés, les fichiers temporaires se trouvant dans « /tmp », « /var/lock » et « /var/ run » sont effacés lors de chaque démarrage du système. 3.5.7. Initialisation de l’interface réseau Les interfaces réseau sont initialisées dans le niveau de fonctionnement S par le script d'initialisation ayant un lien     symbolique vers « /etc/init.d/ifupdown-clean » et « /etc/init.d/ ifupdown ». Consultez Chapitre 5, Configuration du réseau pour la manière de les configurer. 3.5.8. Initialisation des services réseau De nombreux services réseau (consultez Chapitre 6, Applications réseau) sont directement démarrés en tant que démons sous le mode     multi-utilisateurs lors du démarrage du système par le script d'initialisation, par exemple « /etc/rc2.d/S20exim4 » (pour RUNLEVEL=2) qui est un lien symbolique vers « /etc/init.d/ exim4 ». Certains services réseau peuvent être démarrés à la demande en utilisant le super-serveur (http://en.wikipedia.org/wiki/ Super-server) inetd (ou un équivalent). inetd est lancé lors au     démarrage du système par « /etc/rc2.d/S20inetd » (pour RUNLEVEL= 2) qui est un lien symbolique vers « /etc/init.d/inetd ». Fondamentalement, inetd permet à un démon en cours de fonctionnement d'en appeler plusieurs autres, ce qui réduit la charge du système. Lorsqu'une requête pour un service arrive au super-serveur (http: //en.wikipedia.org/wiki/Super-server) inetd, le protocole et le service sont identifiés par une recherche dans les bases de données se trouvant dans « /etc/protocols » et « /etc/services ».     inetd recherche ensuite un service Internet normal dans la base de données « /etc/inetd.conf » ou un service basé sur Open Network Computing Remote Procedure Call (ONC RPC)/Sun RPC (http:/ /en.wikipedia.org/wiki/ Open_Network_Computing_Remote_Procedure_Call) dans « /etc/ rpc.conf ». Parfois, inetd ne lance pas directement le serveur voulu mais exécute le programme d'enveloppe du démon TCP/IP (http:// fr.wikipedia.org/wiki/TCP_Wrapper) tcpd(8) avec, en paramètre     dans « /etc/inetd.conf », le service demandé. Dans ce cas, tcpd lance le serveur approprié après avoir enregistré la requête dans le journal et avoir fait quelques autres vérifications à l’aide de « /etc/hosts.deny » et « /etc/hosts.allow ». Afin d'assurer la sécurité du système, désactivez autant de     services réseau que possible. Consultez Section 4.6.4, « Restreindre l’accès à certains services du serveur ». Consultez inetd(8), inetd.conf(5), protocols(5), services(5),     tcpd(8), hosts_access(5), hosts_options(5), rpcinfo(8), portmap (8) et « /usr/share/doc/portmap/portmapper.txt.gz ». 3.5.9. Messages du système Les messages du système peuvent être personnalisés au moyen de «  /etc/default/rsyslog » et « /etc/rsyslog.conf » à la fois pour le     fichier journal et pour l’affichage à l’écran. Consultez rsyslogd (8) et rsyslog.conf(5). Consultez aussi Section 9.2.2, « Analyseur de journaux ». 3.5.10. Messages du noyau Les messages du noyau peuvent être personnalisés au moyen de « / etc/init.d/klogd » à la fois pour le fichier journal et     l’affichage à l’écran. Positionnez « KLOGD='-c 3' » dans ce fichier et lancez « /etc/init.d/klogd restart ». Consultez klogd (8).     Vous pouvez modifier directement le niveau d'erreur des messages de la manière suivante :     # dmesg -n3 Tableau 3.5. Liste des niveaux d'erreur du noyau +---------------------------------------------------------------+ |valeur du niveau|nom du niveau |signification | |d'erreur |d'erreur | | |----------------+---------------+------------------------------| |0 |KERN_EMERG |le système est inutilisable | |----------------+---------------+------------------------------| |1 |KERN_ALERT |une action doit être | | | |entreprise immédiatement | |----------------+---------------+------------------------------| |2 |KERN_CRIT |conditions critiques |     |----------------+---------------+------------------------------| |3 |KERN_ERR |conditions d'erreur | |----------------+---------------+------------------------------| |4 |KERN_WARNING |conditions d'avertissement | |----------------+---------------+------------------------------| |5 |KERN_NOTICE |condition normale mais | | | |significative | |----------------+---------------+------------------------------| |6 |KERN_INFO |information | |----------------+---------------+------------------------------| |7 |KERN_DEBUG |messages du niveau de débogage| +---------------------------------------------------------------+ 3.5.11. Le système udev Pour le noyau Linux 2.6, le système udev (http://fr.wikipedia.org /wiki/Udev) fournit un mécanisme de découverte et d'initialisation automatiques du matériel (consultez udev(7)). Lors de la découverte de chaque périphérique par le noyau, le système udev lance un processus utilisateur qui utilise les     informations provenant du système de fichiers sysfs (http:// fr.wikipedia.org/wiki/Sysfs) (consultez Section 1.2.12, « procfs et sysfs »), charge les modules du noyau nécessaires pour sa prise en charge en utilisant le programme modprobe(8) (consultez Section 3.5.12, « Initialisation des modules du noyau ») et crée les nœuds de périphériques en conséquences. Astuce     Si « /lib/modules//modules.dep » n'a pas été proprement créé par depmod(8) pour quelque raison, les modules peuvent ne pas être chargés par le système udev comme on le souhaiterait. Lancez « depmod -a » pour corriger ce problème. Le nom des nœuds de périphériques peut être configuré par les fichiers de règle de udev se trouvant dans « /etc/udev/rules.d/  ». Les règles actuelles par défaut tendent à créer des noms générés dynamiquement ce qui donne des noms de périphériques non statiques excepté pour les périphériques cd et réseau. En     ajoutant vos règles personnalisées semblables à celles existantes pour les périphériques cd et réseau, vous pouvez aussi créer des noms de périphériques statiques pour les autres périphériques comme les clés USB. Consultez « Écrire des règles udev (http:// www.reactivated.net/writing_udev_rules.html)  » ou « /usr/share/ doc/udev/writing_udev_rules/index.html ». Comme le système udev est une cible quelque peu mouvante, je     laisse les détails pour d'autres documentations et je ne donnerai ici qu'un minimum d'informations. Astuce Les nœuds de périphériques n'ont pas besoin d'être statiques pour les règles de montage se trouvant dans « /etc/fstab ». Vous     pouvez utiliser UUID (http://fr.wikipedia.org/wiki/ Universal_Unique_Identifier) à la place de leur nom de périphérique tel que« /dev/sda » pour monter les périphériques. Consultez Section 9.3.3, « Accès à une partition en utilisant l’UUID ». 3.5.12. Initialisation des modules du noyau Le programme modprobe(8) nous permet de configurer, depuis un processus utilisateur, un noyau Linux en cours d'exécution en     ajoutant ou en supprimant des modules du noyau. Le système udev (consultez Section 3.5.11, « Le système udev ») en automatise l’appel afin d'aider à l’initialisation du module du noyau. Il existe des modules non liés au matériel et des modules qui     pilotent des éléments matériels particuliers comme les suivants qui demandent à être préchargés en les déclarant dans le fichier « /etc/modules » (consultez modules(5)). * les modules TUN/TAP (http://en.wikipedia.org/wiki/TUN/TAP) fournissent un périphérique de réseau virtuel point-à-point (TUN) et un périphérique de réseau virtuel Ethernet (TAP) ;     * les modules netfilter (http://fr.wikipedia.org/wiki/ Netfilter) fournissent les fonctions de pare-feu netfilter ( iptables(8), Section 5.9, « Infrastructure de netfilter ») ; * le module du pilote du temporisateur de chien de garde (http: //fr.wikipedia.org/wiki/Chien_de_garde_(informatique)) . Les fichiers de configuration du programme modprobe(8) se trouvent dans le répertoire « /etc/modprobes.d/ » comme c'est     expliqué dans modprobe.conf(5). (Si vous souhaitez que certains modules du noyau ne soient pas chargés automatiquement, vous pouvez les mettre en liste noire dans le fichier« /etc/ modprobes.d/blacklist »). Le fichier « /lib/modules//modules.dep » généré par le     programme depmod(8) décrit les dépendances des modules utilisés par le programme modprobe(8). Note     Si vous rencontrez des problèmes de chargement de modules lors du chargement des modules au démarrage ou avec modprobe(8), « depmod -a » peut résoudre ces problèmes en reconstruisant « modules.dep ».     Le programme modinfo(8) affiche des informations concernant les modules du noyau. Le programme lsmod(8) formate de manière agréable le contenu de     « /proc/modules », affichant quels sont les modules du noyau actuellement chargés. Astuce     Vous pouvez identifier le matériel exact installé sur votre système. Consultez Section 9.6.3, « Identification du matériel ». Astuce     Vous pouvez configurer le matériel au moment du démarrage pour activer les fonctionnalités désirées de ce matériel. Consultez Section 9.6.4, « Configuration matérielle ». Astuce     Vous pouvez ajouter la prise en charge de votre périphérique en recompilant le noyau. Consultez Section 9.7, « Le noyau ». Chapitre 4. Authentification     Lorsqu'une personne (ou un programme) demande l’accès au système, l’authentification confirme que l’identité est autorisée. Avertissement Des erreurs de configuration de PAM peuvent vous mettre à la     porte de votre propre système. Vous devez avoir un CD de secours prêt ou une partition de démarrage de remplacement. Pour restaurer, démarrez le système depuis l’un de ces moyens de secours et corrigez les choses depuis là. 4.1. Authentification normale d’UNIX L’authentification normale d’UNIX est fournie par le module pam_unix(8) avec PAM (Pluggable Authentication Modules :     « Modules attachables d'authentification ») (http:// fr.wikipedia.org/wiki/Pluggable_Authentication_Modules) . Il y a trois fichiers de configuration importants, dont les entrées sont séparées par des « : », ce sont : Tableau 4.1. 3 fichiers de configuration importants pour pam_unix (8) +---------------------------------------------------------------+ |fichier|autorisation|utilisateur|groupe|description | |-------+------------+-----------+------+-----------------------| |/etc/ | | | |informations des | |passwd |-rw-r--r-- |root |root |comptes utilisateurs |     | | | | |(assainie) | |-------+------------+-----------+------+-----------------------| |/etc/ | | | |informations sécurisées| |shadow |-rw-r----- |root |shadow|des comptes | | | | | |utilisateurs | |-------+------------+-----------+------+-----------------------| |/etc/ |-rw-r--r-- |root |root |informations des | |group | | | |groupes | +---------------------------------------------------------------+     « /etc/passwd » contient ce qui suit : ...     utilisateur1:x:1000:1000:Nom Utilisateur1,,,:/home/utilisateur1:/bin/bash utilisateur2:x:1001:1001:Nom Utilisateur2,,,:/home/utilisateur2:/bin/bash ...     Comme il est expliqué dans passwd(5), les entrées de ce fichier, séparées par des « : », ont la signification suivante : * nom de l’utilisateur pour la connexion ; * entrée de spécification du mot de passe ; * identifiant numérique de l’utilisateur ;     * identifiant numérique du groupe ; * nom de l’utilisateur ou champ de commentaire ; * répertoire personnel de l’utilisateur ; * interpréteur de commandes, optionnel, de l’utilisateur. La seconde entrée de « /etc/passwd » était autrefois utilisée     comme entrée de mot de passe chiffré. Depuis l’introduction de «  /etc/shadow », cette entrée est utilisée comme entrée de spécification du mot de passe. Tableau 4.2. Contenu de la seconde entrée de « /etc/passwd » +--------------------------------------------------------------+ |contenu|signification | |-------+------------------------------------------------------| |(vide) |compte sans mot de passe |     |-------+------------------------------------------------------| |x |le mot de passe chiffré se trouve dans « /etc/shadow »| |-------+------------------------------------------------------| |* |ce compte ne peut pas se connecter | |-------+------------------------------------------------------| |! |ce compte ne peut pas se connecter | +--------------------------------------------------------------+     « /etc/shadow » contient ceci : ...     utilisateur1:$1$Xop0FYH9$IfxyQwBe9b8tiyIkt2P4F/:13262:0:99999:7::: utilisateur2:$1$vXGZLVbS$ElyErNf/agUDsm1DehJMS/:13261:0:99999:7::: ... Comme c'est expliqué dans shadow(5), les différentes entrées de     ce fichier, séparées par des « : » ont les significations suivantes : * nom de l’utilisateur pour la connexion ; * mot de passe chiffré (le « $1$ » du début indique l’utilisation d'un chiffrement MD5. Le signe « * » indique que le compte ne peut pas se connecter) ; * nombre de jours, à partir du 1er janvier 1970, depuis que ce mot de passe a été modifié pour la dernière fois ;     * nombre de jours restants avant que l’on ne doive modifier le mot de passe ; * nombre de jours après lequel on doit modifier le mot de passe ; * nombre de jours pendant lesquels l’utilisateur est averti que son mot de passe arrive en fin de validité ; * …     « /etc/group » contient ce qui suit :     group1:x:20:utilisateur1,utilisateur2     Comme il est expliqué dans group(5), les entrées de ce fichier, séparées par des « : », ont la signification suivante : * nom du groupe ; * mot de passe chiffré (non utilisé en pratique) ;     * identifiant numérique du groupe ; * liste des noms d'utilisateurs séparés par des « , ». Note     « /etc/gshadow » fournit les mêmes fonctions que « /etc/shadow » pour « /etc/group » mais n'est pas réellement utilisé. Note     Le groupe d'appartenance réel d'un utilisateur peut être ajouté dynamiquement si la ligne « auth optional pam_group.so » est ajoutée à « /etc/pam.d/common-auth » et défini dans « /etc/ security/group.conf ». Consultez pam_group(8). Note     Le paquet base-passwd contient une liste faisant autorité d'utilisateurs et de groupes : « /usr/share/doc/base-passwd/ users-and-groups.html ». 4.2. Gestion des informations des comptes et des mots de passes     Voici quelques commandes importantes pour gérer les informations des comptes : Tableau 4.3. Liste des commandes servant à gérer les informations des comptes +---------------------------------------------------------------+ |commande |fonction | |--------------------+------------------------------------------| |getent passwd |consulter les informations du compte «  | | | » | |--------------------+------------------------------------------| |getent shadow |consulter les informations cachées du | | |compte «  » |     |--------------------+------------------------------------------| |getent group |consulter les informations du groupe «  | | | » | |--------------------+------------------------------------------| |passwd |gérer le mot de passe de ce compte | |--------------------+------------------------------------------| |passwd -e |définir un mot de passe à usage unique | | |pour l’activation du compte | |--------------------+------------------------------------------| |chage |gérer les informations de durée de | | |validité du mot de passe | +---------------------------------------------------------------+ Vous pouvez avoir besoin des droits de l’administrateur pour     certaines fonctions. Consultez crypt(3) pour le chiffrement des mots de passe et des données. Note Sur les systèmes configurés avec PAM et NSS comme la machine     alioth (http://alioth.debian.org) de Debian, le contenu des fichiers locaux « /etc/passwd », « /etc/group » et « /etc/ shadow » peut ne pas être utilisé de manière active par le système. Le commandes ci-dessus restent valables même sous un tel environnement. 4.3. Mot de passe de qualité Lors de la création d'un mot de passe à de l’installation de votre système ou avec la commande passwd(1), il vous faudra     choisir un bon mot de passe (http://fr.wikipedia.org/wiki/ Robustesse_des_mots_de_passe) composé de 6 à 8 caractères, comprenant au moins un des caractères appartenant à l’ensemble suivant conformément à passwd(1) : * caractères alphabétiques en minuscules ;     * chiffres de 0 à 9 ; * marques de ponctuation. Avertissement     Ne pas choisir comme mot de passe des mots qui puissent être devinés. 4.4. Créer un mot de passe chiffré     Il y a des outils séparés permettant de créer des mots de passe chiffrés à partir d'une « semence ». Tableau 4.4. Liste d'outils permettant de générer des mots de passe +---------------------------------------------------------------------------------+ |paquet |popcon |taille |commande|fonction | |-------------------+-------------+----------------------+--------+---------------| | |V:105, I:911 | | |frontal de la | |whois (http:// |(http:// |325 (http:// | |bibliothèque | |packages.debian.org|qa.debian.org|packages.qa.debian.org|mkpasswd|crypt(3) avec | |/sid/whois) |/popcon.php? |/w/whois.html) | |fonctionnalités|     | |package= | | |surabondantes | | |whois) | | | | |-------------------+-------------+----------------------+--------+---------------| | |V:759, I:970 | | |calculer le | |openssl (http:// |(http:// |1080 (http:// | |hachage du mot | |packages.debian.org|qa.debian.org|packages.qa.debian.org|openssl |de passe | |/sid/openssl) |/popcon.php? |/o/openssl.html) |passwd |(OpenSSL). | | |package= | | |passwd(1ssl) | | |openssl) | | | | +---------------------------------------------------------------------------------+ 4.5. PAM et NSS De nombreux systèmes modernes semblable à UNIX (http:// fr.wikipedia.org/wiki/Type_Unix) , comme le système Debian, fournissent les mécanismes PAM (Pluggable Authentication Modules)     (http://fr.wikipedia.org/wiki/Pluggable_Authentication_Modules) et NSS (Name Service Switch) (http://fr.wikipedia.org/wiki/ Name_Service_Switch) pour la configuration du système par l’administrateur local. Leur rôle peut être résumé de la manière suivante : * PAM offre un mécanisme d'authentification souple qui est utilisé par les logiciels applicatifs lorsqu'ils ont besoins d'échanger des mots de passe.     * NSS fournit un mécanisme souple de service de noms qui est fréquemment utilisé par la bibliothèque standard C (http:// fr.wikipedia.org/wiki/Bibliothèque_standard_de_C) pour obtenir le nom de groupe de programmes comme ls(1) et id(1).     Ces systèmes PAM et NSS doivent être configurés de manière cohérente.     Les paquets importants des systèmes PAM et NSS sont les suivants : Tableau 4.5. Liste des paquets importants des systèmes PAM et NNS +--------------------------------------------------------------------------------------+ |paquet |popcon |taille |description | |--------------------+--------------------+-------------------------+------------------| | | | |PAM (« Pluggable | |libpam-modules |V:886, I:999 (http:/| |Authentication | |(http:// |/qa.debian.org/ |813 (http:// |Modules »), | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/ |Modules | |sid/libpam-modules) |libpam-modules) |libp/libpam-modules.html)|attachables | | | | |d'authentification| | | | |(service de base) | |--------------------+--------------------+-------------------------+------------------| | | | |Modules | |libpam-ldap (http://|V:24, I:39 (http:// |205 (http:// |attachables | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/ |d'authentification| |sid/libpam-ldap) |popcon.php?package= |libp/libpam-ldap.html) |permettant | | |libpam-ldap) | |l’utilisation | | | | |d'interfaces LDAP | |--------------------+--------------------+-------------------------+------------------| | | | |Modules | |libpam-cracklib |V:24, I:34 (http:// |138 (http:// |attachables | |(http:// |qa.debian.org/ |packages.qa.debian.org/ |d'authentification| |packages.debian.org/|popcon.php?package= |libp/ |permettant la | |sid/libpam-cracklib)|libpam-cracklib) |libpam-cracklib.html) |prise en compte de| | | | |cracklib | |--------------------+--------------------+-------------------------+------------------| | |I:3 (http:// | |Modules | |libpam-doc (http:// |qa.debian.org/ |986 (http:// |attachables | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/ |d'authentification| |sid/libpam-doc) |libpam-doc) |libp/libpam-doc.html) |(documentation en | | | | |html et texte) | |--------------------+--------------------+-------------------------+------------------| | | | |bibliothèque GNU C| | |V:959, I:997 (http:/| |Library : |     |libc6 (http:// |/qa.debian.org/ |9516 (http:// |bibliothèques | |packages.debian.org/|popcon.php?package= |packages.qa.debian.org/ |partagées qui | |sid/libc6) |libc6) |libc/libc6.html) |fournissent aussi | | | | |le service « Name | | | | |Service Switch » | |--------------------+--------------------+-------------------------+------------------| |glibc-doc (http:// |I:25 (http:// |1900 (http:// |bibliothèque GNU | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/g/|C : pages de | |sid/glibc-doc) |popcon.php?package= |glibc-doc.html) |manuel | | |glibc-doc) | | | |--------------------+--------------------+-------------------------+------------------| |glibc-doc-reference | | |bibliothèque GNU | |(http:// |I:9 (http:// |11816 (http:// |C : manuel de | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/g/|référence dans les| |sid/ |popcon.php?package= |glibc-doc-reference.html)|formats info, pdf | |glibc-doc-reference)|glibc-doc-reference)| |et html (non | | | | |libre) | |--------------------+--------------------+-------------------------+------------------| |libnss-mdns (http://|I:527 (http:// |144 (http:// |module NSS pour la| |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/ |résolution des | |sid/libnss-mdns) |popcon.php?package= |libn/libnss-mdns.html) |noms DNS Multicast| | |libnss-mdns) | | | |--------------------+--------------------+-------------------------+------------------| |libnss-ldap (http://|I:36 (http:// |230 (http:// |module NSS pour | |packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/ |l’utilisation de | |sid/libnss-ldap) |popcon.php?package= |libn/libnss-ldap.html) |LDAP comme service| | |libnss-ldap) | |de nommage | |--------------------+--------------------+-------------------------+------------------| | | | |module NSS pour | |libnss-ldapd (http:/|I:12 (http:// |113 (http:// |l’utilisation de | |/packages.debian.org|qa.debian.org/ |packages.qa.debian.org/ |LDAP en tant que | |/sid/libnss-ldapd) |popcon.php?package= |libn/libnss-ldapd.html) |service de nommage| | |libnss-ldapd) | |(nouveau compagnon| | | | |de libnss-ldap) | +--------------------------------------------------------------------------------------+ * « The Linux-PAM System Administrators' Guide » de libpam-doc est essentiel à l’apprentissage de la configuration de PAM.     * La section « System Databases and Name Service Switch » de glibc-doc-reference est essentielle pour l’apprentissage de la configuration de NSS. Note     Vous en trouverez une liste plus complète et actuelle avec la commande « aptitude search 'libpam-|libnss-' ». L’acronyme NSS peut aussi signifier « Network Security Service » qui est différent de « Name Service Switch ». Note     PAM est la manière la plus élémentaire d'initialiser des variables d'environnement pour tous les programmes avec des valeurs par défaut valables pour l’ensemble du système. 4.5.1. Fichiers de configuration auxquels accèdent PAM et NSS     Voici quelques fichiers de configuration importants auxquels PAM peut accéder : Tableau 4.6. Liste des fichiers de configuration auxquels PAM accède +---------------------------------------------------------------+ |fichier de |fonction | |configuration | | |---------------+-----------------------------------------------| |/etc/pam.d/ |définir la configuration de PAM pour le «  | || », consultez pam(7) et pam.d(5)| |---------------+-----------------------------------------------| |/etc/ |définir la configuration de NSS avec une entrée| |nsswitch.conf |pour chaque service. Consultez nsswitch.conf(5)| |---------------+-----------------------------------------------| |/etc/nologin |limiter la connexion de l’utilisateur à l’aide | | |du module pam_nologin(8) | |---------------+-----------------------------------------------| |/etc/securetty |limiter l’accès de l’administrateur à certains | | |tty à l’aide du module pam_securetty(8) | |---------------+-----------------------------------------------| |/etc/security/ |limiter les accès à l’aide du module pam_access| |access.conf |(8) |     |---------------+-----------------------------------------------| |/etc/security/ |définir les limitations en fonction du groupe à| |group.conf |l’aide du module pam_group(8) | |---------------+-----------------------------------------------| |/etc/security/ |définir des variables d'environnement à l’aide | |pam_env.conf |du module pam_env(8) | |---------------+-----------------------------------------------| |/etc/ |définir des variables d'environnement | |environment |supplémentaires à l’aide du module pam_env(8) | | |avec le paramètre « readenv=1 » | |---------------+-----------------------------------------------| | |définir les paramètres linguistiques | |/etc/default/ |(« locale ») à l’aide du module pam_env(8) avec| |locale |le paramètre « readenv=1 envfile=/etc/default/ | | |locale » (Debian) | |---------------+-----------------------------------------------| |/etc/security/ |définir les limitations de ressources (ulimit, | |limits.conf |core, …) à l’aide du module pam_linits(8) | |---------------+-----------------------------------------------| |/etc/security/ |définir les restrictions de temps à l’aide du | |time.conf |module pam_time(8) | +---------------------------------------------------------------+ Les limitations dans la sélection des mots de passe est     implémentée par les modules PAM pam_unix(8) et pam_cracklib(8). Ils peuvent être configurés à l’aide de leurs paramètres. Astuce     Les noms de fichiers des modules PAM ont le suffixe « .so ». 4.5.2. Le système de gestion centralisée moderne La gestion centralisée du système peut être mis en œuvre en utilisant le serveur centralisé LDAP Protocole léger d'accès aux répertoires (« Lightweight Directory Access Protocol ») (http://     fr.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) pour administrer de nombreux systèmes semblables à UNIX ou autres sur le réseau. Le logiciel OpenLDAP (http://www.openldap.org/) est l’implémentation à sources ouvertes du protocole LDAP Sur un système Debian, le serveur LDAP fournit les informations de compte en utilisant PAM et de NSS avec les paquets libpam-ldap     et libnss-ldap. Un certain nombre d'actions sont nécessaires pour l’activer (je n'ai pas utilisé cette configuration et ce qui suit est une information secondaire. Veuillez la lire dans ce contexte) : * définissez un serveur LDAP centralisé en faisant tourner un programme tel que le démon LDAP, slapd(8) ; * modifiez les fichiers de configuration de PAM dans le répertoire « /etc/pam.d/ » pour utiliser « pam_ldap.so » plutôt que le module par défaut « pam_unix.so » ; o Debian utilise « /etc/pam_ldap.conf » comme fichier de configuration de libpam-ldap et «nbsp;/etc/ pam_ldap.secret » pour enregistrer le mot de passe de root. * modifiez la configuration de NSS dans le fichier « /etc/ nsswitch.conf » pour utiliser « ldap » plutôt que ce qui s'y trouve par défaut (« compat » ou « file ») ;     o Debian utilise « /etc/libnss-ldap.conf » comme fichier de configuration de libnss-ldap. * vous devez configurer libpam-ldap de manière à ce qu'il utilise une connexion SSL (ou TLS) (http://fr.wikipedia.org/ wiki/Transport_Layer_Security) pour la sécurité du mot de passe ; * vous pouvez configurer libnss-ldap de manière à ce qu'il utilise une connexion SSL (ou TLS) (http://fr.wikipedia.org/ wiki/Transport_Layer_Security) afin d'assurer l’intégrité des données au prix d'une surcharge du réseau LDAP ; * Afin de réduire le trafic réseau de LDAP, vous devrez faire tourner nscd(8) localement pour mettre en cache les résultats de recherche de LDAP . Consultez les documentations dans pam_ldap.conf(5) et « /usr/     share/doc/libpam-doc/html/ » qui sont fournies par le paquet libpam-doc et « info libc 'Name Service Switch' fournie par le paquet glibc-doc.     De manière similaire, vous pouvez mettre en œuvre des systèmes centralisés de remplacement avec d'autres méthodes. * Intégration d'utilisateur et de groupe au système Windows. o Accès aux services de Domaine (Microsoft) (http:// fr.wikipedia.org/wiki/Domaine_(Microsoft)) avec les paquets winbind et libpam_winbind. o Consultez winbindd(8) et Intégration de réseaux MS Windows avec Samba (http://www.samba.org/samba/docs/man/ Samba-HOWTO-Collection/integrate-ms-networks.html) .     * Intégration d'utilisateur et de groupe au système obsolète de type UNIX. o Accès à NIS (appelé initialement YP) (http:// fr.wikipedia.org/wiki/Network_Information_Service) ou NIS+ (http://en.wikipedia.org/wiki/NIS+) avec le paquet nis. o Consultez Le Linux NIS(YP)/NYS/NIS+ HOWTO (http:// fr.tldp.org/HOWTO/lecture/NIS-HOWTO.html) . 4.5.3. « Pourquoi la commande su de GNU ne gère-t-elle pas le groupe wheel » C'est la célèbre phrase de Richard M. Stallman en bas de l’ancienne page info su. Ne pas s'inquiéter : la commande su     actuelle de http://www.debian.org utilise PAM, on peut donc restreindre l’accès de su au groupe root en activant la ligne de « /etc/pam.d/su »comportant « pam_wheel.so ». 4.5.4. Règle de mots de passe plus stricte L’installation du paquet libpam-cracklib vous permet de forcer     des règles plus strictes concernant les mots de passe en mettant, par exemple, les lignes suivantes dans « /etc/pam.d/ common-password » :     Pour squeeze : password required pam_cracklib.so retry=3 minlen=9 difok=3     password [success=1 default=ignore] pam_unix.so use_authtok nullok md5 password requisite pam_deny.so password required pam_permit.so 4.6. Autres contrôles d'accès Note     Consultez Section 9.5.15, « touche Alt-SysRq » pour restreindre la fonctionnalité de touche d'appel sécurisée (SAK) (« secure attention key ») (http://en.wikipedia.org/wiki/ Secure_attention_key) du noyau. 4.6.1. sudo sudo(8) est un programme conçu pour permettre à un administrateur système de donner des privilèges d'administration limités aux utilisateurs et d'enregistrer dans un journal les actions de     l’administrateur (« root ». sudo ne demande que le mot de passe d'un utilisateur normal. Installez le paquet sudo et activez-le en définissant les options dans « /etc/sudoers ». Consultez l’exemple de configuration dans « /usr/share/doc/sudo/examples/ sudoers » et Section 1.1.12, « Configuration de sudo ». Mon utilisation de sudo sur un système avec un seul utilisateur (consultez Section 1.1.12, « Configuration de sudo ») est destinée à me protéger moi-même contre ma propre stupidité.     Personnellement, je considère que l’utilisation de sudo est une meilleure alternative que l’utilisation permanente du système depuis le compte de l’administrateur. Par exemple, les modifications suivantes du propriétaire de «  » par «  » :     $ sudo chown Bien sûr, si vous connaissez le mot de passe de root (comme     beaucoup d'utilisateurs de Debian qui ont installé eux-mêmes leur système), n'importe quelle commande peut être lancée en tant qu'administrateur depuis un compte utilisateur par « su -c ». 4.6.2. PolicyKit PolicyKit (http://fr.wikipedia.org/wiki/PolicyKit) est un     composant du système d'exploitation permettant de contrôler les droits globaux sur les systèmes de type UNIX. Les applications graphiques les plus récentes ne sont pas conçues     pour fonctionner comme des processus privilégiés. Elles échangent avec les processus privilégiés par l'intermédiaire de PolicyKit pour réaliser les opérations d'administration.     PolicyKit limite de telles opérations aux comptes d'utilisateurs appartenant au groupe sudo sur le système Debian.     Consultez polkit(8). 4.6.3. SELinux Security-Enhanced Linux (SELinux) (http://fr.wikipedia.org/wiki/ SELinux) est une infrastructure pour resserrer davantage le modèle des privilèges que le modèle de sécurité ordinaire des     systèmes semblables à UNIX avec les règles de contrôle d'accès obligatoire (MAC) (http://fr.wikipedia.org/wiki/ Contr%C3%B4le_d%27acc%C3%A8s_obligatoire) (« mandatory access control »). La puissance de l’administrateur peut être restreinte sous certaines conditions. 4.6.4. Restreindre l’accès à certains services du serveur Pour la sécurité du système, il est préférable de désactiver autant de programmes de serveurs que possible. Cela devient critique pour les services par l’intermédiaire du réseau. Avoir     des services réseau inutilisés, qu'ils soient activés directement en tant que démon (http://fr.wikipedia.org/wiki/Daemon) ou par l’intermédiaire du programme super-serveur (http:// en.wikipedia.org/wiki/Super-server) , est considéré comme un risque de sécurité. De nombreux programmes, tels que sshd(8), utilisent un contrôle     d'accès basé sur PAM. Il y a de nombreuses manières de restreindre l’accès à certains serveurs de services : * fichiers de configuration : « /etc/default/  » ; * configuration du niveau de fonctionnement (« runlevel » du démon (http://fr.wikipedia.org/wiki/Daemon)  ; * PAM (Modules d'authentification attachables) (« Pluggable Authentication Modules ») (http://fr.wikipedia.org/wiki/ Pluggable_Authentication_Modules)  ; * « /etc/inetd.conf » pour le super-serveur (http:// en.wikipedia.org/wiki/Super-server)  ;     * « /etc/hosts.deny » et « /etc/hosts.allow » pour l’enrobeur TCP (http://fr.wikipedia.org/wiki/TCP_Wrapper) , tcpd(8) ; * « /etc/rpc.conf » pour Sun RPC (http://en.wikipedia.org/wiki/ Open_Network_Computing_Remote_Procedure_Call)  ; * « /etc/at.allow » et « /etc/at.deny » pour atd(8) ; * « /etc/cron.allow » et « /etc/cron.deny » pour crontab(1) ; * un pare-feu réseau (http://fr.wikipedia.org/wiki/Pare-feu) de l’infrastructure netfilter (http://fr.wikipedia.org/wiki/ Netfilter) . Consultez Section 3.5.3, « Exemple de gestion de niveau de fonctionnement », Section 3.5.4, « Paramètre par défaut de chaque     script init », Section 4.5.1, « Fichiers de configuration auxquels accèdent PAM et NSS », Section 3.5.8, « Initialisation des services réseau » et Section 5.9, « Infrastructure de netfilter ». Astuce     Les services Sun RPC (http://en.wikipedia.org/wiki/ Open_Network_Computing_Remote_Procedure_Call) doivent être actif pour NFS (http://fr.wikipedia.org/wiki/Network_file_system) et les autres programmes basés sur RPC. Astuce Si vous avez des problèmes pour les accès à distance sur un     système Debian récent, commentez la ligne de configuration posant problème, comme « ALL: PARANOID » de « /etc/hosts.deny » si elle existe. (Mais vous devrez faire attention au risque de sécurité induit par ce type d'action). 4.7. Sécurité de l’authentification     Les informations données ici ne suffiront pas à remplir vos besoins de sécurité mais constituent un bon point de départ. 4.7.1. Mot de passe sûr avec Internet La couche de transport de nombreux services populaires communique les messages, y compris les mots de passe d'authentification, en texte clair. C'est une très mauvaise idée de transmettre un mot de passe en texte clair dans la jungle d'Internet où il peut être     intercepté. Vous pouvez faire tourner des services sur une couche de transport sécurisée « Sécurité de la couche de transport (« Transport Layer Security ») (http://fr.wikipedia.org/wiki/ Transport_Layer_Security)  » (TLS) ou son prédécesseur « Secure Sockets Layer » (SSL) pour sécuriser par chiffrement la communication dans son ensemble, y compris le mot de passe. Tableau 4.7. Liste des services et ports sûrs et non sûrs +---------------------------------------------------------+ |nom de service non sûr |port|nom de service sûr|port| |----------------------------+----+------------------+----| |www (http) |80 |https |443 | |----------------------------+----+------------------+----| |smtp (courrier électronique)|25 |ssmtp (smtps) |465 | |----------------------------+----+------------------+----| |données ftp |20 |données ftps |989 |     |----------------------------+----+------------------+----| |ftp |21 |ftps |990 | |----------------------------+----+------------------+----| |telnet |23 |telnets |992 | |----------------------------+----+------------------+----| |imap2 |143 |imaps |993 | |----------------------------+----+------------------+----| |pop3 |110 |pop3s |995 | |----------------------------+----+------------------+----| |ldap |389 |ldaps |636 | +---------------------------------------------------------+ Le chiffrement coûte du temps processeur. Comme solution de remplacement pour économiser du temps processeur, vous pouvez continuer à effectuer les communications en texte clair tout en ne sécurisant que le mot de passe avec un protocole d'authentification sécurisé comme « Authenticated Post Office Protocol » (APOP) pour POP et « Challenge-Response Authentication     Mechanism MD5 » (CRAM-MD5) pour SMTP et IMAP. (Depuis peu, pour envoyer des messages de courrier électronique au travers d'internet à votre serveur de courrier depuis votre client de courrier, il est devenu habituel d'utiliser le port 587 en remplacement du port SMTP 25 habituel pour soumettre le courrier afin d'éviter le blocage du port 25 par le fournisseur d'accès au réseau tout en vous authentifiant avec CRAM-MD5). 4.7.2. Le shell sûr (Secure Shell) Le programme SSH, Shell sûr (http://fr.wikipedia.org/wiki/ Secure_Shell) (« Secure Shell ») permet une communication chiffrée sûre entre deux machines qui ne soient pas « de confiance » au travers d'un réseau non sûr avec une     authentification sûre. Il est constitué du client OpenSSH (http:/ /www.openssh.org/) , de ssh(1), et du démon OpenSSH (http:// www.openssh.org/) , sshd (8). SSH peut être utilisé pour « tunneler » de manière sécurisée un protocole de communications non sûr tel que POP et X au travers d'Internet à l’aide de la fonctionnalité de transfert de port. Le client essaie de s'authentifier en utilisant l’authentification basée sur l’hôte, une clé publique d'authentification, une authentification par question-réponse ou     une authentification par mot de passe. L’utilisation d'une authentification par clé publique permet la connexion à distance sans mot de passe. Consultez Section 6.9, « Le serveur et les utilitaires d'accès à distance (SSH) ». 4.7.3. Mesures de sécurité supplémentaires pour Internet Même si vous tournez avec des services sécurisés comme des serveurs Secure Shell (SSH) (http://fr.wikipedia.org/wiki/ Secure_Shell) et Point-to-point tunneling protocol (PPTP) (http:/ /fr.wikipedia.org/wiki/Point-to-point_tunneling_protocol) , il     reste des chance de break-ins en utilisant depuis Internet une attaque de force brute pour trouver le mot de passe, etc. L’utilisation d'une politique de pare-feu (consultez Section 5.9, « Infrastructure de netfilter ») conjointement avec les outils sûrs qui suivent peut améliorer la sécurité : Tableau 4.8. Liste des outils fournissant des mesures de sécurité supplémentaires +----------------------------------------------------------------------------+ |paquet |popcon |taille |description | |-------------------+--------------+----------------------+------------------| | |V:0, I:3 | |démon knockd(1) et| |knockd (http:// |(http:// |164 (http:// |client konck(1) | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|légers de rituel | |/sid/knockd) |popcon.php? |/k/knockd.html) |d'ouverture de | | |package= | |ports | | |knockd) | |« port-knocking » | |-------------------+--------------+----------------------+------------------| | |V:18, I:21 | |utilitaire pour | |denyhosts (http:// |(http:// |368 (http:// |aider les | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|administrateurs | |/sid/denyhosts) |popcon.php? |/d/denyhosts.html) |système à |     | |package= | |contrecarrer les | | |denyhosts) | |pirates par ssh | |-------------------+--------------+----------------------+------------------| | |V:65, I:74 | |bannir les IP qui | |fail2ban (http:// |(http:// |414 (http:// |provoque des | |packages.debian.org|qa.debian.org/|packages.qa.debian.org|erreurs | |/sid/fail2ban) |popcon.php? |/f/fail2ban.html) |d'authentification| | |package= | |multiples | | |fail2ban) | | | |-------------------+--------------+----------------------+------------------| | |V:0, I:0 | |verrouiller les | |libpam-shield |(http:// |130 (http:// |attaquants | |(http:// |qa.debian.org/|packages.qa.debian.org|distants cherchant| |packages.debian.org|popcon.php? |/libp/ |à deviner le mot | |/sid/libpam-shield)|package= |libpam-shield.html) |de passe | | |libpam-shield)| | | +----------------------------------------------------------------------------+ 4.7.4. sécuriser le mot de passe de l’administrateur Afin d'éviter que des personnes accèdent à votre machine avec les     privilèges de l’administrateur, vous devez prendre les mesures suivante : * rendre impossible l’accès physique au disque dur ; * verrouiller le BIOS et interdire l’amorçage depuis un support     amovible ; * définir un mot de passe pour la session interactive de GRUB ; * verrouiller l’édition du menu de GRUB.     Avec un accès physique au disque, réinitialiser le mot de passe est relativement facile en suivant les étapes suivantes : 1. Déplacer le disque dur sur un PC dont le BIOS permet le démarrage depuis un CD. 2. Démarrer le système avec un support de secours (disque d'amorçage de Debian, CD Knoppix, CD GRUB, ..)     3. Monter la partition racine avec les droits en lecture et écriture. 4. Éditer « /etc/passwd » de la partition racine et vider la seconde entrée du compte root. Si vous avez l’accès en édition au menu GRUB (consultez     Section 3.3, « Étage 2 : le chargeur initial »), avec grub-rescue-pc, il est encore plus simple d'effectuer les étapes suivantes au moment du démarrage : 1. Démarrer le système avec les paramètres du noyau modifiés en quelque chose qui ressemble à « root=/dev/hda6 rw init=/bin/ sh ».     2. Éditer « /etc/passwd » et vider la seconde entrée du compte root. 3. Redémarrer le système.     L’interpréteur de commandes de l’administrateur est maintenant accessible sans mot de passe. Note Une fois que quelqu'un a accès à l’interpréteur de commandes de l’administrateur, il peut accéder à l’ensemble du système et en réinitialiser tous les mots de passe. De plus, il peut     compromettre le mot de passe de n'importe quel utilisateur en utilisant des outils de cassage de mots de passe par force brute tels que les paquets john et crack (consultez Section 9.6.11, « Vérification de la sécurité et de l’intégrité du système »). Ces mots de passes cassés peuvent permettre de compromettre d'autres systèmes. La seule solution logicielle raisonnable pour éviter tout ça est d'utiliser une partition racine (ou une partition « /etc ») chiffrée par logiciel en utilisant dm-crypt (http://     fr.wikipedia.org/wiki/Dm-crypt) et initramfs (consultez Section 9.4, « Astuces de chiffrement des données »). Vous aurez alors toujours besoin d'un mot de passe pour vous connecter au système. Chapitre 5. Configuration du réseau Astuce     Pour un guide d'ordre général concernant le réseau sous GNU/ Linux, lire le Guide de l’administrateur réseau de Linux (http:// www.tldp.org/LDP/nag2/) (« Linux Network Administrators Guide »). Astuce     Bien que ce document utilise encore l'ancien ifconfig(8) avec IPv4 comme exemples de configuration réseau, Debian se dirige vers ip(8) avec IPv4 et IPv6 à partir de Wheezy. Les correctifs pour mettre à jour ce document sont les bienvenus. 5.1. L’infrastructure de base du réseau     Passons en revue l’infrastructure de base du réseau sur un système Debian moderne. Tableau 5.1. Liste des outils de configuration du réseau +------------------------------------------------------------------------------------------------------------------------+ |paquets |popcon |taille |type |description | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |ifupdown (http:// |V:567, I:992 (http:// |202 (http:// | |outil standard pour activer | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/i/ |config::ifupdown |ou désactiver le réseau | |sid/ifupdown) |popcon.php?package= |ifupdown.html) | |(spécifique à Debian) | | |ifupdown) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |ifplugd (http:// |V:3, I:10 (http:// |352 (http:// | | | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/i/ |, , |gérer automatiquement le | |sid/ifplugd) |popcon.php?package= |ifplugd.html) | |réseau filaire | | |ifplugd) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |ifupdown-extra (http:/|V:0, I:2 (http:// |119 (http:// | |script de test du réseau | |/packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/i/ |, , |pour améliorer le paquet | |sid/ifupdown-extra) |popcon.php?package= |ifupdown-extra.html) | |« ifupdown » | | |ifupdown-extra) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |ifmetric (http:// |V:0, I:1 (http:// |100 (http:// | |définir la métriques de | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/i/ |, , |routage d'une interface | |sid/ifmetric) |popcon.php?package= |ifmetric.html) | |réseau | | |ifmetric) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | |V:0, I:1 (http:// | | |script de cartographie | |guessnet (http:// |qa.debian.org/ |532 (http:// | |réseau améliorant le paquet | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/g/ |, , |« ifupdown » par | |sid/guessnet) |guessnet) |guessnet.html) | |l’intermédiaire du fichier | | | | | |« /etc/network/interfaces » | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |ifscheme (http:// |V:0, I:0 (http:// |132 (http:// | |script de cartographie | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/i/ |, , |réseau pour améliorer le | |sid/ifscheme) |popcon.php?package= |ifscheme.html) | |paquet « ifupdown » | | |ifscheme) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |ifupdown-scripts-zg2 |V:0, I:0 (http:// | | | | |(http:// |qa.debian.org/ |147 (http:// | |scripts d'interface de | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/i/ |, , |Zugschlus fournissant une | |sid/ |ifupdown-scripts-zg2) |ifupdown-scripts-zg2.html) | |méthode manuelle à ifupdown | |ifupdown-scripts-zg2) | | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | |V:313, I:392 (http:// | | |NetworkManager (http:// | |network-manager (http:|qa.debian.org/ |4015 (http:// | |fr.wikipedia.org/wiki/ | |//packages.debian.org/|popcon.php?package= |packages.qa.debian.org/n/ |config::NM |NetworkManager) (démon) : | |sid/network-manager) |network-manager) |network-manager.html) | |gère automatiquement le | | | | | |réseau | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |network-manager-gnome |V:226, I:342 (http:// | | |NetworkManager (http:// | |(http:// |qa.debian.org/ |5746 (http:// | |fr.wikipedia.org/wiki/ | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/n/ |, , |NetworkManager) (frontal de | |sid/ |network-manager-gnome)|network-manager-gnome.html)| |GNOME) | |network-manager-gnome)| | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |network-manager-kde |V:6, I:29 (http:// | | |NetworkManager (http:// | |(http:// |qa.debian.org/ |36 (http:// | |fr.wikipedia.org/wiki/ | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/n/ |, , |NetworkManager) (frontal de | |sid/ |network-manager-kde) |network-manager-kde.html) | |KDE) | |network-manager-kde) | | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |wicd (http:// |I:33 (http:// |48 (http:// | |gestionnaire de réseau | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/w/ |config::wicd |filaire ou sans fil | |sid/wicd) |popcon.php?package= |wicd.html) | |(métapaquet) | | |wicd) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |wicd-cli (http:// |V:0, I:4 (http:// |87 (http:// | |gestionnaire de réseau | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/w/ |, , |filaire ou sans fil (client | |sid/wicd-cli) |popcon.php?package= |wicd-cli.html) | |en ligne de commandes) | | |wicd-cli) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |wicd-curses (http:// |V:1, I:7 (http:// |195 (http:// | |gestionnaire de réseau | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/w/ |, , |filaire ou sans fil (client | |sid/wicd-curses) |popcon.php?package= |wicd-curses.html) | |Curses) | | |wicd-curses) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |wicd-daemon (http:// |V:31, I:38 (http:// |1655 (http:// | | | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/w/ |, , |gestionnaire de réseau | |sid/wicd-daemon) |popcon.php?package= |wicd-daemon.html) | |filaire ou sans fil (démon) | | |wicd-daemon) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |wicd-gtk (http:// |V:25, I:35 (http:// |552 (http:// | |gestionnaire de réseau | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/w/ |, , |filaire ou sans fil (client | |sid/wicd-gtk) |popcon.php?package= |wicd-gtk.html) | |GTK+) | | |wicd-gtk) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | |V:284, I:993 (http:// | | |outils d'administration pour| |iptables (http:// |qa.debian.org/ |1330 (http:// | |le filtrage des paquets et | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/i/ |config::Netfilter|NAT (Netfilter (http:// | |sid/iptables) |iptables) |iptables.html) | |fr.wikipedia.org/wiki/ | | | | | |Netfilter) ) | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | | | | |iproute2 (http:// | |iproute (http:// |V:646, I:968 (http:// |970 (http:// | |www.linuxfoundation.org/en/ | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/i/ |config::iproute2 |Net:Iproute2) , IPv6 et | |sid/iproute) |popcon.php?package= |iproute.html) | |autres configurations | | |iproute) | | |avancées du réseau : ip(8), | | | | | |tc(8), etc | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |ifrename (http:// |V:1, I:4 (http:// |192 (http:// | |renommer une interface | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/i/ |, , |réseau en fonction de divers| |sid/ifrename) |popcon.php?package= |ifrename.html) | |critères statiques : | | |ifrename) | | |ifrename(8) | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |ethtool (http:// |V:72, I:164 (http:// |292 (http:// | |afficher ou modifier les | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/e/ |, , |paramètres d'un périphérique| |sid/ethtool) |popcon.php?package= |ethtool.html) | |Ethernet | | |ethtool) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | | | | |tester l’accessibilité d'une| | | | | |machine distance par nom de | | | | | |machine (http:// | |iputils-ping (http:// |V:357, I:996 (http:// |97 (http:// | |en.wikipedia.org/wiki/ | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/i/ |test::iproute2 |Hostname) ou adresse IP | |sid/iputils-ping) |popcon.php?package= |iputils-ping.html) | |(http://fr.wikipedia.org/ | | |iputils-ping) | | |wiki/Adresse_IP) (iproute2 | | | | | |(http:// | | | | | |www.linuxfoundation.org/en/ | | | | | |Net:Iproute2) ) | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | | | | |tester l’accessibilité | |iputils-arping (http:/|V:4, I:32 (http:// |36 (http:// | |réseau d'une machine | |/packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/i/ |, , |distante spécifiée par une | |sid/iputils-arping) |popcon.php?package= |iputils-arping.html) | |adresse ARP (http:// | | |iputils-arping) | | |fr.wikipedia.org/wiki/ | | | | | |Address_Resolution_Protocol)| |----------------------+----------------------+---------------------------+-----------------+----------------------------| |iputils-tracepath |V:14, I:112 (http:// |67 (http:// | | | |(http:// |qa.debian.org/ |packages.qa.debian.org/i/ |, , |tracer le chemin du réseau | |packages.debian.org/ |popcon.php?package= |iputils-tracepath.html) | |vers une machine distante | |sid/iputils-tracepath)|iputils-tracepath) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | | | | |boîte à outils réseau NET-3 | |net-tools (http:// |V:699, I:998 (http:// |916 (http:// | |(net-tools (http:// | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/n/ |config::net-tools|www.linuxfoundation.org/en/ | |sid/net-tools) |popcon.php?package= |net-tools.html) | |Net:Net-tools) , | | |net-tools) | | |configuration réseau IPv4) :| | | | | |ifconfig(8), etc. | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | | | | |tester l’accessibilité | | | | | |réseau d'une machine | |inetutils-ping (http:/|V:0, I:1 (http:// |278 (http:// | |distante par nom de machine |     |/packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/i/ |test::net-tools |(http://en.wikipedia.org/ | |sid/inetutils-ping) |popcon.php?package= |inetutils-ping.html) | |wiki/Hostname) ou adresse IP| | |inetutils-ping) | | |(http://fr.wikipedia.org/ | | | | | |wiki/Adresse_IP) (ancien, | | | | | |GNU) | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | | | | |tester l’accessibilité | | |V:4, I:32 (http:// | | |réseau d'une machine | |arping (http:// |qa.debian.org/ |46 (http:// | |distante spécifiée par une | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/a/ |, , |adresse ARP (http:// | |sid/arping) |arping) |arping.html) | |fr.wikipedia.org/wiki/ | | | | | |Address_Resolution_Protocol)| | | | | |(ancien) | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |traceroute (http:// |V:112, I:992 (http:// |175 (http:// | |tracer le chemin réseau vers| |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/t/ |, , |une machine distante | |sid/traceroute) |popcon.php?package= |traceroute.html) | |(ancien, console) | | |traceroute) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |isc-dhcp-client (http:|V:443, I:806 (http:// |1768 (http:// | | | |//packages.debian.org/|qa.debian.org/ |packages.qa.debian.org/i/ |config::low-level|client DHCP | |sid/isc-dhcp-client) |popcon.php?package= |isc-dhcp-client.html) | | | | |isc-dhcp-client) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |wpasupplicant (http://|V:343, I:457 (http:// |1364 (http:// | | | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/w/ |, , |client prenant en charge WPA| |sid/wpasupplicant) |popcon.php?package= |wpasupplicant.html) | |et WPA2 (IEEE 802.11i) | | |wpasupplicant) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |wpagui (http:// |V:0, I:7 (http:// |790 (http:// | | | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/w/ |, , |client graphique (Qt) pour | |sid/wpagui) |popcon.php?package= |wpagui.html) | |wpa_supplicant | | |wpagui) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |wireless-tools (http:/|V:73, I:242 (http:// |325 (http:// | |outils pour manipuler les | |/packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/w/ |, , |« Extension Linux sans fil »| |sid/wireless-tools) |popcon.php?package= |wireless-tools.html) | |(Linux Wireless Extensions) | | |wireless-tools) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |ppp (http:// |V:70, I:445 (http:// |863 (http:// | | | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/p/ |, , |connexion PPP/PPPoE avec | |sid/ppp) |popcon.php?package= |ppp.html) | |chat | | |ppp) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |pppoeconf (http:// |V:2, I:26 (http:// |340 (http:// | | | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/p/ |config::helper |assistant de configuration | |sid/pppoeconf) |popcon.php?package= |pppoeconf.html) | |d'une connexion PPPoE | | |pppoeconf) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |pppconfig (http:// |V:1, I:12 (http:// |990 (http:// | |assistant de configuration | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/p/ |, , |pour une connexion PPP avec | |sid/pppconfig) |popcon.php?package= |pppconfig.html) | |chat | | |pppconfig) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |wvdial (http:// |V:3, I:17 (http:// |276 (http:// | |assistant de configuration | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/w/ |, , |pour une connexion PPP avec | |sid/wvdial) |popcon.php?package= |wvdial.html) | |wvdial et ppp | | |wvdial) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |mtr-tiny (http:// |V:15, I:118 (http:// |113 (http:// | |tracer le chemin réseau vers| |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/m/ |test::low-level |une machine distante | |sid/mtr-tiny) |popcon.php?package= |mtr-tiny.html) | |(curses) | | |mtr-tiny) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |mtr (http:// |V:7, I:36 (http:// |154 (http:// | |tracer le chemin réseau vers| |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/m/ |, , |une machine distante (curses| |sid/mtr) |popcon.php?package= |mtr.html) | |et GTK+) | | |mtr) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |gnome-nettool (http://|V:28, I:327 (http:// |2644 (http:// | |outils pour des opérations | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/g/ |, , |d'informations habituelles | |sid/gnome-nettool) |popcon.php?package= |gnome-nettool.html) | |sur le réseau (GNOME) | | |gnome-nettool) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |nmap (http:// |V:63, I:339 (http:// |14940 (http:// | |cartographie réseau / | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/n/ |, , |balayage de ports (Nmap | |sid/nmap) |popcon.php?package= |nmap.html) | |(http://fr.wikipedia.org/ | | |nmap) | | |wiki/Nmap) , console) | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |zenmap (http:// |V:3, I:14 (http:// |2177 (http:// | | | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/z/ |, , |cartographie réseau / | |sid/zenmap) |popcon.php?package= |zenmap.html) | |balayage de ports (GTK+) | | |zenmap) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |tcpdump (http:// |V:32, I:229 (http:// |1028 (http:// | |analyseur de trafic réseau (| |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/t/ |, , |Tcpdump (http:// | |sid/tcpdump) |popcon.php?package= |tcpdump.html) | |fr.wikipedia.org/wiki/ | | |tcpdump) | | |Tcpdump) , console) | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |wireshark (http:// |V:16, I:88 (http:// |2472 (http:// | |analyseur de trafic réseau (| |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/w/ |, , |Wireshark (http:// | |sid/wireshark) |popcon.php?package= |wireshark.html) | |fr.wikipedia.org/wiki/ | | |wireshark) | | |Wireshark) , GTK+) | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |tshark (http:// |V:5, I:35 (http:// |338 (http:// | | | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/t/ |, , |analyseur de trafic réseau | |sid/tshark) |popcon.php?package= |tshark.html) | |(console) | | |tshark) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | | | | |système de surveillance et | |nagios3 (http:// |V:4, I:17 (http:// |29 (http:// | |de gestion pour les | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/n/ |, , |machines, les services et | |sid/nagios3) |popcon.php?package= |nagios3.html) | |les réseaux (Nagios (http://| | |nagios3) | | |fr.wikipedia.org/wiki/ | | | | | |Nagios) ) | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |tcptrace (http:// |V:0, I:3 (http:// |389 (http:// | |produit un résumé des | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/t/ |, , |connexions à partir d'une | |sid/tcptrace) |popcon.php?package= |tcptrace.html) | |sortie de tcpdump | | |tcptrace) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | |V:3, I:4 (http:// | | |système souple de détection | |snort (http:// |qa.debian.org/ |1752 (http:// | |d'intrusion par le réseau ( | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/s/ |, , |Snort (http:// | |sid/snort) |snort) |snort.html) | |fr.wikipedia.org/wiki/Snort)| | | | | |) | |----------------------+----------------------+---------------------------+-----------------+----------------------------| |ntop (http:// |V:6, I:14 (http:// |1674 (http:// | |afficher l’utilisation du | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/n/ |, , |réseau dans le navigateur | |sid/ntop) |popcon.php?package= |ntop.html) | |web | | |ntop) | | | | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | |V:116, I:921 (http:// | | |clients réseau fournis par | |dnsutils (http:// |qa.debian.org/ |374 (http:// | |BIND (http:// | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/d/ |, , |fr.wikipedia.org/wiki/BIND) | |sid/dnsutils) |dnsutils) |dnsutils.html) | | : nslookup(8), nsupdate(8),| | | | | |dig(8) | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | | | | |vérifier les zones | |dlint (http:// |V:3, I:59 (http:// |96 (http:// | |d'information DNS (http:// | |packages.debian.org/ |qa.debian.org/ |packages.qa.debian.org/d/ |, , |fr.wikipedia.org/wiki/ | |sid/dlint) |popcon.php?package= |dlint.html) | |Domain_Name_System) en | | |dlint) | | |utilisant des requêtes du | | | | | |serveur de noms | |----------------------+----------------------+---------------------------+-----------------+----------------------------| | |V:0, I:4 (http:// | | |tracer une chaîne de | |dnstracer (http:// |qa.debian.org/ |81 (http:// | |serveurs DNS (http:// | |packages.debian.org/ |popcon.php?package= |packages.qa.debian.org/d/ |, , |fr.wikipedia.org/wiki/ | |sid/dnstracer) |dnstracer) |dnstracer.html) | |Domain_Name_System) jusqu'à | | | | | |la source | +------------------------------------------------------------------------------------------------------------------------+ 5.1.1. Nom de domaine La désignation du nom de domaine est délicate pour l’utilisateur d'une station de travail normale de type PC. La station de     travail de type PC peut être mobile, se déplaçant sur le réseau, ou située derrière un pare-feu de type NAT, inaccessible depuis Internet. Dans de tels cas, il ne faudra pas que le nom de domaine soit un nom valide afin d'éviter les collisions de noms.     Si vous n'êtes pas certain du choix de nom de domaine, choisissez « localdomain ». D'après l’analyse des courriels que je reçois, d'autres choix courants de domaines de premier niveau (TLD) (http:// fr.wikipedia.org/wiki/Domaine_de_premier_niveau) non valables et     sûrs semblent être « lan », « localnet », « home », « invalid » ou « local ». C'est cohérent avec les requêtes de TLD non valables signalées. Vous pouvez aussi choisir des domaines de deuxième ou troisième niveau non utilisés. * .invalid (http://fr.wikipedia.org/wiki/.invalid)  : destiné à être utilisé dans la construction en ligne de noms de domaines qui sont assurément non valables (rfc2606 (http:// tools.ietf.org/html/rfc2606) ).     * .local (http://en.wikipedia.org/wiki/.local) est le pseudodomaine de premier niveau (http://en.wikipedia.org/wiki /Pseudo-top-level_domain) utilisé par le protocole mDNS (http://fr.wikipedia.org/wiki/Zeroconf) de découverte réseau (Apple Bonjour / Apple Rendezvous (http://fr.wikipedia.org/ wiki/Apple_Bonjour) , Avahi dans Debian). Avertissement     Si le service DNS sur votre réseau local utilise « local » comme TLD pour votre LAN, il peut interférer avec mDNS. Astuce Lorsque vous utilisez un nom de domaine non valable, vous devez     usurper le nom de domaine utilisé par certains programmes tels que le MTA afin qu’ils puissent fonctionner normalement. Consultez Section 6.3.3, « Configuration de l’adresse de courriel ». 5.1.2. Résolution du nom d'hôte La résolution du nom d'hôte est actuellement prise en charge     aussi par le mécanisme NSS (Name Service Switch) (http:// fr.wikipedia.org/wiki/Name_Service_Switch) . Le flux de cette résolution est le suivant : 1. Le fichier « /etc/nsswitch.conf » avec une entrée comme « hosts: files dns » donne l’ordre de la résolution du nom d'hôte (cela remplace l’ancienne fonctionnalité de l’entrée « order » dans « /etc/host.conf »). 2. La méthode files est d'abord appelée. Si le nom d'hôte est trouvé dans le fichier « /etc/hosts », elle retourne toutes     les adresses valables qui y correspondent et quitte. (Le fichier « /etc/host.conf » contient « multi on »). 3. La méthode dns est appelée. Si le nom d'hôte est trouvé par une requête au Système de noms de domaine Internet (DNS) (http://fr.wikipedia.org/wiki/Domain_Name_System) (« Internet Domain Name System ») identifié par le fichier « /etc/ resolv.conf », elle retourne toutes les adresses valables correspondantes et quitte.     Par exemple, « /etc/hosts » ressemble à ce qui suit : 127.0.0.1 localhost 127.0.1.1 . # Les lignes suivantes servent pour les machines pouvant utiliser IPv6     ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts Chaque ligne commence par une adresse IP (http://fr.wikipedia.org     /wiki/Adresse_IP) et est suivie du nom d'hôte (http:// en.wikipedia.org/wiki/Hostname) associé. L'adresse IP 127.0.1.1 en deuxième ligne de cet exemple pourrait ne pas être présente sur d'autres systèmes de type UNIX. L' installateur Debian (http://en.wikipedia.org/wiki/     Debian-Installer) ajoute cette entrée pour les systèmes sans adresse IP permanente en tant que contournement pour certains programmes (par exemple GNOME) comme expliqué dans le bogue nº 316099 (http://bugs.debian.org/316099) .     Le correspond au nom d'hôte défini dans « /etc/ hostname ». Comme d'ordinateur portable, vous pouvez choisir un     nom de domaine non valable et sûr comme « localdomain » (consultez Section 5.1.1, « Nom de domaine »).     Pour un système avec une adresse IP permanente, cette adresse IP devrait être utilisée à la place de 127.0.1.1. Pour un système avec une adresse IP permanente et un nom de domaine complètement qualifié (FQDN) (http://fr.wikipedia.org/     wiki/Fully_qualified_domain_name) fourni par le système de noms de domaine (DNS) (http://fr.wikipedia.org/wiki/ Domain_Name_System) , les et canoniques devraient être utilisés ici. « /etc/resolv.conf » est un fichier statique si le paquet resolvconf n'est pas installé. S'il est installé, c'est un lien     symbolique. Dans tous les cas, il contient des informations qui initialisent les routines du résolveur. Si le DNS est trouvé à l’IP=« 192.168.11.1 », il contient ce qui suit :     nameserver 192.168.11.1 Le paquet resolvconf fait de ce « /etc/resolv.conf » un lien     symbolique et gère son contenu automatiquement par le script hook. La résolution du nom de machine par le DNS Multicast (en utilisant Zeroconf (http://fr.wikipedia.org/wiki/Zeroconf) encore appelé Apple Bonjour / Apple Rendezvous (http://fr.wikipedia.org/ wiki/Apple_Bonjour) ), qui permet une résolution efficace des     noms à l’aide de programmes courants UNIX/Linux dans le domaine mDNS ad-hoc « local », peut être fournie en installant le paquet libnss-mdns. Le fichier « /etc/nsswitch.conf » devra avoir une entrée semblable à « hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 » afin d'activer cette fonctionnalité. La résolution du nom de machine par l'obsolète protocole NETBios over TCP/IP (http://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP) utilisé par les systèmes Windows plus anciens peut être fournie     en installant le paquet winbind. Le fichier « /etc/ nsswitch.conf » devra avoir une entrée semblable à « hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 wins » afin d'activer cette fonctionnalité (les systèmes Windows récents utilisent normalement la méthode dns pour la résolution de nom d'hôte). 5.1.3. Nom de l’interface réseau Le nom de l’interface réseau, par exemple eth0, est assigné dans le noyau Linux à chaque matériel par le mécanisme udev de     configuration de l’espace utilisateur (consultez Section 3.5.11, « Le système udev »), lorsqu'il est trouvé. On appelle l’interface réseau interface physique (« physical interface ») dans ifup(8) et interfaces(5). De manière à ce que les interfaces réseau aient un nom homogène lors des rédémarrages en utilisant l’adresse MAC (http:// fr.wikipedia.org/wiki/Adresse_MAC) , etc., il existe un fichier     d'enregistrement « /etc/udev/rules.d/70-persistent-net.rules ». Ce fichier est créé automatiquement par le programme « /lib/udev/ write_net_rules », probablement lancé par le fichier de règle « persistent-net-generator.rules ». Vous pouvez le modifier pour changer la règle de nommage. Attention En éditant le fichier de règles « /etc/udev/rules.d/ 70-persistent-net.rules », vous devrez conserver chaque règle sur     une seule ligne et l’adresse MAC (http://fr.wikipedia.org/wiki/ Adresse_MAC) en minuscule. Par exemple, si vous trouvez « FireWire device » et « PCI device » dans ce fichier, vous voudrez probablement nommer eth0 le « PCI device » et le configurer comme interface réseau primaire. 5.1.4. Plage d'adresses réseau du réseau local (« LAN ») Un rappel des plages d'adresses IPv4 32 bits de chacune des classes réservées à l’utilisation sur un réseau local (LAN)     (http://fr.wikipedia.org/wiki/R%C3%A9seau_local) par la rfc1918 (http://tools.ietf.org/html/rfc1918) . Ces adresses garantissent qu'aucun conflit ne sera créé avec aucune des adresses présentes sur Internet proprement dit. Tableau 5.2. Liste des plages d'adresses de réseau +----------------------------------------------------------------+ |Classe|adresses de |masque de |masque de |nombre de | | |réseau |réseau |réseau /bits |sous-réseaux | |------+---------------+-------------+-------------+-------------| |A |10.x.x.x |255.0.0.0 |/8 |1 |     |------+---------------+-------------+-------------+-------------| |B |172.16.x.x — |255.255.0.0 |/16 |16 | | |172.31.x.x | | | | |------+---------------+-------------+-------------+-------------| |C |192.168.0.x — |255.255.255.0|/24 |256 | | |192.168.255.x | | | | +----------------------------------------------------------------+ Note Si une de ces adresses est assignée à une machine, cette machine ne doit alors pas accéder directement à Internet mais passer par     une passerelle qui agit en tant que serveur mandataire (« proxy ») pour les services individuels ou sinon effectuer une traduction d'adresse réseau (NAT) (http://fr.wikipedia.org/wiki/ Network_address_translation) (« Network Address Translation ». Un routeur à large bande effectue en général la NAT pour l’environnement du LAN de l’utilisateur grand public. 5.1.5. La gestion du périphérique réseau La plupart des périphériques matériels sont pris en charge par le système Debian, il y a quelques périphériques de réseau qui     exigent, pour les gérer, des microprogrammes non libres d'après les principes du logiciel libre selon Debian (http:// www.debian.org/social_contract#guidelines) . Veuillez consulter Section 9.7.6, « Pilotes de matériel et microprogramme ». 5.2. Configuration moderne de réseau pour l’ordinateur de bureau Les systèmes Debian squeeze peuvent gérer la connexion au réseau à l’aide de démons (http://fr.wikipedia.org/wiki/Daemon) tels que     NetworkManager (NM) (http://fr.wikipedia.org/wiki/NetworkManager) (paquet network-manager et les paquets associés) ou Wicd (http:// fr.wikipedia.org/wiki/Wicd) (paquet wicd et les paquets associés). * Il sont fournis avec leur propre interface utilisateur graphique (GUI (http://fr.wikipedia.org/wiki/ Environnement_graphique) ) et en ligne de commandes. * Ils ont leur propre démon (http://fr.wikipedia.org/wiki/ Daemon) en tant que sytème dorsal.     * Ils permettent une connexion facile de votre système à Internet. * Ils permettent une gestion facile de la configuration du réseau filaire ou sans fil. * Ils nous permettent de configurer le réseau indépendamment de l’ancien paquet « ifupdown » Note     Ne pas utiliser ces outils de configuration automatique du réseau sur un serveur. Ils ont été prévus principalement pour les utilisateurs de système de bureau tournant sur des ordinateurs portables. Ce outils moderne de configuration du réseau doivent être     configurés correctement afin d’éviter des conflits avec l’ancien paquet ifupdown et son fichier de configuration « /etc/network/ interfaces ». Note Certaines fonctionnalités de ces outils de configuration automatique du réseau peuvent souffrir de régressions. Ils ne     sont pas aussi robustes que l’ancien paquet ifupdown. Consultez le BTS de network-manager (http://bugs.debian.org/cgi-bin/ pkgreport.cgi?package=network-manager) et le BTS de wicd (http:// bugs.debian.org/cgi-bin/pkgreport.cgi?package=wicd) pour en savoir plus sur les problèmes et les limitations actuels. 5.2.1. Outils graphiques de configuration du réseau Les documentations officielles de NM et Wicd sous Debian sont     fournies respectivement par « /usr/share/doc/network-manager/ README.Debian » et « /usr/share/doc/wicd/README.Debian ».     Essentiellement, la configuration réseau pour l’ordinateur de bureau est faite de la manière suivante : 1. Rendez l’utilisateur du bureau, par exemple toto, membre du groupe « netdev » à l’aide de la commande suivante (vous pouvez aussi le faire automatiquement à l’aide de D-bus (http://fr.wikipedia.org/wiki/D-Bus) sous les environnements de bureau modernes comme GNOME et KDE) : $ sudo adduser toto netdev 2. Gardez la configuration de « /etc/network/interfaces » aussi simple que possible comme ce qui suit :     auto lo iface lo inet loopback 3. Redémarrez NM ou Wicd de la manière suivante : $ sudo /etc/init.d/network-manager restart $ sudo /etc/init.d/wicd restart 4. Configurez votre réseau à l’aide d'une interface graphique. Note Afin d'éviter les conflits avec ifupdown, seules les interfaces     qui ne sont pas listées dans « /etc/network/interfaces » ou qui ont été configurées avec « auto … » ou « allow-hotplug … » et « iface … inet dhcp » (avec aucune autre option) sont gérées par NM. Astuce Si vous désirez étendre les possibilités de configuration de NM,     veuillez récupérer les modules d’extension appropriés et les paquets supplémentaires tels que network-manager-openconnect, network-manager-openvpn-gnome, network-manager-pptp-gnome, mobile-broadband-provider-info, gnome-bluetooth, etc. Il en va de même pour ceux de Wicd. Attention Ces outils de configuration automatique peuvent ne pas être compatibles avec des configurations ésotériques de l’ancien ifupdown dans « /etc/network/interfaces » telles que celles se     trouvant en Section 5.5, « Configuration de base du réseau avec ifupdown (ancienne) » et Section 5.6, « Configuration réseau avancée avec ifupdown (ancienne) ». Consultez le BTS de network-manager (http://bugs.debian.org/cgi-bin/pkgreport.cgi? package=network-manager) et le BTS de wicd (http:// bugs.debian.org/cgi-bin/pkgreport.cgi?package=wicd) pour les problèmes et les limitations actuels. 5.3. Ancienne méthode de configuration et connexion réseau Lorsque la méthode décrite dans Section 5.2, « Configuration moderne de réseau pour l’ordinateur de bureau » ne suffit pas à     vos besoins, vous pouvez utiliser les anciennes connexion au réseau et méthode de configuration qui combinent de nombreux outils simples. L’ancienne connexion au réseau est spécifique pour chacune des     méthodes (consultez Section 5.4, « Méthode de connexion réseau (ancienne) »). Il existe deux types de programmes de bas niveau pour la     configuration du réseau sous un système Linux (consultez Section 5.7.1, « Commandes Iproute2 »). * Les programmes net-tools (http://www.linuxfoundation.org/en/ Net:Net-tools) anciens (ifconfig(8), …) provienne du système de réseau NET-3 de Linux. La plupart d'entre-eux sont aujourd'hui obsolètes.     * Les nouveau programmes Linux iproute2 (http:// www.linuxfoundation.org/en/Net:Iproute2) (ip(8), …) représentent le système actuel de gestion du réseau sous Linux. Bien que ces programmes de bas niveau soient puissants, ils sont     lourds à utiliser. Des systèmes de haut niveau de configuration du système ont donc été créés. Le paquet ifupdown est le standard de fait pour un tel système de configuration de haut niveau du réseau sur Debian. Il vous permet     d'activer un réseau en utilisant simplement, par exemple, « ifup eth0 ». Son fichier de configuration est le fichier /etc/network/ interfaces » est son contenu typique est le suivant : auto lo iface lo inet loopback     auto eth0 iface eth0 inet dhcp La paquet resolvconf a été créé pour en complément au système ifupdown afin de prendre en charge une reconfiguration en douceur de la résolution d'adresse du réseau en automatisant la     réécriture du fichier de configuration de la résolution « /etc/ resolv.conf ». Maintenant, la plupart des paquets de Debian servant à la configuration du réseau sont modifiés pour utiliser le paquet resolvconf (consultez « /usr/share/doc/resolvconf/ README.Debian »). Des scripts d'assistant au paquet ifupdown comme ifplugd, guessnet, ifscheme, etc. ont été créés pour automatiser la     configuration de l’environnement réseau comme dans le cas d'un PC mobile sur un réseau local câblé. Ils sont relativement difficiles à utiliser mais fonctionnent bien en conjonction avec une système ifupdown existant. Elles sont expliquées en détails avec des exemples (consultez     Section 5.5, « Configuration de base du réseau avec ifupdown (ancienne) » et Section 5.6, « Configuration réseau avancée avec ifupdown (ancienne) »). 5.4. Méthode de connexion réseau (ancienne) Attention La méthode de test de connexion décrite dans cette section est destinée à des buts de test. Elle n'est pas destinée à être     directement utilisée pour la connexion réseau de tous les jours. Vous êtes invité à l’utiliser par l’intermédiaire de NM, Wicd, ou du paquet ifupdown (consultez Section 5.2, « Configuration moderne de réseau pour l’ordinateur de bureau » et Section 5.5, « Configuration de base du réseau avec ifupdown (ancienne) »).     La connexion typique au réseau et le chemin de connexion pour un PC peuvent être résumés comme suit : Tableau 5.3. Liste des méthodes de connexions réseau et des chemins de connexion +---------------------------------------------------------------+ | |méthode | | |PC |de |chemin de connexion | | |connexion| | |--------+---------+--------------------------------------------| |Port | |⇔ modem (http://fr.wikipedia.org/wiki/Modem)| |série |PPP |⇔ POTS ⇔ point d'accès réseau commuté ⇔ FAI |     |(ppp0) | | | |--------+---------+--------------------------------------------| |Port |PPPoE/ |⇔ BB-modem ⇔ BB service ⇔ BB access point ⇔ | |Ethernet|DHCP/ |FAI | |(eth0) |Statique | | |--------+---------+--------------------------------------------| |Port |DHCP/ |⇔ LAN ⇔ routeur BB avec traduction d'adresse| |Ethernet|Statique |(NAT) (http://fr.wikipedia.org/wiki/ | |(eth0) | |Network_address_translation) (⇔ modem BB …) | +---------------------------------------------------------------+     Voici un résumé des scripts de configuration de chaque méthode de connexion : Tableau 5.4. Liste des configurations de connexions réseau +---------------------------------------------------------------+ |méthode de |configuration |paquets(s) de | |connexion | |support | |---------------+------------------------------+----------------| |PPP |pppconfig pour créer un chat |pppconfig, ppp | | |déterministe | | |---------------+------------------------------+----------------| |PPP |wvdialconf pour créer un chat |ppp, wvdial | |(alternative) |heuristique | | |---------------+------------------------------+----------------|     |PPPoE |pppoeconf pour créer un chat |pppoeconf, ppp | | |déterministe | | |---------------+------------------------------+----------------| |DHCP |décrit dans « /etc/dhcp/ |isc-dhcp-client | | |dhclient.conf » | | |---------------+------------------------------+----------------| |IP statique |décrit dans « /etc/network/ |net-tools | |(IPv4) |interfaces » | | |---------------+------------------------------+----------------| |IP statique |décrit dans « /etc/network/ |iproute | |(IPv6) |interfaces » | | +---------------------------------------------------------------+     Les acronymes de connexion au réseau ont la signification suivante : Tableau 5.5. Liste des acronymes de connexion au réseau +---------------------------------------------------------------+ |acronyme |signification | |-------------------------------------------+-------------------| | |service | | |téléphonique | |POTS (http://fr.wikipedia.org/wiki/ |analogique | |Plain_Old_Telephone_Service) |classique (« plain | | |old telephone | | |service ») | |-------------------------------------------+-------------------| | |large bande (http:/| |BB |/en.wikipedia.org/ | | |wiki/Broadband) | |-------------------------------------------+-------------------| | |par exemple, | | |l’ADSL, la | |BB-service |télévision pat | | |câble ou les | | |services sur fibre | | |optique (FTTP) | |-------------------------------------------+-------------------| | |par exemple, le | | |modem ADSL (http://| | |en.wikipedia.org/ | | |wiki/DSL_modem) , | | |le modem sur réseau| | |câblé (http:// | |BB-modem |fr.wikipedia.org/ | | |wiki/Modem_câble) | | |ou le terminal de |     | |réseau optique | | |(ONT) (http:// | | |fr.wikipedia.org/ | | |wiki/FTTx) | |-------------------------------------------+-------------------| |LAN (http://fr.wikipedia.org/wiki/ |réseau local | |R%C3%A9seau_local) |(« local area | | |network ») | |-------------------------------------------+-------------------| |WAN (http://fr.wikipedia.org/wiki/ |réseau étendu | |Réseau_étendu) | | |-------------------------------------------+-------------------| | |protocole de | | |configuration | |DHCP (http://fr.wikipedia.org/wiki/ |dynamique des | |Dynamic_host_configuration_protocol) |machines (« dynamic| | |host configuration | | |protocol ») | |-------------------------------------------+-------------------| |PPP (http://fr.wikipedia.org/wiki/ |protocole point à | |Protocole_point_à_point) |point (« point to | | |point protocol ») | |-------------------------------------------+-------------------| | |protocole point à | |PPPoE (http://fr.wikipedia.org/wiki/PPPoE) |point avec | | |encapsulation | | |Ethernet | |-------------------------------------------+-------------------| |FAI (« ISP ») (http://fr.wikipedia.org/wiki|fournisseur d'accès| |/ |à Internet | |Fournisseur_d%27acc%C3%A8s_%C3%A0_Internet)| | +---------------------------------------------------------------+ Note Les services de connexion au réseau étendu (WAN) par     l’intermédiaire du câble du réseau de télévision sont en général servis par DHCP ou PPPoE. Ceux qui sont connectés en ADSL et FTTP sont en général servis par PPPoE. Vous devrez consulter votre FAI afin de connaître les exigences exactes de configuration de la connexion WAN. Note Lorsqu'un routeur large bande (« BB-router ») est utilisé pour créer un environnement de réseau local domestique, les PC sur le réseau local sont connectés au réseau étendu (WAN) par     l’intermédiaire du routeur large bande par traduction d'adresse réseau (NAT) (http://fr.wikipedia.org/wiki/ Network_address_translation) . Dans ce cas, les interfaces réseau des PC sur le réseau local sont servies avec des adresses IP statiques ou par DHCP depuis le routeur large bande. Le routeur large bande, pour se connecter au réseau étendu, doit être configuré en suivant les instructions de votre FAI. 5.4.1. La connexion DHCP avec Ethernet Le réseau moderne domestique ou pour une petite entreprise typique (réseau local, LAN) connecté au réseau étendu (« WAN ») (Internet) en utilisant un routeur à large bande grand public. Le     réseau local derrière ce routeur est habituellement configuré par un serveur de protocole de configuration dynamique de l’hôte (DHCP) (http://fr.wikipedia.org/wiki/ Dynamic_host_configuration_protocol) (« dynamic host configuration protocol ») tournant sur le routeur. Installez simplement le paquet isc-dhcp-client pour Ethernet     desservi par le protocole de configuration dynamique de l’hôte (DHCP) (http://fr.wikipedia.org/wiki/ Dynamic_host_configuration_protocol) .     Consultez dhclient.conf(5). 5.4.2. Connexion Ethernet avec une adresse IP statique     Il n'y a pas d'action spécifique nécessaire pour la configuration Ethernet avec une adresse IP statique. 5.4.3. La connexion PPP avec pppconfig Le script de configuration pppconfig configure la connexion PPP     (http://fr.wikipedia.org/wiki/Protocole_point_à_point) de manière interactive en sélectionnant simplement les éléments suivants : * numéro de téléphone ; * identifiant chez le fournisseur d'accès (FAI) ; * mot de passe chez le FAI ;     * vitesse du port ; * port de communication avec le modem ; * méthode d'authentification. Tableau 5.6. Liste des fichiers de configuration pour la connexion PPP (http://fr.wikipedia.org/wiki/ Protocole_point_à_point) avec pppconfig +---------------------------------------------------------------+ |fichier |fonction | |------------+--------------------------------------------------| |/etc/ppp/ |fichier de configuration spécifique à | |peers/ |créé par pppconfig pour pppd | | | | |------------+--------------------------------------------------| |/etc/ |fichier de configuration spécifique à | |chatscripts/|créé par pppconfig pour chat | | | |     |------------+--------------------------------------------------| |/etc/ppp/ |paramètres généraux d'exécution de pppd | |options | | |------------+--------------------------------------------------| | |données d'authentification pour PAP (http:// | |/etc/ppp/ |fr.wikipedia.org/wiki/ | |pap-secret |Password_Authentication_Protocol) (risque de | | |sécurité) | |------------+--------------------------------------------------| | |données d'authentification pour CHAP (http:// | |/etc/ppp/ |fr.wikipedia.org/wiki/ | |chap-secret |Challenge-Handshake_Authentication_Protocol) (plus| | |sécurisé) | +---------------------------------------------------------------+ Attention     La valeur «  » du champ « provider » est supposée si les commandes pon et poff sont appelées sans paramètre.     Vous pouvez tester la configuration de la manière suivant en utilisant des outils de configuration du réseau de bas niveau : $ sudo pon     ... $ sudo poff     Consultez « /usr/share/doc/ppp/README.Debian.gz ». 5.4.4. Autre connexion PPP avec wvdialconf Une approche différente de l’utilisation de pppd(8) est de le lancer depuis wvdial(1) qui est fourni par le paquet wvdial.     Plutôt que pppd faisant tourner chat (8) pour numéroter et négocier la connexion, wvdial effectue la numérotation et la négociation initiale puis démarre pppd pour effectuer le reste.     Le script de configuration wvdialconf configure la connexion PPP de manière interactive en sélectionnant simplement ce qui suit : * numéro de téléphone ;     * identifiant chez le fournisseur d'accès (FAI) ; * mot de passe chez le FAI ;     wvdial réussit à réaliser la connexion dans la plupart des cas et conserve automatiquement la liste des données d'authentification. Tableau 5.7. Liste des fichiers de configuration pour une connexion PPP avec wvdialconf +---------------------------------------------------------------+ |fichier |fonction | |-----------+---------------------------------------------------| |/etc/ppp/ |fichier de configuration spécifique à wvdialcréé | |peers/ |par wvdialconf pour pppd | |wvdial | | |-----------+---------------------------------------------------| |/etc/ |fichier de configuration créé par wvdialconf | |wvdial.conf| | |-----------+---------------------------------------------------|     |/etc/ppp/ |paramètres généraux d'exécution de pppd | |options | | |-----------+---------------------------------------------------| | |données d'authentification pour PAP (http:// | |/etc/ppp/ |fr.wikipedia.org/wiki/ | |pap-secret |Password_Authentication_Protocol) (risque de | | |sécurité) | |-----------+---------------------------------------------------| | |données d'authentification pour CHAP (http:// | |/etc/ppp/ |fr.wikipedia.org/wiki/ | |chap-secret|Challenge-Handshake_Authentication_Protocol) (plus | | |sécurisé) | +---------------------------------------------------------------+     Vous pouvez tester la configuration de la manière suivant en utilisant des outils de configuration du réseau de bas niveau : $ sudo wvdial     ... $ sudo killall wvdial     Consultez wvdial(1) et wvdial.conf(5). 5.4.5. La connexion PPPoE avec pppoeconf Lorsque votre FAI vous propose une connexion avec PPPoE et que vous décidez de connecter directement votre PC au WAN, le réseau     de votre PC doit être configuré avec PPPoE. PPPoE signifie « PPP over Ethernet » (PPP encapsulé par Ethernet). Le script de configuration pppoeconf configure la connexion PPPoE de manière interactive.     Les fichiers de configuration sont les suivants : Tableau 5.8. Liste des fichiers de configuration pour une connexion PPPoE avec pppoeconf +-------------------------------------------------------------------+ |fichier |fonction | |----------------------+--------------------------------------------| |/etc/ppp/peers/ |fichier de configuration spécifique à pppoe | |fournisseur-accès-adsl|créé par pppoeconf pour pppd | |----------------------+--------------------------------------------| |/etc/ppp/options |paramètres généraux d'exécution de pppd |     |----------------------+--------------------------------------------| | |données d'authentification pour PAP (http://| |/etc/ppp/pap-secret |fr.wikipedia.org/wiki/ | | |Password_Authentication_Protocol) (risque de| | |sécurité) | |----------------------+--------------------------------------------| | |données d'authentification pour CHAP (http:/| |/etc/ppp/chap-secret |/fr.wikipedia.org/wiki/ | | |Challenge-Handshake_Authentication_Protocol)| | |(plus sécurisé) | +-------------------------------------------------------------------+     Vous pouvez tester la configuration de la manière suivant en utilisant des outils de configuration du réseau de bas niveau : $ sudo /sbin/ifconfig eth0 up $ sudo pon fournisseur-accès-adsl     ... $ sudo poff fournisseur-accès-adsl $ sudo /sbin/ifconfig eth0 down     Consultez « /usr/share/doc/pppoeconf/README.Debian ». 5.5. Configuration de base du réseau avec ifupdown (ancienne) La configuration traditionnelle du réseau TCP/IP (http://     fr.wikipedia.org/wiki/Suite_des_protocoles_Internet) sur un système Debian utilise le paquet ifupdown comme outil de haut niveau. Il y a deux cas typiques : * Pour les systèmes utilisant une adresse IP dynamique tels que les PC portables, vous devrez configurer le réseau TCP/IP avec le paquet resolvconf et ce qui vous permettra changer facilement la configuration de votre réseau (consultez Section 5.5.4, « Interfaces réseau gérées par DHCP »).     * Pour les systèmes ayant une adresse IP statique tels que les serveurs, vous devrez configurer le réseau TCP/IP sans le paquet resolvconf et garder un système simple (see Section 5.5.5, « Interface réseau avec une adresse IP fixe » ). Ces méthodes traditionnelles de configuration sont assez utiles     si vous désirez définir une configuration avancée (consultez Section 5.5, « Configuration de base du réseau avec ifupdown (ancienne) »). Le paquet ifupdown fournit l’ossature standardisées pour la configuration du réseau de haut niveau sur un système Debian.     Dans cette section, nous apprenons les bases de la configuration du réseau avec ifupdown avec une introduction simplifiée et de nombreux exemples typiques. 5.5.1. La syntaxe de commande simplifiée Le paquet ifupdown contient 2 commandes : ifup(8) et ifdown(8).     Elles offrent une configuration de réseau de haut niveau à l’aide du fichier de configuration « /etc/network/interfaces ». Tableau 5.9. Liste des commandes de base de configuration du réseau avec ifupdown +---------------------------------------------------------------+ |commande|action | |--------+------------------------------------------------------|     |ifup |activer l’interface réseau eth0 avec la configuration | |eth0 |eth0 si l’entrée « iface eth0 » existe | |--------+------------------------------------------------------| |ifdown |désactiver l’interface réseau eth0 avec la | |eth0 |configurationeth0 si l’entrée « iface eth0 » | +---------------------------------------------------------------+ Avertissement     Ne pas utiliser les outils de configuration de bas niveau tels que ifconfig(8) ni les commandes ip(8) pour configurer une interface se trouvant dans l’état actif (« up »). Note     Il n'y a pas de commande ifupdown. 5.5.2. Syntaxe de base de « /etc/network/interfaces »     La syntaxe clé de « /etc/network/interfaces » telle qu'expliquée dans interfaces(5) peut être résumée comme suit : Tableau 5.10. Liste des entrées de « /etc/network/interfaces » +---------------------------------------------------------------+ |entrée |signification | |---------------------------+-----------------------------------| | |démarrer l’interface | |« auto  » | lors du démarrage | | |du système | |---------------------------+-----------------------------------| |« allow-auto |, , | | » | | |---------------------------+-----------------------------------| | |démarrer l’interface | |« allow-hotplug | lorsque le noyau | | » |détecte un événement « à chaud » | | |depuis cette interface | |---------------------------+-----------------------------------|     |Les lignes qui commencent |définissent la configuration de | |par « iface |réseau | |… » | | |---------------------------+-----------------------------------| |Les lignes qui commencent |définissent une valeur de | |par « mapping |correspondance de pour| | » |l’interface correspondant à | | | | |---------------------------+-----------------------------------| |Une ligne commençant par le|est traitée comme commentaire et | |signe « # » |ignorée (les commentaire de fin de | | |ligne ne sont pas pris en charge) | |---------------------------+-----------------------------------| |Une barre oblique inversée |étend la configuration à la ligne | |(« \ », « back slash » en |suivante | |anglais) en fin de ligne | | +---------------------------------------------------------------+     Les lignes commençant par l’entrée iface ont la syntaxe suivante : iface     ... Pour la configuration de base, l’entrée de mapping n'est pas     utilisée si vous utilisez le nom de l’interface réseau comme nom de configuration du réseau (consultez Section 5.6.5, « L’entrée « mapping » »). Avertissement     Ne pas définir dans « /etc/network/interfaces » d'entrée « iface » en double pour une interface réseau 5.5.3. L’interface réseau de rebouclage (« loopback ») L’entrée de configuration suivante du fichier « /etc/network/     interfaces » active l’interface réseau « loopback » lo lors du démarrage du système (grâce à l’entrée auto) :     auto lo iface lo inet loopback     Elle existe toujours dans le fichier « /etc/network/interfaces ». 5.5.4. Interfaces réseau gérées par DHCP Après avoir préparé le système selon Section 5.4.1, « La     connexion DHCP avec Ethernet », l’interface réseau gérée par le DHCP est configurée en créant l’entrée de configuration suivante dans le fichier « /etc/network/interfaces » :     allow-hotplug eth0 iface eth0 inet dhcp Lorsque le noyau de Linux détecte l’interface physique eth0,     l’entrée allow-hotplug permet à ifup d'activer l’interface et l’entrée iface demande à ifup d'utiliser DHCP pour configurer l’interface. 5.5.5. Interface réseau avec une adresse IP fixe Une interface réseau avec une adresse IP fixe est configurée en     créant de la manière suivante une entrée de configuration du fichier « /etc/network/interfaces » : allow-hotplug eth0 iface eth0 inet static address 192.168.11.100     netmask 255.255.255.0 gateway 192.168.11.1 dns-domain example.com dns-nameservers 192.168.11.1 Lorsque le noyau de Linux détecte l’interface physique eth0,     l’entrée allow-hotplug permet à ifup d'activer l’interface utiliser l’IP statique pour la configurer.     Ici, je suppose ce qui suit : * plage d'adresses IP du réseau local : 192.168.11.0 - 192.168.11.255 * adresse IP de la passerelle : 192.168.11.1     * adresse IP du PC : 192.168.11.100 * paquet resolvconf : installé * nom de domaine : « example.com » * adresse IP address du serveur DNS : 192.168.11.1 Si le paquet resolvconf n'est pas installé, vous devrez faire     vous-même la configuration associée au DNS en éditant le fichier « /etc/resolv.conf » comme suit :     nameserver 192.168.11.1 domain example.com Attention     Les adresses IP utilisées dans l’exemple ci-dessus ne sont pas destinées à être recopiées littéralement. Vous devrez adapter les adresses IP à la configuration réelle de votre réseau. 5.5.6. Les bases de l’interface réseau sans fil Le réseau local sans fil (http://en.wikipedia.org/wiki/ Wireless_LAN) (« wireless LAN ou WLAN ») permet une connexion     sans fil à haute vitesse par une communication en spectre étalé « spread-spectrum » sur des bandes radio ne nécessitant pas de licence en utilisant un ensemble de normes appelées IEEE 802.11 (http://fr.wikipedia.org/wiki/IEEE_802.11) . Les interfaces WLAN se comportent sensiblement de la même manière que les interfaces Ethernet normales mais elles demandent un identifiant de réseau et des données de clé de chiffrement lors     de leur initialisation. Leurs outils réseau de haut niveau sont exactement les mêmes que pour les interfaces Ethernet mais les noms des interfaces sont un peu différents, comme eth1, wlan0, ath0, wifi0, … selon les pilotes du noyau utilisés. Astuce     Le périphérique wmaster0 est le périphérique-maître qui est un périphérique interne utilisé uniquement par SoftMAC (http:// en.wikipedia.org/wiki/SoftMAC) avec la nouvelle API mac80211 de Linux (http://linuxwireless.org/) .     Voici quelques mot-clés à se souvenir pour le WLAN : Tableau 5.11. Liste d'acronymes pour le WLAN +---------------------------------------------------------------+ |acronyme|en entier |signification | |--------+-------------------------+----------------------------| | | |ID du réseau sur 16 bits | | | |utilisées par les réseaux | |NWID |ID du réseau |WaveLAN (http:// | | | |en.wikipedia.org/wiki/ | | | |WaveLAN) pre-802.11 | | | |(complètement dépassé) | |--------+-------------------------+----------------------------| | | |nom de réseau des Points | | | |d'accès sans fil (AP) (http:| | |Service Set Identifier |//en.wikipedia.org/wiki/ | | |(http://fr.wikipedia.org/|Wireless_access_point) | |(E)SSID |wiki/ |interconnectés pour former | | |Service_set_identifier) |un réseau local sans fil | | |(étendu) |802.11 (http:// | | | |fr.wikipedia.org/wiki/ | | | |IEEE_802.11) , identifiant |     | | |de domaine | |--------+-------------------------+----------------------------| | |Wired Equivalent Privacy | | | |(http://fr.wikipedia.org/|première génération de norme| |WEP, |wiki/ |de chiffrement sans fil sur | |(WEP2) |Wired_Equivalent_Privacy)|64 bits (128 bits) avec une | | |(confidentialité |clé sur 40 bits (dépassé) | | |équivalente à un réseau | | | |câblé) | | |--------+-------------------------+----------------------------| | |Wi-Fi Protected Access |seconde génération de norme | | |(http://fr.wikipedia.org/|de chiffrement sans fil (la | |WPA |wiki/ |plus grande partie de | | |Wi-Fi_Protected_Access) |802.11i), compatible avec | | |(Accès Wi-Fi protégé) |WEP | |--------+-------------------------+----------------------------| | |Wi-Fi Protected Access 2 |troisième génération de | |WPA2 |(http://fr.wikipedia.org/|norme de chiffrement sans | | |wiki/IEEE_802.11i) (Accès|fil (802.11i complète), non | | |protégé Wi-FI 2) |compatible avec WEP | +---------------------------------------------------------------+     Le choix du protocole est normalement restreint par le routeur sans fil déployé. 5.5.7. L’interface de réseau local sans fil avec WPA/WPA2     Vous devrez installer le paquet wpasupplicant afin de prendre en compte le WLAN avec les nouveaux protocoles WPA/WPA2. Dans le cas d'IP fournies par DHCP (http://fr.wikipedia.org/wiki/     Dynamic_host_configuration_protocol) sur une connexion WLAN, l’entrée du fichier « /etc/network/interfaces » doit être similaire à la suivante : allow-hotplug ath0 iface ath0 inet dhcp     wpa-ssid zonemaison # la clé psk hexadécimale est encodée depuis une phrase de passe en texte clair wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f     Consultez « /usr/share/doc/wpasupplicant/README.modes.gz ». 5.5.8. L’interface réseau local sans fil avec WEP Vous devrez installer le paquet wireless-tools pour prendre en     charge le WLAN avec l’ancien protocole WEP. (Votre routeur grand public peut encore utiliser cette infrastructure non sûre mais c'est mieux que rien). Attention     Remarquez que le trafic réseau sur votre WLAN avec WEP peut être espionné par d'autres. Dans le cas d'IP fournies par DHCP (http://fr.wikipedia.org/wiki/     Dynamic_host_configuration_protocol) sur une connexion WLAN, l’entrée du fichier « /etc/network/interfaces » doit être similaire à la suivante : allow-hotplug eth0 iface eth0 inet dhcp wireless-essid Maison     wireless-key1 0123-4567-89ab-cdef wireless-key2 12345678 wireless-key3 s:mot_de_passe wireless-defaultkey 2 wireless-keymode open     Consultez « /usr/share/doc/wireless-tools/README.Debian ». 5.5.9. La connexion PPP Vous devrez d'abord configurer la connexion PPP comme décrit précédemment (consultez Section 5.4.3, « La connexion PPP avec     pppconfig »). Ensuite, ajoutez dans le fichier « /etc/network/ interfaces » une entrée pour le périphérique PPP primaire ppp0 comme suit :     iface ppp0 inet ppp provider 5.5.10. La connexion alternative PPP Vous devrez d'abord configurer la connexion PPP alternative avec wvdial comme décrit précédemment (consultez Section 5.4.4,     « Autre connexion PPP avec wvdialconf »). Ajoutez ensuite dans le fichier « /etc/network/interfaces » une entrée pour le périphérique primaire PPP ppp0 comme suit :     iface ppp0 inet wvdial 5.5.11. La connexion PPPoE Pour le PC directement connecté au WAN et utilisant PPPoE, vous devez configurer votre système pour une connexion PPPoE comme     cela a été décrit précédemment (consultez Section 5.4.5, « La connexion PPPoE avec pppoeconf »). Ajoutez ensuite dans le fichier « /etc/network/interfaces » une entrée pour le premier périphérique PPPoE eth0 comme suit : allow-hotplug eth0 iface eth0 inet manual pre-up /sbin/ifconfig eth0 up up ifup ppp0=dsl     down ifdown ppp0=dsl post-down /sbin/ifconfig eth0 down # Ce qui suit est utilisé uniquement de manière interne iface dsl inet ppp provider fournisseur-internet 5.5.12. État de configuration réseau de ifupdown Le fichier « /etc/network/run/ifstate » enregistre l’état désiré de la connexion réseau pour toutes les interfaces réseau     actuellement actives et gérées par le paquet ifupdown. Malheureusement, même si le système ifupdown échoue dans l’activation de l’interface comme désiré, le fichier « /etc/ network/run/ifstate » l’affichera comme active. Si la sortie de la commande ifconfig(8) d'une interface n'a pas     de ligne telle que la suivante, elle ne peut pas être utilisée en tant qu'élément d'un réseau IPV4 (http://fr.wikipedia.org/wiki/ IPv4) .     inet addr:192.168.11.2 Bcast:192.168.11.255 Mask:255.255.255.0 Note     Pour un périphérique Ethernet connecté en PPPoE, la sortie de la commande ifconfig(8) ne produit pas de ligne semblable à celle de l’exemple ci-dessus. 5.5.13. Configuration réseau de base Lorsque vous tentez de reconfigurer une interface, par exemple eth0, vous devez d'abord la désactiver par la commande « sudo ifdown eth0 ». Cela supprime l’entrée eth0 du fichier « /etc/     network/run/ifstate » (quelques messages d'erreur peuvent être émis si eth0 n'est pas active ou a mal été configurée auparavant. Jusqu'à présent, il semble qu'il soit sûr de le faire n'importe quand sur une simple station de travail n'ayant qu'un seul utilisateur). Vous pouvez maintenant réécrire le contenu du fichier « /etc/     network/interfaces » selon vos besoins pour reconfigurer l’interface réseau eth0.     Ensuite, vous pourrez réactiver eth0 avec la commande  sudo ifup eth0 ». Astuce     Vous pouvez (ré)initialiser l’interface réseau simplement par «  sudo ifdown eth0;sudo ifup eth0 ». 5.5.14. La paquet ifupdown-extra     Le paquet ifupdown-extra fournit des tests de connexion au réseau facile à utiliser avec le paquet ifupdown. * La commande network-test(1) peut être utilisée depuis l’interpréteur de commandes.     * Les scripts automatiques sont lancés pour chaque exécution de la commande ifup.     La commande network-test vous libère de l’exécution d'ennuyeuses commandes de bas niveau pour analyser les problèmes du réseau.     Les scripts automatiques sont installés dans « /etc/network/*/ » et effectuent ce qui suit : * vérifier la connexion du câble réseau * vérifier l’utilisation d'une adresse IP dupliquée     * définir les routes statiques du système basées sur la définition de « /etc/network/routes » * vérifier si la passerelle réseau peut être atteinte * enregistrer les résultats dans le fichier « /var/log/syslog »     L’enregistrement dans syslog est assez utile pour l’administration des problèmes de réseau sur un système distant. Astuce Le comportement automatique du paquet ifupdown-extra est     configurable par « /etc/default/network-test » Certaines de ces vérifications automatiques ralentissent un peu le démarrage du système car elle prennent un certain temps à l’écoute des réponses ARP (http://fr.wikipedia.org/wiki/ Address_Resolution_Protocol) . 5.6. Configuration réseau avancée avec ifupdown (ancienne) Les fonctionnalités du paquet ifupdown peuvent être améliorées     au-delà de ce qui est décrit dans Section 5.5, « Configuration de base du réseau avec ifupdown (ancienne) » avec des connaissances avancées. Les fonctionnalités décrites ici sont entièrement facultatives.     Étant paresseux et minimaliste, je me suis rarement ennuyé à les utiliser. Attention     Si vous n'êtes pas arrivé à établir une connexion réseau à l’aide des informations de Section 5.5, « Configuration de base du réseau avec ifupdown (ancienne) », vous ne ferez qu'empirer la situation en utilisant les informations qui suivent : 5.6.1. La paquet ifplugd Le paquet ifplugd est l’ancien outil de configuration automatique du réseau, il ne peut gérer que les connexions Ethernet. Il permet de régler le problème des connexions et déconnexions des     câbles Ethernet avec les PC mobiles, etc. Si vous avez installé NetworkManager (http://fr.wikipedia.org/wiki/NetworkManager) ou Wicd (http://fr.wikipedia.org/wiki/Wicd) (consultez Section 5.2, « Configuration moderne de réseau pour l’ordinateur de bureau »), vous n'avez pas besoin de ce paquet. Ce paquet fait tourner un démon (http://fr.wikipedia.org/wiki/ Daemon) qui remplace les fonctionnalités auto ou allow-hotplug     (consultez Tableau 5.10, « Liste des entrées de « /etc/network/ interfaces » ») et qui active les interfaces lors de leur connexion au réseau.     Voici comment utiliser le paquet ifplugd pour le port Ethernet interne, par exemple, eth0. 1. Supprimez l’entrée « auto eth0 » ou « allow-hotplug eth0 » de « /etc/network/interfaces » 2. Conservez les entrées « iface eth0 inet … » et « mapping … » de « /etc/network/interfaces »     3. Installez le paquet ifplugd. 4. Lancez « sudo dpkg-reconfigure ifplugd » 5. Mettez eth0 comme interface « statique devant être surveillée par ifplugd ».     Le réseau fonctionne maintenant comme vous le désirez. * Lors de la mise sous tension ou lors de la découverte du matériel, l’interface est activée d'elle-même. o Processus de démarrage rapide sans le long délai de dépassement de temps de DHCP. o Pas d'interface bizarre activée sans une adresse IPV4 correcte (consultez Section 5.5.12, « État de     configuration réseau de ifupdown »). * L’interface est activée lors de la découverte du câble Ethernet. * L’interface est désactivée quelque temps après que le câble Ethernet ait été débranché. * L’interface est activée dans le nouvel environnement de réseau lors de la connexion d'un autre câble Ethernet. Astuce     Les paramètres de la commande ifplugd(8) peuvent définir son comportement tel que le délai de reconfiguration des interfaces. 5.6.2. Le paquet ifmetric     Le paquet ifmeric nous permet de manipuler a posteriori la métrique de routes même avec DHCP.     Ce qui suit permettra de rendre l’interface eth0 prioritaire sur l’interface wlan0 : 1. installer le paquet ifmetric : 2. ajouter l’option avec « metric 0 » juste en-dessous de la     ligne « iface eth0 inet dhcp » : 3. ajouter une ligne d'option avec « metric 1 » juste en-dessous de la ligne « iface wlan0 inet dhcp ». « metric 0 » indique la route de plus haute priorité et c'est celle par défaut. La plus grande valeur de « metric » indique une     route de moindre priorité. L’adresse IP de l’interface active ayant la valeur de « metric » la plus basse devient celle d'origine. Consultez ifmetric(8). 5.6.3. L’interface virtuelle Une seule interface Ethernet physique peut être configurée en tant que de multiples interfaces virtuelles avec différentes     adresses IP. Habituellement, le but est de connecter une interface à plusieurs sous-réseaux ayant des IP différentes. Par exemple, l’hébergement web virtuel basé sur l’IP avec une seule interface réseau est une application de ce type.     Supposons, par exemple, ce qui suit : * une seule interface Ethernet de votre machine est raccordée à un « hub Ethernet » (pas au routeur à large bande) : * le concentrateur Ethernet est connecté à la fois à Internet et au réseau local :     * le réseau local utilise le sous-réseau 192.168.0.x/24 : * votre machine utilise une adresse IP fournie par DHCP avec l’interface physique eth0 pour Internet : * votre machine utilise 192.168.0.1 avec l’interface virtuelle eth0:0 pour le réseau local.     Les entrées suivantes de « /etc/network/interfaces » permettent de configurer votre réseau : iface eth0 inet dhcp metric 0 iface eth0:0 inet static     address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 metric 1 Attention Bien que cet exemple de configuration avec traduction d'adresse réseau (NAT) (http://fr.wikipedia.org/wiki/ Network_address_translation) en utilisant netfilter/iptables     (http://fr.wikipedia.org/wiki/Netfilter) (consultez Section 5.9, « Infrastructure de netfilter ») puisse fournir un routeur économique pour le réseau local avec une seule interface, il n'y a pas, avec votre configuration, de possibilité réelle de pare-feu. Vous devriez utiliser deux interfaces physiques avec NAT afin de sécuriser le réseau local de ce qui provient d'Internet. 5.6.4. Syntaxe de commande avancée Le paquet ifupdown fournit une configuration avancée du réseau en     utilisant le nom configuration réseau et le nom interface réseau. J'utilise une terminologie un peu différente de celle utilisée dans ifup(8) et interfaces(5). Tableau 5.12. Terminologie des périphériques réseau +---------------------------------------------------------------+ |terminologie|ma |exemple dans le| | |de la page |terminologie |texte suivant :|description | |de manuel | | | | |------------+-------------+---------------+--------------------| |nom de l’ |nom de l’ | |nom donné dans le |     |interface |interface |lo, eth0, |noyau Linux | |physique |réseau ||(utilisant le | | | | |mécanisme udev) | |------------+-------------+---------------+--------------------| |nom de l’ |nom de la |config1, |noms suivants iface | |interface |configuration|config2, |dans le fichier « / | |logique |réseau | |etc/network/ | | | | |interfaces » | +---------------------------------------------------------------+ Les commandes élémentaires de configuration du réseau se trouvant dans Section 5.5.1, « La syntaxe de commande simplifiée » exigent     que le nom de la configuration réseau de l’entrée iface corresponde au nom de l’interface réseau dans le fichier « /etc/ network/interfaces ». Les commandes avancées de configuration du réseau permettent de     séparer de la manière suivante le nom de la configuration réseau et le nom de l’interface réseau dans le fichier « /etc/network/ interfaces » : Tableau 5.13. Liste des commandes avancées de configuration du réseau par ifupdown +---------------------------------------------------------------+ |commande |action | |-----------+---------------------------------------------------| |ifup eth0= |activer une interface réseau eth0 avec la | |config1 |configuration config1 | |-----------+---------------------------------------------------|     |ifdown eth0|désactiver une interface réseau eth0 avec la | |=config1 |configuration config1 | |-----------+---------------------------------------------------| |ifup eth0 |activer une interface réseau eth0 avec la | | |configuration sélectionnée par l’entrée mapping | |-----------+---------------------------------------------------| |ifdown eth0|désactiver une interface réseau eth0 avec la | | |configuration sélectionnée par l’entrée mapping | +---------------------------------------------------------------+ 5.6.5. L’entrée « mapping » Nous avons sauté l’explication de l’entrée mapping du fichier « /     etc/network/interfaces » dans la Section 5.5.2, « Syntaxe de base de « /etc/network/interfaces » » pour éviter des complications. Cette entrée possède la syntaxe suivante : mapping script     map map map ... Cela fournit une fonctionnalité avancée au fichier « /etc/network     /interfaces » en automatisant le choix de la configuration avec le script de « mapping » indiqué par .     Suivons l’exécution de ce qui suit :     $ sudo ifup eth0 Lorsque «  » correspond à « eth0 », cette     exécution lance l’exécution de la commande suivante afin de configurer automatiquement eth0 :     $ sudo ifup eth0=$(echo -e ' \n \n ...' | eth0)     Ici, les lignes d'entrée du script contenant « map » sont facultatives et peuvent être répétées. Note     Le motif générique (glob) pour l’entrée mapping fonctionne comme les motifs génériques des noms de fichiers de l’interpréteur de commandes (consultez Section 1.5.6, « Motifs génériques (« glob ») de l’interpréteur de commandes »). 5.6.6. Configuration réseau commutable manuellement Voici comment commuter manuellement entre plusieurs     configurations de réseau sans réécrire le fichier « /etc/network/ interfaces » comme dans Section 5.5.13, « Configuration réseau de base ». Créez un unique fichier « /etc/network/interfaces » tel que le     suivant pour toutes les configurations des réseaux auxquels vous désirez accéder : auto lo iface lo inet loopback iface config1 inet dhcp iface config2 inet static address 192.168.11.100 netmask 255.255.255.0 gateway 192.168.11.1 dns-domain example.com dns-nameservers 192.168.11.1     iface pppoe inet manual pre-up /sbin/ifconfig eth0 up up ifup ppp0=dsl down ifdown ppp0=dsl post-down /sbin/ifconfig eth0 down # Ce qui suit n'est utilisé que de manière interne iface dsl inet ppp provider fai_adsl iface pots inet ppp provider fai Vous remarquez que le nom de configuration de réseau qui est l’élément suivant iface n'utilise pas l’élément pour le nom     d'interface réseau. Notez aussi qu'il n'y a pas d'entrée auto ni d'entrée allow-hotplugpour démarrer automatiquement l’interface réseau eth0 sur événement.     Vous êtes maintenant prêt à commuter la configuration de votre réseau. Déplaçons votre PC vers un réseau local desservi par DHCP. Vous     activez l’interface réseau (l’interface physique) eth0 en lui assignant le nom de configuration réseau (le nom de l’interface logique) config1 de la manière suivante : $ sudo ifup eth0=config1     Password: ...     L’interface eth0 est active, configurée par DHCP et connectée au réseau local.     $ sudo ifdown eth0=config1 ...     L’interface eth0 est inactive et déconnectée du réseau local. Déplaçons votre PC vers un réseau local avec une adresse IP fixe.     Vous activez l’interface réseau eth0 en lui assignant le nom de configuration réseau config2 de la manière suivante :     $ sudo ifup eth0=config2 ... L’interface eth0 est active, configurée avec une IP statique et connectée au réseau local. Les paramètres supplémentaires donnés     sous la forme dns-* configurent le contenu de « /etc/ resolv.conf ». Ce fichier « /etc/resolv.conf » est mieux géré si le paquet resolvconf est installé.     $ sudo ifdown eth0=config2 ...     L’interface eth0 est de nouveau inactive et déconnectée du réseau local. Déplaçons votre PC sur le port d'un modem large bande connecté au     service par PPPoE. Vous activez l’interface réseaueth0 en lui assignant le nom de configuration réseau pppoe de la manière suivante :     $ sudo ifup eth0=pppoe ...     L’interface eth0 est active, configurée avec une connexion PPPoE, directement vers le FAI.     $ sudo ifdown eth0=pppoe ...     L’interface eth0 est de nouveau désactivée et déconnectée. Déplaçons votre PC à un emplacement sans réseau local et sans modem large bande mais avec un POTS et un modem (modem sur le     réseau commuté). Vous activez l’interface réseau ppp0 en lui assignant le nom de configuration réseau pots de la manière suivante :     $ sudo ifup ppp0=pots ...     L’interface ppp0 est active et connectée à Internet par PPP.     $ sudo ifdown ppp0=pots ...     L’interface ppp0 est inactive est déconnectée d'Internet.     Vous devriez vérifier l’état actuel de la configuration du réseau du système ifupdown dans le fichier « /etc/network/run/ifstate ». Avertissement     Il se peut que vous ayez besoin d'ajuster le nombre à la fin de eth*, ppp*, etc. si vous avez plusieurs interfaces réseau. 5.6.7. Scripts avec le système ifupdown Le système ifupdown lance automatiquement les scripts qui sont     installés dans « /etc/network/*/ » en exportant les variables d'environnement vers les scripts. Tableau 5.14. Liste des variables d'environnement passées par le système ifupdown +---------------------------------------------------------------+ |variable |valeur passée | |d'environnement| | |---------------+-----------------------------------------------| |« $IFACE » |nom physique (nom d'interface) de l’interface | | |en cours de traitement | |---------------+-----------------------------------------------| |« $LOGICAL » |nom logique (nom de configuration) de | | |l’interface en cours de traitement | |---------------+-----------------------------------------------| |« $ADDRFAM » | de l’interface | |---------------+-----------------------------------------------| |« $METHOD » | de l’interface. (par exemple | | |« static ») |     |---------------+-----------------------------------------------| |« $MODE » |«  » si lancé depuis ifup, « stop » si lancé | | |depuis ifdown | |---------------+-----------------------------------------------| | |comme pour « $MODE » mais avec une plus faible | |« $PHASE » |granularité permettant de distinguer les phases| | |pre-up, post-up, pre-down et post-down | |---------------+-----------------------------------------------| |« $VERBOSITY » |indique si « --verbose » a été utilisé. | | |Positionnée à 1 dans ce cas, à 0 sinon | |---------------+-----------------------------------------------| | |chemin de recherche de la commande : « /usr/ | |« $PATH » |local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/ | | |sbin:/bin » | |---------------+-----------------------------------------------| |« $IF_