[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ A ] [ suivant ]

Guide de référence rapide pour Debian
Chapitre 3 - Gestion des paquets Debian


Pour réduire la charge réseau des dépôts Debian, configurez un proxy HTTP local en utilisant squid pour les paquets téléchargés par APT et, si nécessaire, positionnez la variable d'environnement http_proxy ou la variable http dans /etc/apt/apt.conf. Cela permet d'améliorer considérablement les performances de la mise à jour réseau, surtout avec plusieurs machines Debian sur un LAN.

Bien que la fonction de pinning de apt_preferences(5) soit puissante, cela ne résoud pas tous les problèmes de dépendances, car les définitions de dépendances ont tendance à chercher de nouvelles version d'autres programmes fondamentaux.

L'utilisation de chroot est utile pour simultanément assurer à la fois la stabilité du système et l'accès aux dernières versions des programmes.

Ce chapitre est basé sur un système Woody, mais la plupart des informations s'appliquent aussi à un système Potato (sauf apt_preferences(5) et les sujets relatifs à /etc/apt/preferences).


3.1 Introduction

Si lire toute la documentation pour les développeurs est trop pour vous, lisez d'abord ce chapitre et commencez à goûter à la puissance de Debian avec testing/unstable :-)


3.1.1 Outils principaux

     dselect   – outil de gestion des paquets à l'aide de menus (haut niveau)
     dpkg      – installation de paquets (focalisé sur les fichiers de
                       paquets)
     apt-get   – installation de paquets (focalisé sur les archives de
                       paquets, interface en ligne de commande pour APT)
     tasksel   – installation de tâches (ensemble de paquets)
     aptitude  – installation de paquets (paquets et tâches, interface
                       ncurses pour APT)
     deity     – autre interface ncurses pour APT
     synaptic, gsynaptic – autres interfaces graphiques pour APT

Ces outils ne sont pas de même niveau. dselect tourne au-dessus d'APT (en ligne de commande : apt-get) et dpkg.

APT utilise /var/lib/apt/lists/* pour suivre les paquets disponibles tandis que dpkg utilise /var/lib/dpkg/available. Si vous avez installé des paquets directement en utilisant apt-get ou un programme similaire tel que aptitude, assurez-vous de mettre à jour le fichier /var/lib/dpkg/available par le menu [U]pdate de dselect ou avec la commande shell dselect update avant d'exécuter dselect select, tasksel ou dpkg -l.

Quant aux dépendances de paquets, apt-get récupère automatiquement les paquets marqués depends mais ne s'occupe pas des paquets marqués recommends et suggests, alors que dselect offre un contrôle avancé par menus sur le choix de ces paquets, et offre le choix des paquets en fonction des priorités depends, recommends et suggests. aptitude offre une option pour récupérer automatiquement les paquets marqués depends, recommends et suggests.


3.1.2 Outils pratiques

     apt-cache         - recherche un paquet dans le cache local
     dpkg-reconfigure  - reconfigure un paquet déjà installé (s'il utilise debconf)
     dpkg-source       - gère les paquets sources
     dpkg-buildpackage - automatise la création d'un paquet
     ...

3.2 Bases de la gestion de paquets Debian

Vous pouvez installer des ensemble de paquets appelés tâches ou installer des paquets individuels ou mettre à jour votre système en utilisant des outils de gestion de paquets comme ci-dessous.


3.2.1 Installation de tâches avec tasksel ou aptitude

tasksel est l'Installateur de Tâches Debian, qui est offert comme option simple pendant l'installation du système.

Si on souhaite installer une fonction courante qui requiert plusieurs paquets, c'est le meilleur moyen. Assurez-vous d'exécuter les commandes dans l'ordre suivant :

     # dselect update
     # tasksel

aptitude offre aussi accès aux tâches. Cela vous permet de sélectionner des tâches mais aussi de désélectionner des paquets de la tâche par le menu.


3.2.2 Configurer le système APT

Si vous essayez d'utiliser un environnement mixte comme décrit ici, il se peut que vous rencontriez des conflits de dépendances. Ce n'est pas une bonne idée de mélanger les versions. Ce qui suit est pour ceux qui veulent expérimenter en connaissant les risques.

Pour une mise à jour sélective en fonctionnant avec la distribution testing, le système APT (>Woody) doit être configuré comme dans Transition de APT vers la version de Woody, Section 2.1 pour utiliser les possibilités de apt_preferences(5).

D'abord, ajoutez les sources pour stable, testing et unstable à votre fichier /etc/apt/sources.list. Ensuite, éditez /etc/apt/preferences pour configurer la bonne Pin-Priority. [1]

     Package: *
     Pin: release a=stable
     Pin-Priority: 500
     
     Package: *
     Pin: release a=testing
     Pin-Priority: 600
     
     Package: *
     Pin: release a=unstable
     Pin-Priority: 50

3.2.3 dselect

Quand dselect est lancé, il sélectionne automatiquement tous les paquets « Required », « Important » et « Standard ». Sur le système Potato, certains programmes, comme teTeX et Emacs, appartenaient à cette liste et il valait mieux ne pas les sélectionner lors de l'installation initiale en les désélectionnant manuellement (en tapant « _ »). Dans Woody, ils ont été déplacés dans la catégorie « Optional ».

dselect a une interface utilisateur déroutante. Quatre commandes importantes (en majuscules !) :

     Touche      Action
     Q           Quitter. Confirme la sélection courante et quitte 
                 (passe outre les dépendances).
     R           Rétablir. Je ne voulais pas faire ça.
     D           (Damn it!) Je me fiche de ce que dselect pense. Fais comme ça !
     U           Positionne tout dans l'état sUggéré.

Avec D et Q, vous pouvez sélectionner des paquets en conflit à vos risques et périls. Faites attention en utilisant ces commandes. Aujourd'hui, dselect est un outil de sélection par menus mûr qui offre un contrôle précis sur les choix de paquets suggests et recommends.

Ajoutez une ligne « expert » dans /etc/dpkg/dselect.cfg pour réduire la quantité d'informations affichée. Pour une machine plus lente, vous pouvez lancer dselect sur une machine plus rapide pour trouver les paquets et utiliser apt-get install pour les installer.

dselect n'offre pas accès aux paquets qui ne sont pas préférés par la Pin-Priority.


3.2.4 aptitude

aptitude est un nouvel installateur de paquets par menus, similaire à dselect. Il peut aussi être utilisé comme alternative à dselect en ligne de commande. Voir aptitude(1).

aptitude accepte des commandes à une touche, généralement en minuscule.

     Touche   Action
     F10      Menu
     ?        Aide
     u        Mise à jour des informations de l'archive de paquets
     g        Téléchargement et installation des paquets sélectionnés
     q        Sortie de l'écran courant et sauvegarde des changements
     x        Sortie de l'écran courant sans sauvegarde
     Enter    Visualisation d'information sur un paquet

aptitude offre une option pour récupérer tous les paquets automatiquement en se basant sur les priorités depends, recommends et suggests. Vous pouvez changer ce comportement en choisissant F10 -> Options -> Dependency handling dans le menu.

aptitude offre accès à toutes les versions des paquets.


3.2.5 Commandes apt-cache et apt-get

Pour fonctionner avec testing comme décrit dans l'exemple précédent, le système peut être géré avec les commandes suivantes :

Dans les exemples précédents, l'utilisation de l'option -u permet qu'apt-get affiche la liste des paquets qui seront mis à jour et demande à l'utilisateur de confirmer avant de continuer. Ce qui suit permet de configurer l'option -u par défaut :

     $ cat >> /etc/apt/apt.conf << .
     // Always show packages to be upgraded (-u)
     APT::Get::Show-Upgraded "true";
     .

Utilisez l'option -s pour simuler la mise à jour sans l'effectuer.


3.2.6 Suivre une version de la distribution Debian

Selon vos préférences sur la version de Debian à suivre, vous pouvez changer le fichier /etc/apt/preferences d'exemple dans Configurer le système APT, Section 3.2.2 pour refléter vos besoins :

     suivre stable :            changer Pin-Priority de testing à 50
     suivre testing :           garder la configuration présentée
     suivre testing(unstable) : changer Pin-Priority de unstable à 500
     suivre unstable(testing) : changer Pin-Priority de unstable à 800

Une idée pour le choix de Pin-Priority est de descendre la table ci-dessus au fur et à mesure que le temps après une sortie de la distribution stable avance vers le moment de geler la sortie suivante.

Attention : suivre la version testing de Debian a l'effet de bord de recevoir très lentement les correctifs de sécurité.

Si vous mélangez les versions de Debian, testing dans stable ou unstable dans stable, vous pourriez récupérer sans le vouloir des paquets importants de testing ou unstable qui peuvent être bogués. Vous êtes prévenus.

Des exemples de /etc/apt/preferences qui bloquent certains paquets importants dans leur version la plus stable en suivant la version moins stable d'autres paquets non essentiels sont disponibles dans le sous-répertoire d'exemples dans les fichiers preferences.testing et preferences.unstable. Aussi, le fichier preferences.stable force tous les paquets à faire une mise à niveau inférieur vers stable.


3.2.7 Mettre à niveau inférieur tous les paquets vers stable

Pour faire une mise à niveau inférieur vers stable, éditez /etc/apt/preferences comme suit :

     Package: *
     Pin: release a=stable
     Pin-Priority: 1001

et lancez apt-get upgrade, ce qui force la mise à niveau inférieur grâce à Pin-priority > 1000. Attention, cela peut entraîner de petites erreurs au niveau des dépendances.


3.2.8 Vue générale de /etc/apt/preferences

Dans le fichier /etc/apt/preferences d'exemple présenté dans Configurer le système APT, Section 3.2.2, la première ligne « Package: * » signifie que cette section s'applique à tous les paquets. Vous pouvez utiliser un nom de paquet spécifique à la place de « * » pour spécifier la Pin-Priority de ce paquet.

La deuxième ligne « Pin: release a=stable » signifie que apt-get récupère le fichier Packages.gz de l'archive contenant le fichier Release contenant la ligne « Archive: stable ».

La dernière ligne « Pin-Priority: 500 » spécifie une Pin-Priority de 500.

S'il existe plusieurs paquets de même nom, normalement celui ayant la plus grande Pin-Priority est intallé.

Les significations de Pin-Priority sont :

Le même effet que --target-release peut être obtenu en configurant /etc/apt/apt.conf :

     # echo 'APT::Default-Release "testing";' >> /etc/apt/apt.conf

L'option de ligne de commande --target-release et l'option dans /etc/apt/apt.conf ont priorité sur l'option dans /etc/apt/preferences. Faites attention avec ces interférences quand vous jouez avec /etc/apt/preferences.


3.3 Commandes de survie Debian

Avec ces connaissances, on peut vivre une vie d'éternelle « mise à jour » :-)


3.3.1 Rechercher les bogues de Debian et demander de l'aide

Si vous avez des problèmes avec un paquet, consultez ces sites en premier avant de demander de l'aide ou de remplir un rapport de bogue. (lynx, links et w3m fonctionnent bien) :

     $ lynx http://bugs.debian.org/
     $ lynx http://bugs.debian.org/package-name  # si vous connaissez le nom du paquet
     $ lynx http://bugs.debian.org/bugnumber     # si vous connaissez le numéro du bogue

Utilisez le moteur de recherche Google (www.google.com) en incluant « site:debian.org » comme mot-clé.

En cas de doute, lisez la documentation. Positionnez CDPATH comme suit :

     export CDPATH=.:/usr/local:/usr/share/doc

et tapez

     $ cd packagename
     $ pager README.Debian # s'il existe
     $ mc

3.3.2 Résolution de problèmes de mise à jour avec APT

Des problèmes de dépendances peuvent arriver lors de la mise à jour avec unstable/testing, comme décrit dans Mise à jour du système Debian, Section 2.3. La plupart du temps, c'est parce qu'un paquet qui doit être mis à jour possède une dépendance qui n'est pas trouvée. Ces problèmes sont résolus en utilisant

     # apt-get dist-upgrade

Si cela ne marche pas, répétez les opérations suivantes jusqu'à ce que le problème se résolve tout seul :

     # apt-get upgrade -f         # continue « upgrade » malgré les erreurs
     ... ou
     # apt-get dist-upgrade -f    # continue « dist-upgrade » malgré les erreurs

De mauvais scripts de mise à jour peuvent causer des problèmes récurrents. Il est recommandé de résoudre ce genre de situations en consultant les scripts /var/lib/dpkg/info/packagename.{post,pre}{inst,rm} du paquet en question et de lancer :

     # dpkg --configure -a    # configure les paquets partiellement installés

Si un script se plaint d'un fichier de configuration manquant, cherchez dans /etc le fichier de configuration correspondant. Si un fichier de configuration avec une extension .new (ou quelquechose similaire) existe, renommez-le (mv) en un fichier sans suffixe.

Des problèmes de dépendances peuvent survenir en installant des paquets de unstable/testing. Il existe des moyens de passer outre les dépendances.

     # apt-get install -f package # passe outre les dépendances non résolues

Une autre méthode pour résoudre ces problèmes est d'utiliser le paquet equivs. Voir Le paquet equivs, Section 3.5.2. Voir /usr/share/doc/equivs/README.Debian.


3.3.3 Sauvetage avec dpkg

La récupération d'un dselect (APT) qui ne fonctionne plus en utilisant dpkg sans APT est possible sur un système complètement cassé :

     # cd /var/cache/apt/archives
     # dpkg -i libc6* libdb2* perl*
     # dpkg -i apt* dpkg* debconf*
     # dpkg -i *  # jusqu'à ce qu'il n'y ait plus d'erreurs

Si un paquet manque, récupérez-le avec :

     # mc            # utilisez « FTP link » vers un serveur FTP Debian

Les paquets sur le serveur HTTP/FTP peuvent ne pas être localisés sous le répertoire habituel /dist mais sous le nouveau répertoire /pool.

Installez ensuite avec :

     # dpkg -i /var/cache/apt/archives/packagefile.deb

Pour une dépendance non résolue, résolvez-la ou utilisez :

     # dpkg --ignore-depends=package1,... -i packagefile.deb
     # dpkg --force-depends -i packagefile.deb
     # dpkg --force-depends --purge package
     # dpkg --force-confmiss -i packagefile.deb # Installe fichier de configuration manquant

3.3.4 Récupérer les données de sélection des paquets

Si /var/lib/dpkg/status est corrompu, le système Debian perd les données de sélection des paquets et en est grandement affecté. Cherchez le vieux fichier /var/lib/dpkg/status dans /var/lib/dpkg/status-old ou /var/backups/dpkg.status.*.

Garder /var/backups/ dans une partition séparée peut être une bonne idée puisque ce répertoire contient beaucoup de données système importantes.

Si le vieux fichier /var/lib/dpkg/status n'est pas disponible, vous pouvez quand même récupérer les données depuis des répertoires de /usr/share/doc/.

     # ls /usr/share/doc | \
       grep -v [A-Z] | \
       grep -v '^texmf$' | \
       grep -v '^debian$' | \
       awk '{print $1 " install"}' | \
       dpkg --set-selections
     # dselect --expert # réinstallez le système, utilisez dselect si besoin

3.3.5 Sauver un système après avoir perdu /var

Comme le répertoire /var contient des données mises à jour régulièrement, comme le mail, il peut se corrompre. Le placer dans une partition indépendante limite les risques. Si le pire arrive, vous pouvez avoir à reconstruire le répertoire /var pour sauver le système Debian.

Obtenez la structure du répertoire /var à partir d'un système Debian qui fonctionne, basé sur la même ou une plus ancienne version de Debian, par exemple /var, et placez la à la racine du système cassé. Ensuite

     # cd /
     # mv var var-old      # s'il reste des données utiles
     # tar xvzf var.tar.gz # utilisez la structure de Woody
     # aptitude            # ou dselect

Cela doit fournir un système qui fonctionne. Vous pouvez récupérer les sélections de paquets en utilisant la technique décrite à Récupérer les données de sélection des paquets, Section 3.3.4. ([FIXME]: Cette procédure nécessite plus de tests.)


3.3.6 Installer un paquet sur un système qui ne démarre plus

Démarrez Linux en utilisant une disquette/CD de sauvetage Debian ou une autre partition sur un système Linux multi-boot. Montez le système qui ne démarre plus sur /target et utilisez le mode d'installation chroot de dpkg.

     # dpkg --root /target -i packagefile.deb

Configurez ensuite et résolvez les problèmes.

Au fait, si c'est seulement un lilo cassé qui empêche le démarrage, vous pouvez démarrer avec le disque de sauvetage standard Debian. A l'invite de démarrage, en considérant que la partition racine de Linux est sur /dev/hda12 et que vous souhaitez le niveau de fonctionnement 3, entrez :

     boot: rescue root=/dev/hda12 3

Vous avez maintenant démarré un système presque complètement fonctionnel avec le noyau de la disquette. (Il peut y avoir de petits problèmes dus au manque d'options du noyau ou de modules.)


3.3.7 Que faire si dpkg est cassé

Cela pose de sérieux problèmes pour l'installation des fichiers .deb. Les commandes suivantes vous guident pour récupérer cette situation. (Sur la première ligne, vous pouvez remplacer « links » par votre navigateur favori.)

     $ links http://http.us.debian.org/debian/pool/main/d/dpkg/
       ... téléchargez le bon dpkg_version_arch.deb
     $ su
     password: *****
     $ ar x dpkg_version_arch.deb
     # mv data.tar.gz /data.tar.gz
     # cd /
     # tar xzfv data.tar.gz

Pour une machine i386, http://packages.debian.org/dpkg peut aussi être utilisé comme URL.


3.4 Commandes « nirvana » de Debian

A la lumière de ces commandes, on sera sauvé de l'éternelle lutte karmique contre l'enfer de la mise à jour afin d'atteindre le nirvana Debian. :-)


3.4.1 Informations sur un fichier

De l'information sur un fichier peut être trouvée avec :

     $ dpkg {-S|--search} pattern # cherche « pattern » dans les paquets installés
     $ zgrep -e pattern /local/copy/of/debian/woody/Contents-i386.gz
                  # cherche « pattern » dans les fichiers de l'archive Debian

Sinon, utilisez les commandes spécialisées pour les paquets :

     # apt-get install dlocate
                      # crée un conflit avec slocate (version sécurisée de locate)
     $ dlocate filename         # solution de rechange rapide pour dpkg -L et dpkg -S
     ...
     # apt-get install auto-apt # outil d'installation de paquets à la demande
     # auto-apt update          # crée le fichier db pour auto-apt
     $ auto-apt search pattern
                     # recherche exhaustive dans l'archive de paquets, installés ou non

3.4.2 Informations sur un paquet

Cherche et affiche les informations sur un paquet. Assurez-vous qu'apt pointe vers la bonne archive en éditant /etc/apt/sources.list. Si vous voulez voir les différences entre un paquet de testing/unstable et un paquet installé, utilisez apt-cache policy—plutôt sympa.

     # apt-get   check         # met à jour le cache et vérifie les dépendances
     $ apt-cache search  texte  # cherche un paquet à partir de "texte"
     $ apt-cache policy  paquet # information sur la priorité d'un paquet
     $ apt-cache show -a paquet # affiche la description d'un paquet
                                             dans toutes les distributions
     $ apt-cache showpkg paquet # informations de debogage sur un paquet
     # dpkg  --audit|-C         # cherche les paquets partiellement installés
     $ dpkg {-s|--status} paquet ... # état et description d'un paquet installé
     $ dpkg -l paquet ...       # état du paquet installé (1 ligne)
     $ dpkg -L paquet ...       #liste les noms de fichiers installés par le paquet

apt-cache showsrc n'est pas documenté à la sortie de Woody, mais fonctionne :)

Vous pouvez aussi trouver des informations sur les paquets (j'utilise mc pour naviguer) dans :

     /var/lib/apt/lists/*
     /var/lib/dpkg/available

La comparaison des fichiers suivants fournit des informations sur ce qu'il s'est exactement passé lors des dernières installations.

     /var/lib/dpkg/status
     /var/backups/dpkg.status*

3.4.3 Installation automatique avec APT

Pour une installation non interactive, ajoutez la ligne suivante dans /etc/apt/apt.conf :

     Dpkg::Options {"--force-confold";}

C'est l'équivalent de lancer apt-get -q -y packagename. Parce que cela répond automatiquement « oui » à toutes les questions, cela peut causer des problèmes, aussi faites attention en utilisant cette astuce. Voir apt.conf(5) et dpkg(1).

Vous pouvez configurer les paquets par la suite en suivant Reconfigurer les paquets installés, Section 3.4.4.


3.4.4 Reconfigurer les paquets installés

Utilisez les commandes suivantes pour reconfigurer un paquet installé.

     # dpkg-reconfigure --priority=medium package [...]
     # dpkg-reconfigure --all   # reconfigure tous les paquets
     # dpkg-reconfigure locales # génère de nouvelles locales
     # dpkg-reconfigure --p=low xserver-xfree86 # reconfigure le serveur X

Faites cela pour debconf si vous avez besoin de changer le mode de dialogue de debconf de façon permanente.

Certains logiciels sont livrés avec des scripts de configuration.

     apt-setup     - crée /etc/apt/sources.list
     install-mbr   - installe un gestionnaire de Master Boot Record
     tzconfig      - configure le fuseau horaire local
     gpmconfig     - configure le gestionnaire de souris gpm
     sambaconfig   - configure samba dans potato (woody utilise debconf)
     eximconfig    - configure Exim (MTA)
     texconfig     - configure teTeX
     apacheconfig  - configure Apache (httpd)
     cvsconfig     - configure CVS
     sndconfig     - configure le système sonore
     ...
     update-alternatives - configure la commande par défaut ; par exemple, vim pour vi
     update-rc.d         - gestion des scripts de démarrage System-V
     update-menus        - système de menus Debian
     ...

3.4.5 Enlever et purger des paquets

Enlever un paquet en gardant la configuration :

     # apt-get remove package ...
     # dpkg  --remove package ...

Enlever un paquet et sa configuration :

     # apt-get remove --purge package ...
     # dpkg    --purge        package ...

3.4.6 Garder de vieux paquets

Par exemple, pour garder libc6 et libc6-dev lors de l'utilisation de dselect et apt-get -u upgrade paquet, on peut utiliser les commandes suivantes :

     # echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections

apt-get -u upgrade paquet ne sera pas gêné par cela. Pour garder un paquet en forçant une mise à niveau inférieur automatique avec apt-get -u upgrade paquet ou apt-get -u dist-upgrade, ajoutez ce qui suit dans /etc/apt/preferences :

     Package: libc6
     Pin: release a=stable
     Pin-Priority: 2000

Ici, l'entrée « Package: » ne peut pas utiliser d'entrées comme « libc6* ». Si vous voulez garder tous les paquets binaires liés au paquet source glibc synchronisés, il faut les lister explicitement.

La commande suivante liste les paquets à garder :

     dpkg --get-selections "*"|grep -e "hold$"

3.4.7 Système mixte stable/testing/unstable

apt-show-versions peut lister les versions des paquets disponibles dans chaque distribution.

     $ apt-show-versions | fgrep /testing | wc
     ... nombre de paquets de testing
     $ apt-show-versions -u
     ... liste de paquets qu'il est possible de mettre à jour
     $ apt-get install `apt-show-versions -u -b | fgrep /unstable`
     ... met à jour tous les paquets de unstable à leur dernière version

3.4.8 Supprimer les paquets du cache

Les installations de paquets avec APT laissent des fichiers de paquets dans le cache /var/cache/apt/archives ; ce cache doit être nettoyé.

     # apt-get autoclean # efface les fichiers de paquets inutiles
     # apt-get clean     # efface tous les fichiers de paquets du cache

3.4.9 Enregistrer/copier la configuration du système

Pour faire une copie locale de l'état de la sélection des paquets :

     $ dpkg --get-selections "*" >myselections   # ou utiliser \*

"*" inclut aussi les noms des paquets à purger dans myselections.

Vous pouvez transférer ce fichier vers un autre ordinateur, et l'installer avec :

     # dselect update
     # dpkg --set-selections <myselections
     # apt-get -u dselect-upgrade    # ou dselect install

3.4.10 Porter un paquet vers le système stable

Pour des mises à jour partielles du système stable, recréer un paquet pour l'environnement utilisé à partir des sources est recommandé. Cela évite de nombreuses mises à jour de paquets à cause des dépendances. D'abord, ajouter l'entrée suivante dans /etc/apt/sources.list :

     deb-src http://http.us.debian.org/debian testing \
      main contrib non-free
     deb-src http://non-us.debian.org/debian-non-US testing/non-US \
      main contrib non-free
     deb-src http://http.us.debian.org/debian unstable \
      main contrib non-free
     deb-src http://non-us.debian.org/debian-non-US unstable/non-US \
      main contrib non-free

Chaque entrée de deb-src est ici scindée en deux lignes à cause de contraintes d'impression, mais les entrées réelles dans sources.list doivent tenir en une seule ligne.

Ensuite, récupérez les sources et construisez un paquet :

     $ apt-get update  # met à jour la liste des paquets source
     $ apt-get source package
     $ dpkg-source -x package.dsc
     $ cd package-version
       ... cherche parmi les paquets requis (Build-depends dans le fichier .dsc) et
           les installe. Il faut le paquet « fakeroot » aussi.
     
     $ dpkg-buildpackage -rfakeroot 
     
       ...ou (si pas de signature)
     $ dpkg-buildpackage -rfakeroot -us -uc # utilisez « debsign » ensuite si nécessaire
     
       ...ensuite pour installer
     $ su -c "dpkg -i packagefile.deb"

Normalement, il n'y a besoin d'installer que peu de paquets avec un suffixe « -dev » pour satisfaire les dépendances. debsign est dans le paquet devscripts. auto-apt peut aider à résoudre les dépendances. L'utilisation de fakeroot évite une utilisation non nécessaire du compte root.

Dans Woody, ces problèmes de dépendances peuvent être simplifiés. Par exemple, pour compiler le paquet source de pine :

     # apt-get build-dep pine
     # apt-get source -b pine

3.4.11 Archive locale de paquets

Afin de créer une archive locale de paquets qui soit compatible avec les systèmes APT et dselect, un fichier Packages doit être créé et les fichiers de paquets ont besoin d'être archivés dans un arbre de répertoires particulier.

Un dépôt local similaire à une archive officielle Debian peut être créé avec :

     # apt-get install dpkg-dev
     # cd /usr/local
     # install -d pool # les paquets physiques sont placés ici
     # install -d dists/unstable/main/binary-i386
     # ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override
     # editor override # ajustez priority et section
     # dpkg-scanpackages pool override /usr/local/ \
        > dists/unstable/main/binary-i386/Packages
     # cat > dists/unstable/main/Release << EOF
     Archive: unstable
     Version: 3.0
     Component: main
     Origin: Local
     Label: Local
     Architecture: i386
     EOF
     # echo "deb file:/usr/local unstable main" \
        >> /etc/apt/sources.list

Autrement, un dépôt local peut être créé de façon rapide et sale :

     # apt-get install dpkg-dev
     # mkdir /usr/local/debian
     # mv /some/where/package.deb /usr/local/debian
     # dpkg-scanpackages /usr/local/debian /dev/null | \
       gzip - > /usr/local/debian/Packages.gz
     #  echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list

Ces archives peuvent être accédées à distance en fournissant ces répertoires aux méthodes HTTP ou FTP des entrées du fichier /etc/apt/sources.list.


3.4.12 Convertir ou installer un paquet non Debian

alien permet de convertir des paquets binaires fournis aux formats rpm de Redhat, slp de Stampede, tgz de Slackware, et pkg de Solaris en paquet deb de Debian. Si vous voulez utiliser un paquet d'une autre distribution Linux, vous pouvez utiliser alien pour le convertir vers votre format de paquet préféré et l'installer. alien supporte aussi les paquets LSB.


3.4.13 Vérifier les fichiers de paquets installés

debsums permet la vérification des fichiers de paquets installés grâce à des sommes de contrôle MD5. Certains paquets n'ont pas de somme de contrôle MD5. Une solution temporaire pour les administrateurs système :

     # cat >>/etc/apt/apt.conf.d/90debsums
     DPkg::Post-Install-Pkgs {"xargs /usr/bin/debsums -sg";};
     ^D

par Joerg Wendland joergland@debian.org (non testé).


3.5 Autres particularités de Debian


3.5.1 La commande dpkg-divert

dpkg-divert force dpkg à ne pas installer un fichier à sa place par défaut, mais à une place détournée. Les détournements peuvent être utilisés dans les scripts de paquets Debian pour déplacer un fichier qui crée un conflit. Les administrateurs système peuvent utiliser ceci pour recouvrir les fichiers de configuration d'un paquet, ou lorsque des fichiers (non marqués conffiles) ont besoin d'être préservés par dpkg, lors de l'installation d'une version plus récente d'un paquet qui contient ces fichiers.

     # dpkg-divert [--add]  filename # ajoute un détournement
     # dpkg-divert --remove filename # supprime un détournement

Ne pas utiliser dpkg-divert si cela n'est pas absolument nécessaire.


3.5.2 Le paquet equivs

Si vous compilez un programme depuis les sources, il est mieux d'en faire un paquet Debian (*.deb). equivs est le dernier recourt.

     Package: equivs
     Priority: extra
     Section: admin
     Description: Passer outre les dépendances de paquets.
      C'est un paquet qui peut être utilisé pour créer des paquets Debian qui ne
      contiennent que des informations sur les dépendances.

3.5.3 Commandes de rechange

Pour utiliser vim à la place de vi, utilisez update-alternatives :

     # update-alternatives --display vi
     ...
     # update-alternatives --config vi
       Selection    Command
     -----------------------------------------------
           1        /usr/bin/elvis-tiny
           2        /usr/bin/vim
     *+    3        /usr/bin/nvi
     
     Enter to keep the default[*], or type selection number: 2

Les commandes de rechange du système sont maintenues dans /etc/alternatives en tant que liens symboliques.

Pour avoir votre environnement de fenêtres X favori, appliquez update-alternatives à /usr/bin/x-session-manager et /usr/bin/x-window-manager.

/bin/sh est un lien direct de /bin/bash ou /bin/ash. Il est plus sûr d'utiliser /bin/bash pour garder la compatibilité avec de vieux scripts bash mais /bin/ash permet d'être plus discipliné et d'être compatible POSIX. La mise à jour vers un noyau Linux 2.4 a tendance à positionner ce lien vers /bin/ash.


3.5.4 init System-V et niveaux de fonctionnement

Le niveau de fonctionnement par défaut peut être configuré dans /etc/inittab.

Contrairement à d'autres distributions, Debian laisse la gestion des niveaux de fonctionnement complètement à l'administrateur. La gestion de init de type System-V est sensée être effectuée par les scripts update-rc.d.

Démarrer /etc/init.d/name dans les niveaux 1, 2, 3 et le stopper dans les niveaux 4, 5 avec une priorité de 20 (normal) peut se faire avec :

     # update-rc.d name start 20 1 2 3 . stop 20 4 5 .

Enlever le lien symbolique alors que le script dans init.d existe toujours peut se faire avec :

     # update-rc.d -f name remove

Pour éditer le niveau de fonctionnement, je triche. J'édite manuellement en utilisant la commande mv à l'invite shell de mc et je copie les liens avec Alt-Entrée. Par exemple :

     # mv S99xdm K99xdm # désactive xdm (X display manager)

Je désactive même un daemon en insérant exit 0 au début du script init.d. Après tout, ce sont des fichiers de configuration.


3.5.5 Services désactivés

La distribution Debian prend très au sérieux la sécurité du système et s'attend à ce que l'administrateur soit compétent. Ainsi, la facilité d'utilisation est quelquefois mise en second plan et certains services fournis par des daemons sont livrés avec le niveau de sécurité le plus élevé, avec le moins de services (voire aucun) disponibles dans leur état d'installation par défaut.

Exécutez ps aux ou consultez le contenu de /etc/init.d/* et /etc/inetd.conf, si vous avez des doutes (à propos d'Exim, DHCP, ...). De plus, consultez /etc/hosts.deny. La commande pidof est aussi utile (voir pidof(8)).

X11 ne permet pas les connexions TCP/IP (distantes) par défaut dans les versions récentes de Debian. La redirection X est aussi désactivée dans SSH.


[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ A ] [ suivant ]

Guide de référence rapide pour Debian

1.07-2, dim 11 avr 2004 08:00:07 UTC

Osamu Aoki osamu@debian.org
Coordinateur de traduction en Français : Guillaume Erbs gerbs@free.fr
Auteurs, Section A.1