doc-debian-fr-3.1.3.1/0000755000175000017500000000000010534002664013573 5ustar jeromejeromedoc-debian-fr-3.1.3.1/Makefile0000644000175000017500000000143010531165775015243 0ustar jeromejerome# Debian doc-debian-fr Makefile INSTALL = install -s .SUFFIXES = .sgml .html .txt HTML_FILES = debian-fr-howto.html\ debian-guide_fr-1.0.html\ internals.html\ policy.fr.html\ project-history.fr.html\ debian-euro-support.fr.html\ debian-manifesto.fr.html TXT_FILES =debian-fr-howto.txt\ debian-guide_fr-1.0.txt\ internals.txt\ debian-euro-support.fr.txt\ policy.fr.txt\ project-history.fr.txt\ debian-manifesto.fr.txt %.html: doc/%.sgml debiandoc2html -lfr -c $< ln -s index.fr.html $(subst sgml,html, $(notdir $<))/index.html %.txt: doc/%.sgml debiandoc2text -lfr $< index.html: doc/index.xml doc/index.xsl xsltproc doc/index.xsl doc/index.xml >index.html all: $(HTML_FILES) $(TXT_FILES) index.html clean: rm -rf *.html *.txt *sasp* *~ .PHONY : all clean install doc-debian-fr-3.1.3.1/doc/0000755000175000017500000000000010533414675014350 5ustar jeromejeromedoc-debian-fr-3.1.3.1/doc/debian-fr-howto.sgml0000644000175000017500000016613610531162043020221 0ustar jeromejerome Utiliser et configurer Debian GNU/Linux pour le français <author>Nicolas Sabouret - <email>nico@debian.org <version>16 janvier 2004 <abstract>Ce document présente les spécificités liées au français pour l'utilisation d'un système Debian GNU/Linux. <copyright>© 2001 Document in the Public Interest. Ce document est un document libre, sous licence GPL. <toc> <chapt>Avant-propos <p> Ce document présente les spécificités liées au français pour l'utilisation d'un système Debian GNU/Linux 3.0 (Woody) ou 3.1 (Sarge). Les recommandations de ce document ne sont pas applicables directement aux versions antérieures de la distribution. <p> Toute suggestion pour le compléter est la bienvenue. Vous pouvez envoyer vos propositions à l'auteur de ce document <email>nico@debian.org</email> ou sur la liste debian-user-french : <email>debian-user-french@lists.debian.org</email> <p> Pour plus d'information sur l'utilisation de GNU/Linux en français, vous pouvez consulter le Francophones-HOWTO (<file>/usr/share/doc/HOWTO/en-txt/Francophones-HOWTO.txt.gz</file>), fourni dans les paquets <package>doc-linux-text</package> et <package>doc-linux-html</package>. <p> La dernière version de ce document se trouve à l'adresse : <url id="http://www.poleia.lip6.fr/~sabouret/debian/debian-french.html" name="http://www.poleia.lip6.fr/~sabouret/debian/debian-french.html">. <p> Le fichier SGML source est disponible à l'adresse : <url id="http://www.poleia.lip6.fr/~sabouret/debian/debian-french.sgml" name="http://www.poleia.lip6.fr/~sabouret/debian/debian-french.sgml">. </chapt> <chapt>Version courte <sect>Remarques préliminaires <p>Dans ce chapitre, vous trouverez, sans aucune explication, les opérations à effectuer pour configurer l'essentiel de votre système <em>Debian GNU/Linux</em> en français. Il est destiné à tous ceux qui sont trop pressés pour vouloir comprendre ce qu'ils font... <p>L'ensemble est donné sous la forme d'une liste de commandes compatibles <prgn>sh</prgn> à recopier. Ces commandes sont données <strong>à titre indicatif</strong>. Elles peuvent ne pas fonctionner dans certains cas ou même perdre les réglages actuels du système. <em>L'auteur de ce document ne peut en aucun cas être tenu responsable de problèmes qui surviendraient suite à l'exécution de ces commandes.</em> <p>Enfin, toutes ces commandes sont à taper en tant que super-utilisateur (<tt>root</tt>). Nous vous recommandons donc la plus grande prudence. <sect>Installation et configuration des paquets requis <p> <example> apt-get install xfonts-100dpi-transcoded euro-support fontconfig apt-get --purge remove localeconf dpkg-reconfigure locales </example> Cochez <strong>au moins</strong> la ligne <tt>fr_FR@euro ISO-8859-15</tt>. Sélectionnez ensuite <tt>fr_FR@euro</tt> comme paramètre par défaut. <example> dpkg-reconfigure fontconfig </example> Activez les polices bitmap. <strong>Remarque :</strong> le paquet <package>fontconfig</package> n'est pas présent qu'en <tt>testing</tt> (Debian Sarge). Vous pouvez ignorer ce paquet si vous êtes en <tt>stable</tt> (<em>Debian 3.0 (Woody)</em>) <example> dpkg-reconfigure xserver-xfree86 </example> Choisissez la disposition <tt>fr</tt> et l'option <tt>compose:rwin</tt>. </sect> <sect>Configuration de la console <p>En mode <strong>console</strong>, tapez : <example> echo "SCREEN_FONT=lat0-16" >> /etc/console-tools/config /etc/init.d/console-screen.sh restart dpkg-reconfigure console-data </example> Choisissez <em>Select keymap from arch list</em> (en anglais), <em>azerty</em>, <em>French</em>, <em>With Euro (latin 15)</em>. </sect> <sect>Configuration de la police sous X11 <p> <example> echo "*font:-*-*-medium-r-normal--14-*-*-*-*-*-iso8859-15" >> \ /etc/X11/Xresources/xfree86-common echo "Emacs*fontSet:-*-*-medium-r-normal--14-*-*-*-*-*-iso8859-15" >> \ /etc/X11/Xresources/xfree86-common </example> Si certains de vos utilisateurs possèdent des fichiers <file>~/.xinitrc</file> ou <file>~/.xsession</file>, vous devrez soit vous assurer qu'ils appellent bien <example>xrdb -merge /etc/X11/Xresources/xfree86-common</example>, comme le fait <file>/etc/X11/Xsession</file>, soit modifier leur <file>~/.Xresources</file>. </sect> <sect>Configuration des autres applications <p>Configurez GNOME, KDE et les autres applications en suivant les instructions données au chapitre <ref id="autres">. </sect> </chapt> <chapt>Configurer les applications pour le français <sect>Principe général <p>Les applications du système <em>Debian GNU/Linux</em> utilisent des variables d'environnement pour connaître les préférences de l'utilisateur et, en particulier, la langue qu'il utilise, la manière dont il souhaite voir afficher telle ou telle chose, etc. <p>Les variables qui concernent la langue de l'utilisateur (on parle de variables de « paramètres régionaux » ou <em>locale</em> en anglais) sont les suivantes : <list> <item>La variable <tt>LANG</tt> qui permet de définir les préférences globales. La valeur par défaut est <tt>POSIX</tt> ; <item>Les variables commençant par <tt>LC</tt> (<tt>LC_TIME</tt>, <tt>LC_CTYPE</tt>, etc.) qui permettent, pour une définition globale donnée (par <tt>LANG</tt>), de définir un comportement spécifique pour un sous-composant (par exemple, l'affichage de la date) ; <item>La variable <tt>LC_ALL</tt> qui permet d'écraser toutes les autres définitions de paramètres régionaux (<tt>LANG</tt> et <tt>LC_*</tt>) : elle n'est donc utilisée que de manière temporaire lorsqu'une application a besoin d'un paramétrage spécifique ; <item>La variable <tt>LANGUAGE</tt> permet sous GNU/Linux de définir une liste de langues pour communiquer avec l'utilisateur. <p><strong>N.B. :</strong> <tt>LANGUAGE</tt> n'est pas utilisée par tous les programmes et, lorsqu'elle l'est, chaque programme l'utilise « à sa manière ». En général, elle surcharge toutes les autres variables (<tt>LANG</tt>, <tt>LC_*</tt> et <tt>LC_ALL</tt>). </list> </sect> <sect>Comment cela fonctionne <sect1>Principe général <p>L'usage sur les systèmes Unix veut que les variables <tt>LANG</tt> et <tt>LC_*</tt> soient de la forme : <example>ll_PP[.norme][@variante]</example> dans laquelle : <list> <item><tt>ll</tt> est la langue utilisée (p. ex. : <tt>fr</tt>) ; <item><tt>PP</tt> est le pays (p. ex. : <tt>FR</tt>) ; <item><tt>.norme</tt> permet de préciser la norme utilisée (p. ex. : <tt>ISO-8859-15</tt>) ; <item><tt>@variante</tt> permet de préciser qu'il s'agit d'une variante (p. ex. : <tt>fr_FR.ISO-8859-15@euro</tt> pour le français de France, encodé suivant la norme ISO-8859-15, avec la touche et le symbole euro). </list> Pour des raisons de compatibilité, la <prgn>glibc</prgn> accepte encore l'ancienne forme : <tt>ll_PP[@variante][.norme]</tt>. <p>La variable <tt>LANGUAGE</tt> est une liste de <tt>ll</tt>, <tt>ll_PP</tt> ou <tt>ll_PP@variante</tt> séparées par le symbole « <tt>:</tt> ». Elle définit un ensemble de langues pour communiquer avec l'utilisateur. Par conséquent, ces langues ne peuvent pas utiliser un codage différent de celui utilisé pour les caractères en entrées (ce que vous tapez sur le clavier), défini dans la variable <tt>LC_CTYPE</tt>. <p>Enfin, il est possible mais <strong>non souhaitable</strong> de définir des « alias » dans le fichier <file>/etc/locale.alias</file> pour l'ensemble du système et dans <file>/usr/X11R6/lib/X11/locale/locale.alias</file> pour <em>X window</em>. Par exemple : <tt>french fr_FR.ISO-8859-1</tt> permet d'utiliser « french » au lieu de « fr_FR.ISO-8859-1 ». <p>Les développeurs de la <prgn>glibc</prgn> déconseillent fortement l'usage de ces fichier <file>aliases</file>. </sect1> <sect1>Exemples <p>L'exemple suivant illustre l'interaction entre <tt>LANG</tt>, <tt>LC_*</tt> et <tt>LC_ALL</tt> : <example> $ export LC_ALL=es_ES $ export LANG=french $ locale LANG=french LC_CTYPE="es_ES" LC_NUMERIC="es_ES" LC_TIME="es_ES" LC_COLLATE="es_ES" LC_MONETARY="es_ES" LC_MESSAGES="es_ES" LC_ALL=es_ES $ unset LC_ALL $ locale LANG=french LC_CTYPE="french" LC_NUMERIC="french" LC_TIME="french" LC_COLLATE="french" LC_MONETARY="french" LC_MESSAGES="french" LC_ALL= $ unset LANG $ locale LANG=POSIX LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_ALL= </example> Soulignons que lorsqu'une variable est entre guillemets droits, comme c'est le cas pour les variables <tt>LC_*</tt> dans les exemples ci-dessus, c'est pour indiquer qu'elle n'a pas été définie directement, mais qu'elle hérite sa valeur d'une autre variables (<tt>LANG</tt> ou <tt>LC_ALL</tt>). <p>L'exemple suivant illustre l'utilisation de <tt>LANGUAGE</tt> : <example> $ export LANGUAGE=zz:de:fr:es; $ man truc Kein Manual-Eintrag für truc vorhanden </example> Ceci quelle que soit la valeur des autres paramètres régionaux. </sect> <sect>Configurer l'ensemble du système <p>Avant toute chose, vous devrez fabriquer les fichiers de définition des paramètres régionaux que vous souhaitez utiliser. Le principe est le suivant : vous déclarez les paramètres régionaux que vous utilisez dans le fichier <file>/etc/locale.gen</file> et vous les construisez avec <prgn>locale-gen</prgn>. <p>Ensuite, il vous faut positionner la variable LANG (et <strong>uniquement</strong> celle-ci) sur l'un de ces paramètres régionaux, dans le fichier <file>/etc/environment</file> (utilisé par les interpréteurs de commandes pour définir les variables lors de la connexion). <p>Depuis la version 3.0, la configuration du système sous <em>Debian GNU/Linux</em> est presque entièrement automatisée, d'une part en utilisant le plus possible <prgn>debconf</prgn>, et d'autre part en proposant des paquets adéquats. Vous pouvez toujours effectuer les modifications nécessaires à la main, mais je vous recommande de passer autant que possible par <prgn>dpkg-reconfigure</prgn>. <p>Les deux étapes (création des définitions des paramètres régionaux et positionnement de LANG) se font alors simplement à l'aide de la commande suivante (sous <tt>root</tt>) : <example> dpkg-reconfigure locales </example> Cochez <strong>au moins</strong> le paramètre correspondant à votre langue (fr) et votre pays (FR, BE, LU, etc.), avec ou sans l'euro. Par exemple : <tt>fr_FR@euro ISO-8859-15</tt> Sélectionnez ensuite <tt>fr_FR@euro</tt> (ou la valeur de votre choix) comme paramètre par défaut pour l'ensemble du système. <p><strong>Note :</strong> Lors d'une première installation du paquet <package>locales</package> sous <em>Debian 3.0 (Woody)</em>, les fichiers de définition des paramètres régionaux ne sont pas générées proprement. Il suffit de reconfigurer le paquet comme indiqué ci-dessus pour que tout rentre dans l'ordre. <sect1>Et la variable <tt>LANGUAGE</tt> ? <p>La variable LANGUAGE n'est <em>a priori</em> pas nécessaire si LANG a été définie et si vous n'utilisez qu'une seule langue (le français). Toutefois, vous pouvez ajouter <tt>LANGUAGE=fr</tt> dans le fichier <file>/etc/environment</file>. </sect1> <sect1>Et la variable <tt>LC_ALL</tt> ? <p>La variable LC_ALL <strong>ne doit pas</strong> être définie. Elle est utilisée dans les applications pour modifier temporairement les paramètres régionaux en surchargeant LANG et les autres LC_XXX. Par contre, vous pouvez parfaitement vouloir lire la date en espagnol et les messages d'erreur en anglais. Positionnez les variables LC_XXX correspondantes... </sect1> </sect> <sect>Modifier la configuration pour chaque utilisateur séparément <p>Quelle que soit la configuration du système, chaque utilisateur peut choisir de travailler avec des paramètres régionaux différents, à condition que les fichiers de définition correspondants aient été générés. <p>Tomohiro KUBOTA a réalisé un paquet spécifique pour permettre aux utilisateurs non anglophones de définir leur propre environnement. Il s'agit du paquet <package>language-env</package>, installé automatiquement par <prgn>tasksel</prgn> si vous sélectionnez la tâche <em>Environment français</em> (ou <em>French environment</em> en anglais). <p>Chaque utilisateur peut configurer son environnement pour utiliser la langue de son choix. Pour cela, il suffit d'appeler : <example>set-language-env</example> et de répondre aux questions posées. Les différents fichiers de configuration sont alors modifiés pour prendre en compte les nouvelles préférences. <p><strong>Remarque :</strong> <prgn>set-language-env</prgn> n'est nécessaire que si des utilisateurs veulent utiliser une configuration différente de celle qui a été adoptée pour l'ensemble du système. Dans le cas contraire, le positionnement de <tt>LANG</tt> dans <file>/etc/environment</file> est suffisant. </sect> <sect>Configurer son système pour le symbole « euro » <p>Les instructions données dans le présent document permettent d'utiliser le symbole « euro » dans les applications. <p>De plus, Javier Fernández-Sanguino Peña a construit un paquet <package>euro-support</package> qui permet de configurer automatiquement votre système pour utiliser le symbole « euro », ainsi qu'une documentation disponible en ligne à l'adresse <url id="http://www.debian.org/doc/manuals/debian-euro-support/" name="http://www.debian.org/doc/manuals/debian-euro-support/"> qui détaille les opérations nécessaires pour utiliser le symbole « euro » sous Debian GNU/Linux. </sect> </chapt> <chapt>Configurer l'entrée et la sortie en français <sect>Principe général <p>Chaque caractère est représenté dans l'ordinateur par un code (de 7, 8 ou 16 bits selon le « codage » choisi). Il faut donc définir : <list> <item>quel code doit être associé avec telle touche ou combinaison de touches tapées sur le clavier (on parle de la « carte du clavier »). C'est l'<em>entrée</em> ; <item>quel caractère (quel « dessin ») doit être affiché à l'écran pour tel code (on parle de la « table des caractères »). C'est la <em>sortie</em>. </list> <p>Par défaut, le système Debian GNU/Linux est configuré pour un clavier anglais (lors de l'installation, vous avez cependant pu en sélectionner un autre) et l'affichage des caractères suivant la carte américaine. Il faut donc reconfigurer l'entrée et la sortie (ES). <p>De plus, il n'existe pas de méthode de configuration de l'ES commune à la console et à X11 <footnote>Ce choix peut sembler particulièrement absurde mais sa raison est simple. Sous X, il est possible de faire beaucoup plus de choses qu'en mode console, en particulier pour l'affichage des caractères : polices plus riches, etc. Dans ces conditions, pourquoi se limiter aux possibilités de polices de la console ?</footnote>. Il faut donc configurer chacun séparément. <example> Entrée au clavier --> Code 8 bits --> Affichage à l'écran </example> <sect>Configurer la console <sect1>Ce qu'il faut faire <p>Si vous avez un clavier français, il suffit : <list> <item>Pour l'entrée, de remplacer la table par défaut par la carte <em>latin-0</em> (norme <em>ISO-8859-15</em>) : <example> dpkg-reconfigure console-data </example> Choisissez <em>Select keymap from arch list</em> (en anglais), <em>azerty</em>, <em>French</em>, <em>With Euro (latin 15)</em> ; <item>Pour la sortie, d'ajouter <tt>SCREEN_FONT=lat0-16</tt> dans le fichier de configuration <file>/etc/console-tools/config</file> et de relancer le démon : <example> echo "SCREEN_FONT=lat0-16" >> /etc/console-tools/config /etc/init.d/console-screen.sh restart </example> <strong>N.B. :</strong> Il faut relancer le démon (deuxième ligne de commande) depuis la <strong>console</strong> et non depuis X11, sinon rien n'est fait. De plus, les changements ne sont permanents qu'après un redémarrage du système. </list> </sect1> <sect1>Pour avoir le symbole « Euro » <p>Si vous utilisez une carte clavier qui ne supporte pas l'euro et si vous souhaitez conserver cette carte clavier, vous pouvez y ajouter simplement les composantes « Euro ». Installez le paquet <package>euro-support</package> qui effectue cette modification automatiquement : <example>apt-get install euro-support</example> </sect1> <sect1>Comment cela fonctionne <sect2>Configuration de l'entrée <p>L'entrée est définie par une « carte clavier », c'est-à-dire la correspondance entre le code des touches tapées et le code des caractères mémorisés. Le noyau (<em>kernel</em>) linux utilise une carte par défaut (définie lors de la compilation). Mais une carte peut être chargée en mémoire à tout moment à l'aide de l'utilitaire <prgn>loadkeys</prgn>. Sous Debian GNU/Linux, ces « autres » cartes clavier sont définies dans les fichiers <file><em>carte</em>.kmap.gz</file> du répertoire <file>/usr/share/keymaps/*</file>. Par exemple : <example> loadkeys fr-pc </example> <p>La carte clavier est chargée au démarrage (<em>via</em> <prgn>loadkeys</prgn>) par <prgn>/etc/init.d/keymap.sh</prgn>, en utilisant la carte clavier par défaut : <file>/etc/console/boottime.kmap.gz</file>. <p>Plusieurs solutions sont possibles pour charger la « bonne » carte au démarrage. Dans la plupart des cas, vous voulez simplement charger l'une des cartes proposées. Vous pouvez alors faire un lien de <file>/etc/console/boottime.kmap.gz</file> vers la carte choisie (<strong>déconseillé</strong>). La méthode propre sous Debian GNU/Linux consiste à passer par <prgn>debconf</prgn> : <example> dpkg-reconfigure console-data </example> et à choisir la bonne carte. <prgn>Debconf</prgn> demande alors au programme <prgn>install-keymap</prgn> d'installer la carte choisie. Vous pouvez aussi appeler directement <prgn>install-keymap</prgn>, mais votre choix ne sera pas mémorisé par <prgn>debconf</prgn>... <p>Dans certains cas, vous pouvez vouloir utiliser une combinaison de cartes (une carte principale et des compléments, par exemple pour le support de l'euro). Il vous faut alors modifier directement le script <prgn>/etc/init.d/keymap.sh</prgn> pour charger plus d'une carte. </sect2> <sect2>Configuration de la sortie <p>La police de caractères utilisée pour la sortie est configurée à l'aide de l'utilitaire <prgn>consolechars</prgn>. Ce programme est appelé au démarrage par <prgn>/etc/init.d/console-screen.sh</prgn> en utilisant le fichier de configuration <file>/etc/console-tools/config</file>, qui est « auto-documenté ». <p>Il faut donc modifier la police comme indiqué, en définissant la variable <tt>SCREEN_FONT</tt> pour utiliser la table de caractères souhaitée. Il n'est pas nécessaire, <em>a priori</em>, de définir une carte de caractères pour les applications (<tt>APP_CHARSET_MAP</tt>), ni de carte de police écran (<tt>SCREEN_FONT_MAP</tt>). <p>Vous devez ensuite relancer le démon pour utiliser les nouvelles polices souhaitées, lequel appelle <prgn>consolechars</prgn>. </sect2> </sect1> <sect1>Polices <em>latin-0</em> sous <package>svgatextmode</package> <p>Si vous utilisez <package>svgatextmode</package> sous la console, vous devrez aussi lui indiquer comment charger les polices <em>latin-0</em> en ajoutant les lignes suivantes à la fin du fichier <file>/etc/TextConfig</file> : <example> FontSelect "lat0-16" 8x16 9x16 8x15 9x15 FontSelect "lat0-14" 8x14 9x14 8x13 9x13 FontSelect "lat0-12" 8x12 9x12 8x11 9x11 FontSelect "lat0-10" 8x10 9x10 8x9 9x9 FontSelect "lat0-08" 8x8 9x8 8x7 9x7 </example> </sect1> </sect> <sect>Configurer X11 <sect1>Configuration de l'entrée <sect2>Sous XFree86 3.3.6 <p><em>A priori</em>, vous n'avez pas de raison de continuer à utiliser XFree 3 sous Debian GNU/Linux (sauf si vous possédez une carte graphique très ancienne ou très rare). Je vous conseille de passer à XFree 4. <p>Pour l'entrée, si vous n'utilisez pas <prgn>debconf</prgn>, il faut corriger le fichier <file>/etc/X11/XF86Config</file>, section « Keyboard », pour avoir : <example> Section "Keyboard" Protocol "Standard" XkbKeymap "xfree86(fr)" ScrollLock Compose EndSection </example> ou bien : <example> Section "Keyboard" XkbRules "xfree86" XkbModel "pc105" XkbLayout "fr" XkbVariant "" XkbOptions "" ScrollLock Compose EndSection </example> selon ce qui figure dans votre XF86Config (cela dépend de l'outil que vous avez utilisé pour le fabriquer, mais les deux solutions sont strictement identiques : la première ne fonctionne que sous Debian GNU/Linux, la seconde est vraie aussi pour les autres systèmes). <p>Si vous utilisez <prgn>debconf</prgn>, lancez : <example> dpkg-reconfigure xserver-common-v3 </example> et choisissez la disposition du clavier <tt>fr</tt> (au lieu de <tt>us</tt>). </sect2> <sect2>Sous XFree86 4 <p>Pour l'entrée, si vous n'utilisez pas <prgn>debconf</prgn>, il faut corriger à la main le fichier <file>/etc/X11/XF86Config-4</file> (attention au <tt>-4</tt>), section <tt>InputDevice</tt> contenant <tt>Driver "keyboard"</tt> et remplacer <tt>"us"</tt> par <tt>"fr"</tt> pour l'option <tt>XkbLayout</tt>. <p>Si vous utilisez <prgn>debconf</prgn>, lancez : <example> dpkg-reconfigure xserver-xfree86 </example> Choisissez la disposition du clavier <tt>fr</tt> (au lieu de <tt>us</tt> et pour les options, tapez <tt>compose:rwin</tt> si vous avez une touche avec le symbole de « Windows ». </sect2> </sect1> <sect1>Configuration de la sortie <p>Pour la sortie, il faut installer une police iso8859-15 ajouter <tt>*font:-*-*-medium-r-normal--14-*-*-*-c-*-iso8859-15</tt> dans le fichier <file>/etc/X11/Xresources/xfree86-common</file>. Pour rester le plus proche possible de l'installation par défaut, je vous recommande d'utiliser le paquet <package>xfonts-100dpi-transcoded</package>. <p>Il existe d'autres paquets contenant des polices latin0 : <package>xfonts-*-transcoded</package>, <package>xfonts-jmk</package>, <package>xfonts-terminus</package>, <package>ttf-bitstream-vera</package>, etc. N'hésitez pas à adapter la définition <tt>*font:</tt> en fonction de vos préférences et de votre installation. Le programme <prgn>xfontsel</prgn> vous sera alors très utile. <p>Si certains de vos utilisateurs possèdent des fichiers <file>~/.xinitrc</file> ou <file>~/.xsession</file> et court-circuitent ainsi le programme <file>/etc/X11/Xsession</file>, alors vous devrez vous assurer qu'ils appellent bien <prgn>xrdb -merge /etc/X11/Xresources/xfree86-common</prgn>. Dans le cas contraire, vous pouvez soit leur suggérer de modifier leur <file>~/.xinitrc</file> et leur <file>~/.xsession</file>, soit ajouter la définition <tt>*font:</tt> dans leur <file>~/.Xresources</file>. Je recommande pour ma part la deuxième solution, qui est mise en ½uvre automatiquement par le programme <prgn>set-language-env</prgn> <p>Enfin, vous devez tenir compte du fait qu'il existe deux types de polices. Les polices vectorielles (« scalable ») peuvent être redimensionnées sans soucis. Les polices « bitmap ») peuvent, au contraire, être très laides lorsqu'elles ne sont pas utilisées à la taille initialement prévue. Mais certains caractères n'existent qu'en bitmap. En particulier, si vous utilisez <em>Mozilla</em> ou <em>OpenOffice.org</em>, vous aurez besoin de ces polices. Le paquet <package>fontconfig</package> gère ces différentes polices pour vous. Lancez <prgn>dpkg-reconfigure fontconfig</prgn> et activez les polices bitmap. </sect1> <sect1>Comment cela fonctionne <sect2>Configuration de l'entrée <p>L'entrée clavier est configurée dans la section <tt>Keyboard</tt> du fichier <file>/etc/X11/XF86Config</file>. Sous <em>XFree 4</em>, le clavier est décrit, comme les autres périphériques d'entrée, dans une section <tt>InputDevice</tt> avec un pilote (<em>driver</em>) <em>Keyboard</em>. <p>L'option <tt>XkbRules</tt> permet de spécifier le comportement du clavier et l'option <tt>XkbLayout</tt> la carte clavier à utiliser. <p>L'option <tt>XkbKeymap</tt> permet de regrouper <tt>XkbRules</tt> et <tt>XkbLayout</tt> dans une même règle. </sect2> <sect2>La touche « compose » <p>La disposition du clavier « fr » correspond à une entrée en <em>latin-1</em> (ISO-8859-1). Il n'existe pas à ce jour de carte clavier <em>latin-0</em> (comme pour la console) sous Debian GNU/Linux. Par conséquent, certains caractères ne peuvent pas être tapés directement : il faut utiliser des compositions de touches complémentaires. La touche « compose » (ou <em>Multi_key</em>) permet d'indiquer au système que les deux touches suivantes sont une composition. La liste des compositions possibles est définie dans le fichier <file>/usr/X11R6/lib/X11/locale/iso8859-1/Compose</file>. <list> <item>Si vous utilisez XFree 4 et que votre clavier comporte une touche avec le sigle « Windows », l'option <tt>compose:rwin</tt> vous permet de l'utiliser comme touche « compose ». En spécifiant une autre option, vous pouvez aussi utiliser les touches « Menu » ou « Alt », comme l'indique le fichier <file>/usr/X11R6/lib/X11/xkb/rules/xfree86.lst</file>. <item>Si vous utilisez XFree 4 mais que vous ne disposez ni d'une touche « Windows », ni d'une touche « Menu », et si vous ne voulez pas sacrifier la touche « Alt » (croyez-moi : vous ne voulez pas sacrifier cette touche), vous devez définir une autre touche « compose ». La seule qu'il reste est « ScrollLock », mais il vous faudra passer par <prgn>xmodmap</prgn>. Lancez <prgn>xev</prgn> pour vérifier quel est le code de la touche « ScrollLock » (<em>a priori</em>, c'est 78) et ajoutez la ligne suivante dans votre fichier <file>.xsession</file> : <example> xmodmap -e "keycode 78 = Multi_key" </example> ou dans le script de lancement de votre gestionnaire de fenêtres si vous utilisez <prgn>gdm</prgn>, <prgn>kdm</prgn> ou autre. <item>Si vous utilisez XFree 3, vous pouvez assigner la touche « ScrollLock » à « Compose » simplement en ajoutant la ligne suivante dans la section « Keyboard » du fichier <file>/etc/X11/XF86Config</file> : <example> ScrollLock Compose </example> </list> </sect2> <sect2>Configuration de la sortie : installation des polices <p>La configuration de la sortie se fait, comme sous la console, en donnant une police de caractères qui : <list> <item>est conforme à l'entrée choisie ; <item>affiche les caractères souhaités. </list> <p>Sous Debian GNU/Linux, les polices sont installées dans le répertoire <file>/usr/X11R6/lib/X11/fonts/</file>. Le programme <prgn>xlsfonts</prgn> permet de connaître l'ensemble des polices disponibles sous X. Ces polices sont dans différents répertoires contenant chacun les fichiers : <list> <item><file>*.pcf.gz</file>, <file>*.spd</file>, <file>*.pfa</file>, <file>*.pfb</file>, etc : les fichiers de définition des polices (les extensions sont choisies par les fabricants de police) ; <item><file>fonts.dir</file> : liste des polices du répertoire et des fichiers <file>.pcf</file> dans lesquels elles sont définies ; <item><file>fonts.aliases</file> : liste d'alias de noms de polices (c'est-à-dire des noms courts pour certaines polices courantes) ; <item>éventuellement, <file>fonts.scale</file> : liste des polices « redimensionnables » (<em>scalable</em>). </list> <p>Le serveur X peut soit gérer lui-même les polices, soit utiliser un serveur de polices, comme <prgn>xfs</prgn>. La définition des polices dans le fichier de configuration du serveur X (<file>/etc/X11/XF86Config-4</file>) se fait à l'aide de commandes <tt>FontPath</tt> dans la section <tt>Files</tt> : <example> Section "Files" FontPath "unix/:7100" # Serveur de police # Si le serveur échoue, se rabattre sur les polices suivantes : FontPath "/usr/lib/X11/fonts/CID" FontPath "/usr/lib/X11/fonts/Speedo" FontPath "/usr/lib/X11/fonts/misc" FontPath "/usr/lib/X11/fonts/cyrillic" FontPath "/usr/lib/X11/fonts/100dpi" FontPath "/usr/lib/X11/fonts/75dpi" FontPath "/usr/lib/X11/fonts/Type1" EndSection </example> <p>La liste des polices utilisables par le serveur de polices <prgn>xfs</prgn> est donnée dans la définition <tt>catalogue</tt> du fichier <file>/etc/X11/fs/config</file>. <p>Si vous souhaitez utiliser des polices « True Type » (TT), le mieux est d'installer le serveur de polices adapté (<package>xfs-xtt</package>) et le système de gestion de polices <package>defoma</package>. Le serveur X peut gérer les polices (mais moins bien qu'un serveur dédié) depuis la version 4 de XFree86. </sect2> <sect2>Configuration de la sortie : utilisation d'une police <p>La définition <tt>*font:</tt> permet de définir la police pour les applications utilisant <package>xlib</package> (les « <em>widgets</em> »). C'est le programme <prgn>xrdb</prgn> qui permet de définir vos ressources X11, et en particulier la police <tt>*font</tt>. Il est appelé sur les fichiers de configuration générale (<file>/etc/X11/Xresources/*</file>) par <prgn>/etc/X11/Xsession</prgn> ainsi que sur votre fichier de configuration de ressources X11 personnel : <file>~/.Xresources</file> <p>Pour les autres applications, un réglage « manuel » est généralement nécessaire. <p>Je vous conseille aussi d'installer <package>fontconfig</package> et d'activer les polices bitmap pour éviter les mauvaises surprises sous Mozilla et OpenOffice qui utilisent ces polices. </sect2> <sect2>Autres possibilités <p>Il existe d'autres solutions pour configurer l'entrée et la sortie sous Debian GNU/Linux : <list> <item>Utiliser les polices « unifont » (ISO-10646) dont l'objectif est de contenir tous les caractères existants dans le monde ; <item>Utiliser les polices « UTF-8 » dont l'ambition est similaire. Il semblerait que le projet Debian GNU/Linux souhaite migrer progressivement vers l'utilisation de ces polices par défaut. </list> Ces solutions, moins simples à mettre en ½uvre, sont encore à l'étude et seront présentées dans une prochaine version de ce document. </sect2> </sect1> <sect1>Pour avoir le symbole « euro » sur <tt>AltGr+e</tt> <p>Par défaut, le symbole « euro » est accessible par <tt>AltGr + $</tt>. L'habitude veut qu'on utilise plutôt la touche <tt>AltGr + e</tt>, ce qui nécessite quelques changements. <p>La méthode la plus simple et sans doute la plus efficace est d'utiliser le paquet <package>euro-support</package> qui configurera votre système automatiquement. <p>Pour les fans de la bidouille, vous pouvez aussi effectuer ces modifications manuellement. Une solution simple (c'est celle que je recommande parce que <prgn>xmodmap</prgn> est obsolète depuis XFree86 3.2) consiste, en tant que super-utilisateur (<tt>root</tt>), à ajouter dans <file>/usr/X11R6/lib/X11/xkb/symbols/fr</file>, dans la section <tt>xkb_symbols "basic"</tt>, avant <tt>key <AE01></tt>, les lignes suivantes : <example> key <AD03> { [ e, E ], [ currency, cent ] }; </example> <p>Une autre solution consiste à utiliser <prgn>xmodmap</prgn> : en tant que super-utilisateur, ajoutez la ligne suivante à la fin du fichier <file>/etc/X11/Xmodmap</file> : <example>keycode 26 = e E currency cent</example> </sect1> </sect> </chapt> <chapt>Caractères accentués et autres touches <em>ad hoc</em> <sect>Carte clavier <em>latin-0</em> (console) <sect1>Caractères accentués <p>Il faut utiliser <strong>en touche morte</strong> : <list> <item>AltGr + 1 pour l'accent aigu ; <item>AltGr + 7 pour l'accent grave ; <item>[touche ^] pour l'accent circonflexe ; <item>Shift + [touche ^] pour le tréma. </list> <p>Par exemple : AltGr + 1 puis E -> É <p>Vous pouvez aussi utiliser la touche « compose » : <list> <item>Compose puis ' puis lettre pour l'accent aigu ; <item>Compose puis AltGr + 7 puis lettre pour l'accent grave ; <item>Compose puis AltGr + 9 puis lettre pour l'accent circonflexe. </list> Sous la console, la touche <em>Compose</em> pour cette table est la touche « Imprime Écran » (<em>PrintScreen</em>). </sect1> <sect1>Autres caractères <p>Voici une liste non exhaustive des combinaisons de touches permettant d'obtenir un caractère donné de la table <em>latin-0</em> : <example> ç = AltGr + 9 ou AltGr + r Ç = AltGr + Shift + 9 ou AltGr + Shift + r ½ (oe) = [touche ²] ou Compose puis o puis e ¼ (OE) = shift + [touche ²] æ (ae) = AltGr + a ou AltGr + g Æ (AE) = AltGr + Shift + g ß (esset allemand) = AltGr + b ¤ (euro) = AltGr + e ou Compose puis - puis e ¢ (centime) = AltGr + $ ou Compose puis - puis c ¥ (yen) = AltGr + Shift + [touche *] ou compose puis - puis y « = AltGr + [touche ²] ou AltGr + w » = AltGr + Shift + [touche ²] ou AltGr + x ¹ = AltGr + m ² = AltGr + [touche ù] ³ = AltGr + [touche *] © (copyright) = AltGr + c ® (registered) = AltGr + v ¿ (? à l'envers) = AltGr + ? ¡ (! à l'envers) = AltGr + ! ¬ (non logique) = AltGr + Shift + n × (multiplié) = AltGr + [touche ;] ÷ (divisé) = AltGr + [touche :] Ø (ensemble vide) = AltGr + Shift + s </example> <p>De plus, vous pouvez utiliser la touche « windows » pour passer d'une console à l'autre (<em>tty1</em>, puis <em>tty2</em>, puis <em>tty3</em>, etc.) ou utiliser ALT+flèche ! </sect1> </sect> <sect>Carte clavier <em>latin-1</em> (X11) <sect1>Caractères accentués <p>Pour les accents, il faut utiliser en touche morte : <list> <item>AltGr + , pour l'accent aigu (voyelles) ou la cédille (c) ; <item>AltGr + * pour l'accent grave ; <item>[touche ^] ou AltGr + ù pour l'accent circonflexe ; <item>(Shift ou AltGr) + [touche ^] pour le tréma. </list> <p>Par exemple : AltGr + , puis E -> É <p>Dans la plupart des applications, vous pouvez aussi obtenir des majuscules accentuées en tapant un caractère minuscule accentué avec la touche majuscule verrouillée (Caps Lock). <p>Par exemple : <tt>CAPS-LOCK puis ç --> Ç</tt> <p><strong>N.B. :</strong> Les touches mortes ne fonctionnent pas sous <prgn>Xfig</prgn>, même pour les minuscules. (voir <ref id="xfig">) <p>Enfin, vous pouvez aussi utiliser la touche « compose » : <list> <item>Compose puis ' puis lettre pour l'accent aigu ; <item>Compose puis AltGr + 7 puis lettre pour l'accent grave ; <item>Compose puis AltGr + 9 puis lettre pour l'accent circonflexe ; </list> La touche <em>Compose</em> étant celle que vous avez définie lors de la configuration de votre serveur X (« ScrollLock », « Windows » ou autre). </sect1> <sect1>Autres caractères <p>Voici une liste non exhaustive des combinaisons de touches permettant d'obtenir un caractère donné de la table <em>latin-1</em> : <example> ½ (oe) = Compose puis o puis e ½ (oe) = Compose puis O puis E æ (ae) = AltGr + a ou Compose puis a puis e Æ (AE) = AltGr + Shift + a ou Compose puis A puis E ¹ = AltGr + 1 ² = [touche ²] ³ = AltGr + l ß (esset allemand) = AltGr + s ¬ (non logique) = AltGr + [touche ²] ¥ (yen) = AltGr + Shift + y ¢ (centime) = AltGr + c ¤ (euro) = Compose puis e puis = £ (livre) = Shift + [touche $] « = AltGr + z » = AltGr + x © (copyright) = Compose puis c puis o ou Compose puis o puis c </example> Et si vous avez installé le paquet <package>euro-support</package>, vous avez : <example> ¤ (euro) = AltGr + e ¢ (cent) = AltGr + c ou AltGr + Shift + e </example> Sinon, le symbole « euro » est sur la touche <tt>AltGr + $</tt>. </sect1> <sect1 id="xfig">Sous <prgn>Xfig</prgn> <p>Les touches mortes se comportent comme des touches vivantes et le caractère est affiché (p. ex. : ^ pour [touche ^]) <p>Il faut utiliser : <enumlist> <item>La touche <em>Compose</em> (ou <em>Meta</em> si <em>Compose</em> n'est pas définie, ou <em>LeftAlt</em> si <em>LeftAlt = Meta</em>) <strong>sans la garder appuyée</strong>, <item>puis la lettre à accentuer, <item>puis l'accent. </enumlist> Par exemple : <tt>Meta puis e puis [touche ^] --> ê</tt> <p><strong>Source :</strong> Manuel <em>Xfig</em>, section « Latin-1 Characters ». </sect1> <sect1>La touche « meta » <p>La position de la touche « meta » varie selon le type de clavier que vous utilisez et la configuration de votre serveur X : <list><item>Pour un clavier 101 ou 102 touches, la touche « meta » est la touche Alt à gauche de la barre d'espace ; <item>Pour un clavier 104 ou 105 touches, la touche « meta » est la touche « Windows » à gauche de la barre d'espace, sauf si vous l'avez redéfinie comme touche « compose », auquel cas « meta » est la touche Alt à gauche de la barre d'espace. </list> <p><strong>Astuce :</strong> sur un clavier 105 touches, si vous ne l'avez pas redéfinie, la touche « menu » est l'équivalent de <tt>M-X</tt> sous <prgn>emacs</prgn> (pour passer en mode commande). </sect1> </sect> </chapt> <chapt id="autres">Applications spécifiques <sect>Configurer <em>GNOME</em> pour le français <p>Depuis <em>Debian 3.0 (Woody)</em>, <prgn>gdm</prgn> utilise la variable <tt>LANG</tt> positionnée dans <file>/etc/environment</file> pour définir les paramètres régionaux de l'écran de connexion. Si vous utilisez une configuration différente (en tant qu'utilisateur), vous pouvez surcharger cette valeur en choisissant une langue différente dans le menu de <prgn>gdm</prgn>. <p>Cependant, pour pouvoir utiliser correctement les caractères français et le symbole « euro » dans les applications GNOME (<prgn>gnome-terminal</prgn>, <prgn>gedit</prgn>...), il faut changer la police du terminal. <p>Dans le menu « Settings - Préférences », cliquez sur « Parcourir » à côté de la police dans l'onglet « Général » et choisissez une police <tt>fixed (misc)</tt> avec le style <tt>medium [C]</tt> de la catégorie <tt>iso8859-15</tt> (les catégories sont données par les lignes grisées dans la colonne « style de police »). <p>Mais attention aussi au fichier <file>$HOME/.gnome/gdm</file> qui peut redéfinir LANG pour les applications GNOME ! <sect1>Le gestionnaire de connexion graphique <prgn>gdm</prgn> sous <em>Gnome 2</em> <p>La version 2 du gestionaire de connexion graphique <prgn>gdm</prgn> n'utilise pas le fichier <file>/etc/environment</file> pour déterminer les paramètre régionnaux. Il s'appuie sur la configuration du compte depuis lequel il est lancé. Lorsque c'est directement à l'aide des scripts <file>init.d</file>, il est donc en anglais. <p>La solution la plus simple pour l'instant est de rajouter <tt>export LANG=fr_FR@euro</tt> au tout début du script de lancement de gdm : <file>/etc/init.d/gdm</file> ou, plus élégant, d'ajouter LANG=fr_FR@euro avant l'appel de la commande <prgn>start-stop-daemon</prgn> dans le cas <tt>start)</tt> de ce même script : <example>LANG=fr_FR@euro start-stop-daemon --start --quiet --pidfile $PID FILE --name gdm $SSD_ARG || echo -n " already running"</example> </sect1> </sect> <sect>Configurer <em>KDE</em> pour le français <sect1>Ce qu'il faut faire <p><strong>N.B. :</strong> Cette section a été réalisée en collaboration avec Michel Grentzinger <email>mic.grentz@online.fr</email>. N'hésitez pas à le contacter pour signaler un manque ou une erreur. <p>KDE ne prend pas en compte la variable <tt>LANG</tt>. Il utilise son propre système de configuration pour les paramètres régionaux, qui est géré par les paquets <package>kde-i18n-*</package>. <p>Vous devez donc installer le paquet <package>kde-i18n-fr</package> pour avoir KDE en français : <example> apt-get install kde-i18n-fr </example> <p>Vous pouvez ensuite configurer votre bureau à l'aide de l'outil <em>Centre de configuration de KDE</em> (<em>KDE control center</em> en anglais). Dans le sous-menu <em>Pays et langue</em> (<em>Country & Language</em>) du menu <em>Personnalisation</em> (<em>Personalization</em>), choisissez l'onglet <em>Localisation</em> qui contient trois champs : <list> <item><strong>Pays (<em>Country</em>) :</strong> choisissez votre pays. Le plus difficile, c'est de savoir dans quelle partie du monde se situe votre pays ;-) ; <item><strong>Langue (<em>Language</em>) :</strong> choisissez <em>Français (fr)</em> ; <item><strong>Jeu de caractères (<em>Character set</em>)</strong> : choisissez <em>iso8859-1</em> ou, si vous voulez avoir l'euro, <em>iso8859-15</em>. </list> <p>Vous pouvez remarquer que les applications <tt>root</tt> lancées à partir du bureau KDE d'un utilisateur normal (comme <prgn>kdesu</prgn>, par exemple) utilisent les paramètres régionaux du super-utilisateur (<em>a priori</em> l'anglais si vous n'avez pas modifié les paramètres régionaux du compte <tt>root</tt>). <p>Enfin, les paramètres régionaux du gestionnaire de connexion <prgn>kdm</prgn> peuvent être modifiés dans le sous-menu <em>Gestionnaire de connexion</em> du menu <em>Système</em> du <em>Centre de configuration de KDE</em>. Le mot de passe fu compte <tt>root</tt> vous sera demandé si vous effectuez cette opération depuis un compte utilisateur. <p><strong>N.B. :</strong> Les applications non KDE, même lancées depuis le bureau, utilisent toujours la variable <tt>LANG</tt> et les tables d'entrée-sortie standards. </sect1> <sect1>Comment cela fonctionne <p>L'outil graphique de configuration de KDE modifie le fichier <file>~/.kde/share/config/kdeglobals</file>. Ce fichier comprend une section <tt>[locale]</tt> pour définir le pays, la langue et le jeu de caractères à utiliser. <p>Un environnement KDE bien configuré pour le français doit donc correspondre à un fichier <file>kdeglobals</file> contenant : <example> [Locale] Charset=iso8859-15 Country=fr Language=fr </example> ce qui correspond à la définition <em>fr_FR[@euro].ISO-8859-15</em> de <file>locale.alias</file> pour les autres applications. <p>Le fichier <file>kdeglobals</file> de votre répertoire local « surcharge » celui défini pour tout le système dans <file>/etc/kde2</file>. Il est donc théoriquement possible, pour que tous les utilisateurs aient KDE en français, de remplir la section <tt>locale</tt> de <file>/etc/kde2/kdeglobals</file>. <p>La configuration par défaut de KDE peut être modifiée en définissant <tt>LANGUAGE=fr</tt> dans <file>/etc/environment</file>. </sect1> </sect> <sect><prgn>xdm</prgn> et <prgn>wdm</prgn> <p>Les gestionnaires de connexion graphique <prgn>xdm</prgn> et <prgn>wdm</prgn> n'utilisent pas le fichier <file>/etc/environment</file>. Il est donc nécessaire de définir la variable <tt>LANG=french</tt> dans le processus de connexion, par exemple au début de votre <file>~/.xsession</file>. Le paquet <package>language-env</package> fait cela automatiquement lors de l'appel de <prgn>set-language-env</prgn>. </sect> <sect><prgn>Emacs</prgn> et <prgn>XEmacs</prgn> <p>Aucune modification n'est nécessaire dans le fichier <file>~/.emacs</file> pour avoir le <em>latin-0</em> en sortie sous <prgn>Emacs</prgn> ou <prgn>XEmacs</prgn>. Toutefois, le copier-coller depuis un terminal X vers <prgn>emacs21</prgn> donne des résultats surprenants. Pour corriger cela, le plus simple est d'utiliser le paquet <package>emacs-nomule</package> (ce qui vous épargnera de nombreux soucis). Sinon, depuis <em>Debian Sarge</em>, vous pouvez utiliser <prgn>ucs-tables</prgn> en ajoutant dans votre <file>~/.emacs</file> : <example> (require 'ucs-tables) (unify-8859-on-encoding-mode 1) (unify-8859-on-decoding-mode -1) (setq selection-coding-system 'compound-text-with-extensions) </example> <p>En revanche, le menu de <prgn>XEmacs</prgn> est implémenté par un <em>widget</em> séparé et ne fait pas partie à proprement parler de <prgn>XEmacs</prgn>. Par conséquent, il n'utilise pas le mécanisme classique pour définir la police dans les menus. <p>Si vous avez installé le paquet <package>xfonts-jmk</package>, les menus dans <prgn>XEmacs</prgn> prennent alors une forme étrange, sans tenir compte de la ligne <tt>*font</tt> de vos fichiers de définition de ressources X11. Vous devrez alors ajouter la ligne suivante (dans <file>~/.Xresources</file> ou dans <file>/etc/X11/Xresources/xfree86-common</file> si vous configurez l'ensemble du système) : <example> Emacs*font:-*-*-medium-r-normal--14-*-*-*-*-*-iso8859-15 </example> </sect> <sect><prgn>Netscape</prgn> et <prgn>Mozilla</prgn> <p><em>A priori</em>, vous n'avez pas de raison de continuer à utiliser <prgn>Netscape</prgn> sous Debian. Je vous conseille de passer à <prgn>Mozilla</prgn>. <sect1>Choix des paramètres régionaux <p>Sous <prgn>Netscape</prgn> comme sous <prgn>Mozilla</prgn>, vous pouvez modifier la langue utilisée pour les menus et la barre d'outils en allant dans l'onglet « Apparence/Langue » du menu « Préférences » et en sélectionnant la langue de votre choix. Toutefois, sous Mozilla, il vous faudra avoir installé un paquet spécifique <strong>depuis le compte <tt>root</tt></strong> : cliquez sur le bouton « Télécharger plus » (<em>download more</em>) pour installer d'autres paramètres régionaux. <p>Certains serveur HTTP permettent d'afficher une page différente selon la configuration du navigateur (c'est le cas sur le site <url id="http://www.debian.org/" name="Debian">). Pour que les pages affichées sur ces sites soient bien en français, il faut choisir la langue <tt>Français [fr]</tt> dans l'onglet « Navigateur/Langues » et la positionner en premier choix. Vous devez aussi mettre <tt>en</tt> dans la liste de langues pour visualiser correctement les pages qui ne sont pas disponibles en français. Pour plus d'information sur la visualisation des pages multilingues, je vous invite à consulter la documentation proposée sur le site web Debian GNU/Linux : <url id="http://www.debian.org/intro/cn" name="http://www.debian.org/intro/cn">. <p>Enfin, pour visualiser les pages et les courriers en <em>latin-0</em>, vous devez sélectionner « Occidental (Euro) ISO-8859-15 » dans le menu « Affichage/Jeu de caractères » et dans la case « Jeu de caractères » de l'onglet « Mail & Newsgroups/Composition » du menu « préférence ». </sect1> <sect1>Installation d'un dictionnaire <p>Sous <prgn>Netscape</prgn>, il suffit de se procurer une version de Netscape en français, peu importe la plate-forme d'origine, et de copier le fichier <file>pfr2s331.dat</file> contenant ce dictionnaire dans le sous-répertoire <file>spell</file> (à créer éventuellement) du répertoire de Netscape : <file>/usr/lib/netscape/477/communicator/spell/</file>. <p>Vous pouvez également ajouter ce dictionnaire dans <file>~/.netscape/spell</file> si vous n'avez pas les permissions en écriture sur <file>/usr/lib/netscape</file>. <p><strong>Source :</strong> <file>http://www.linux-france.org/prj/i18n/netscape/netscape_fr.html</file> <p>Sous <prgn>Mozilla</prgn>, la correction orthographique n'est incluse dans la distribution standard qu'à partir de <tt>mozilla-1.5</tt>. Pour les versions antérieures, vous devez installer (toujours en tant que super-utilisateur) les paquets depuis le site de <prgn>mozilla</prgn> : <url id="http://spellchecker.mozdev.org/" name="http://spellchecker.mozdev.org/">. Allez sur la page « Installation ». Pour avoir un dictionnaire en français, après avoir installé le correcteur, allez dans la section « Non-English Dictionaries » de la page d'installation. <p><strong>Remarque :</strong> Sous Debian 3.1 (Sarge) en <em>testing</em>, l'installation de dictionnaire ne fonctionne pas. Elle fonctionne correctement sous Debian 3.0 (Woody). <p><strong>Remarque n° 2 :</strong> À terme, la distribution Debian GNU/Linux devrait proposer des paquets spécifiques pour l'installation des dictionnaires. </sect1> </sect> <sect><prgn>GnuCash</prgn> <p>Sous <prgn>gnucash-1.6</prgn>, le symbole ¤ ne s'affiche pas dans la barre de titre et vous voyez apparaître le symbole monétaire international. C'est un bogue :-). </sect> <sect>Le terminal X <prgn>Eterm</prgn> <p>Par défaut, les polices utilisées dans Eterm sont en <em>latin-1</em> et ne permettent donc pas d'afficher le symbole euro, par exemple. Mais vous pouvez modifier le fichier de configuration <file>~/.Eterm/user.cfg</file> pour utiliser des polices latin-0 : <example> begin attributes scrollbar_type motif scrollbar_width 10 font default 2 font proportional 0 font 0 -b&h-lucidatypewriter-medium-r-normal-*-*-80-*-*-m-*-iso8859-15 font 1 -b&h-lucidatypewriter-medium-r-normal-*-*-100-*-*-m-*-iso8859-15 font 2 -b&h-lucidatypewriter-medium-r-normal-*-*-120-*-*-m-*-iso8859-15 font 3 -b&h-lucidatypewriter-medium-r-normal-*-*-140-*-*-m-*-iso8859-15 font 4 -b&h-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-iso8859-15 end attributes </example> <sect>Le symbole « euro » sous LaTeX <p>Plusieurs solutions sont possibles pour utiliser le symbole « euro » dans les documents LaTeX. La plus simple consiste à utiliser le paquet LaTeX <package>marvosym</package> qui est fourni dans la distribution standard sous Debian GNU/Linux (paquet <package>tetex-base</package>) : <example> \usepackage{marvosym} </example> <p>Le symbole « euro » conforme aux recommandations de la Commission européenne est alors accessible, en mode texte, par la macro :<example>\EUR</example> <p>Vous pouvez aussi utiliser le paquet <package>tetex-eurosym</package>. Il est alors possible de choisir son symbole « euro » à l'aide des options du paquet LaTeX <package>eurosym</package> : <example> \usepackage[option]{eurosym} </example> Le symbole « euro » est alors accessible par la macro :<example>\euro</example> </sect> <sect>Le <em>latin-0</em> sous <prgn>MHonArc</prgn> <p>Pour pouvoir manipuler des fichiers encodés en <em>latin-0</em> sous <prgn>mhonarc</prgn>, il faut ajouter les lignes suivantes dans votre <file>mhonarc.rc</file> : <example> <charsetconverters> iso-latin15; -decode- iso-8859-15; -decode- </charsetconverters> </example> Du moins, ça fonctionnait sous Debian GNU/Linux 2.2 (Potato)... </sect> <sect>Quelques paquets utiles sous Debian GNU/Linux <p>Si vous êtes le seul utilisateur de votre machine et si vous travaillez uniquement avec un nombre restreint de langues, vous pouvez gagner beaucoup de place en supprimant les fichiers de paramètres régionaux inutiles. Le paquet <package>localepurge</package> fait ce travail très proprement. <example> apt-get install localepurge </example> N'oubliez pas de choisir les paramètres régionaux que vous voulez conserver ! En cas de problème, les fichiers de paramètres régionaux supprimés peuvent être récupérés uniquement en réinstallant tous les paquets déjà installés (opération un peu longue). <p>Un autre paquet associé aux paramètres régionaux est <package>localeconf</package>. Pour l'instant, je ne lui ai trouvé strictement aucune utilité (rien de plus que ce que propose le <em>debconf</em> de <package>locales</package>). Je suis preneur de toute information. </sect> <sect>Dictionnaires et autres correcteurs orthographiques <p>Il existe de nombreux paquets de dictionnaires et de correction orthographique sous Debian GNU/Linux : <list> <item><package>wfrench</package> est une liste de mots français, destinée à être utilisée par <prgn>look</prgn> pour vérifier l'orthographe d'un mot. En pratique, ça ne fonctionne pas (bogues n° 109364 et n° 118278 du paquet <package>bsdmainutils</package>). Le plus simple est d'utiliser la commande <prgn>grep</prgn> : <example> grep ^mot_a_chercher /usr/share/dict/wfrench </example> <item><package>ifrench</package> et <package>ifrench-gut</package> sont deux dictionnaires français pour le correcteur orthographique <package>ispell</package>. Tous les deux travaillent en <em>latin-1</em> (c'est-à-dire qu'ils acceptent « oeil » et refusent « ½il »). Une version <em>latin-0</em> est à l'étude. Personnellement, je conseille d'utiliser plutôt <package>ifrench-gut</package> qui est plus complet. <item><package>aspell-fr</package> est le dictionnaire français pour le correcteur orthographique <package>aspell</package>. Il accepte les mots en <em>latin-0</em> et en <em>latin-1</em>. <item><package>dict-freedict-fra-*</package> et <package>dict-freedict-*-fra</package> sont des dictionnaires bilingues pour <package>dict</package> et <package>dictd</package>. Ils sont encore incomplets mais s'avèrent très pratiques ! </list> <p>Enfin, sur le site de Christian Marillat, <url id="http://marillat.free.fr" name="http://marillat.free.fr/">, vous pouvez trouver les paquets suivants : <list> <item><package>hdico</package> qui permet d'accéder au dictionnaire francophone en ligne d'Hachette ; <item><package>le-dico-de-rene-cougnenc</package> qui est un dictionnaire francophone sans définition mais très complet (il contient l'ensemble des localités françaises) et supportant les expressions rationnelles. Il est accessible par la commande <prgn>dico</prgn> ; <item><package>babytrans-dic-engtofre</package> qui est un outil assez pratique de traduction anglais->français. </list> </sect> </chapt> <chapt>La liste debian-user-french <p>Pour poser des questions et obtenir des réponses en français concernant les problèmes que vous pouvez rencontrer lors de l'utilisation d'un système Debian GNU/Linux, vous pouvez contacter la communauté francophone des utilisateurs de Debian GNU/Linux par leur liste de diffusion : <email>debian-user-french@lists.debian.org</email> </chapt> <chapt>Remerciements <p>Merci à tous les (nombreux) relecteurs de ce document pour leur aide précieuse. Ils sont les acteurs de l'ombre, souvent méconnus et rarement reconnus pour leur travail long et, parfois, fastidieux. Sans eux, la distribution Debian GNU/Linux ne serait pas ce qu'elle est devenue : une distribution internationale, accessible au plus grand nombre. <p>Merci Denis Barbier et Jérôme Marant pour leurs précieux conseils d'ordre technique. <p>Merci à Michel Grentzinger pour la partie traitant de KDE. <p>Merci à Tomohiro KUBOTA pour son travail sur le paquet <package>language-env</package>. <p>Merci à Javier Fernández-Sanguino Peña pour sa documentation très complète qui a servi de guide pour les sections traitant de l'utilisation du symbole « euro » dans les applications. <p>Merci à Guylhem Aznar pour sa carte clavier latin-0 et sa précieuse documentation. <p>Merci à Christian Marillat pour ses paquets non-officiels. <p>Merci enfin aux intervenants sur les listes « -french » qui m'ont aidé à trouver les différentes solutions présentées dans ce document. </chapt> </book> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-debian-fr-3.1.3.1/doc/common.ent����������������������������������������������������������������0000644�0001750�0001750�00000025756�10133466170�016360� 0����������������������������������������������������������������������������������������������������ustar �jerome��������������������������jerome�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="iso-8859-1"?> <!-- common entities file Bits of text which are language independent. In some cases it makes sense to break these out because repetitively maintaining them in different translations of the Developer's Reference is wasteful. In other cases, the data is rather volatile and breaking it out make maintenance easier. --> <!-- volatile information --> <!ENTITY number-of-pkgs "9000"> <!ENTITY number-of-maintainers "800"> <!ENTITY number-of-arches "12"> <!-- standard information --> <!ENTITY fsf-addr "Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA"> <!ENTITY file-GPL "<file>/usr/share/common-licenses/GPL</file>"> <!ENTITY debian-formal "Debian GNU/Linux"> <!-- URLs, Debian --> <!ENTITY www-debian-org "www.debian.org"> <!ENTITY ftp-debian-org "ftp.debian.org"> <!ENTITY ftp-host "&ftp-debian-org;"> <!ENTITY www-host "&www-debian-org;"> <!ENTITY lists-host "lists.debian.org"> <!ENTITY archive-host "archive.debian.org"> <!ENTITY keyserver-host "keyring.debian.org"> <!ENTITY packages-host "packages.debian.org"> <!ENTITY bugs-host "bugs.debian.org"> <!ENTITY pts-host "packages.qa.debian.org"> <!ENTITY ftp-master-host "ftp-master.debian.org"> <!ENTITY non-us-host "non-us.debian.org"> <!ENTITY upload-queue "<ftppath>/pub/UploadQueue/</ftppath>"> <!ENTITY url-debian-policy "http://&www-debian-org;/doc/debian-policy/"> <!ENTITY url-perl-policy "http://&www-debian-org;/doc/packaging-manuals/perl-policy/"> <!ENTITY url-emacs-policy "http://&www-debian-org;/doc/packaging-manuals/debian-emacs-policy"> <!ENTITY url-java-policy "http://&www-debian-org;/doc/packaging-manuals/java-policy/"> <!ENTITY url-libpkg-guide "http://www.netfort.gr.jp/~dancer/column/libpkg-guide/"> <!ENTITY url-social-contract "http://&www-debian-org;/social_contract"> <!ENTITY url-constitution "http://&www-debian-org;/devel/constitution"> <!ENTITY url-dfsg "&url-social-contract;#guidelines"> <!ENTITY url-debian-lists "http://&www-debian-org;/MailingLists/"> <!ENTITY url-debian-lists-txt "http://&ftp-debian-org;/debian/doc/mailing-lists.txt"> <!ENTITY url-debian-lists-subscribe "http://&www-debian-org;/MailingLists/subscribe"> <!ENTITY url-debian-lists-new "http://&www-debian-org;/MailingLists/HOWTO_start_list"> <!ENTITY url-lists-archives "http://&lists-host;/"> <!ENTITY url-bts "http://&www-debian-org;/Bugs/"> <!ENTITY url-bts-report "&url-bts;Reporting"> <!ENTITY url-bts-devel "&url-bts;Developer"> <!ENTITY url-bts-control "&url-bts;server-control"> <!ENTITY url-debian-mirrors "http://&www-debian-org;/mirror/"> <!ENTITY url-debian-mirroring "&url-debian-mirrors;"> <!ENTITY url-debian-ports "http://&www-debian-org;/ports/"> <!ENTITY url-debian-port-lists "http://&lists-host;/ports.html"> <!ENTITY url-wnpp "http://&www-debian-org;/devel/wnpp/"> <!ENTITY url-devel-docs "http://&www-debian-org;/devel/"> <!ENTITY url-vote "http://&www-debian-org;/vote/"> <!ENTITY url-cvsweb "http://cvs.debian.org/"> <!ENTITY url-devel-machines "http://db.debian.org/machines.cgi"> <!ENTITY url-buildd "http://buildd.debian.org/"> <!ENTITY url-lintian "http://lintian.debian.org/"> <!ENTITY url-debian-qa "http://qa.debian.org/"> <!ENTITY url-debian-qa-orphaned "http://qa.debian.org/orphaned.html"> <!ENTITY url-debian-db "https://db.debian.org/"> <!ENTITY url-debian-db-login "https://db.debian.org/login.html"> <!ENTITY url-debian-db-mail-gw "http://db.debian.org/doc-mail.html"> <!ENTITY url-debian-db-doc "http://db.debian.org/doc-general.html"> <!ENTITY url-newmaint "http://&www-debian-org;/devel/join/newmaint"> <!ENTITY url-newmaint-checklist "http://&www-debian-org;/devel/join/nm-checklist"> <!ENTITY url-newmaint-db "http://nm.debian.org/"> <!ENTITY url-newmaint-advocate "http://&www-debian-org;/devel/join/nm-advocate"> <!ENTITY url-newmaint-amchecklist "http://&www-debian-org;/devel/join/nm-amchecklist"> <!ENTITY url-newmaint-apply "http://nm.debian.org/newnm.php"> <!ENTITY url-newmaint-id "http://&www-debian-org;/devel/join/nm-step2"> <!ENTITY url-newmaint-guide "http://&www-debian-org;/doc/maint-guide/"> <!ENTITY url-gpg-coord "http://nm.debian.org/gpg.php"> <!ENTITY url-debian-security-advisories "http://&www-debian-org;/security/"> <!ENTITY url-tech-ctte "http://&www-debian-org;/devel/tech-ctte"> <!ENTITY url-ddpo "http://qa.debian.org/developer.php"> <!ENTITY url-debian-keyring "http://&ftp-debian-org;/debian/doc/debian-keyring.tar.gz"> <!ENTITY url-readme-non-us "http://&ftp-debian-org;/debian/README.non-US"> <!ENTITY url-incoming "http://incoming.debian.org/"> <!ENTITY url-testing-maint "http://www.debian.org/devel/testing"> <!-- deprecated --> <!ENTITY url-testing-faq "&url-testing-maint;"> <!ENTITY us-upload-dir "<file>/org/ftp.debian.org/incoming/</file>"> <!ENTITY non-us-upload-dir "<file>/org/non-us.debian.org/incoming/</file>"> <!ENTITY url-chiark-readme "ftp://ftp.chiark.greenend.org.uk/pub/debian/private/project/README.how-to-upload"> <!ENTITY url-upload-erlangen "ftp://ftp.uni-erlangen.de/pub/Linux/debian/UploadQueue/"> <!ENTITY url-upload-samosa "ftp://samosa.debian.org/pub/UploadQueue/"> <!ENTITY url-upload-jp "ftp://master.debian.or.jp/pub/Incoming/upload/"> <!ENTITY url-mentors "http://people.debian.org/~mpalmer/debian-mentors_FAQ.html"> <!ENTITY url-sponsors "http://www.internatif.org/bortzmeyer/debian/sponsor/"> <!ENTITY url-rules-files "http://arch.debian.org/arch/private/srivasta/"> <!ENTITY url-debconf-l10n-help "http://&www-debian-org;/intl/l10n/templates/hints"> <!ENTITY url-dmup "http://&www-debian-org;/devel/dmup"> <!ENTITY url-worldmap "http://&www-debian-org;/devel/developers.loc"> <!ENTITY url-i18n-doc-check "http://cvs.debian.org/boot-floppies/documentation/doc-check?rev=HEAD&content-type=text/vnd.viewcvs-markup"> <!ENTITY url-eg-desc-upstream-info "http://&packages-host;/unstable/text/docbook-dsssl.html"> <!ENTITY url-alioth "http://alioth.debian.org/"> <!-- URLs, non-debian --> <!ENTITY url-gnu-manifesto "http://www.gnu.org/gnu/manifesto.html"> <!ENTITY url-gpl "http://www.gnu.org/copyleft/gpl.html"> <!ENTITY url-pgp-faq "http://www.cam.ac.uk.pgp.net/pgpnet/pgp-faq/"> <!ENTITY url-rfc2440 "http://www.gnupg.org/rfc2440.html"> <!ENTITY url-u.s.-export "http://www.bxa.doc.gov/Encryption/PubAvailEncSourceCodeNofify.html"> <!ENTITY url-notification-of-export "http://www.bxa.doc.gov/Encryption/"> <!ENTITY url-openprojects "http://www.freenode.net/"> <!-- Debian email addresses --> <!ENTITY email-listmaster "<email>listmaster@&lists-host;</email>"> <!ENTITY email-debian-announce "<email>debian-announce@&lists-host;</email>"> <!ENTITY email-devel-ref "<email>developers-reference@&packages-host;</email>"> <!ENTITY email-debian-changes "<email>debian-changes@lists.debian.org</email>"> <!ENTITY email-debian-devel "<email>debian-devel@&lists-host;</email>"> <!ENTITY email-debian-devel-announce "<email>debian-devel-announce@&lists-host;</email>"> <!ENTITY email-debian-devel-changes "<email>debian-devel-changes@lists.debian.org</email>"> <!ENTITY email-debian-devel-req "<email>debian-devel-REQUEST@&lists-host;</email>"> <!ENTITY email-debian-mentors "<email>debian-mentors@&lists-host;</email>"> <!ENTITY email-debian-private "<email>debian-private@&lists-host;</email>"> <!ENTITY email-debian-project "<email>debian-project@&lists-host;</email>"> <!ENTITY email-debian-policy "<email>debian-policy@&lists-host;</email>"> <!ENTITY email-debian-user "<email>debian-user@&lists-host;</email>"> <!ENTITY orphan-address "<packages@qa.debian.org>"> <!ENTITY email-debian-qa "<email>debian-qa@&lists-host;</email>"> <!ENTITY email-debian-release "<email>debian-release@&lists-host;</email>"> <!ENTITY email-debian-email "<email>debian-email@&lists-host;</email>"> <!ENTITY email-debian-vote "<email>debian-vote@&lists-host;</email>"> <!ENTITY email-debian-security-announce "<email>debian-security-announce@&lists-host;</email>"> <!ENTITY email-debian-l10n-english "<email>debian-l10n-english@&lists-host;</email>"> <!ENTITY email-new-maintainer "<email>new-maintainer@debian.org</email>"> <!ENTITY email-debian-keyring "<email>keyring-maint@debian.org</email>"> <!ENTITY email-debian-admin "<email>debian-admin@debian.org</email>"> <!ENTITY email-ftpmaster "<email>ftpmaster@debian.org</email>"> <!ENTITY email-override "<email>override-change@debian.org</email>"> <!ENTITY email-wnpp "<email>wnpp@debian.org</email>"> <!ENTITY email-bts-control "<email>control@&bugs-host;</email>"> <!ENTITY email-security-team "<email>team@security.debian.org</email>"> <!-- misc Debian info --> <!ENTITY file-mail-lists "<file>/usr/share/doc/debian/mailing-lists.txt</file>"> <!ENTITY file-bts-docs "<file>/usr/share/doc/debian/bug-*</file>"> <!ENTITY file-python-policy "<file>/usr/share/doc/python/python-policy.txt.gz</file>"> <!ENTITY file-ocaml-policy "<file>/usr/share/doc/ocaml/ocaml_packaging_policy.gz</file>"> <!ENTITY file-lisp-controller "<file>/usr/share/doc/common-lisp-controller/README.packaging</file>"> <!ENTITY file-debian-private-archive "~debian/archive/debian-private/"> <!ENTITY file-bpp-autotools "<file>/usr/share/doc/autotools-dev/README.Debian.gz</file>"> <!ENTITY cron-bug-report '0 17 * * fri echo "index maint <var>address</var>" | mail request@&bugs-host;'> <!ENTITY control-file-fields "<list compact> <item><tt>Format</tt> <item><tt>Date</tt> <item><tt>Source</tt> <item><tt>Binary</tt> <item><tt>Architecture</tt> <item><tt>Version</tt> <item><tt>Distribution</tt> <item><tt>Urgency</tt> <item><tt>Maintainer</tt> <item><tt>Description</tt> <item><tt>Changes</tt> <item><tt>Files</tt> </list>"> <!-- misc, non-debian --> <!ENTITY pgp-keyserv "<tt>pgp5.ai.mit.edu</tt>"> <!ENTITY file-keyservs "<file>/usr/share/doc/pgp/keyserv.doc</file>"> <!ENTITY sample-dist-dirtree "<example> dists/stable/main/ dists/stable/main/binary-i386/ dists/stable/main/binary-m68k/ dists/stable/main/binary-alpha/ ... dists/stable/main/source/ ... dists/stable/main/disks-i386/ dists/stable/main/disks-m68k/ dists/stable/main/disks-alpha/ ... dists/stable/contrib/ dists/stable/contrib/binary-i386/ dists/stable/contrib/binary-m68k/ dists/stable/contrib/binary-alpha/ ... dists/stable/contrib/source/ dists/stable/non-free/ dists/stable/non-free/binary-i386/ dists/stable/non-free/binary-m68k/ dists/stable/non-free/binary-alpha/ ... dists/stable/non-free/source/ dists/testing/ dists/testing/main/ ... dists/testing/contrib/ ... dists/testing/non-free/ ... dists/unstable dists/unstable/main/ ... dists/unstable/contrib/ ... dists/unstable/non-free/ ... pool/ pool/main/a/ pool/main/a/apt/ ... pool/main/b/ pool/main/b/bash/ ... pool/main/liba/ pool/main/liba/libalias-perl/ ... pool/main/m/ pool/main/m/mailx/ ... pool/non-free/n/ pool/non-free/n/netscape/ ... </example>"> <!ENTITY example-pathfind '<example>pathfind() { OLDIFS="$IFS" IFS=: for p in $PATH; do if [ -x "$p/$*" ]; then IFS="$OLDIFS" return 0 fi done IFS="$OLDIFS" return 1 }</example>'> ������������������doc-debian-fr-3.1.3.1/doc/version.ent���������������������������������������������������������������0000644�0001750�0001750�00000000175�10133466171�016542� 0����������������������������������������������������������������������������������������������������ustar �jerome��������������������������jerome�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!ENTITY version "3.3.5"> <!ENTITY date-en "12 June, 2004"> <!ENTITY date-fr "12 octobre 2004"> <!ENTITY date-ja "06/12/04"> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-debian-fr-3.1.3.1/doc/internals.sgml������������������������������������������������������������0000644�0001750�0001750�00000042233�07605113047�017232� 0����������������������������������������������������������������������������������������������������ustar �jerome��������������������������jerome�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!doctype debiandoc system [ <!-- entity % manuals-version-def system "manuals-version"--> <!--%manuals-version-def;--> ]> <debiandoc><book> <titlepag> <title>Le manuel de l'intérieur de dpkg Klee Dienes klee@mit.edu Version 1.5 --- janvier 2001 Ce manuel décrit la structure interne de dpkg, le système de gestion des paquets. Copyright ©1997 Klee Dienes <klee@mit.edu>

Ce manuel est du logiciel libre; vous pouvez le redistribuer gratuitement et/ou le modifier sous les conditions de la « GNU General Public License » telle que publiée par la Free Software Foundation ; soit version 2, soit (à votre convenance) n'importe quelle version suivante.

Il est distribué dans l'espoir qu'il sera utile, mais sans aucune garantie; sans même la garantie implicite d'une possible commercialisation ou d'une adéquation avec la satisfaction d'un but précis. Consultez la « ;GNU General Public License » pour plus de détails.

Vous devriez avoir reçu une copie de la GNU General Public License avec votre système Debian, dans /usr/share/common-licenses/GPL, ou dans le fichier COPYING du paquet source de dpkg. Sinon, écrivez à la Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Notes de Compilation Automake

Ce chapitre a été écrit par Tom Lees tom@lpsg.demon.co.uk le mardi 4 Mars 1997 à 21:34:57 +0000, et comprend de conséquentes modifications faites par Klee Dienes klee@debian.org.

Ce chapitre contient quelques généralités à propos de la conversion à automake. Si vous avez l'intention de faire quoi que ce soit avec dpkg, vous devriez probablement lire d'abord ce fichier en entier. Vous avez été prévenu.

automake possède plusieurs avantages significatifs, parmi lesquels : il accepte correctement emacs lisp ; il accepte correctement libtool ; il contient l'utilitaire aclocal.

L'utilitaire aclocal est un programme très utile qui construit automatiquement un fichier aclocal.m4 à partir du fichier configure.in de façon à inclure les macros appropriées.

Ceci n'affecte rien d'autre que la recompilation des fichiers Makefile.in à partir des sources.

La principale différence notable est probablement le fait qu'au lieu d'utiliser des noms de fichiers propriétaires, il accepte maintenant configure --sharedstatedir et configure --localstatedir. Pour faire de ces options des options par défaut pour Debian, vous devriez utiliser ./configure --localstatedir=/etc --sharedstatedir=/var/lib.

J'ai aussi accommodé les macros canonisatrices que l'on trouve dans autoconf pour inclure l'ancienne façon de trouver l'« architecture » pour dpkg, i.e. pour qu'il soit un peu plus intelligent. Je l'ai modifié pour qu'il utilise les types systèmes « host », « build » et « target » au lieu de déterminer seulement l'architecture. Le type de CPU cible est vérifié dans « archtable » pour trouver l'architecture sur laquelle dpkg va tourner.

Il utilise gcc --print-libgcc-file-name pour trouver si possible l'architecture de compilation (c'est utilisé ensuite pour déterminer le format ELF ou a.out) ; il utilise si possible aussi dpkg --print-architecture pour modifier le champ cpu avant de passer l'alias de la cible à config.sub. Si vous voulez spécifier l'architecture, vous devriez maintenant utiliser --target=, plutôt que --with-arch, qui n'était de toute façon qu'un « hack ». Le vieux J'ai aussi tout converti à libtool (qu'on peut maintenant trouver dans la distribution Debian). Cela signifie essentiellement que tous les outils dpkg peuvent être compilés avec une librairie partagée libdpkg sans trop de difficultés (en fait, c'est l'option par défaut). Vous n'avez pas besoin d'installer libtool pour utiliser cette fonctionnalité (cela fonctionne comme autoconf), et d'une manière générale, cela ne devrait pas être souvent nécessaire.

Les nouvelles cibles dist construisent une distribution incluant tous les fichiers construits avec debiandoc2html, debiandoc2ps, etc., qui sont inclus dans la distribution de façon à ce que les gens puissent construire dpkg sans eux (particulièrement utile pour ceux qui font des portages).

Une cible J'ai enlevé la cible J'ai ajouté les cibles automake autoconf aclocal autoheader gettextize libtoolize

Si vous voulez modifier quelque chose dans les sources, je vous recommande de faire d'abord ce qui suit (après avoir installé les utilitaires appropriés, bien sûr) : make maintainer-clean aclocal autoheader autoconf gettextize libtoolize (ne laissez pas automake le lancer, sinon les fichiers libtool ne seront pas inclus dans les cibles dist) for i in COPYING INSTALL; do ln -s /usr/share/automake/$i .; done automake

J'ai aussi incorporé les patches créés par Galen Hazelwood qui internationalisent dpkg en utilisant GNU gettext - voyez le fichier « NOTES.intl » pour plus d'information.

Les autres modifications mineures sont : Le numéro de version est maintenant déterminé par debian/changelog, et non à partir du nom du répertoire. La création de version.h est maintenant gérée par le script configure, et non par le Makefile. include/dpkg.h est maintenant produit à partir de include/dpkg.h.in par un script « sed » qui insére les définitions des répertoires appropriées -- il accepte maintenant le changement des répertoires de dpkg (on peut installer dans /usr/local). Les fichiers « COPYING » (1 petite modification mineure) et « INSTALL » ont été mis à jour à partir de ceux distribués avec automake-1.1l. Du fait que la librairie partagée libdpkg est maintenant installée, j'ai aussi fait installer par défaut dpkg.h et dpkg-db.h dans /usr/include par include/Makefile. Questions: Dois je utiliser Internationalisation

Cette section a été écrite par Galen Hazelwood.

Dpkg est, pour le moins, généreux dans ses rapports d'erreur. La grande majorité des chaînes de caractères produites sont d'une manière ou d'une autre des messages d'erreur. Et si vous pensez que vous vous êtes égarés dans le Ministère des Ministères Redondants, vous auriez absolument raison. Beaucoup des messages d'erreurs dans dpkg.pot sont dupliqués et utilisés à différents endroits dans le programme.

Pour éviter de submerger complètement les traducteurs, j'ai pris des décisions arbitraires sur les sortes de chaînes de caractères à traduire. Toutes les chaînes envoyées à debug() sont laissées telles quelles, sur la base du fait qu'elles sont destinées aux développeurs de dpkg, et non à l'ensemble du public. La plupart des messages d'erreur internes sont très cryptiques, et confondraient certainement les traducteurs qui les verraient simplement posés là dans le fichier dpkg.pot, et ils sont laissés tels quels. (J'en ai quand même marqués quelques uns parmi les plus verbeux pour traduction.)

Si d'autres ne sont pas d'accord avec moi sur la nécessité de traduire ces chaînes, c'est suffisamment facile de simplement poursuivre et de les marquer plus tard.

J'ai ajouté le code de démarrage de gettext à la routine principale de dselect, ce qui était nécessaire car beaucoup des chaînes de lib sont traduites. Dselect est à part cela inchangé.

Modifications : Les fichiers dans intl et po ont été pris de gettext 0.10.26, grâce au programme gettextize. J'ai altéré les makefiles pour enlever le symbole VERSION, qui est utilisé seulement dans les cibles que dpkg n'accepte pas. aclocal.m4 a été récupéré dans le paquet textutils, configure.in a été altéré pour utiliser ces nouveaux tests, les symboles ont été ajoutés à acconfig.h, et deux nouveaux répertoires ont été ajoutés dans Makefile.in. Les Makefiles de dpkg, dpkg-deb, md5sum, split, et dselect cherchent maintenant des fichiers d'en-tête (headers) dans ../intl, et essayent de lier avec toute librairie d'internationalisation que configure trouve. Ils définissent aussi maintenant LOCALEDIR dans CFLAGS. include/dpkg.h possède tous les éléments NLS nécessaires, et le seul fichier qui ne les inclut pas (md5sum/md5sum.c) les comprend directement. La modification la plus profonde est due à un conflit entre xgettext et le style de codage de dpkg. Bien que xgettext comprenne la concaténation des chaînes constantes, il ne gère pas le cas où les symboles préprocesseur sont utilisés en même temps. Le code de dpkg utilise beaucoup cela, en particulier dans des cas comme celui-ci : ohshite("error reading from " BACKEND " pipe"); où BACKEND est défini comme « dpkg-deb ». xgettext n'acceptant pas cela, j'ai modifié l'utilisation générale comme cela : ohshite(_("error reading from dpkg-deb pipe"); Ce n'est pas très sympa pour Ian, je sais. Mais que puis je faire ? L'intérieur du code Définitions de structures versionrevision

struct versionrevision { unsigned long epoch; char *version; char *revision; };

La structure Les fonctions Les tables de traduction de l'analyse syntaxique

Chacune de ces tables est utilisée pour associer un ensemble de chaînes de caractères avec un ensemble correspondant d'entiers. Les tables actuelles sont :

const struct namevalue booleaninfos[];

Associe des chaînes booléennes ( priorityinfos[]

const struct namevalue priorityinfos[];

Associe les chaînes de priorité à des valeurs de type statusinfos[]

const struct namevalue statusinfos[]; Associe une chaîne sur l'état des paquets à des valeurs de type eflaginfos[]

const struct namevalue eflaginfos[]; wantinfos[]

const struct namevalue wantinfos[]; nicknames[]

const struct nickname nicknames[]; Associe des champs de contrôle dépassés à leurs versions actuelles. Les fonctions d'analyse syntaxique parseerr()

void parseerr (FILE *file, const char *filename, int lno, FILE *warnto, int *warncount, const struct pkginfo *pigp, int warnonly, const char *fmt, ...); Renvoie une erreur lors de l'analyse syntaxique d'un flot de données de contrôle. Cherche dans file un état d'erreur, affiche un message d'erreur dans stderr et termine avec un code d'erreur si une erreur est présente dans le flot. Formate les arguments variables suivant la chaîne illegal_packagename()

const char *illegal_packagename (const char *p, const char **ep) Vérifie le nom de paquet dans *ep après le dernier caractère du nom de paquet, incluant tout espace blanc éventuel (tel que défini par isspace()). En cas d'erreur, renvoie le message d'erreur comme un pointeur vers un buffer statique. informativeversion()

int informativeversion(const struct versionrevision *version)

Renvoie « true » si et seulement si varbufversion()

void varbufversion (struct varbuf *vb, const struct versionrevision *version, enum versiondisplayepochwhen vdew); Rend lisible par un humain une version de version dans vb. Les valeurs possibles de vdew sont : versiondescribe()

const char *versiondescribe (const struct versionrevision *version, enum versiondisplayepochwhen vdew);

Renvoie une version lisible par un humain de version comme un pointeur vers un buffer statique. Si la structure de version est vide, renvoie parseversion()

const char *parseversion (struct versionrevision *rversion, const char *string);

Fait l'analyse syntaxique du contenu de parsemustfield()

void parsemustfield (FILE *file, const char *filename, int lno, FILE *warnto, int *warncount, const struct pkginfo *pigp, int warnonly, char **value, const char *what); skip_slash_dotslash()

const char *skip_slash_dotslash (const char *p); convert_string()

static int convert_string (const char *filename, int lno, const char *what, int otherwise, FILE *warnto, int *warncount, const struct pkginfo *pigp, const char *startp, const struct namevalue *nvip, const char **endpp) doc-debian-fr-3.1.3.1/doc/index.xml0000644000175000017500000001453710531166773016214 0ustar jeromejerome ]> APT HOWTO /usr/share/doc/Debian/apt-howto/apt-howto.fr.html Ce document essaie de fournir à l'utilisateur une bonne compréhension du fonctionnement de l'utilitaire Debian de gestion de paquets, apt. Son but est de rendre la vie plus facile aux nouveaux utilisateurs Debian et aider ceux qui veulent approfondir leur compréhension de l'administration de ce système. Il a été créé pour le projet Debian afin d'aider à améliorer les ressources disponibles pour l'utilisateur de cette distribution. Julien Louis leonptitlouis@ifrance.com 2.0.2 - octobre 2006 ce texte est dans le paquet « apt-howto-fr ». Guide du nouveau responsable Debian /usr/share/doc/maint-guide/maint-guide.fr.html/index.fr.html Ce document essaye de décrire à l'utilisateur Debian courant (et au futur développeur) la construction d'un paquet Debian. Frédéric Dumont frederic.dumont@easynet.be 1.2.3 - 18 janvier 2005 ce texte est dans le paquet « maint-guide-fr ». Debian Euro HOWTO debian-euro-support.fr.html/index.html Debian et l'euro. Julien Louis leonptitlouis@ifrance.com version 1.2, 4 juin 2003. Utiliser et configurer Debian pour le français debian-fr-howto.html/index.html Ce document présente les spécificités liées au français pour l'utilisation d'un système Debian GNU/Linux. Nicolas Sabouret nico@debian.org 16 janvier 2004 Guide d'introduction à Debian GNU/Linux debian-guide_fr-1.0.html/index.html Ce texte est la version française du guide d'introduction à la distribution Debian GNU/Linux. Patrice Karatchentzeff p.karatchentzeff@free.fr Traduction du document du 2 octobre 2000 Le manuel de l'intérieur de dpkg internals.html/index.html Ce manuel décrit la structure interne de dpkg, le système de gestion des paquets. Christian Couder chcouder@mail.club-internet.fr Version 1.5 - janvier 2001 La charte Debian policy.fr.html/index.html Ce manuel est la charte de la distribution Debian GNU/Linux. Sont abordés la structure et le contenu d'une archive Debian, certaines questions sur la conception du système d'exploitation, ainsi que les exigences techniques que chaque paquet doit satisfaire afin d'être inclus dans la distribution. Frédéric Bothamy frederic.bothamy@free.fr 3.7.2.2 - 21 novembre 2006 Un rapide historique de Debian project-history.fr.html/index.html Ce document décrit l'histoire et les buts du projet Debian. Simon Paillard simon.paillard@enst-bretagne.fr 2.7 - 7 octobre 2006 Le Manifeste de Linux Debian traduit par Christophe Le Bars est inclus dans ce document. Guide de référence du développeur Debian /usr/share/doc/developers-reference-fr/index.fr.html Le but de ce document est de donner une vue d'ensemble des procédures à suivre et des ressources mises à la disposition des développeurs Debian. Antoine Hulin (ancien traducteur) antoine.hulin@origan.fdn.fr Frédéric Bothamy (traducteur actuel) debian-l10n-french@lists.debian.org 3.3.7 - 7 avril 2006 ce texte est dans le paquet « developers-reference-fr ». doc-debian-fr-3.1.3.1/doc/debian-manifesto.fr.sgml0000644000175000017500000001721510117142501021035 0ustar jeromejerome Le Manifeste de Linux Debian Écrit par Ian Jackson ijackson@gnu.ai.mit.edu Traduction française par Christophe Le Bars clebars@debian.org Révisé le 01/06/94 Veuillez noter que ce document est fourni pour documenter l'histoire de Debian. Même si les idées générales s'appliquent encore, des détails ont changé. Le Manifeste de Linux Debian Qu'est-ce que Linux Debian ?

Linux Debian est une toute nouvelle sorte de distribution Linux. Au lieu d'être développée par une personne isolée ou un groupe, comme les autres distributions de Linux ont pu l'être dans le passé, Debian est développée de manière ouverte dans l'esprit de Linux et de GNU. Le premier but du projet Debian est de créer enfin une distribution qui vivrait selon la nature du nom Linux. Debian est soigneusement et consciencieusement construite et sera maintenue et supportée avec la même attention.

C'est aussi une tentative pour créer une distribution non commerciale qui sera capable de véritablement rivaliser sur le marché commercial. Elle sera éventuellement distribuée par la « Free Software Foundation » sur CD-ROM et « l'association Linux Debian » fournira la distribution sur disquette ou sur bande accompagnée de manuels imprimés, le support technique et les autres besoins de l'utilisateur final. Tout ceci sera disponible pour un peu plus que le prix de revient, et le bénéfice sera utilisé pour d'autres développements de logiciels libres pour tous les utilisateurs. Une telle distribution est essentielle pour le succès du système d'exploitation Linux sur le marché commercial et elle doit être faite par des organisations ayant la possibilité de faire progresser avec succès et de défendre l'informatique libre sans la pression du profit ou de la rentabilité. Pourquoi Debian a-t-elle été conçue ?

Les distributions sont essentielles pour le futur de Linux. En premier lieu elles éliminent le besoin pour l'utilisateur de repérer, télécharger, compiler, installer et d'intégrer un grand nombre d'outils essentiels permettant de construire un système Linux fonctionnel. À la place, la charge de l'assemblage du système est supportée par le créateur de la distribution, dont le travail peut être partagé par des milliers d'autres utilisateurs. La plupart des utilisateurs goûteront en premier à Linux au travers d'une distribution et la plupart des utilisateurs continueront à utiliser une distribution pour profiter de ses avantages même lorsqu'ils seront familiers avec le système d'exploitation. Donc, les distributions jouent en fait un très grand rôle.

En dépit de leur importance évidente, les distributions ont peu attiré l'attention des développeurs. Il y a une raison simple à cela : elles ne sont ni faciles ni enthousiasmantes à construire et requièrent beaucoup d'efforts continus de la part du créateur pour garder la distribution sans erreur et à jour. C'est une chose d'assembler un système à partir de rien ; cela en est une autre de s'assurer que le système est facile à installer pour d'autres, qu'il est installable et utilisable avec une large variété de configurations matérielles, qu'il contient des logiciels que d'autres trouveront utiles et qu'il est mis à jour lorsque les composants eux-mêmes sont améliorés.

Beaucoup de distributions ont commencé comme des systèmes réellement bons, mais le temps passant, l'attention pour maintenir la distribution est devenue une préoccupation secondaire. La « Softlanding Linux System » (mieux connue comme SLS) est un cas exemplaire. C'est certainement la distribution Linux disponible contenant le plus de bogues et la plus mal maintenue ; malheureusement, c'est certainement aussi la plus populaire. C'est, sans discussion, la distribution qui attire le plus l'attention des nombreux « distributeurs » commerciaux de Linux qui sont apparus pour capitaliser la popularité croissante du système d'exploitation.

C'est une mauvaise combinaison en fait, puisque la plupart des gens qui obtiennent Linux de ces « distributeurs » reçoivent une distribution Linux pleine de bogues et mal maintenue. Comme si cela ne suffisait pas, ces « distributeurs » ont une fâcheuse tendance à vanter de manière trompeuse des caractéristiques non fonctionnelles ou extrêmement instables de leurs produits. Ajouter cela au fait que l'acheteur s'attendra, bien sûr, à ce que le produit corresponde à sa publicité et au fait que beaucoup pourront voir Linux comme un système commercial (ils ont aussi une tendance à ne pas mentionner que Linux est libre, ni qu'il est distribué sous la licence GNU). Enfin, ces distributeurs font aujourd'hui suffisamment d'argent avec leurs efforts pour justifier l'achat de pages de publicité plus importantes dans plus de journaux ; c'est un exemple classique d'un comportement inacceptable récompensé par ceux qui ne connaissent rien de mieux. Clairement, quelque chose doit être fait pour remédier à cette situation. Pourquoi Debian pourra tenter de mettre fin à ces problèmes ?

Le processus d'élaboration de Debian est ouvert pour garantir que le système soit de la plus haute qualité et qu'il reflète les besoins de l'ensemble des utilisateurs. En impliquant des gens d'une grande variété de savoirs et d'horizons, Debian est capable d'être développée de manière modulaire. Ces composants sont de haute qualité car les personnes dotés d'une expertise dans un certain domaine auront l'opportunité de construire et de maintenir les composants individuels de ce domaine. Impliquer ces gens garantit aussi que des suggestions valables pour l'amélioration pourront être incorporées dans la distribution pendant son développement ; de cette façon, une distribution est créée basée sur les besoins et les désirs des utilisateurs plutôt que pour les besoins et les désirs d'un constructeur. C'est très difficile pour une personne seule ou un petit groupe d'anticiper ces besoins et ces désirs à l'avance sans une participation directe d'autres personnes.

Linux Debian sera aussi distribuée sur support physique par la « Free Software Foundation » et « l'association Linux Debian ». Ceci fournira Debian aux utilisateurs sans accès à Internet ou FTP et offrira des produits et des services tels que manuels imprimés et support technique à tous les utilisateurs du système. De cette manière, Debian pourra être utilisée par beaucoup plus de personnes et d'organisations qu'il ne serait possible autrement, le but étant d'offrir un produit de qualité et non des profits, et les bénéfices des produits et des services offerts pourront être utilisés pour améliorer le logiciel lui-même pour tous les utilisateurs qu'ils aient payés ou non pour l'obtenir.

La « Free Software Foundation » joue un rôle extrêmement important pour le futur de Debian. Par le simple fait qu'elle le distribuera, un message est envoyé au monde que Linux n'est pas un produit commercial et qu'il ne le sera jamais, mais que cela ne veut pas dire que Linux ne sera jamais capable de rivaliser commercialement. Pour ceux d'entre vous qui ne sont pas d'accord, je vous demande d'observer le succès de GNU Emacs et de GCC, qui ne sont pas des produits commerciaux mais qui ont eu malgré ça un impact certain sur le marché commercial.

Le temps est venu de se concentrer sur le futur de Linux plutôt que sur le but destructeur d'enrichir quelqu'un au détriment de la communauté Linux tout entière et de son futur. Le développement et la distribution de Debian ne sont peut-être pas la réponse aux problèmes que j'ai soulignés dans ce manifeste, mais j'espère qu'elle attirera au moins suffisamment l'attention sur ces problèmes pour permettre de les résoudre. doc-debian-fr-3.1.3.1/doc/project-history.fr.sgml0000644000175000017500000015325210531166145021011 0ustar jeromejerome Bref historique de Debian Projet de documentation Debian debian-doc@lists.debian.org Pour la traduction française : Simon Paillard (actuel)simon.paillard@enst-bretagne.fr Patrice Karatchentzeff p.karatchentzeff@free.fr 2.7 (dernière révision le 7 octobre 2006) Ce document décrit l'histoire et les objectifs du projet Debian. Ce document peut être librement redistribué ou modifié tant que vos modifications sont clairement mentionnées.

Ce document peut être redistribué contre paiement ou gratuitement, et peut être modifié (sont concernées les conversions d'un type de média ou de format de fichier vers un autre ainsi que les traductions d'une langue vers une autre), pourvu que vos modifications soient clairement indiquées comme telles.

Les contributions significatives à l'élaboration du présent document ont été faites par :

Bdale Garbee bdale@debian.org

Hartmut Koptein koptein@debian.org

Nils Lohner lohner@debian.org

Will Lowe lowe@debian.org

Bill Mitchell Bill.Mitchell@pobox.com

Ian Murdock imurdock@debian.org

Martin Schulze joey@debian.org

Craig Small csmall@debian.org

Ce document est actuellement maintenu principalement par Bdale Garbee bdale@debian.org.

Introduction — Qu'est-ce que le Projet Debian ?

est un groupement de volontaires du monde entier qui aspirent à réaliser un système d'exploitation composé uniquement de logiciels libres. Le produit principal du projet à ce jour est la distribution Debian GNU/Linux, qui inclut le noyau Linux et des milliers d'applications préempaquetées. De nombreux types de microprocesseurs sont supportés tels les Intel i386 et toutes versions ultérieures, l'Alpha, l'ARM, les Intel IA-64, les Motorola 68k, les MIPS, les PA-RISC, les PowerPC, les Sparc (et UltraSparc), les IBM S/390 et Hitachi SuperH.

Debian est l'initiateur de l', une organisation à but non lucratif établie à New-York. La SPI a été fondée pour aider Debian, et toute autre organisation du même type, à développer et distribuer du matériel et du logiciel libre. Entre autres choses, SPI fournit un mécanisme autorisant le Projet Debian à accepter des dons déductibles des impôts aux États-Unis.

Pour plus d'informations sur les logiciels libres, voir le et les principes du logiciel libre selon Debian, ou la page

Comment tout a débuté

Le projet Debian fut officiellement fondé par Ian Murdock le . À cette époque, le concept de « distribution » Linux était totalement nouveau. Ian avait l'intention de faire de Debian une distribution qui serait réalisée de manière ouverte, dans l'esprit de Linux et de GNU (pour plus de détails, lisez son manifeste disponible en annexe de ce document). La création de Debian a été sponsorisée par le projet GNU de la FSF pendant un an (de novembre 1994 à novembre 1995).

Debian voulait être élaborée soigneusement et consciencieusement, maintenue et supportée avec autant d'attention. Cela a commencé par un petit groupe de hackers du logiciel libre, qui grandit pour devenir une grande communauté organisée de développeurs et d'utilisateurs.

À ses débuts, Debian était la seule distribution ouverte aux contributions de tout développeur ou utilisateur. C'est toujours le seul distributeur Linux majeur qui ne soit pas une entité commerciale. C'est le seul projet important disposant d'une constitution, d'un contrat social, et de chartes pour organiser le projet. Debian est également la seule distribution « microempaquetée » utilisant des informations détaillées sur les dépendances entre les paquets, afin d'assurer la cohérence du système lors des mises à jour.

Pour atteindre et maintenir de hauts standards de qualité, Debian a adopté un vaste ensemble de chartes et de procédures pour l'empaquetage et la mise à disposition des logiciels. Ces standards sont soutenus par des outils, de l'automatisation et de la documentation qui implémentent tous les éléments clés de Debian d'une manière ouverte et transparente.

Comment prononcer Debian

La prononciation officielle de Debian est « déb-yann ». Le nom tire son origine des prénoms du créateur de Debian, Ian Murdock, et de sa femme, Debra.

Direction

Debian a eu plusieurs chefs depuis ses débuts en 1993.

Ian Murdock a fondé Debian en août 1993 et a mené le projet jusqu'en mars 1996.

Bruce Perens a dirigé Debian d'avril 1996 à décembre 1997.

Ian Jackson a dirigé Debian de janvier 1998 à décembre 1998.

Wichert Akkerman a dirigé Debian de janvier 1999 à mars 2001.

Ben Collins a dirigé Debian d'avril 2001 à avril 2002.

Bdale Garbee a dirigé Debian d'avril 2002 à avril 2003.

Martin Michlmayr a dirigé Debian de mars 2003 à mars 2005.

Branden Robinson a dirigé Debian d'avril 2005 à avril 2006.

Anthony Towns a été élu en avril 2006 et est notre chef de projet actuel.

Les versions de Debian

Debian 0.01 jusqu'à 0.90 (d'août à décembre 1993)

Debian 0.91 (janvier 1994) : cette version avait un système de paquets simpliste qui permettait d'installer et de désinstaller des paquets. Le projet est passé à plusieurs dizaines de personnes à ce moment.

Debian 0.93R5 (mars 1995) : la responsabilité de chaque paquet a été clairement assignée à un développeur à partir de cette date, et le gestionnaire de paquets (dpkg) a été utilisé pour installer les paquets après l'installation d'un système de base.

Debian 0.93R6 (novembre 1995) : apparition de dselect. Ce fut la dernière version de Debian au format a.out. Il y avait environ 60 développeurs. Le premier serveur master.debian.org a été construit par Bdale Garbee et hébergé par HP, parallèlement au développement de la version 0.93R6. Le déploiement d'un serveur maître explicite, sur lequel les développeurs Debian construiraient chaque version, a conduit directement à la création d'un réseau de miroirs Debian, et indirectement au développement de nombreuses chartes et procédures utilisées aujourd'hui pour gérer le projet.

Debian 1.0 n'est jamais parue : « InfoMagic », un revendeur de cédéroms, livra accidentellement la version de développement de Debian sous le nom 1.0. En décembre 1995, Debian et InfoMagic annoncèrent conjointement que cette version était déclarée radiée. Bruce Perens expliquait alors que les fichiers présents dans le « InfoMagic Linux Developer's Resource 5-CD Set November 1995 » annoncé comme « Debian 1.0 » ne constituaient pas la version 1.0 de Debian, mais une version de développement précédente qui n'était que partiellement au format ELF, ne s'amorçait probablement pas correctement, et ne représentait pas la qualité d'un système Debian officiel. Pour éviter la confusion entre cette version prématurée et la version réelle de Debian, le projet Debian a renommé sa version suivante « Debian 1.1 ». La version prématurée de Debian 1.0 sur cédérom n'est pas reconnue et ne devrait pas être utilisée.

Debian 1.1 Buzz (17 juin 1996) : ce fut la première version de Debian portant un nom de code. Il a été choisi, comme tous les autres par la suite, d'après les personnages du film Toy Story... et dans le cas présent d'après celui de Buzz Lightyear (Buzz l'éclair). À ce moment, Bruce Perens prenait la succession de Ian Murdock à la direction du projet Debian. Celui-ci travaillait alors pour Pixar, la société qui produisait ce film... Cette version était 100 % ELF, utilisait le noyau Linux 2.0 et contenait 474 paquets.

Debian 1.2 Rex (12 décembre 1996) : nom extrait du dinosaure en plastique du film. 848 paquets et 120 développeurs.

Debian 1.3 Bo (5 juin 1997) : nom extrait de « Bo Beep », la bergère. 974 paquets et 200 développeurs.

Debian 2.0 Hamm (24 juillet 1998) : nom extrait du cochon du film. Première version de Debian à supporter l'architecture 68k de Motorola. Cette version (encadrée par Ian Jackson comme chef de projet) a marqué la transition vers la bibliothèque libc6, proposait plus de 1500 paquets et comptait 400 développeurs.

Debian 2.1 Slink (9 mars 1999) : première version de Debian à supporter l'architecture et . Cette version, alors que Wickert Akkerman était chef du projet, contenait environ 2250 paquets sur deux cédéroms officiels et incluait apt, la nouvelle interface de gestion de paquets. Largement imité, apt réglait les problèmes engendrés par la croissance continuelle de Debian, et a établi un nouveau paradigme de l'obtention et de l'installation de paquets sur des systèmes d'exploitations à source ouvert.

Debian 2.2 Potato (15 août 2000) : nom de « M. Patate » du film. Cette version a ajouté le support des architectures et . Alors que Wichert était toujours chef du projet, cette version comportait plus de 3900 paquets binaires provenant de plus de 2600 paquets de sources maintenus par plus de 450 développeurs Debian.

Debian 3.0 Woody (19 juillet 2002) : nom du personnage principal du film : « Woody » le cowboy. Encore d'autres architectures ont été ajoutées à cette version : , , , et . C'est aussi la première version à inclure des logiciels de chiffrement en raison des restrictions à l'exportation aux États-Unis, et également la première à inclure KDE, maintenant que les problèmes de licence de QT étaient résolus. Cette version (avec Bdale Garbee récemment élu chef du projet) contenait environ 8500 paquets binaires sur 7 cédéroms dans la version officielle.

Debian 3.1 Sarge (6 juin 2005) : nom du sergent des hommes de l'armée de plastique vert. Aucune nouvelle architecture n'a été ajoutée à cette version, bien qu'un portage AMD64 non officiel ait été publié au même moment et distribué sur le . Cette version comporte un nouvel installateur : debian-installer, un logiciel modulaire gérant la détection automatique de matériel ainsi que l'installation silencieuse, et qui a été traduit intégralement dans plus de trente langues. Ce fut aussi la première version incluant un suite bureautique complète : OpenOffice.org. Alors que Branden Robinson venait juste d'être élu chef du projet Debian, cette version comportait plus de 15000 paquets binaires sur 14 cédéroms dans la version officielle, préparés par plus de 1600 développeurs Debian.

Historique détaillé Les versions 0.x

Debian est né en août 1993 grâce à Ian Murdock, alors étudiant à l'université de Purdue, aux États-Unis. Debian fut soutenue par le projet GNU de la , l'association créée un an auparavant par Richard Stallman et associée à la Gnu Public License (NdT : Licence Publique Générale) (GPL), de novembre 1994 jusqu'à novembre 1995.

Les versions 0.01 jusqu'à 0.90 de Debian ont été publiées entre août et décembre 1993. Ian Murdock écrivait alors :

« La version 0.91 de Debian a été publiée en janvier 1994. Elle avait un système primitif de gestion de paquets qui permettait aux utilisateurs de manipuler les paquets mais n'autorisait pas grand chose d'autre (il ne possédait certainement pas de dépendances ou d'options analogues). À ce moment-là, quelques dizaines de personnes travaillaient sur Debian, même si je devais toujours assembler les versions moi-même. La version 0.91 fut la dernière version faite de cette manière. »

« Une grande partie de l'année 1994 a été consacrée à organiser le projet Debian de façon à ce que les autres puissent plus directement contribuer, comme pour la réalisation de dpkg (Ian Jackson fut très largement responsable de cette dernière). Si je me souviens bien, il n'y a pas eu de version officielle en 1994, bien que nous en ayons eu un certain nombre en interne, à chaque fois que nous progressions dans l'avancement de la distribution. »

« La Debian 0.93, en version 5, est sortie en mars 1995 et a été la première version « moderne » de Debian : il n'y avait jamais eu autant de développeurs (bien que je ne puisse me rappeler combien), chacun maintenait ses propres paquets et dpkg était utilisé pour installer et maintenir tous ces paquets après l'installation du système de base. »

« La Debian 0.93, en version 6, est sortie en novembre 1995 et a été la dernière version au format a.out. Il y avait environ 60 développeurs pour maintenir les paquets de la version 0.93R6. Si je me souviens bien, dselect a fait son apparition dans cette version. »

Ian Murdock fait aussi remarquer que la Debian 0.93R6 « ... a été ma version favorite de Debian » bien qu'il admette la possibilité d'être de parti pris, alors qu'il avait arrêté de travailler activement sur le projet en mars 1996 durant la pré-production de la Debian 1.0. Cette dernière fut renommée 1.1 pour éviter toute confusion avec un fabricant de cédérom qui avait nommé faussement 1.0 une version précédente. Cet incident mena au concept d'images ISO « officielles », de façon à éviter aux vendeurs ce genre de bévue.

Durant le mois d'août 1995 (entre les versions 0.93R5 et 0.93R6 de Debian), Hartmut Koptein a débuté le premier portage de Debian pour la famille des Motorola m68k. Il disait que « de nombreux paquets étaient construits autour de l'architecture i386 (« petit-boutiste », -m486, -O6 et tout ce genre d'options de la bibliothèque libc4) et que cela a été un travail énorme que d'avoir une base de paquets de départ sur ma machine (un Atari Medusa 68040, 32 MHz). Après trois mois (en novembre 1995), j'ai mis à disposition 200 paquets, sur les 250 disponibles, tous pour la bibliothèque libc5 ! ». Plus tard, il commença un autre portage avec Vincent Renardias et Martin Schulze, pour la famille des PowerPC.

Depuis ce moment-là, le projet Debian s'est développé en incluant de nombreux vers d'autres architectures, ainsi qu'un portage vers un nouveau noyau (différent de Linux), le micronoyau GNU Hurd, et au moins une variante du noyau BSD.

Un des tout premiers membres du projet, Bill Mitchell, se rappelle au sujet du noyau Linux :

« ... On devait être entre la version 0.99r8 et 0.99r15 lorsqu'on a débuté. Pendant très longtemps, j'étais capable de construire un noyau en moins de 30 minutes sur une machine dotée d'un 386 à 20 MHz, et j'étais ainsi capable d'installer une Debian dans le même temps avec moins de 10 Mo d'espace disque. »

« ... Je me souviens que l'équipe initiale comprenait Ian Murdock, moi-même, Ian Jackson, un autre Ian dont le nom de famille m'échappe, Dan Quinlan, et quelques autres personnes dont je ne me souviens pas des noms. Matt Welsh faisait aussi partie du groupe initial, ou l'a rejoint à ses tout débuts (il a depuis quitté le projet). Quelqu'un a créé une liste de discussions et nous nous sommes mis au travail. »

« Si je me souviens bien, nous ne sommes pas partis d'un plan défini, et nous n'avons pas commencé en définissant des objectifs avec une approche très organisée. Dès le début, si je ne me trompe pas, nous avons rassemblé aléatoirement les sources d'un certain nombre de paquets. Avec le temps, nous avons fini par mettre au point une collection de composants qui seraient nécessaires au cœur de la distribution : le noyau, un shell, update, getty, de nombreux autres programmes et fichiers de configuration requis pour initialiser le système ainsi que tout un jeu d'utilitaires. »

Le premier gestionnaire de paquets de Debian

Aux tout premiers pas du projet, ses membres ont choisi de ne distribuer que les paquets source. Chaque paquet serait composé du code source amont ainsi que d'une rustine pour Debian. Les utilisateurs n'auraient alors qu'à « détarer » les sources, appliquer les rustines puis et ensuite compiler eux-mêmes. Ils ont cependant compris très tôt qu'une distribution sous forme d'exécutables serait nécessaire. Le premier outil d'empaquetage, écrit par Ian Murdock et appelé dpkg, créait un paquet dans un format binaire spécifique à Debian et pouvait être utilisé plus tard pour dépaqueter et installer les fichiers d'un paquet.

Ian Jackson a ensuite rapidement repris le développement de l'outil d'empaquetage, en renommant l'outil en lui-même dpkg-deb et en écrivant une interface qu'il appela dpkg pour faciliter l'utilisation de dpkg-deb et introduire les notions de dépendances et conflits du système Debian d'aujourd'hui. Les paquets fabriqués à partir de ces outils possédaient un en-tête avec la version de l'outil utilisé pour créer le paquet et un fichier à l'intérieur duquel se trouvait l'archive sous forme de « tarball », lequel était séparé de l'en-tête par des informations de contrôle.

C'est à ce moment qu'un débat a pris forme au sein des membres du projet. Certains préconisaient l'abandon du format spécifique de Debian créé par dpkg-deb en faveur du format de l'outil ar. Après de nombreuses versions de formats de fichiers, et autant d'adaptations des outils d'empaquetage, le format ar fut adopté. La valeur ajoutée de ce changement fut la possibilité pour un paquet Debian d'être dépaqueté sur n'importe quel système Unix sans avoir besoin de lancer un exécutable auxiliaire. En d'autres mots, seuls les outils standards présents sur chaque système Unix comme 'ar' ou 'tar' sont nécessaires au dépaquetage d'un paquet binaire Debian pour en examiner son contenu.

Les versions 1.x

Lorsque Ian Murdock quitta Debian, il nomma Bruce Perens comme successeur. Bruce s'était initialement intéressé à Debian alors qu'il essayait de créer une distribution de Linux sur cédérom nommée « Linux for Hams », qui devait inclure tous les logiciels Linux intéressant les opérateurs de radio amateur. Constatant que le cœur du système Debian nécessitait encore bien plus de développement pour correspondre à son projet, Bruce s'est mis à travailler intensivement sur le système de base et les outils relatifs à l'installation, en remettant ses projets à plus tard. Son travail incluait l'assemblage (avec Ian Murdock) du premier ensemble des scripts d'installation de Debian, qui ont permis de créer la disquette de secours, qui a été un composant c½ur de la panoplie d'outils d'installation de Debian pour plusieurs publications.

Ian Murdock raconte :

« Bruce fut le candidat naturel à ma succession car il maintenait le système de base depuis près d'un an. Il a pu ainsi combler le vide dû au fait que le temps que je pouvais consacrer à Debian déclinait rapidement. »

Il lança un certain nombre d'éléments importants du projet, incluant la coordination des efforts pour écrire les principes du logiciel libre selon Debian et le Contrat Social de Debian ainsi que le démarrage de l'Open Hardware Project. Pendant la durée de ses fonctions de chef de projet, Debian a gagné des parts de marché et une réputation de plate-forme pour utilisateurs de Linux sérieux et compétents.

Bruce Perens a été aussi à l'origine de la création de . Bien qu'originellement conçue afin de donner au projet Debian une entité légale pour accepter les dons, ses objectifs évoluèrent rapidement pour inclure le soutien aux projets de logiciels libres en dehors du projet Debian.

Voici les différentes versions de Debian sorties pendant cette période :

1.1 Buzz, sortie en juin 1996 (474 paquets, noyau 2.0, entièrement au format ELF, dpkg) ;

1.2 Rex, sortie en décembre 1996 (848 paquets, 120 développeurs) ;

1.3 Bo, sortie en juillet 1997 (974 paquets, 200 développeurs).

Il y a eu quelques versions intermédiaires pour la version 1.3, la dernière portant le numéro 1.3.1R6.

Bruce Perens a été remplacé par Ian Jackson comme chef de projet Debian au début du mois de janvier 1998, après avoir amené le projet à la préparation de la version 2.0.

Les versions 2.x

Ian Jackson est devenu le responsable du projet Debian au début de l'année 1998 et tout de suite après vice-président de la Software in the Public Interest. Après la démission du trésorier (Tim Sailer), du président (Bruce Perens) et du secrétaire (Ian Murdock), il est devenu président et trois nouveaux membres furent choisis : Martin Schulze (vice-président), Dale Scheetz (secrétaire) et Nils Lohner (trésorier).

La version 2.0 de Debian (Hamm) est sortie en juillet 1998 pour les architectures de processeurs Intel i386 et Motorola 68000. Cette version se caractérise par l'introduction d'une nouvelle version des bibliothèques C (libc6 reposant sur la glibc2). Au moment de sa sortie, il y avait plus de 1500 paquets maintenus par plus de 400 développeurs Debian.

Wichert Akkerman a succédé à Ian Jackson comme chef de projet Debian en janvier 1999. La a été le 9 mars 1999, après avoir été retardée pendant une semaine par l'arrivée de problèmes de dernière minute.

Debian 2.1 (Slink) gérait officiellement deux nouvelles architectures : et . Les paquets de X-Window ont été profondément réorganisés par rapport aux précédentes versions. Elle incluait aussi apt, l'interface de gestion de paquets de la génération suivante. De plus, cette version de Debian a été la première à nécessiter deux cédéroms pour le « jeu de cédéroms officiels » ; elle contenait environ 2250 paquets.

Le 21 avril 1999, et le concrétisèrent une alliance avec Debian lorsque Corel affirma son intention de fabriquer une distribution Linux basée sur Debian et l'environnement de bureau du projet KDE. Durant le printemps et l'été suivant, une autre distribution basée sur Debian fit son apparition, . Le projet Debian choisit alors un nouveau

Un nouveau portage, unique en son genre, débuta à ce moment avec le . C'est la première tentative d'utiliser un noyau non-Linux, avec le , une version du micronoyau GNU Mach.

Debian 2.2 (Potato) est sortie le 15 août 2000 pour les architectures de processeurs Intel i386, Motorola 68000, Alpha, SUN Sparc, PowerPC et ARM. Elle a été la première version à inclure les portages pour PowerPC et ARM. Au moment de sa sortie, il y avait plus de 3900 paquets binaires et 2600 paquets sources maintenus par plus de 450 développeurs Debian.

Debian 2.2 a montré comment un projet de logiciel libre pouvait mener à un système d'exploitation moderne malgré tous les problèmes liés. Un groupe d'intérêt étudia en détail ce processus dans un article appelé , dont voici un extrait :

« [...] nous avons utilisé le système sloccount de David A. Wheeler pour déterminer le nombre de lignes de code source physiques (SLOC) de Debian 2.2 (Potato). Nous avons montré que Debian 2.2 contenait plus de 55 millions de SLOC physiques (presque deux fois plus que Red Hat 7.1, sortie environ 8 mois plus tard), et démontrant que le modèle de développement de Debian (basé sur le travail d'un groupe important de développeurs volontaires répartis dans le monde) est au moins aussi efficace que d'autres méthodes de développement [...] Nous avons également montré que si Debian avait été développée avec les méthodes propriétaires habituelles, le modèle COCOMO estime que le coût de Debian 2.2 aurait été proche de 1,9 milliard de dollars américains. De plus, nous avons fourni une analyse des langages de programmation utilisés dans la distribution (C à 70 %, C++ à 10 %, LISP et Shell à 5 %, puis les autres), et des paquets les plus importants (Mozilla, le noyau Linux, PM3, XFree86, etc.). »

Les versions 3.x

Avant même que la sortie de Woody puisse être préparée, un changement du système des archives sur ftp-master devait être effectué. Les dépôts de paquets ont été mi-décembre 2000, pour permettre les distributions spécifiques, telle que la nouvelle distribution de test (testing) utilisée pour la première fois pour rendre Woody prête à être distribuée. Un dépot de paquet n'est qu'une collection des différentes versions d'un paquet donné, depuis lequel de nombreuses distributions (actuellement experimental, unstable, testing et stable) peuvent extraire des paquets, qui sont ensuite inclus dans le fichier « Packages » de la distribution.

Au même moment la nouvelle distribution Testing fut introduite. Le principe était de déplacer dans Testing les paquets de Unstable annoncés stables, après une période de quelques semaines. Ceci a été introduit pour réduire le temps de gel et donner au projet la possibilité de préparer une nouvelle version à n'importe quel moment.

À cette époque, certaines des sociétés qui distribuaient des versions modifiées de Debian fermèrent définitivement. Corel vendit sa division Linux lors du premier trimestre 2001, Stormix déclara sa faillite le 17 janvier 2001, et Progeny stoppa le développement de sa distribution le 1er octobre 2001.

Le gel de la version suivante commença le 1er juillet 2001. Cependant, un peu plus d'un an a été nécessaire au projet pour sortir la version suivante, en raison de , de l'introduction de logiciels de chiffrage dans l'archive principale, et des changements de l'architecture sous-jacente (l'architecture du dépôt d'entrée des paquets et du dépôt de sécurité). Pourtant, pendant ce temps, la version stable (Debian 2.2) a été révisée jusqu'à sept fois, deux chefs du projet ont été élus : Ben Collins (en 2001) et Bdale Garbee. De plus, le travail de Debian sur d'autres sujets que l'empaquetage continuait à croître, entre autres l'internationalisation, le site web de Debian (plus d'un millier de pages) traduit dans plus de 20 langues, et le programme d'installation de la future version était prêt dans 23 langues. Les deux projets internes Debian Junior (pour les enfants) et Debian Med (pour les cabinets médicaux et la recherche) ont démarré lors du processus de sortie de Woody, dans l'objectif de rendre Debian adaptée à ces tâches.

Le travail autour de Debian n'a pas fait cesser l'organisation d'une rencontre annuelle appelée par les développeurs. La première réunion a eu lieu du 2 au 5 juillet en parallèle des Rencontres du Logiciel Libre (RLL) à Bordeaux (France) et a regroupé environ quarante développeurs Debian. La seconde conférence s'est déroulé le 5 juillet 2002 à Toronto (Canada) et a rassemblé plus de 80 participants.

Debian 3.0 (Woody) est sortie le 19 juillet 2002 pour les architectures de processeurs Intel i386, Motorola 68000, Alpha, SUN Sparc, PowerPC, ARM, HP PA-RISC, IA-64, MIPS, MIPS (DEC) et IBM s/390. Elle fut la première version à inclure les portages pour HP PA-RISC, IA-64, MIPS, MIPS (DEC) et IBM s/390. Au moment de sa sortie, il y avait plus de 8500 paquets binaires maintenus par plus d'un millier de développeurs Debian, et fut la première version à être disponible aussi bien sous forme de dévédérom que sous cédéroms.

Attendant la prochaine publication, les conférences Debian annuelles continuaient : la quatrième s'est tenue à Oslo du 18 juillet au 20 juillet 2003 avec plus de cent vingt participants, précédée d'un Debcamp du 12 juillet au 17 juillet. La cinquième conférence s'est tenue du 26 mai au 2 juin 2004 à Porto Alegre au Brésil et a rassemblé plus de cent soixante participants venant de vingt-six pays différents.

Debian 3.1 (Sarge) est sortie le 6 juin 2005 pour les mêmes architectures que Woody, bien qu'un portage AMD64 non officiel ait été publié au même moment, en utilisant l'infrastructure d'hébergement du projet disponible à . Il y avait alors environ 15000 paquets binaires maintenus par plus de mille cinq cents développeurs Debian.

La version Sarge a connu de nombreux changements majeurs, principalement en raison du temps important pris pour stabiliser et publier la distribution. Cette version n'a pas seulement mise à jour plus de 73 % des logiciels fournis dans la version précédente, mais a aussi ajouté plus de logiciels que les précédentes versions, en doublant presque de taille, avec plus de 9000 nouveaux paquets dont la suite OpenOffice, le navigateur web Firefox et le client de courriel Thunderbird.

Cette version était livrée avec les séries 2.4 et 2.6 du noyau Linux, XFree86 4.3, GNOME 2.8 et KDE 3.3 ainsi qu'un installateur flambant neuf. Ce nouvel installateur a remplacé les disquettes d'amorçage vieillissantes par une conception modulaire, fournit des installations avancées (avec le support RAID, XFS et LVM) avec détection du matériel, et facilite ainsi les installations pour les novices, quelque soit l'architecture. Aptitude est devenu l'outil sélectionné pour la gestion des paquets. Le système d'installation peut aussi se vanter d'un support complet de l'internationalisation puisqu'il a été traduit dans environ quarante langues. La documentation : le manuel d'installation et les notes de publication, ont été rendus disponibles lors de la publication dans dix et quinze langues respectivement.

Cette version comprend les efforts des sous-projets Debian-Edu/Skolelinux, Debian-Med et Debian-Accessibility, qui ont augmenté le nombre de paquets éducatifs, liés au domaine médical ainsi que ceux spécialement conçus pour les personnes handicapées.

La sixième conférence Debian s'est tenue à Espoo en Finlande du 10 juillet au 17 juillet 2005 et a rassemblé plus de trois cents participants. Des de la conférence sont disponibles en ligne.

La septième conférence Debian s'est tenue à Oaxtepec au Mexique du 14 mai au 22 mai 2006 et a rassemblé environ deux cents participants. Des et des de la conférence sont disponibles en ligne.

Événements importants Juillet 2000 : décès de Joel Klecker

Le 11 juillet 2000, Joel Klecker, aussi connu sous le pseudonyme « Espy », a disparu à 21 ans. Personne ne savait que derrière le pseudonyme « Espy » sur #mklinux, les listes de diffusions ou les canaux de discussions Debian, il y avait un jeune homme souffrant d'une forme de . La plupart des gens le connaissaient seulement comme « le gars de la glibc et du powerpc chez Debian » et n'avaient aucune idée des difficultés que Joel combattait. Bien que physiquement réduit, il a partagé son grand esprit avec les autres.

Joel Klecker (alias Espy) sera regretté.

Octobre 2000 : implémentation des dépôts de paquets

James Troup qu'il avait travaillé à réimplémenter les outils de maintenance de l'archive et était passé aux dépôts de paquets. Depuis cette date, les fichiers sont stockés à l'intérieur du répertoire pools du dépôt, dans un répertoire nommé d'après le paquet source correspondant. Les répertoires des distributions contiennent uniquement les fichiers des paquets qui contiennent des références au dépôt. Cela simplifie le cas des distributions qui se recoupent, comme la distribution de test ou la distribution instable. L'archive repose sur une base de données sous PostgreSQL, ce qui accélère les recherches.

Mars 2001 : décès de Christopher Rutter

Le 1er mars 2001, Christopher Matthew Rutter (aussi connu sous le pseudonyme « cmr ») a été tué à l'âge de 19 ans en étant percuté par une voiture. Christopher était un jeune et célèbre membre du projet Debian, aidant au portage ARM.

Chris Rutter sera regretté.

Mars 2001 : décès de Fabrizio Polacco

Le 28 mars 2001, Fabrizio Polacco a disparu des suites d'une longue maladie. Le projet Debian honore son bon travail ainsi que son fort dévouement à Debian et au logiciel libre. Les contributions de Fabrizio ne seront pas oubliées, les autres développeurs iront de l'avant pour continuer son travail.

Fabrizio Polacco sera regretté.

Juillet 2002 : décès de Martin Butterweck

Le 21 juillet 2002, Martin Butterweck (aussi connu sous le pseudonyme « blendi ») a disparu après avoir combattu la leucémie. Martin était un jeune membre du projet Debian, qui avait rejoint récemment le projet.

Martin Butterweck sera regretté.

Novembre 2002 : incendie d'un serveur Debian

Le 20 novembre 2002 aux environs de 8 heures CET, le centre des opérations réseau (NOC) de l'Université de Twente a pris feu. L'immeuble avait brûlé depuis la base. Les pompiers avaient abandonné tout espoir de pouvoir protéger la zone des serveurs. Le NOC hébergeait satie.debian.org qui contenait les archives de sécurité et non-US, de même que les bases de données des nouveaux responsables (nm) et de l'assurance qualité (qa). Debian a reconstruit ces services sur la machine klecker, qui avait récemment déménagé des États-Unis vers les Pays-Bas.

Mai 2004 : décès de Manuel Estrada Sainz et Andrés García

Le 9 mai, Manuel Estrada Sainz (alias ranty) et Andrés García (alias ErConde) ont été tués dans un tragique accident de voiture en rentrant de la conférence sur les logiciels libres tenue à Valence, en Espagne.

Manuel Estrada Sainz et Andrés García seront regrettés.

Juillet 2005 : décès de Jens Schmalzing

Le 30 juillet, Jens Schmalzing (alias jensen) a été tué dans un tragique accident sur son lieu de travail à Munich en Allemagne. Il était impliqué dans Debian comme responsable de plusieurs paquets, supporteur du portage PowerPC, membre de l'équipe du noyau, et a aidé à migrer le paquet du noyau pour PowerPC vers la version 2.6. Il maintenait également l'émulateur « Mac-on-Linux » et ces modules du noyau, et a aidé à la mise au point de l'installateur ainsi qu'aux activités locales à Munich.

Jens Schmalzing sera regretté.

Et après ?

Le projet Debian continue son travail sur la distribution instable (nom de code Sid, d'après le démoniaque et instable gamin du film Toy Story, qui ne devrait jamais être lâché dans le monde réel). Sid est le nom permanent donné à la distribution instable qui est « Still in Development » (NDT : toujours en développement). La plupart des nouveaux paquets ou des paquets mis à jour sont placés dans cette distribution.

Il est prévu que la version de test (Testing) devienne la prochaine distribution stable, de nom de code Etch.

Pour Etch, Debian travaille à résoudre les avec la licence « Free Documentation License » (FDL) de la FSF, à faire de amd64 une architecture officielle, à introduire un système d'initialisation basé sur les dépendances ainsi que le support de SElinux. Les développeurs vont travailler sur beaucoup d'autres points pour Etch, mais ceux-ci ne sont pas encore publiés. Vous pouvez consulter la .

Les autres objectifs pour Etch déjà implémentés comprennent  l'introduction de l'authentification gpg des dépôts apt (fait en juin 2005), l'intégration de Xorg dans Debian pour remplacer Xfree86 (fini en juillet 2005) et l'intégration de marques dans les informations des paquets (fait en juillet 2005).

Le Manifeste de Debian

Écrit par Ian A. Murdock Révisé le 01/06/94 Traduction française par Christophe Le Bars

Qu'est-ce que Debian Linux ?

Debian Linux est une toute nouvelle sorte de distribution Linux. Au lieu d'être développée par une personne isolée ou un groupe, comme les autres distributions de Linux ont pu l'être dans le passé, Debian est développée de manière ouverte dans l'esprit de Linux et de GNU. Le premier objectif du projet Debian est de créer enfin une distribution qui vivrait selon la nature du nom Linux. Debian est soigneusement et consciencieusement construite et sera maintenue et supportée avec la même attention.

C'est aussi une tentative pour créer une distribution non commerciale qui sera capable de véritablement rivaliser sur le marché commercial. Elle sera éventuellement distribuée par la « Free Software Foundation » sur cédérom et « l'association Debian Linux » fournira la distribution sur disquette ou sur bande accompagnée de manuels imprimés, le support technique et les autres besoins de l'utilisateur final. Tout ceci sera disponible pour un peu plus que le prix de revient, et le bénéfice sera utilisé pour d'autres développements de logiciels libres pour tous les utilisateurs. Une telle distribution est essentielle pour le succès du système d'exploitation Linux sur le marché commercial et elle doit être faite par des organisations ayant la possibilité de faire progresser avec succès et de défendre l'informatique libre sans la pression du profit ou de la rentabilité.

Pourquoi Debian a-t-elle été conçue ?

Les distributions sont essentielles pour le futur de Linux. En premier lieu elles éliminent le besoin pour l'utilisateur de repérer, télécharger, compiler, installer et d'intégrer un grand nombre d'outils essentiels permettant de construire un système Linux fonctionnel. Au lieu de cela, la charge de l'assemblage du système est supporté par le créateur de la distribution, dont le travail peut-être partagé par des milliers d'autres utilisateurs. La plupart des utilisateurs goûteront en premier lieu à Linux au travers d'une distribution et la plupart des utilisateurs continueront à utiliser une distribution pour profiter de ses avantages même lorsqu'ils seront familiers avec le système d'exploitation. Donc, les distributions jouent en fait un très grand rôle.

En dépit de leur importance évidente, les distributions ont peu attiré l'attention des développeurs. Il y a une simple raison à cela : elles ne sont ni faciles ni enthousiasmantes à construire et requièrent beaucoup d'effort continu de la part du créateur pour garder la distribution sans erreur et à jour. C'est une chose d'assembler un système à partir de rien; cela en est une autre de s'assurer que le système est facile à installer pour d'autres, qu'il est installable et utilisable avec une large variété de configurations matérielles, qu'il contient des logiciels que d'autres trouveront utiles et qu'il est mis à jour lorsque les composants eux-mêmes sont améliorés.

Beaucoup de distributions ont commencé comme des systèmes réellement bons, mais le temps passant, l'attention pour maintenir la distribution est devenue une préoccupation secondaire. La « Softlanding Linux System » (mieux connue comme SLS) est un cas exemplaire. C'est certainement la distribution Linux disponible contenant le plus de bogues et la plus mal maintenue; malheureusement, c'est certainement aussi la plus populaire. C'est, sans discussion, la distribution qui attire le plus l'attention des nombreux « distributeurs » commerciaux de Linux qui sont apparus pour capitaliser la popularité croissante du système d'exploitation.

C'est une mauvaise combinaison en fait, puisque la plupart des gens qui obtiennent Linux de ces « distributeurs » reçoivent une distribution Linux pleine de bogues et mal maintenue. Comme si cela ne suffisait pas, ces « distributeurs » ont une fâcheuse tendance à vanter de manière trompeuse des caractéristiques non fonctionnelles ou extrêmement instables de leurs produits. Ajoutez cela au fait que l'acheteur attendra, bien sûr, que le produit corresponde à sa publicité et au fait que beaucoup pourront voir Linux comme un système commercial (ils ont aussi une tendance à ne pas mentionner que Linux est libre, ni qu'il est distribué sous la licence GNU). Enfin, ces distributeurs font aujourd'hui suffisamment d'argent avec leurs efforts pour justifier l'achat de pages de publicité plus importantes dans plus de journaux ; c'est un exemple classique d'un comportement inacceptable récompensé par ceux qui ne connaissent rien de mieux. Clairement, quelque chose doit être fait pour remédier à cette situation.

Pourquoi Debian pourra tenter de mettre fin à ces problèmes?

Le processus d'élaboration de Debian est ouvert pour garantir que le système soit de la plus haute qualité et qu'il reflète les besoins de l'ensemble des utilisateurs. En impliquant des gens d'une grande variété de savoirs et d'horizons, Debian est capable d'être développée de manière modulaire. Ces composants sont de haute qualité car les personnes dotées d'une expertise dans un certain domaine auront l'opportunité de construire et de maintenir les composants individuels de ce domaine. Impliquer ces gens garantit aussi que des suggestions valables pour l'amélioration pourront être incorporées dans la distribution pendant son développement ; de cette façon, la création d'une distribution est basée sur les besoins et les désirs des utilisateurs plutôt que sur les besoins et les désirs d'un constructeur. C'est très difficile pour une personne seule ou un petit groupe d'anticiper ces besoins et ces désirs à l'avance sans une participation directe d'autres personnes.

Debian Linux sera aussi distribuée sur support physique par la « Free Software Foundation » et « l'association Debian Linux ». Ceci fournira Debian aux utilisateurs sans accès à Internet ou FTP et offrira des produits et des services tels que manuels imprimés et support technique à tous les utilisateurs du système. De cette manière, Debian pourra être utilisée par beaucoup plus de personnes et d'organisations qu'il ne serait possible autrement, le but étant d'offrir un produit de qualité et non des profits, et les bénéfices des produits et des services offerts pourront être utilisés pour améliorer le logiciel lui-même pour tous les utilisateurs qu'ils aient payés ou non pour l'obtenir.

La « Free Software Foundation » joue un rôle extrêmement important pour le futur de Debian. Par le simple fait qu'elle le distribuera, un message est envoyé au monde : Linux n'est pas un produit commercial et il ne le sera jamais, mais cela ne veut pas dire que Linux ne sera jamais capable de rivaliser commercialement. Pour ceux d'entre vous qui ne sont pas d'accord, je vous demande d'observer le succès du GNU Emacs et de GCC, qui ne sont pas des produits commerciaux mais qui ont eu malgré ça un impact certain sur le marché commercial.

Le temps est venu de se concentrer sur le futur de Linux plutôt que sur le but destructeur d'enrichir quelqu'un au détriment de la communauté Linux tout entière et de son futur. Le développement et la distribution de Debian ne sont peut-être pas la réponse aux problèmes que j'ai soulignés dans ce manifeste, mais j'espère qu'elle attirera au moins suffisamment l'attention sur ces problèmes pour permettre de les résoudre.

doc-debian-fr-3.1.3.1/doc/markup.fr.sgml0000644000175000017500000004310407605113047017136 0ustar jeromejerome Manuel de Debiandoc-SGML <author>Ian Jackson <email>ijackson@gnu.ai.mit.edu <author>Traduction de Christophe Le Bars <email>clebars@debian.org <version><date> <copyright>Copyright ©1996 Ian Jackson. <p> Debiandoc-SGML, dont fait partie ce manuel, est un logiciel libre; vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence Publique Générale GNU publiée par la Free Software Foundation, version 2 ou supérieure. <p> Debiandoc-SGML est distribué car potentiellement utile, mais <em>sans aucune garantie</em>; sans même la garantie implicite de commercialisation ou adéquation à une tâche particulière. Consultez la Licence Publique Générale GNU pour plus de détails. <p> Vous devez avoir reçu une copie de la Licence Publique Générale GNU avec votre système Debian GNU/Linux, dans <tt>/usr/doc/copyright/GPL</tt>, ou avec le paquet source <prgn/debiandoc-sgml/ dans le fichier <tt>COPYING</tt>. Sinon, écrivez à la Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. <toc sect> <chapt id="markup">Balises SGML et caractères spéciaux <p> Puisqu'il est saisi avec un éditeur de texte, un document SGML est constitué de texte entremêlé de balises marquant le début et la fin d'éléments. <p> Les balises sont de la forme <tt/<<var/element/>/ pour commencer l'élément <var/element/ et <tt></<var/element/></> pour le finir. <p> Il y a quelques raccourcis que vous pouvez utiliser: <tt><<var/element//<var/contenu//</> spécifie un élément <var/element/ qui contient <var/contenu/ - mais le <var/contenu/ ne peut pas contenir une barre oblique <tt>/</>. <tt></></> ferme l'élément encore ouvert le plus proche. <p> Certains types de balises de début d'élément peuvent avoir des attributs; ceux-ci apparaissent à l'intérieur des crochets angulaires et sont séparés du nom de l'élément par un espace. Les attributs autorisés pour une balise de début d'élément particulière sont décrits en même temps que cet élément. <p> Si vous voulez inclure des caractères spéciaux SGML (crochets angulaires <tt/</ <tt/>/, et commercial <tt/&/) comme texte, vous devez les désigner par leurs noms (ceci est appelé une référence d'entité dans le jargon SGML). <tt/&<var/name/;/ produit le caractère dont le nom est <var/name/. Quelques noms de caractère utiles sont: <taglist compact> <tag><tt/lt/ <item>le symbole inférieur (crochet angulaire gauche) <tt><</>; <tag><tt/gt/ <item>le symbole supérieur (crochet angulaire droit) <tt>></>; <tag><tt/amp/ <item>le et commercial <tt>&</>; <tag><tt/copy/ <item>le symbole copyright <tt>©</>; </taglist> La liste complète des caractères est empruntée à <prgn/linuxdoc-sgml/, dans le fichier <tt>rep/latin1/general</>. <p> Vous pouvez aussi utiliser <tt/&#<var/number/;/ pour désigner le caractère dont le numéro est <var/number/ (en ISO-LATIN-1). <var/number/ doit être en décimal. <chapt id="structure">Structure générale <p> La première ligne du document doit être <example> <!doctype debiandoc system> </example> pour indiquer que le document est un fichier Debiandoc-SGML. <p> Le document doit commencer par la balise <tt/<book>/ et se terminer par <tt></book></>. <p> Ceci doit être suivi par le titre, <tt/<title>/, une ou plusieurs paires <tt/<author>/-<tt/<email>/ (auteur-adresse électronique), et optionnellement une <tt/<version>/. Chacune d'elles est une partie du texte brut balisé - voir <ref id="inline">. La <tt/<version>/ peut aussi contenir <tt/<date>/ qui représente la date et l'heure de formatage du document. <p> Puis peut venir un résumé (<tt/<abstract>/), une note de <tt/<copyright>/ et une balise de table des matières (<tt/<toc>/). <p> Le résumé (<tt/<abstract>/) contient un seul paragraphe. <p> Le <tt/<copyright>/ contient un résumé du copyright (ceci est utilisé, par exemple, en bas de chaque page HTML) suivi par un ou plusieurs paragraphes, le premier devant être signalé par une balise <tt/<p>/ pour le distinguer du résumé. <p> La balise <tt/<toc>/ spécifie qu'une table des matières doit être produite. <tt/<toc>/ ne contient rien dans le source SGML - son contenu est généré par le formatage. <tt/<toc>/ peut avoir un attribut précisant son niveau de détail; par exemple <tt/<toc sect1>/ précise que les sous-sections doivent être incluses, tandis que <tt/<toc chapt>/ précise que seuls les chapitres doivent être inclus. Les valeurs autorisées sont <tt/chapt/, <tt/sect/, <tt/sect1/ et <tt/sect2/. <p> Après ces parties vient le corps du document - un ou plusieurs chapitres <tt/<chapt>/. <p> Il n'est pas nécessaire de marquer la fin des éléments <tt/<title>/, <tt/<author>/, <tt/<version>/, <tt/<abstract>/ et <tt/<copyright>/ - ils sont implicitement terminés par le début de l'élément suivant. <chapt id="chaptsectpar">Chapitres, sections et paragraphes <p> Chaque chapitre commence par une balise <tt/<chapt>/, suivi par le titre du chapitre. Le titre peut contenir du texte brut balisé, mais pas de références croisées (voir <ref id="inline">). <p> Le corps du chapitre est constitué de zéro à plusieurs paragraphes, le premier devant être indiqué par une balise <tt/<p>/ pour le distinguer du titre, puis de zéro à plusieurs sections. <p> Une section commence par <tt/<sect>/ et possède une structure équivalente: titre, optionnellement des paragraphes et puis optionnellement des sous-sections. <p> Les sous-sections sont <tt/<sect1>/; il y a aussi des divisions plus petites <tt/<sect2>/, <tt/<sect3>/ and <tt/<sect4>/. <p> Les paragraphes sont introduits par <tt/<p>/. Parfois la balise de début de paragraphe peut être omise, mais elle est obligatoire après <tt/<chapt>/, <tt/<sect>/ et ainsi de suite. Il n'est jamais nécessaire de marquer la fin d'un paragraphe avec <tt></p></>. <p> Les paragraphes peuvent contenir du texte brut balisé (voir <ref id="inline">) ainsi que des listes et des exemples (<ref id="listexamp">). <chapt id="inline">Texte brut balisé et balisage du style de caractères <p> Le texte ordinaire (appelé «texte brut» dans ce document) peut contenir des éléments de formatage spécial et de référencement croisé. Le texte brut apparaît dans les titres de chapitres et de sections, dans le résumé du copyright, à l'intérieur des paragraphe et dans d'autres endroits équivalents. <sect>Style de caractères <p> Il y a un certain nombre d'éléments pour marquer la signification particulière de certains morceaux de textes. Pour ceux-ci, la fin du texte spécial doit être marqué explicitement, en utilisant une balise de fin explicite <tt></<var/element/></>, la balise de fin abrégée fermant l'élément le plus proche <tt></></> ou la barre oblique <tt>/</> qui termine la forme la plus abrégée des balises. (voir <ref id="markup">). <taglist> <tag><tt/<em>/ - emphase <item> Indique que le texte contenu est plus important ou plus significatif que celui environnant. <p> Typiquement ceci sera représenté si possible par des italiques, ou par un texte en gras ou souligné, ou bien dans les formats de texte seulement, sans styles de caractère spéciaux, en encadrant le texte avec des astérisques comme *ceci*. <tag><tt/<var>/ - méta-variable <item> Indique que le texte contenu est une méta-variable. C'est-à-dire, que c'est le nom d'un objet ou d'une pièce syntaxique qui dans un usage normal serait remplacée par une valeur réelle. <p> Typiquement ceci sera représenté par des italiques, ou les formats de texte seulement en encadrant le texte avec des crochets angulaires comme <ceci>. Si plusieurs méta-variables apparaissent successivement, elles doivent chacune utiliser leur propre élément <tt/<var>/. <tag><tt/<prgn>/ - nom d'un programme ou d'un fichier bien connu <item> Indique que le texte contenu est le nom d'un programme, d'un fichier bien connu (habituellement sans chemin), d'une fonction ou d'un objet équivalent ayant un nom pour l'ordinateur. <p> Dans les formats de sortie où il existe des styles de caractères spéciaux et des styles de polices variés, ceci est habituellement représenté en utilisant une police non-proportionnelle. Dans les formats de sortie texte seulement, ces noms ne sont pas spécialement marqués, puisqu'ils surviennent fréquemment et qu'introduire un encadrement perturberait le cours du texte. <tag><tt/<tt>/ - chemin, code ou fragment de sortie, chaîne de commande <item> Indique que le texte contenu est une chaîne quelconque provenant ou étant destiné à un ordinateur. Ceci doit être utilisé pour les chemins complets, les fragments de code devant être visualisés sous forme brute et sans justification (voir aussi <ref id="examples"> pour une autre solution) et ainsi de suite. Il est fréquemment nécessaire d'introduire des méta-variables dans ces chaînes, qui dans ce cas doivent faire partie de l'élément <tt/<tt>/ plutôt que des éléments environnants. <p> Ceci sera habituellement représenté en utilisant une police de largeur fixe; dans les formats texte seulement un encadrement peut être utiliser autour de l'élément. <tag><tt/<qref id="<var/refid/">/ - référence conditionnelle <item> Crée une «référence conditionnelle» vers la référence nommée id (voir <ref id="xref">). Ceci doit être utilisé lorsque une référence croisée est utile si elle ne perturbe pas le cours du texte, mais que non-essentielle, elle peut être abandonnée si elle doit le perturber. <p> Dans les formats permettant des références croisées non-perturbantes en faisant d'une zone de texte un hyperlien sans introduire du nouveau texte, cet élément fera du texte contenu un hyperlien vers la cible de la référence croisée. Dans les autres formats cet élément n'aura aucun effet. </taglist> <sect id="xref">Références croisées <p> Il y a plusieurs éléments permettant d'introduire des références croisées soit vers les autres parties d'un même document soit vers d'autres documents. <p> Les références croisées internes au document sont basées sur un schéma d'identifiants référentiels. Chaque chapitre, section, sous-section, etc. peut avoir un attribut <tt/id/ lui donnant son identifiant référentiel - par exemple <tt/<chapt id="spong">/ spécifie que le chapitre commençant possède l'identifiant référentiel <tt/spong/. Cet identifiant référentiel peut alors être pointé dans d'autres parties du document en utilisant les éléments spéciaux des références croisées. <p> L'identifiant référentiel sera aussi utilisé pour générer des noms de fichiers et des objets référentiels pour les formats tel que HTML qui produisent plusieurs fichiers de sortie; si aucun identifiant référentiel n'est spécifié alors les numéros de chapitres et de sections seront utilisés. C'est une bonne idée de donner au moins à tous vos chapitres un identifiant référentiel pour que les noms de fichiers ne changent pas si vous changez l'ordre des chapitres ou des sections dans votre document. <p> <taglist> <tag><tt/<ref id="<var/idref/">/ - Référence interne au document <item> Ceci génère une référence croisée à l'intérieur du même document vers la section ou le chapitre correspondant à l'identifiant <var/idref/. <p> L'élément <tt/<ref>/ n'a pas de contenu; le numéro de section ou de chapitre, le titre et son numéro de page ou tout autre chose approprié pour le format de sortie sera inséré dans le texte à l'endroit où la balise apparaît. <p> Syntaxiquement la référence croisée est une phrase sans verbe, approprié dans des situations tel que <tt>(voir <ref id="<var/.../">)</> ou <tt>plus d'informations dans <ref id="<var/.../">.</>. <tag><tt/<manref name="<var/nom/" section="<var/section/">/ - page de manuel (manpage) <item> Génère une référence croisée vers la page de manuel <var/nom/ de la section <var/section/. Cette balise n'a pas de contenu; le texte décrivant la page, typiquement <tt/<var/nom/(<var/section/)/, sera inséré à l'endroit où <tt/<manref>/ apparaît. <tag><tt/<email>/ - adresse de courrier électronique (email) <item> Indique que le texte contenu est une adresse de courrier électronique (email). Le contenu de la balise doit uniquement être le texte de l'adresse elle-même; les balises de style de caractères et les références croisées sont interdites. Habituellement la balise de fin <tt></email></> ne doit pas être omise, mais on peut l'oublier lorsque l'adresse apparaît à la fin d'un élément <tt/<author>/. Le début de l'élément suivant impliquera la fin de l'adresse de courrier électronique. <p> Dans certains formats, ceci générera une véritable référence croisée qui pourra (par exemple) être utiliser pour envoyer un courrier électronique à l'adresse définie. Dans d'autres, cela marquera simplement le texte de manière spéciale, habituellement en l'encadrant de crochets angulaires <tt/</ <tt/>/. <tag><tt/<ftpsite>/ - nom de site FTP anonyme <tag><tt/<ftppath>/ - chemin dans le dernier site FTP cité <item> <tt/<ftpsite>/ indique que le contenu de l'élément est le nom DNS d'un site FTP anonyme et <tt/<ftppath>/ un chemin dans ce site FTP. Les deux éléments ne peuvent contenir aucune balise de style de caractères ou de références croisées. <p> Typiquement les deux éléments seront représentés par une police non-proportionnelle; si possible, le chemin du site (<tt/<ftppath>/) sera transformé en un hyperlien fonctionnel vers le fichier ou le répertoire du dernier site FTP (<tt/<ftpsite>/) cité. <p> <tt/<ftppath>/ doit toujours être précédé par <tt/<ftpsite>/ dans le même chapitre, mais une fois qu'un site FTP a été cité, plusieurs chemins peuvent apparaître. </taglist> <sect>Notes de bas de page <p> Les notes de bas de page peuvent apparaître dans la plupart des textes bruts et sont indiquées par <tt><footnote><var/.../</footnote></>. Le texte de la note de bas de page sera retiré, placé ailleurs (l'endroit dépendant du format) et remplacé par une référence ou un hyperlien vers la note de bas de page. <p> Le contenu de la note de bas de page doit être un ou plusieurs paragraphes; le début du premier paragraphe doit être marqué explicitement. Les balises de texte brut tel que les styles de caractères n'ont pas d'effet sur le contenu de la note de bas de page définit à l'intérieur d'eux - la note de bas de page fait table rase. <p> Les notes de bas de page peuvent être imbriquées, mais c'est rarement une bonne idée. <chapt id="listexamp">Listes et exemples <sect>Listes <p> Il y a trois sortes de listes: <list compact> <item><tt/<list>/ - liste ordinaire (avec puces); <item><tt/<enumlist>/ - liste numérotée; <item><tt/<taglist>/ - liste de définitions. </list> <p> Chaque entrée dans une liste ordinaire ou numérotée est introduite par <tt/<item>/. Chaque entrée dans une liste de définitions est un ou plusieurs objets <tt/<tag>/s suivis par un objet <tt/<item>/. <p> Il n'est pas nécessaire de marquer la fin de <tt/<tag>/ ou de <tt/<item>/. <p> Les trois types de listes viennent en deux variantes, ceci dépend de la présence (par ex. <tt><taglist compact></>) ou non (par ex. <tt/<enumlist>/) de l'attribut <tt/compact/. L'objet <tt/<tag>/ peut seulement contenir du texte brut. <p> Les versions compactes sont prévues pour être utilisées à l'intérieur des paragraphes. Le formateur n'insèrera pas de blanc autour de la liste ou entre les entrées.<footnote>Il y a un problème dans ce cas avec HTML. Le formateur HTML ne le fait pas, en utilisant l'attribut <tt/compact/ des listes HTML pour les listes qu'il génère, mais peu de navigateurs interprète cela correctement.</footnote> Les entrées dans une liste compacte doivent être un seul paragraphe (il n'est pas nécessaire de marquer le début du paragraphe). Toutes les listes à l'intérieur d'une liste compacte doivent être elles-mêmes marquées compactes (même si les formateurs déduiront en faite par eux-mêmes qu'elles doivent être compactes). <p> Les versions non compactes sont prévues pour se comporter comme des paragraphes. Chaque entrée dans une telle liste peut contenir plus d'un paragraphe (encore une fois, le début du premier paragraphe n'a pas besoin d'être marqué). La liste est séparée du texte environnant et chaque entrée des autres, par des lignes blanches comme il est d'usage pour les ruptures de paragraphe. <sect id="examples">Exemples <p> Exemples - fragments de codes de plusieurs lignes, scripts et bouts de textes d'ordinateur équivalents - sont introduits avec <tt/<example>/ et finissent avec <tt></example></>. <p> L'exemple sera formatté exactement comme il y a été saisi, en reproduisant espaces et sauts de lignes. Il sera représenté dans une police non-proportionnelle, habituellement celle utilisée pour le style de caractère <tt/<tt>/, même si le formateur utilise normalement une police proportionnelle. Toute indentation appropriée sera ajoutée par le formateur; l'exemple doit être saisi en commençant dans la colonne la plus à gauche. <p> Les exemples peuvent contenir du texte balisé mais ne peuvent pas contenir des références croisées ou les éléments de style de caractères <tt/<tt>/, <tt/<prgn>/ et <tt/<em>/. Voir <ref id="inline">. <p> Un exemple ne produit pas de rupture de paragraphe; les exemples sont considérés comme parties des paragraphes. Si un exemple doit être un paragraphe par lui-même alors la balise de début de paragraphe doit être insérée comme approprié. <p> Tout caractère spécial SGML dans l'exemple doit être échappé comme habituellement - voir <ref id="markup">. <tt/<example>/ ne fonctionne pas comme l'environnement TeX <tt/verbatim/. </book> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������doc-debian-fr-3.1.3.1/doc/policy.fr.sgml������������������������������������������������������������0000644�0001750�0001750�00001327644�10533414577�017163� 0����������������������������������������������������������������������������������������������������ustar �jerome��������������������������jerome�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE debiandoc SYSTEM [ <!-- include version information so we don't have to hard code it within the document --> <!-- arch devel-3.7-patch-26 --> <!--entity % versiondata SYSTEM "version.ent"> &versiondata; --> ]> <!-- IMPORTANT : AVANT DE COMMITER, SUPPRIMER LE DOUBLE "" LIGNE 5505 --> <debiandoc> <book> <titlepag> <title>La Charte Debian La liste de diffusion Debian-Policy version 3.7.2.2 Ce manuel est la charte de la distribution Debian GNU/Linux. Sont abordés la structure et le contenu d'une archive Debian, certaines questions sur la conception du système d'exploitation, ainsi que les exigences techniques que chaque paquet doit satisfaire afin d'être inclus dans la distribution. Copyright © 1996,1997,1998 Ian Jackson et Christian Schwarz.

Ce manuel est un logiciel libre ; il peut être redistribué et modifié selon les termes de la licence publique générale du projet GNU (GNU GPL), telle que publiée par la « Free Software Foundation » (version 2 ou toute version supérieure).

Il est distribué dans l'espoir qu'il sera utile, mais sans aucune garantie ; sans même la garantie implicite d'une possible valeur marchande ou d'une adéquation à un besoin particulier. Consultez la licence publique générale du projet GNU pour plus de détails.

Une copie de la licence publique générale est disponible à /usr/share/common-licenses/GPL dans la distribution Debian GNU/Linux ou sur la « Toile » : . Vous pouvez également l'obtenir en écrivant à la Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.

À propos de ce manuel Les objectifs de ce manuel

Ce manuel est la charte de la distribution Debian GNU/Linux. Sont abordés la structure et le contenu d'une archive Debian, certaines questions sur la conception du système d'exploitation, ainsi que les exigences techniques que chaque paquet doit satisfaire afin d'être inclus dans la distribution.

Ce manuel décrit aussi la politique Debian en ce qui concerne la création des paquets. Ce n'est pas un cours sur la construction des paquets et il ne décrit pas complètement le comportement du système de gestion des paquets. Il essaye plutôt de définir la seule interface que doivent maîtriser les développeurs

D'une manière informelle, l'intégration de « matériel » se fait selon les critères suivants : Interfaces standards

Le « matériel » présenté est une interface au système de gestion de paquets dont l'utilisation est obligatoire ; un nombre significatif de paquets l'utilise et elle ne sera pas modifiée sans une étude sérieuse. Les responsables de paquet peuvent donc compter sur la stabilité de cette interface et les auteurs du système de gestion des paquets doivent assurer la compatibilité avec les définitions de ces interfaces. Le format des fichiers « control » et « changelog » en est un exemple.

Convention choisie

Quand on a besoin, pour des raisons d'inter-opérabilité, de faire un choix parmi un certain nombre de possibilités techniquement valides. Le numéro de version est un exemple.

Veuillez noter que ces critères ne s'excluent pas mutuellement ; une convention choisie devient souvent une interface standard.

.

Les notes de ce manuel ne font pas partie de la Charte et sont purement documentaires.

Les annexes de ce manuel ne sont pas non plus normatives. Voyez pour des informations supplémentaires.

Dans la partie normative de ce manuel, les mots must, should, may et les adjectifs required, recommended et optional servent à distinguer la signification des diverses directives contenues dans cette charte. La distribution Debian ne considérera généralement pas comme acceptables les paquets qui ne se conforment pas aux directives dénotées par must (ou required)

En français, nous employons le verbe « devoir » et ses déclinaisons.

. Une non-conformité à une directive dénotée par should (ou recommended) sera en général considérée comme un bogue, mais cela n'empêchera pas nécessairement la distribution du paquet.

En français, nous employons le futur de l'indicatif et jamais le verbe « devoir ».

. Les directives dénotées par may (ou optional) sont véritablement facultatives et sont laissées à l'appréciation du responsable de paquet.

Ce classement est en gros équivalent à celui des bogues : serious (pour les violations des directives must ou required), minor, normal ou important (pour les violations des directives should ou recommended) et wishlist (pour les éléments optional) Comparez avec la RFC 2119. Remarquez cependant que ces mots sont employés différemment dans ce document..

La plupart des informations de ce manuel seront également utiles pour la création de paquets que l'on doit distribuer d'une autre façon ou qui sont destinés à un usage local.

Nouvelles versions de ce document

Ce document est distribué dans le paquet Debian (packages.debian.org /debian-policy).

La dernière version de ce document est aussi disponible sur les miroirs web de Debian, . (www.debian.org /doc/debian-policy/) Dans le même répertoire, d'autres formats existent : policy.html.tar.gz, (/doc/debian-policy/policy.html.tar.gz), policy.pdf.gz (/doc/debian-policy/policy.pdf.gz) et policy.ps.gz (/doc/debian-policy/policy.ps.gz).

Le paquet debian-policy contient aussi le fichier upgrading-checklist.txt.gz qui liste les changements entre les versions de ce document.

Auteurs et responsables

Ce manuel, appelé « Debian GNU/Linux Policy Manual », a été rédigé d'abord par Ian Jackson en 1996, puis révisé par David A. Morris le 27 novembre 1996. Christian Schwarz ajouta de nouvelles sections le 15 mars 1997 et retravailla le texte entre les mois d'avril et de Juin 1997. Christoph Lameter a apporté la contribution sur le « Web Standard ». Et il a été grandement restructuré en 2001 par Julian Gilbey.

Depuis septembre 1998, la est responsable du contenu de ce document. Les propositions y sont discutées, puis, quand un consensus est dégagé, elles sont introduites dans le document. L'édition est faite par un groupe de responsables sans pouvoir rédactionnel, dont voici la liste actuelle : Julian Gilbey Branden Robinson Josip Rodin Manoj Srivastava

Bien que les auteurs de ce document aient veillé à ne pas introduire de coquilles ou d'autres erreurs, il en reste toujours. Si vous découvrez des erreurs dans cette version du manuel ou si vous voulez faire part de vos commentaires, suggestions ou critiques, veuillez envoyer un courrier électronique sur la liste de diffusion « Debian Policy », debian-policy@lists.debian.org, ou un rapport de bogue concernant le paquet debian-policy.

N'essayez pas, s'il vous plaît, de contacter personnellement les auteurs et les responsables de ce document dans le but de modifier la Charte Debian.

Documents associés

Plusieurs autres documents sont nécessaires pour comprendre pleinement les règles et les procédures Debian.

Ces documents complémentaires sont référencés dans :

En dehors de ces documents normatifs, il y a aussi la référence du développeur Debian. Ce document décrit les procédures et les ressources disponibles aux développeurs Debian, mais il n'est pas normatif. Il comprend des éléments qui n'ont pas valeur de règle mais qui sont considérés comme des pratiques exemplaires pour les développeurs.

La référence des développeurs Debian est disponible dans le paquet developers-reference. On peut aussi le trouver sur les miroirs web de Debian, .

À propos de la traduction

Depuis la version 3.5.0.0, la charte Debian regroupe le Debian Policy Manual et des éléments tirés du Debian Packaging Manual.

Serge Stinckwich et David Rocher ont initié la traduction du Debian Policy Manual et ils furent rejoints par Christophe Le Bars, Benjamin Drieu, Laurent Pelecq, Christophe Mertz, Olivier Ripoll, Georges Mariano, Hugues Marilleau, Michel Court et les relecteurs de la liste de diffusion debian-l10n-french. Il a ensuite été repris par Philippe Batailler.

David Curé et Christian Jacolot ont traduit les passages du Debian Packaging Manual intégrés dans la charte.

Si vous voulez faire part de vos commentaires, suggestions ou critiques sur cette traduction, vous pouvez envoyer un courriel à Frédéric Bothamy frederic.bothamy@free.fr, ou à la liste debian-l10n-french, debian-l10n-french@lists.debian.org.

L'archive Debian

Le système Debian GNU/Linux est maintenu et distribué sous la forme d'un ensemble de paquets. Très nombreux (plus de 15000), ces paquets sont répartis en plusieurs sections et on leur donne des priorités afin de simplifier leur traitement.

Le projet Debian s'efforce de construire un système d'exploitation libre, mais tous les paquets que nous voulons rendre accessibles ne sont pas libres selon notre définition (voir plus loin les Directives Debian pour le logiciel libre) ou ne peuvent pas être importés ou exportés sans restrictions. L'archive a donc été divisée en zones de distributions ou catégories définies par les licences des logiciels ou par certaines restrictions.

Nos buts sont les suivants : offrir le plus grand nombre possible de logiciels ; encourager chacun à écrire des logiciels libres ; et faciliter la production de cédéroms de notre système en évitant que des licences, des restrictions d'importation ou d'exportation ou des lois quelconques ne soient violées.

La catégorie main constitue la distribution Debian GNU/Linux.

Les paquets des autres zones de distribution (contrib, non-free) ne sont pas considérés comme faisant partie de la distribution Debian, bien que nous soutenions leur utilisation à travers notre infrastructure (comme notre système de suivi des bogues et nos listes de diffusion). La Charte Debian s'applique aussi à ces paquets.

Les directives Debian pour le logiciel libre

Les directives Debian pour le logiciel libre (DFSG : « Debian Free Software Guidelines ») suivantes constituent notre définition du « logiciel libre ». Redistribution autorisée

La licence d'un composant Debian ne doit pas empêcher quiconque de vendre ou de donner ce logiciel en tant qu'élément d'une distribution logicielle qui regroupe des programmes de différentes sources. La licence ne doit pas demander le paiement de droits ou de redevances pour une telle vente.

Code source

Le programme doit inclure son code source et doit permettre sa distribution en tant que code source et sous forme compilée.

Travaux dérivés

La licence doit autoriser les modifications et les travaux dérivés. Elle doit autoriser leur distribution selon les termes mêmes de la licence du logiciel original.

Intégrité du code source de l'auteur

La distribution d'un code source modifié peut être limitée par la licence seulement si des fichiers « patch », joints avec le code source, permettent de modifier le programme au moment de sa compilation. La licence doit explicitement permettre la redistribution de logiciels construits à partir de code source modifié. La licence peut exiger que les travaux dérivés portent un nom différent ou un numéro de version différent du logiciel initial. (C'est un compromis. Le projet Debian encourage tous les auteurs à ne pas limiter les modifications de fichier, source ou binaire.)

Non-discrimination envers des personnes ou groupes de personnes

La licence ne doit faire aucune discrimination à l'encontre d'une personne ou d'un groupe de personnes.

Non-discrimination envers des champs d'activités

La licence ne doit pas empêcher l'usage du programme dans un champ spécifique d'activité. Par exemple, elle ne doit pas empêcher l'utilisation du programme dans le cadre d'une activité commerciale ou pour faire de la recherche génétique.

Distribution de licence

Les droits attachés au programme doivent s'appliquer à tous ceux à qui le logiciel est redistribué sans que ceux-ci aient besoin d'une licence supplémentaire.

La licence ne doit pas être spécifique à Debian

Les droits attachés à un programme ne doivent pas être liés à l'appartenance de ce programme à un système Debian. Si ce programme est extrait de Debian et est utilisé ou distribué sans Debian mais dans les termes de la licence du programme, toutes les parties à qui ce programme a été redistribué doivent avoir les mêmes droits que ceux qui sont accordés avec le système Debian.

La licence ne doit pas contaminer d'autres logiciels

La licence ne doit pas apporter des restrictions à d'autres logiciels distribués avec le logiciel en question. Par exemple, la licence ne doit pas exiger que tous les autres programmes distribués sur le même support soient des logiciels libres.

Exemples de licence

Les licences « GPL », « BSD » et « Artistic » sont des exemples de licence que nous considérons comme libres.

Les catégories La catégorie « main »

Tous les paquets dans main doivent se conformer aux DFSG (« Debian Free Software Guidelines » — Les principes du logiciel libre selon Debian).

De plus, les paquets dans main

ne doivent pas demander un paquet extérieur à main pour leur compilation ou leur exécution (ainsi les paquets ne doivent pas déclarer de relation « Depends », « Recommends » ou « Build-Depends » avec un paquet qui n'est pas contenu dans main),

ne doivent pas être tellement bogués que nous refusions de les soutenir,

et doivent se conformer à toutes les règles énoncées dans ce manuel.

La catégorie « contrib »

Tous les paquets dans contrib doivent se conformer aux « DFSG ».

De plus, les paquets dans contrib

ne doivent pas être tellement bogués que nous refusions de les soutenir,

et doivent se conformer à toutes les règles énoncées dans ce manuel.

Voici des exemples de paquets que l'on peut mettre dans contrib :

des paquets libres qui demandent pour leur compilation ou leur exécution des paquets appartenant aux sections contrib, non-free ou des paquets qui ne sont pas contenus dans notre archive ;

des paquets « wrapper », et des accessoires libres pour des programmes non libres.

La catégorie « non-free »

On doit placer dans les sections non-free les paquets qui ne se conforment pas aux « DFSG », ou bien les paquets dont la distribution est rendue problématique par des brevets ou des questions légales.

De plus les paquets dans non-free

ne doivent pas être tellement bogués que nous refusions de les soutenir,

et doivent se conformer, autant qu'il leur est possible, à toutes les règles énoncées dans ce manuel

Il se peut que certains paquets ne puissent pas respecter telle règle ; p. ex. les sources ne sont pas disponibles. Ces situations seront examinées au cas par cas.

.

Considérations sur le copyright

Tous les paquets doivent être accompagnés d'une copie verbatim de leur copyright et de leur licence dans le fichier /usr/share/doc/paquet/copyright (voir pour des précisions).

Nous nous réservons le droit d'empêcher l'inclusion de fichiers dans nos archives si leur utilisation ou leur distribution violent une loi ; leur utilisation ou leur distribution créent un conflit éthique ; nous sommes obligés de signer une licence pour les utiliser ; leur distribution entre en conflit avec des politiques du projet Debian.

Les programmes dont les auteurs encouragent l'utilisateur à faire des dons conviennent très bien à la section main, sauf si les auteurs affirment que ne pas faire de don est immoral, non éthique, illégal ou quelque chose de similaire ; dans ce cas, ces programmes doivent être placés dans la section non-free.

Les paquets dont les notices de copyright (ou des problèmes de brevet) ne permettent pas la redistribution, même sous forme binaire, et pour lesquels aucune permission spéciale n'a été obtenue, ne doivent pas être placés sur le site FTP de Debian et ses miroirs.

On notera que dans la loi internationale du copyright (ceci s'applique aussi aux États-Unis), aucune distribution ou modification d'un travail n'est autorisée sans une mention explicite. C'est pourquoi un programme sans notice de copyright est protégé et vous ne pouvez rien en faire sans risquer d'être poursuivi. De même, un programme, avec une notice de copyright qui n'énoncerait pas explicitement ce qui est permis, interdit tout.

Beaucoup d'auteurs de logiciels prétendument libres ignorent les problèmes posés aux utilisateurs par des copyrights restrictifs (ou l'absence de notice de copyright). Il est souvent intéressant de contacter diplomatiquement de tels auteurs pour leur demander de modifier les termes de leur licence. Cependant cela peut être politiquement difficile et vous devriez au préalable demander conseil sur la liste de diffusion debian-legal, comme il est expliqué plus bas.

En cas de doute à propos d'un copyright, envoyez un courrier électronique à debian-legal@lists.debian.org. Soyez prêt à nous donner le copyright complet. Les logiciels couverts par la « GPL », les logiciels du domaine public et les copyrights de type « BSD » sont sûrs ; méfiez-vous d'expressions comme « utilisation commerciale interdite » et « distribution limitée ».

Les sections

Les paquets des catégories (main, contrib et non-free sont regroupés en sections pour simplifier leur traitement.

La catégorie et la section seront spécifiées dans le champ de contrôle Section de chaque paquet. Toutefois, le responsable de l'archive Debian peut modifier ce choix afin d'assurer la cohérence de la distribution Debian. le champ Section sera de la forme :

section si le paquet appartient à la catégorie main,

segment/section si le paquet appartient aux zones de distribution contrib ou non-free.

Les responsables de l'archive Debian donnent la liste des sections autorisées : admin, base, comm, contrib, devel, doc, editors, electronics, embedded, games, gnome, graphics, hamradio, interpreters, kde, libs, libdevel, mail, math, misc, net, news, non-free, oldlibs, otherosfs, perl, python, science, shells, sound, tex, text, utils, web, x11.

Les priorités

Chaque paquet aura une priorité spécifiée dans son fichier de contrôle (voir ). Cette information, utilisée par les outils de gestion des paquets Debian, permet de séparer les paquets prioritaires de ceux qui le sont moins.

Les outils de gestion des paquets Debian reconnaissent les niveaux de priorité suivants : required

Ce sont les paquets nécessaires au bon fonctionnement du système. Cela signifie que les fonctionnalités de dpkg dépendent de ces paquets. Vous ne devez pas les enlever sous peine de rendre votre système complètement inutilisable ; vous ne pourrez probablement même plus utiliser dpkg pour remettre les choses en place. Les systèmes composés uniquement de paquets required sont probablement inutilisables, mais ils disposent des fonctionnalités suffisantes pour permettre à l'administrateur système d'amorcer le système et d'installer d'autres logiciels.

important

Ces paquets incluent ceux que l'on s'attend à trouver sur un système de type Unix. Si l'on pense qu'un expert Unix, détectant l'absence d'un programme s'exclamera : « Que se passe-t-il !? Où est le programme foo ? », alors celui-ci doit être dans important

C'est un critère fort, car nous cherchons à produire, entre autres choses, un Unix libre.

. Les autres paquets sans lesquels le système ne fonctionne pas bien ou est inutilisable doivent avoir cette priorité. Cela n'inclut pas « Emacs », « X11 », « TeX » ou d'autres grosses applications. Les paquets important constituent simplement un ensemble minimal d'outils nécessaires et communément attendus.

standard

Ces paquets fournissent un système en mode caractère, relativement petit mais pas trop limité. Ils seront installés par défaut si l'utilisateur ne sélectionne rien d'autre. Ce niveau laisse de côté beaucoup de grosses applications.

optional

En un sens, ce qui n'est pas obligatoire est facultatif, mais ici « optional » ne doit pas être compris ainsi. Ce sont tous les logiciels que l'on pourrait raisonnablement vouloir installer quand on ne les connaît pas et que l'on a pas d'exigences particulières. Cela constitue un système nettement plus gros et contient « X11 », la distribution complète de « TeX » et de nombreuses applications. Notez qu'il ne doit pas y avoir de conflit entre les paquets optionnels.

extra

Sont regroupés là les paquets qui sont en conflit avec d'autres paquets dont les priorités sont « required », « important », « standard » ou « optional », ou bien les paquets utiles uniquement si vous savez déjà ce qu'ils font, ou bien les paquets qui ont des exigences spécifiques.

Les paquets ne doivent pas dépendre de paquets dont les priorités sont de valeur inférieure (hors dépendances pour la construction). Pour cela, on pourra ajuster les priorités d'un ou de plusieurs paquets.

Les paquets binaires

La distribution Debian GNU/Linux est fondée sur le système Debian de gestion de paquets, appelé dpkg. Par conséquent, tous les paquets de la distribution Debian doivent être fournis au format de fichier .deb.

Le nom d'un paquet

Chaque paquet doit avoir un nom unique dans l'archive Debian.

Le nom d'un paquet est inclus dans le champ de contrôle Package dont le format est décrit dans . Le nom d'un paquet fait aussi partie du nom du fichier .deb.

La version d'un paquet

Chaque paquet possède un numéro de version enregistré dans le champ Version de son fichier de contrôle, voir .

Le système de gestion des paquets impose un ordre aux numéros de version : il peut ainsi connaître quel type de mise à niveau est en cours et les applications qui lui servent d'interface peuvent dire si un paquet disponible est plus récent que celui installé sur le système. La partie la plus significative (du moins en ce qui concerne la comparaison) du format des numéros de version se trouve au début.

Quand la numérotation d'un paquet pose problème, elle sera convertie en un format utilisable dans le champ Version.

La numérotation des versions fondée sur des dates

En règle générale, les paquets Debian utiliseront les mêmes numéros de version que les sources.

Cependant, la numérotation des sources est parfois fondée sur une date (par exemple, un instantané d'une version de développement) ; le système de gestion des paquets ne peut pas manipuler cette numérotation sans les epochs. Et dpkg par exemple considère que « 96May01 » est plus grand que « 96Dec24 ».

Pour éviter l'utilisation d'epochs à chaque nouvelle version source, on emploiera pour la partie date du numéro de version le format suivant : « 19960501 », « 19961224 ». Le responsable de paquet décidera d'embêter ou non le responsable des sources avec une demande de modification de la numérotation de ses versions.

Il faut noter que d'autres formats fondés sur les dates et qui sont correctement analysés par le système de gestion des paquets ne doivent pas être modifiés.

Les paquets « Debian pure souche » (c.-à-d. écrits spécialement pour Debian) dont les numéros de version comprennent des dates utiliseront toujours le format suivant : « AAAAMMJJ ».

Le responsable d'un paquet

Chaque paquet doit avoir un responsable Debian (quelqu'un ou un groupe de personnes, qu'on peut joindre à une adresse électronique, telle que, par exemple, une liste de diffusion). Le responsable assure que la licence du logiciel du paquet suit les règles des distributions auxquelles il appartient.

Le responsable doit être indiqué dans le champ Maintainer avec son nom correct et une adresse électronique valable. Quand une personne s'occupe de plusieurs paquets, elle essaiera d'éviter d'avoir différents noms ou adresses dans les champs Maintainer des différents paquets.

Le format du champ Maintainer est décrit dans .

Quand la personne en charge d'un paquet quitte le projet Debian, c'est le groupe Debian QA packages@qa.debian.org qui reprend la maintenance du paquet jusqu'à ce qu'un volontaire se propose pour cette tâche. Ces paquets sont appelés paquets orphelins La façon élégante de le faire peut être trouvée dans le « Debian Developer's Reference », voyez . .

La description d'un paquet

Chaque paquet Debian doit avoir une description complète enregistrée dans les champs ad hoc de son fichier de contrôle. L'information technique sur le format du champ Description se trouve dans .

La description donnera assez d'informations sur le paquet (le programme) pour qu'un utilisateur (un administrateur système) n'ayant jamais rencontré ce paquet puisse décider de l'installer. La description ne reprendra pas simplement la documentation du programme.

Mettez les informations importantes d'abord, à la fois dans le résumé et dans la description longue. Parfois, seule la première partie du résumé ou de la description longue est affichée. On peut assumer malgré tout qu'il y a une façon de voir toute la description longue.

La description donnera aussi des informations sur les dépendances et les conflits significatifs entre ce paquet et les autres : l'utilisateur saura ainsi pourquoi ces dépendances et ces conflits ont été déclarés.

Les instructions de configuration ou d'utilisation du paquet ne doivent pas en faire partie (c'est le rôle des scripts d'installation, des pages de man, des fichiers infos, etc.), non plus que les notices de copyright et les autres écrits administratifs (c'est le rôle des fichiers de copyright).

Le résumé sur une seule ligne

La ligne de résumé sera brève -- moins de 80 caractères.

Ne mettez pas le nom du paquet dans la ligne de résumé. Le logiciel sait déjà l'afficher, et ce n'est pas nécessaire de l'indiquer. N'oubliez pas que dans beaucoup de cas, l'utilisateur ne peut lire que la ligne de résumé : il faut donc la rendre aussi instructive que possible.

La description étendue

N'essayez pas de poursuivre la ligne du résumé dans la description étendue. Cela ne fonctionnera pas correctement quand la description complète est affichée et cela n'aura aucun sens quand seul le résumé est disponible.

La description étendue décrira ce que fait le paquet, et comment il se relie au reste du système (en termes, par exemple, de sous-systèmes, de partie de ...).

Le champ description doit être compréhensible par tout le monde, y compris par ceux qui n'ont aucune idée de ce que fait le paquet

Le commentaire, qui est fourni par un programme dans ses fichiers d'annonces ou dans les fichiers README, est rarement approprié pour une utilisation dans une description. Il est habituellement conçu pour les gens qui connaissent déjà le paquet.

.

Les dépendances

Chaque paquet doit indiquer ses relations de dépendance avec les paquets dont il a besoin pour fonctionner correctement.

Par exemple, une relation de dépendance doit être déclarée pour toute bibliothèque partagée qui est demandée par un exécutable dynamiquement lié d'un paquet.

Il n'est pas nécessaire d'indiquer les dépendances d'un paquet envers des paquets étiquetés Essential (voir ci-dessous), et on ne doit pas le faire, à moins que ce ne soit une dépendance pour une version précise de tel paquet.

Essential est défini comme l'ensemble minimal de fonctionnalités qui doivent être disponibles et utilisables sur le système même quand les paquets sont dans un état non configuré (mais dépaqueté). Cela est nécessaire pour éviter des boucles de dépendances non solutionnables lors des mises à jour. Si des paquets ajoutent des dépendances inutiles sur des paquets de cet ensemble, les possibilités qu'il y aura une boucle de dépendance non solutionnable induite par le forçage de configuration de ces paquets essentiels avant que cela ne soit nécessaire est fortement augmenté. Cela augmente également les possibilités que des frontaux ne seront pas capable de calculer un chemin de mise à jour, même si celui-ci existe.

De plus, il est peut probable qu'une fonctionnalité d'Essential soit jamais supprimée (ce qui est une raison pour laquelle une attention particulière doit être prise avant de faire un ajout à l'ensemble des paquets d'Essential), mais des paquets ont été retirés de l'ensemble Essential quand la fonctionnalité a été déplacée dans un paquet différent. Donc, dépendre de ces paquets au cas où ils ne seraient plus essentiels pose plus de problèmes que cela n'en résoud.

Dans certains cas, l'installation d'un paquet exige l'installation et la configuration préalables d'un autre paquet. Il faut alors déclarer une relation Pre-Depends pour ce paquet.

Vous ne déclarerez pas une relation Pre-Depends pour un paquet avant qu'une discussion dans la liste de diffusion debian-devel n'ait abouti à un consensus sur le sujet.

Le format des champs concernant les relations entre paquets est décrit dans .

Les paquets virtuels

Parfois il y a des paquets qui font plus ou moins la même chose. Dans ce cas, il est utile de définir un paquet virtuel dont le nom décrit la fonction de ces paquets. Les paquets virtuels existent de manière logique et non physique ; c'est pour cela qu'ils sont appelés virtuels. Les paquets assurant cette fonction viendront pourvoir ce paquet virtuel. Ainsi, tout autre paquet qui a besoin de cette fonction pourra simplement dépendre du paquet virtuel, sans avoir à énumérer tous les paquets possibles.

Tous les paquets utiliseront les noms de paquets virtuels quand il conviendra de le faire ; ils s'arrangeront pour en créer de nouveaux quand ce sera nécessaire. On n'utilisera que les paquets virtuels qui ont été acceptés et qui apparaissent dans la liste des noms de paquets virtuels (sauf de manière privée, pour un ensemble local de paquets corrélés). Voir aussi .

La version la plus récente de la liste officielle des paquets virtuels se trouve dans le paquet debian-policy. Elle est aussi disponible sur les miroirs web de Debian, .

La procédure de mise à jour de la liste est décrite au début de la liste.

Le système de base

Le système de base est le sous-ensemble minimal du système Debian GNU/Linux qui est installé, avant tout autre chose, sur un nouveau système. Ainsi, seulement un tout petit nombre de paquets peut aller dans la section base afin de minimiser la quantité d'espace disque nécessaire à une installation.

La plupart de ces paquets auront le niveau de priorité required ou au moins important et beaucoup d'entre eux seront étiquetés essential (voir ci-dessous).

Les paquets « essential »

Certains paquets sont marqués essential, pour les systèmes qui utilisent ce champ Essential dans le fichier de contrôle. Le format de ce champ est décrit dans .

Comme ces paquets ne peuvent pas être facilement supprimés (il faut ajouter une option de forçage de dpkg), l'indicateur essential ne doit être utilisé que si c'est absolument nécessaire. Un paquet comprenant une bibliothèque partagée ne doit pas être étiqueté essential ; les dépendances empêchent sa suppression prématurée, or il doit être possible de supprimer le paquet quand la bibliothèque est périmée.

Comme dpkg n'empêche pas la mise à jour de paquets alors qu'un paquet essential n'est pas configuré, tous les paquets essential doivent fournir l'essentiel de leurs fonctions même s'ils ne sont pas configurés. Quand un paquet ne peut pas satisfaire à cette exigence, il ne doit pas être étiqueté essential ; et tous les paquets qui en dépendent doivent, comme il est de règle, expliciter leurs dépendances.

Vous ne devez pas étiqueter un paquet comme essential avant qu'une discussion dans la liste de diffusion debian-devel n'ait abouti à un consensus sur le sujet.

Les scripts du responsable de paquet

Les scripts d'installation d'un paquet éviteront d'afficher des messages que l'utilisateur n'a pas besoin de voir et s'appuieront sur dpkg pour sauver de l'ennui un utilisateur qui installe de nombreux paquets. Cela signifie entre autres choses qu'il faut utiliser l'option --quiet de install-info.

Les scripts d'installation doivent détecter toute erreur qui se produit et doivent arrêter immédiatement l'installation en cours.

On remarquera que la section , s'applique généralement aussi aux scripts des responsables de paquet.

On n'utilisera pas dpkg-divert sur un fichier appartenant à un autre paquet sans avoir consulté au préalable le responsable du paquet en question.

Tous les paquets qui donnent une valeur au nom « partagé » d'une commande (en général, c'est un nom de fichier), utiliseront en général update-alternatives, de manière à rendre possible leur installation simultanée. Quand on n'emploie pas update-alternatives, chaque paquet doit utiliser Conflicts pour s'assurer que les autres paquets ne sont pas installés. On peut spécifier dans ce cas un conflit avec quelques versions antérieures d'un paquet qui n'utilisait pas update-alternatives ; c'est une exception à la règle habituelle qui demande d'éviter les conflits de version.

Poser des questions via les scripts du responsable

Les scripts du responsable de paquet peuvent interroger l'utilisateur quand c'est nécessaire. L'interrogation se fera par l'intermédiaire d'un programme, tel que debconf, qui se conforme à la spécification Debian pour les systèmes de configuration, version 2 ou supérieure. On peut interroger par d'autres moyens, notamment à la main  Tiré du Jargon : à la main 2. Par extension, écrire du code pour faire quelque chose explicitement ou à un bas niveau alors qu'une routine de bibliothèque (debconf, dans ce cas) est déjà disponible. mais c'est déconseillé.

La spécification Debian pour les systèmes de configuration se trouve dans le fichier debconf_specification du paquet debian-policy. Elle est aussi disponible sur les miroirs web de Debian, .

Les paquets qui utilisent les règles Debian de gestion de la configuration peuvent contenir un script supplémentaire config et un fichier templates dans leur archive de contrôle Le fichier control.tar.gz dans le .deb. Voyez . . Le script config peut être lancé avant le script preinst et avant que le paquet soit dépaqueté ou bien avant que ses dépendances et pré-dépendances soient satisfaites : il doit donc fonctionner en utilisant seulement les outils présents dans les paquets Essential

Debconf ou tout autre outil qui met en ½uvre les règles Debian de gestion de la configuration est aussi installé, et toutes les dépendances concernant des versions sont satisfaites avant le commencement de la configuration préalable.

.

Les paquets essaieront de minimiser le nombre de questions posées et s'assureront que chaque question ne sera posée qu'une seule fois. Cela signifie que les paquets doivent essayer d'utiliser les fichiers de configuration partagés (comme /etc/papersize ou /etc/news/server) et les variables partagées de debconf, plutôt que de redemander, chacun, la même information.

Cela signifie aussi que, lors d'une mise à niveau, on ne doit pas poser encore les mêmes questions, à moins que l'utilisateur n'ait utilisé dpkg --purge pour supprimer les fichiers de configuration. Les réponses aux questions de configuration seront sauvegardées à l'endroit approprié dans /etc, et l'on documentera le processus ; ainsi l'utilisateur pourra les modifier.

Quand un paquet doit donner une information importante à l'utilisateur (comme : « n'exécutez pas directement ce programme, vous devez d'abord modifier les fichiers de configuration suivants sinon votre système émettra des messages mal formatés »), il affichera ce message dans le script config ou dans le script postinst). Il demandera ensuite à l'utilisateur de taper sur la touche « retour-chariot » quand il a pris connaissance du message. Les messages de copyright et les instructions d'utilisation ne sont pas considérés comme des messages vitaux. Ils doivent apparaître respectivement dans /usr/share/doc/paquet/copyright et dans la documentation en ligne, où tous les utilisateurs peuvent les consulter.

Presque toujours, seuls les scripts config et postinst poseront les questions nécessaires ; quand on utilise le script postinst, il doit empêcher, par une condition quelconque, qu'elles soient posées en cas d'échec de l'installation d'un paquet ou s'il est appelé avec abort-upgrade, abort-remove ou abort-deconfigure.

Les paquets sources La conformité aux manuels Debian

On indiquera la version la plus récente de la Charte Debian à laquelle s'est conformé le paquet lors de sa mise à jour la plus récente.

On peut utiliser cette valeur pour remplir automatiquement des rapports de bogue quand le paquet est vraiment trop vieux.

La version est indiquée dans le champ de contrôle Standards-Version. Le format de ce champ est décrit dans .

Vous consulterez régulièrement, et notamment si votre paquet est obsolète, la plus récente version de la Charte Debian, et vous mettrez à jour votre paquet si nécessaire. Lorsque le paquet est conforme à la nouvelle norme, vous mettrez à jour le champ Standards-Version du paquet source et vous le diffuserez

Consultez le fichier upgrading-checklist pour connaître les changements entre différentes versions de ce document.

.

Les relations entre paquets

Les paquets source préciseront les paquets binaires qui doivent être installés et ceux qui ne doivent pas l'être, pour que leur construction réussisse. Si l'on doit, par exemple, compiler un paquet avec un compilateur particulier, une dépendance de compilation sera déclarée envers ce paquet.

Pour un très petit nombre de paquets, ceux dont on a toujours besoin pour compiler, lier et insérer dans un paquet Debian un programme classique écrit en C ou C++ comme « Hello world! », il n'est pas nécessaire de déclarer explicitement des relations de dépendance. Ces paquets, sur lesquels on peut trouver des renseignements dans la liste /usr/share/doc/build-essential/list (contenue dans le paquet build-essential), sont marqués build-essential

Le raisonnement :

on peut ainsi maintenir une liste distincte de la Charte (une liste nécessite moins de contrôle que la Charte) ;

un paquet distinct permet l'installation des paquets « build-essential » sur une machine, et permet aussi que d'autres paquets tels que les tâches installent les paquets « build-essential » à travers une relation de dépendance ;

un paquet distinct permet de séparer les rapports de bogues concernant la liste du processus de gestion de la charte dans le « BTS » (système de suivi des bogues).

.

La liste des dépendances de compilation ne contiendra que les paquets explicitement nécessaires à la compilation. Les paquets simplement demandés parce qu'un paquet de cette liste dépend d'eux ne doivent pas être déclarés

La raison en est que les relations de dépendance changent et vous ne déclarerez que les paquets et seulement ceux-là dont vous avez besoin. Ce dont les autres ont besoin est leur affaire. Si, par exemple, vous utilisez la bibliothèque libimlib, vous aurez besoin d'une dépendance de construction pour le paquet libimlib2-dev ; mais vous n'avez pas besoin de dépendance pour les paquets libjpeg*, même si libimlib2-dev dépend de ces paquets : l'installation de libimlib2-dev s'assurera que toutes les dépendances nécessaires à son exécution sont satisfaites.

.

Quand les relations de dépendance de compilation sont indiquées, on doit pouvoir compiler un paquet et produire un binaire opérationnel sur un système où les paquets essential et build-essential sont installés ainsi que ceux nécessaires pour que les relations de dépendance de compilation soient satisfaites (y compris les implicites). Cela signifie en particulier que, dans les relations de dépendance de compilation, on doit traiter rigoureusement les questions de version de manière à éviter les paquets mal ou stupidement configurés quand les relations de dépendances sont correctement satisfaites.

Le chapitre explique les détails techniques.

Les modifications dans les sources amont

Si vous modifiez le code source d'une manière qui n'est pas liée au système Debian, vous enverrez ces changements aux auteurs, dans la forme qu'ils préféreront, de manière à ce qu'ils puissent être intégrés dans la version originale.

Si vous avez besoin de configurer le paquet de façon différente sous Debian et sous Linux et si les sources originaux ne proposent pas de manière de le faire, veuillez ajouter ces moyens de configuration. C'est, par exemple, un nouveau test d'autoconf ou un #define. Envoyez ensuite le correctif aux auteurs, en choisissant comme valeur par défaut la configuration qu'ils avaient choisie. Vous pouvez facilement remplacer la valeur par défaut dans votre debian/rules ou dans tout autre endroit approprié.

Vous vérifierez que l'outil configure détecte la bonne déclaration d'architecture (reportez-vous à la section pour plus de précisions).

Si vous avez besoin de modifier un Makefile qui utilise des scripts configure de style « GNU », vous modifierez les fichiers .in, plutôt que directement le Makefile. Cela permet à l'utilisateur de reconfigurer le paquet si nécessaire. Vous ne devez pas configurer le paquet et modifier le Makefile produit ! Cela rend impossible la reconfiguration ultérieure du paquet par un autre utilisateur sans perdre vos modififications.

Changelog Debian : debian/changelog

Ce fichier, debian/changelog, enregistre les modifications apportées à la version d'un paquet Debian.

Plutôt que de ré-écrire l'histoire en rectifiant les anciennes entrées, il vaut mieux en écrire de nouvelles pour corriger les erreurs de ce fichier.

Cela comprend les modifications du paquet Debian par rapport au paquet source ainsi que les autres changements et mises à jour concernant le paquet

Bien que rien n'empêche un auteur qui est aussi le responsable Debian d'utiliser ce fichier pour tous les changements, il faudra modifier son nom si les responsables Debian et les auteurs deviennent différents. Mais dans ce cas, il vaudrait mieux considérer le paquet comme n'étant pas un paquet Debian « pure souche ».

.

Son format spécial permet aux outils de construction de paquets de découvrir quelle version du paquet est en train de se construire et de trouver des informations spécifiques à cette version.

Le format ressemble à une suite d'entrées : paquet (version) distribution(s); urgency=urgency

[ ligne(s) vide(s) facultative(s), enlevée(s)]

* détails des modifications plus de détails

[ligne(s) vide(s), apparaissant dans la sortie de dpkg-parsechangelog]

* encore plus de détails

[ligne(s) vide(s) facultative(s), enlevée(s)]

-- nom du responsable <adresse électronique> [deux espaces] date

Les entrées paquet et version représentent le nom du paquet source et le numéro de version.

L'entrée distribution(s) liste les distributions dans lesquelles cette version sera installée. Elle est copiée dans le champ Distributions du fichier .changes. Voyez .

urgency est la valeur pour le champ Urgency du fichier .changes pour l'envoi du paquet sur le serveur (voir ). Une urgency ne peut pas contenir de virgules ; les virgules sont utilisées pour séparer les couples mot-clé=valeur dans le format du fichier d'enregistrement de dpkg (bien qu'il n'y ait pour l'instant qu'un seul mot-clé utile : urgency)

les valeurs habituelles pour urgency sont : low, medium, high et emergency. Elles influent sur la rapidité avec laquelle on envisagera l'installation du paquet dans la distribution testing et elles donnent une indication de l'importance des corrections contenues dans cette mise à jour.

.

L'énoncé des modifications peut n'être qu'une suite de lignes commençant par au moins deux espaces, mais par convention, on commence une modification par une étoile « * » suivie d'une espace ; les lignes de continuation sont décalées pour les amener en face du texte de la ligne précédente. On peut séparer si l'on veut les groupes de modifications par des lignes vides.

Si par cette mise à jour sont corrigés des bogues enregistrés par le système de suivi de bogues (BTS), ils seront automatiquement fermés par l'installation de ce paquet dans l'archive Debian et une chaîne closes: Bug#nnnnn sera insérée dans les notes de modifications

Pour être précis, cette chaîne doit correspondre à l'expression rationnelle Perl suivante : /closes:\s*(?:bug)?\#?\s?\d+(?:,\s*(?:bug)?\#?\s?\d+)*/i

Alors tous les numéros de bogues listés seront fermés par le script de maintenance de l'archive (katie), ou, dans le cas d'une mise à jour par un suppléant du responsable (Non-maintainer-upload), seront marqués comme corrigés.

. Cette information est transmise par le champ Closes du fichier .changes (voir ).

Le nom du responsable et son adresse électronique utilisés dans le changelog seront ceux de la personne installant cette version. Ils ne sont pas nécessairement ceux du responsable habituel du paquet. Ces informations seront copiées dans le champ Changed-By du fichier .changes, (voir ), et plus tard, utilisées pour envoyer un accusé de réception quand le chargement aura été installé.

La date doit être dans le format RFC 822

Elle est produite par le programme 822-date.

 ; elle doit inclure le nom du fuseau horaire spécifié sous forme de chiffre, et en option le nom du fuseau ou son abréviation entre parenthèses.

La première ligne de « titre » avec le nom du paquet commencera sur la marge de gauche, la ligne de « fin » avec les renseignements sur le responsable et la date, doit être précédée par exactement une espace. Les éléments responsable et date doivent être séparés exactement par deux espaces.

Veuillez consulter pour des informations supplémentaires sur la manière de placer les fichiers changelog dans les paquets binaires.

Autres formats pour le fichier changelog

Pour les paquets non expérimentaux, le fichier debian/changelog doit utiliser un format reconnu par la version la plus récente de dpkg.

Si vous souhaitez utiliser un autre format, vous pouvez le faire tant que vous fournissez un outil d'analyse (« parser ») pour ce format. Cet outil doit avoir une API compatible avec celle attendue par dpkg-genchanges et par dpkg-gencontrol Si ce nouveau format reçoit un assentiment partagé, vous contacterez le responsable de dpkg afin qu'il ajoute le script analyseur de votre format dans le paquet dpkg. Vous accepterez ainsi que l'analyseur et sa page de manuel soient distribués sous la licence « GNU GPL », comme l'est le reste du paquet dpkg. et il ne doit pas interagir avec l'utilisateur.

Copyright : debian/copyright

Tout paquet doit être accompagné par une copie verbatim de son copyright et de sa licence de distribution dans le fichier /usr/share/doc/paquet/copyright (voir pour plus de détails). Veuillez également consulter pour d'autres considérations reliées aux copyrights des paquets.

La détection des erreurs dans les makefiles

Quand make appelle une commande dans un makefile (incluant les makefiles originaux de votre paquet et debian/rules), cela se fait par sh. Or sh traite mal les erreurs : si vous incluez un mini-script shell en tant que commande dans votre makefile, vous constaterez que si vous n'avez pas de mécanisme de détection d'erreur, make continuera aveuglément malgré les problèmes rencontrés.

Chaque fois que vous mettez plus d'une commande shell (cela inclut l'utilisation d'une boucle) dans une commande du makefile, vous devez vous assurer que les erreurs sont détectées. Pour de simples commandes composées comme changer de répertoire et exécuter un programme, il est suffisant d'utiliser && à la place du point-virgule. Pour des commandes plus complexes incluant la plupart des boucles et des instructions conditionnelles, vous ajouterez la commande set -e au début de chacun de ces mini-scripts shell que sont les commandes d'un makefile.

Cachets de date

Les responsables de paquets préserveront, autant que possible, les dates de modification des fichiers sources d'un paquet

Le raisonnement est que la connaissance de l'âge d'un fichier apporte certaines informations ; par exemple, on peut reconnaître l'ancienneté de telle documentation en regardant la date de modification. Et donc il serait bon de préserver les dates de modification des fichiers sources.

.

Restrictions sur les objets dans les paquets source

Un paquet source ne peut pas contenir des liens « en dur »

On ne les détecte pas encore pendant la phase de construction du paquet source, mais seulement pendant la phase d'extraction.

À l'avenir, les liens « en dur » pourraient être autorisés d'une manière ou d'une autre, mais cela demandera beaucoup de travail.

, des fichiers spéciaux pour les périphériques, des sockets ou des fichiers setuid ou setgid

Les répertoires setgid sont autorisés.

.

debian/rules, le principal script de construction

Ce fichier doit être un makefile exécutable et doit contenir des règles permettant la compilation du paquet et la construction de paquet(s) binaire(s) à partir des sources.

Il doit commencer par la ligne #!/usr/bin/make -f, afin de pouvoir être appelé directement sans passer par make.

Puisqu'un script debian/rules interactif ne peut pas compiler un paquet automatiquement et empêche une reproduction de ce paquet binaire par d'autres personnes, toutes les cibles exigées DOIVENT ne pas être interactives. Au minimum, les cibles exigées sont celles qu'appelle dpkg-buildpackage, à savoir, clean, binary, binary-arch, binary-indep, et build. Il s'ensuit qu'une cible dont dépendent ces cibles, doit être aussi non interactive.

Les cibles (toutes nécessaires sauf celles marquées facultatives) sont : build

La cible build procédera à la configuration et à la compilation du paquet. Quand un paquet possède une routine interactive de configuration préalable à la construction, soit le paquet source debianisé doit être construit après cette opération (afin qu'il puisse être construit sans ré-exécuter cette configuration), soit la routine de configuration doit devenir non interactive. Cette dernière façon est préférable quand la routine détecte des caractéristiques propres à l'architecture.

Pour certains paquets, notamment ceux où la même arborescence source est compilée différemment pour obtenir des paquets binaires différents, la cible build n'a aucun sens. Pour ces paquets, il suffit de prévoir deux cibles ou plus (build-a, build-b, ...) pour chaque manière de construire le paquet et une cible build qui ne produit rien. La cible binary s'occupera de construire le paquet pour chaque cas possible et de créer le paquet binaire correspondant à chacun d'eux.

La cible build ne doit pas effectuer d'actions qui exigent les privilèges du super-utilisateur.

La cible build peut avoir besoin d'exécuter d'abord la cible clean. Voir ci-dessous.

Quand un paquet possède une routine de configuration qui prend du temps, ou quand le makefile est pauvrement conçu, ou quand build a d'abord besoin d'exécuter clean, il est alors intéressant d'exécuter touch build quand le processus de construction est terminé. On s'assure ainsi que si debian/rules build est lancé à nouveau, il ne reconstruira pas le programme complet

Une autre façon de faire est que build dépende de build-stamp sans rien faire d'autre, et que build-stamp fasse le travail et se termine par touch build-stamp. C'est particulièrement utile si la routine crée un fichier ou un répertoire appelé build ; build doit alors être déclaré comme une cible .PHONY. Consultez la documentation de make pour des renseignements sur les cibles « phony »

.

build-arch (facultative), build-indep (facultative)

Un paquet peut aussi proposer les deux cibles build-arch et build-indep. Si la cible build-arch existe, elle fera la configuration et la compilation nécessaires pour créer les paquets binaires pour chaque architecture (ce sont les paquets dont le champ Architecture dans le fichier debian/control est différent de all). De même, si la cible build-indep existe, elle fera la configuration et la compilation nécessaires pour créer les paquets binaires indépendant d'une architecture (ce sont les paquets dont le champ Architecture dans le fichier debian/control vaut all). La cible build dépendra des cibles build-arch et build-indep qui sont données par le fichier rules.

Quand manque l'une des cibles build-arch et build-indep (ou les deux), un appel à debian/rules avec l'une des cibles manquantes provoquera un code d'erreur égal à 2. Quand une cible manque, make produit automatiquement ce code.

Les cibles build-arch et build-indep ne doivent pas effectuer d'actions qui exigent les privilèges de root.

binary, binary-arch, binary-indep

La cible binary doit comprendre tout ce qui est nécessaire à l'utilisateur pour construire le(s) paquet(s) binaire(s) à partir du paquet source. Cette cible a deux parties : binary-arch construit les paquets binaires qui sont spécifiques à une architecture particulière, et binary-indep construit les paquets qui ne le sont pas.

binary peut être (et c'est communément le cas) une cible sans commande, qui dépend simplement de binary-arch et de binary-indep.

Les deux cibles binary-* dépendront soit de la cible build, soit de l'une des cibles build-arch ou build-indep si elles sont proposées, afin que le paquet soit construit s'il ne l'a pas déjà été. Les paquets binaires pertinents seront ensuite créés en utilisant dpkg-gencontrol pour créer leurs fichiers de contrôle et dpkg-deb pour construire les binaires et les placer dans le répertoire parent du répertoire le plus élevé.

Les cibles binary-arch et binary-indep doivent exister. Si l'une des deux cibles binary-* n'a rien à faire (ce sera toujours le cas si le source crée un seul paquet binaire, qu'il soit dépendant de l'architecture ou pas), elle doit tout de même exister, et doit toujours se dérouler correctement.

Les cibles binary doivent être invoquées avec les privilèges de root

Le paquet fakeroot permet souvent de construire correctement un paquet tout en n'étant pas root.

.

clean

Cette cible doit nettoyer les effets obtenus par les cibles build et binary, mais elle doit laisser les fichiers de sortie créés par la cible binary dans le répertoire parent.

Si un fichier build est créé par touch à la fin de la cible build, comme suggéré ci-dessus, c'est la première chose qui sera effacée par la cible clean ; ainsi build, exécuté de nouveau après un nettoyage (clean) interrompu, ne pensera pas que tout est déjà fait.

La cible clean peut être invoquée par root, si binary a été invoqué depuis le dernier clean, ou si build a été invoqué par root (étant donné que build peut créer des répertoires par exemple).

get-orig-source (facultative)

Cette cible va chercher la plus récente version du paquet original dans un site d'archive autorisé (par FTP ou WWW, par exemple), s'occupe des arrangements nécessaires pour le mettre sous la forme d'un fichier tar (une archive source) décrite ci-dessus, et le laisse dans le répertoire en cours.

Cette cible peut être invoquée dans n'importe quel répertoire et s'occupera de supprimer tous ses fichiers temporaires.

Elle est facultative mais la proposer, quand c'est possible, est une bonne idée.

Les cibles build, binary et clean doivent être invoquées avec comme répertoire courant, le répertoire de plus haut niveau du paquet.

Des cibles supplémentaires peuvent exister dans debian/rules, soit comme des interfaces publiées ou non documentées soit pour l'utilisation interne du paquet.

Ce sont les variables de make à travers dpkg-architecture qui déterminent l'architecture sur laquelle et pour laquelle on construit. On peut obtenir, aussi bien pour la machine sur laquelle on construit que pour la machine pour laquelle on construit, la chaîne indiquant l'architecture Debian et la chaîne indiquant l'architecture à la façon GNU. Voici une liste de variables acceptées par make :

DEB_*_ARCH (l'architecture Debian)

DEB_*_GNU_TYPE (l'architecture indiquée à la façon GNU)

DEB_*_GNU_CPU (la partie CPU de DEB_*_GNU_TYPE)

DEB_*_GNU_SYSTEM (la partie système de DEB_*_GNU_TYPE)

où « * » représente BUILD pour une indication de la machine sur laquelle on construit, ou bien HOST pour une indication de la machine pour laquelle on construit.

On peut assurer une compatibilité ascendante dans le fichier rules en fixant par défaut les bonnes variables à des valeurs adéquates ; veuillez consulter la documentation de dpkg-architecture pour des précisions.

Il est important de comprendre que la chaîne DEB_*_ARCH détermine seulement l'architecture Debian sur ou pour laquelle on construit. On ne l'utilisera pas pour avoir des renseignements sur le CPU ou le système ; les variables GNU sont là pour ça.

debian/substvars et le remplacement de variables

Quand dpkg-gencontrol, dpkg-genchanges et dpkg-source créent des fichiers de contrôle, ils procèdent au remplacement des variables qu'ils doivent écrire dans ces fichiers. Les substitutions de variable sont de la forme ${variable-nom}. Le fichier facultatif debian/substvars contient les remplacements de variable à utiliser. On peut aussi fixer directement les variables dans le fichier debian/rules en utilisant l'option -V des commandes d'empaquetage des sources ; certaines variables pré-définies sont disponibles.

Le fichier debian/substvars est habituellement créé et modifié dynamiquement par les cibles de debian/rules, et dans ce cas, il doit être supprimé par la cible clean.

Voyez pour plus de détails sur les remplacements de variables source, et sur le format de debian/substvars.

Adresse optionnelle du code source amont : debian/watch

Il s'agit d'un fichier de contrôle optionnel, mais recommandé pour l'utilitaire uscan qui définit comment scanner automatiquement les sites FTP et HTTP pour des mises à jour nouvellement disponibles du paquet. C'est utilisé par et d'autres outils d'Assurance Qualité de Debian pour aider au contrôle de qualité et à la maintenance de la distribution dans son ensemble.

Liste des fichiers créés : debian/files

Ce fichier n'est pas un fichier permanent de l'arborescence source ; il est utilisé pendant la construction des paquets pour enregistrer quels fichiers sont créés. dpkg-genchanges l'utilise quand il crée un fichier .changes.

Ce fichier ne doit pas exister dans le paquet source qu'on propose, et il doit être supprimé par la règle clean (ainsi que n'importe quel fichier temporaire ou de sauvegarde tel que files.new

files.new est utilisé temporairement par dpkg-gencontrol et dpkg-distaddfile ; ils écrivent une nouvelle version de files avant de le renommer, pour éviter de laisser une copie corrompue, si une erreur se produit.

). Il peut aussi être sage, pour garantir un nouveau départ, de l'enlever ou de le vider au début de la cible binary.

Quand dpkg-gencontrol est exécuté pour un paquet binaire, il ajoute une entrée dans le fichier debian/files pour le fichier .deb qui sera créé quand dpkg-deb --build sera exécuté pour ce paquet binaire. Ainsi pour la plupart des paquets, il n'y a rien d'autre à faire que de supprimer ce fichier dans la cible clean.

Quand une installation de paquet inclut des fichiers autres que ceux du paquet source ou des paquets binaires dont les fichiers de contrôle ont été créés par dpkg-gencontrol, ces fichiers seront placés dans le répertoire parent du répertoire racine du paquet et dpkg-distaddfile sera appelé pour ajouter ces fichiers à la liste debian/files.

Les fichiers de contrôle et leurs champs

Le système de gestion des paquets manipule les données de la même façon : des données de contrôle sont stockées dans des fichiers de contrôle. Les paquets source et binaire possèdent des fichiers de contrôle ; et les fichiers .changes qui contrôlent l'installation des fichiers sur le serveur (upload) sont aussi des fichiers de contrôle Les bases de données internes à dpkg sont aussi des fichiers de contrôle. .

La syntaxe des fichiers de contrôle

Un fichier consiste en un ou plusieurs paragraphes comportant des champs Ces paragraphes sont aussi appelés des strophes. . Ces paragraphes sont séparés par des lignes blanches. Certains fichiers de contrôle n'autorisent qu'un seul paragraphe ; d'autres en autorisent plusieurs, et dans ce cas, chaque paragraphe fait souvent référence à un paquet différent. Dans les paquets sources, par exemple, le premier paragraphe se réfère au paquet source et les paragraphes suivants aux paquets binaires créés à partir de ce source.

Chaque paragraphe est une série de champs contenant des données ; chaque champ est constitué d'un nom, suivi par deux-points et la valeur associée. Il se termine à la fin de la ligne (logique). Les espaces horizontaux (espaces et tabulations) peuvent apparaître immédiatement avant la valeur et après, mais là, ils sont ignorés ; par convention, il y a une espace après les deux-points. Voici un exemple de champ : Package: libc6 Le nom du champ est Package et la valeur est libc6.

Un grand nombre de valeurs de champ peuvent déborder sur plusieurs lignes ; dans ce cas chaque nouvelle ligne doit commencer par une espace ou une tabulation. Toutes les espaces ou tabulations restantes en fin de ligne sont ignorées.

Dans les champs où il est spécifié que les lignes ne peuvent pas déborder, une seule ligne de données est autorisée et les espaces ne sont pas significatives dans le corps du champ. Les espaces ne doivent jamais apparaître dans les noms (de paquets, d'architectures, de fichiers, etc), dans les numéros de version ou entre les éléments de relations de version à plusieurs caractères.

Les noms de champs sont indépendants de la casse ; en général, ceux-ci sont écrits en commençant par une majuscule puis en mélangeant majuscules et minuscules comme dans les exemples plus bas.

Les lignes vides ou les lignes contenant seulement des espaces ou des tabulations ne sont pas autorisées à l'intérieur des valeurs de champ ou entre les champs - ce qui signifierait un nouveau paragraphe.

Le fichier de contrôle d'un paquet source : debian/control

Le fichier debian/control contient les informations les plus importantes sur le paquet source et sur les paquets binaires qui sont créés. Elles sont indépendantes des versions.

Le premier paragraphe contient en général les informations sur le paquet source ; chaque ensemble suivant décrit un paquet binaire que l'arbre source construit.

Les champs du paragraphe général (le premier, concernant le paquet source) sont : Source (obligatoire) Maintainer (obligatoire) Uploaders Section (recommandé) Priority (recommandé) Build-Depends et autres Standards-Version (recommandé)

Les champs des paragraphes pour les paquets binaires sont : Package (obligatoire) Architecture (obligatoire) Section (recommandé) Priority (recommandé) Essential Depends et autres Description (obligatoire)

La syntaxe et la sémantique des champs sont décrites ci-dessous.

Ces champs sont utilisés par dpkg-gencontrol pour créer les fichiers de contrôle pour les paquets binaires (voir ci-dessus), par dpkg-genchanges pour créer le fichier .changes qui accompagne l'installation sur le serveur et par dpkg-source quand il crée le fichier de contrôle source .dsc comme une partie de l'archive source. Il est permis pour un grand nombre de champs de s'étendre sur plusieurs lignes dans debian/control, mais pas dans tout autre fichier de contrôle. Ces outils sont responsables pour supprimer les sauts de ligne de tels champs quand des champs de debian/control sont utilisés pour générer d'autres fichiers de contrôle.

Les champs peuvent contenir des références à des variables, leurs valeurs seront substituées par dpkg-gencontrol, dpkg-genchanges ou dpkg-source quand ils créeront les fichiers de sortie. Voir pour des précisions.

Les fichiers de contrôles des paquets binaires : DEBIAN/control

Le fichier DEBIAN/control contient les informations les plus importantes sur le paquet binaire. Elles sont indépendantes des versions.

Les champs de ce fichier sont : Package (obligatoire) Source Version (obligatoire) Section (recommandé) Priority (recommandé) Architecture (obligatoire) Essential Depends et autres Installed-Size Maintainer (obligatoire) Description (obligatoire)

Les fichiers de contrôle des sources Debian -- .dsc

Ce fichier contient une série de champs, identifiés et séparés comme les champs dans le fichier de contrôle d'un paquet binaire. Les champs sont listés ci-dessous ; leur syntaxe est décrite ci-dessus dans . Format (obligatoire) Source (obligatoire) Version (obligatoire) Maintainer (obligatoire) Uploaders Binary Architecture Build-Depends et autres Standards-Version (recommandé) Files (obligatoire)

Le fichier de contrôle du paquet source est créé par dpkg-source quand il crée l'archive source, à partir des autres fichiers dans le paquet source, décrit ci-dessus. Quand on le déballe, il est vérifié par rapport aux autres fichiers et répertoires dans les autres parties du paquet source, comme décrit ci-dessous.

Les fichiers Debian changes : .changes

Les fichiers .changes sont utilisés par les logiciels de gestion de l'archive Debian pour gérer les mises à jour des paquets. Ils contiennent un paragraphe d'informations provenant du fichier debian/control ainsi que d'autres données concernant le paquet source provenant des fichiers debian/changelog et debian/rules.

Les champs de ce fichier sont les suivants : Format (obligatoire) Date (obligatoire) Source (obligatoire) Binary (obligatoire) Architecture (obligatoire) Version (obligatoire) Distribution (obligatoire) Urgency (recommandé) Maintainer (obligatoire) Changed-By Description (obligatoire) Closes Changes (obligatoire) Files (obligatoire)

La liste des champs Source

Ce champ identifie le nom du paquet source.

Dans un fichier principal de contrôle de source ou dans un fichier .changes ou dans un fichier .dsc, ce champ peut ne contenir que le nom du paquet source.

Dans un fichier de contrôle d'un paquet binaire (ou dans un fichier Packages), il peut être suivi par un numéro de version entre parenthèses

En général, on laisse une espace après le nom du paquet si un numéro de version est spécifié.

. Ce numéro de version peut être omis (et il l'est par dpkg-gencontrol) s'il a la même valeur que le champ Version du paquet binaire en question. Le champ lui-même peut être omis d'un fichier de contrôle d'un paquet binaire quand le paquet source possède le même nom et la même version que le paquet binaire.

Maintainer

Ce champ contient le nom du responsable et son adresse électronique. Le nom vient d'abord, suivi par l'adresse électronique entre les signes inférieur et supérieur <> (au format RFC 822).

Si le nom du responsable contient un point alors le champ entier ne fonctionnera pas directement comme une adresse électronique à cause d'un problème dans la syntaxe spécifiée dans la RFC 822 ; un programme utilisant ce champ comme une adresse doit vérifier cela et corriger le problème si nécessaire (par exemple en mettant entre parenthèses le nom et en le déplaçant à la fin, et en amenant l'adresse électronique devant).

Uploaders

Liste les noms et les adresses des co-responsables d'un paquet, s'il y en a. Quand un paquet possède d'autres responsables que celui nommé dans le champ « Maintainer », leurs noms et adresses seront indiqués dans ce champ. Le format est le même que celui du champ « Maintainer », plusieurs entrées seront séparées par des virgules. Actuellement, ce champ est limité à une seule ligne de données. C'est un champ facultatif.

Tout analyseur interprétant le champ Uploaders dans debian/control devrait l'autoriser à s'étendre sur plusieurs lignes Dans le futur, il sera permis que le champ Uploaders de debian/control (mais pas dans d'autres fichiers de contrôle) s'étende sur plusieurs lignes et l'interprétation d'un champ Uploaders de plusieurs lignes devrait être obligatoire.. Les sauts de ligne dans un champ Uploaders qui s'étendent sur plusieurs lignes ne sont pas significatifs et les sémantiques du champ sont les mêmes que si les sauts de ligne étaient absents.

Changed-By

Le nom et l'adresse électronique de celui qui a modifié ce paquet. C'est habituellement le nom du responsable du paquet. Toutes les règles qui s'appliquent au champ Maintainer s'appliquent aussi.

Section

Le champ Section représente un secteur d'applications dans laquelle le paquet a été classé (voir ).

Quand ce champ apparaît dans le fichier debian/control, il donne la valeur du sous-champ Section du champ Files du fichier .changes, et il donne la valeur par défaut de la section pour les paquets binaires.

Priority

Le champ Priority représente l'importance accordée à un paquet. Voyez .

Quand ce champ apparaît dans le fichier debian/control, il donne la valeur du sous-champ Priority du champ Files du fichier .changes, et il donne la valeur par défaut de la priorité pour les paquets binaires.

Package

Le nom du paquet binaire. Les noms de paquet sont constitués de lettres minuscules (a-z), de chiffres (0-9), et des caractères plus (+), moins (-), ainsi que du point (.). Il doit contenir au moins deux caractères et doit commencer par un caractère alphanumérique.

Architecture

Selon le contexte et le fichier de contrôle utilisé, le champ Architecture peut comporter les valeurs suivantes : Un mot unique identifiant l'architecture d'une machine Debian, voyez . all, qui indique un paquet indépendant d'une architecture. any, qui indique un paquet qui peut être construit pour toutes les architectures. source, qui indique un paquet source.

Dans le fichier principal debian/control du paquet source, ou dans le fichier de contrôle des paquets sources .dsc, on peut indiquer une liste des architectures (séparées par des espaces) ou bien les valeurs spéciales, any et all.

Utiliser la valeurany indique que le paquet source ne dépend pas d'une architecture particulière et qu'il se compile bien sur toute architecture. Le paquet binaire résultant sera spécifique à l'architecture qui a cours  C'est la valeur la plus utilisée et celle qui est conseillée pour les nouveaux paquets qui ne ne sont pas Architecture: all. .

Utiliser une liste d'architectures indique que le paquet source produira un paquet dépendant de l'architecture et fonctionnera correctement sur toutes les architectures listées C'est une valeur utilisée dans une minorité de cas, quand le programme n'est pas portable. Et elle ne devrait pas être utilisée pour les nouveaux paquets. .

Dans un fichier .changes, le champ Architecture liste la ou les architectures des paquets qui sont installés sur le serveur. Ce sera une liste ; si le source du paquet est aussi installé, l'entrée spéciale source est aussi présente.

Voir pour des informations sur la manière d'obtenir l'architecture pour le processus de construction.

Essential

C'est un champ booléen qui ne peut apparaître que dans un fichier de contrôle d'un paquet binaire ou dans un paragraphe concernant un paquet dans un fichier principal de contrôle de source.

S'il est positionné à yes, le système de gestion des paquets refusera d'enlever ce paquet (bien qu'il puisse être mis à niveau ou remplacé). L'autre valeur possible est no, ce qui est la même chose que de ne pas avoir de champ du tout.

Les champs concernant la relation entre les paquets : Depends, Pre-Depends, Recommends, Suggests, Conflicts, Provides, Replaces, Enhances

Ces champs décrivent les relations du paquet avec les autres paquets. Leurs syntaxe et sémantique sont décrites dans .

Standards-Version

Ce champ donne la plus récente version des normes (la charte Debian et les textes associés) à laquelle se conforme le paquet.

Le numéro de version est composé de quatre parties : un numéro de version majeur et un mineur, un niveau de patch majeur et un mineur. Quand les normes changent, exigeant des modifications dans tous les paquets, le numéro majeur est changé. Les changements significatifs, exigeant des évolutions dans de nombreux paquets, sont signalés par un changement du numéro mineur. Le niveau majeur de patch sera modifié pour tout changement limité de la signification des standards. Le niveau de patch mineur sera changé pour toute amélioration légère (typographique, ou autres...) qui ne modifie pas le sens de ce document, ou pour des changements qui n'affectent pas le contenu des paquets.

Seuls les trois premiers chiffres de la version sont significatifs pour le champ Standards-Version, et on peut choisir de donner soit les trois chiffres, soit la formule complète

Par le passé, on devait donner la formule complète à quatre chiffres, par exemple : « 2.3.0.0 ». Mais comme un changement de niveau de patch n'introduit pas une nouvelle norme, on a trouvé préférable d'assouplir la règle et de ne demander qu'une formule à trois chiffres, dans ce cas : « 2.3.0 ». (On peut toujours utiliser la formule complète si l'on veut.)

.

Version

Ce champ donne le numéro de version d'un paquet. Son format est le suivant : [epoch:]version_amont[-révision_debian]

Les trois composantes sont : epoch

C'est simplement un entier non signé (souvent petit). Il peut être omis et dans ce cas il est égal à 0. S'il est omis, le champ version_originelle ne peut pas contenir un « : ».

Il sert à permettre les erreurs dans les numéros des vieilles versions d'un paquet, et aussi à abandonner les précédentes structures de numérotation concernant les versions d'un paquet.

version_amont

C'est la partie principale du champ. En général, on utilise le numéro de la version amont (« upstream ») du paquet à partir duquel le fichier .deb a été créé (s'il est utilisable). Le plus souvent, ce champ est dans le même format que celui spécifié par le ou les auteurs amont ; cependant, il peut devoir être reformaté pour s'adapter au format et aux méthodes de comparaison du système de gestion des paquets.

Les méthodes de comparaison du système de gestion des paquets en ce qui concerne la partie version_amont sont décrites ci-dessous. Cette partie est obligatoire.

La partie version_amont ne peut contenir que des caractères alphanumériques

Les caractères alphanumériques sont : A-Za-z0-9

et les caractères ., +, - et : (point, plus, trait d'union et deux-points) ; elle commencera par un chiffre. S'il n'y a pas de partie révision_debian alors le trait d'union « - » n'est pas autorisé. S'il n'y a pas de partie epoch alors les « : » ne sont pas autorisés.

révision_debian

Cette partie du champ indique le numéro de version du paquet Debian basé sur la version originelle. Il ne peut contenir que des caractères alphanumériques et les caractères + et . (plus et point) ; les méthodes de comparaison sont les mêmes que pour la partie version_amont.

Cette partie est facultative. Si elle manque, la partie version_amont ne peut contenir de trait d'union. On utilise cette partie quand un morceau de code a été écrit spécialement pour obtenir un paquet Debian. Il n'y a qu'une seule debianisation de ce paquet et aucune indication de révision n'est nécessaire.

Par convention, la partie révision_debian est remis à 1 à chaque fois que la partie version_amont est incrémentée.

Le système de gestion des paquets sépare les parties version_amont et révision_debian au dernier trait d'union de la chaîne. Dans une comparaison, l'absence de la partie révision_debian est détectée plus tôt que sa présence (néanmoins la partie révision_debian est la partie la moins significative du numéro de version).

Le système de gestion des paquets compare les parties version_amont et révision_debian en utilisant le même algorithme.

Les chaînes sont comparées de gauche à droite.

Pour chaque chaîne, une partie initiale composée uniquement de lettres est déterminée. Ces deux parties (l'une peut être vide) sont comparées lexicalement. Si une différence est trouvée, elle est retournée. La comparaison lexicale est une comparaison qui utilise des valeurs ASCII modifiées de manière à ce que toutes les lettres soient classées avant les chiffres et les caractères de ponctuation.

Ensuite, pour ce qui reste de cette chaîne, une partie initiale composée uniquement de chiffres est déterminée. Les valeurs numériques de ces deux parties sont comparées, la différence est retournée comme résultat de la comparaison. Dans ce but, une chaîne vide (qui peut seulement apparaître à la fin de l'une ou des deux chaînes que l'on compare) compte pour zéro.

Ces deux phases sont répétées (comparaison et suppression des caractères et des chiffres se trouvant au début des chaînes) jusqu'à ce qu'une différence soit trouvée ou que les deux chaînes soient terminées.

Le but de la partie epoch est de permettre des erreurs dans la numérotation de version et de s'arranger avec les situations où la numérotation de version change. Il ne sert pas à corriger les numéros de version contenant des chaînes de caractères que le système de gestion des paquets ne peut pas interpréter (tel que ALPHA ou pre-) ou une numérotation bâtarde (l'auteur de ce manuel a entendu parler d'un paquet dont les versions allaient ainsi : 1.1.1.2, 1.3, 1, 2.1, 2.2, 2 et ainsi de suite).

Description

Le champ Description dans le fichier de contrôle d'un paquet source ou binaire comprend deux parties, le résumé ou courte description et la description étendue. Le format de ce champ est le suivant :

Description: <résumé sur une seule ligne> <description étendue sur plusieurs lignes>

Les lignes de la description étendue peuvent suivre ces formats :

Les lignes commençant par une espace font partie d'un paragraphe. Les lignes successives seront mis en forme pour être affichées et l'espace sera supprimée. Les lignes commençant par deux espaces ou plus seront affichées verbatim. Si elles ne rentrent pas horizontalement, le programme d'affichage les coupera sans faire attention aux mots coupés. S'il le peut, le programme terminera les lignes sur la droite. Zéro, une ou deux espaces peuvent être supprimées mais ce nombre sera le même pour toutes les lignes (ainsi l'indentation sera correcte). les lignes contenant un seul espace suivi par un seul point seront affichées comme des lignes blanches. C'est le seul moyen d'obtenir une ligne blanche Les lignes complètement vides ne seront pas affichées comme des lignes blanches. Elles induisent plutôt que vous commencez un nouvel enregistrement dans le fichier control et l'analyseur s'arrêtera en constatant une erreur.. Les lignes contenant une espace, un point et d'autres caractères serviront à de prochains développements. Ne les utilisez pas.

N'utilisez pas le caractère de tabulation, son effet est imprévisible.

Voyez pour des informations supplémentaires.

Dans un fichier .changes, le champ Description contient les résumés des descriptions des paquets déposés sur le serveur.

La partie du champ située avant le premier retour à la ligne est vide ; chaque ligne comprend donc le nom du paquet binaire et sa ligne de résumé. Chaque ligne commence par une espace.

Distribution

Dans un fichier .changes ou affiché par l'analyse d'un changelog, ce champ contient les noms (séparés par des espaces) des distributions dans lesquelles cette version du paquet sera installée. Les noms de distribution sont déterminés par les responsables de l'archive

Actuellement, les noms des distributions sont les suivants : stable

C'est l'édition d'une version à jour de Debian GNU/Linux. Une fois que la distribution est stable, seule la correction d'erreurs majeures ou d'erreurs concernant la sécurité est autorisée. Quand cette distribution est modifiée, son numéro d'édition est incrémenté (par exemple : 1.2r1 devient 1.2r2 puis 1.2r3 etc.).

unstable

Cette valeur de distribution fait référence au côté développement de l'arbre Debian des distributions. Les nouveaux paquets, de nouvelles sources pour les paquets et la correction d'erreur vont dans le répertoire unstable. C'est prendre des risques que d'utiliser cette distribution.

testing

Cette valeur de distribution fait référence au côté test de l'arbre Debian des distributions. Les paquets qui la composent proviennent de la distribution unstable où ils sont restés un court moment de manière à s'assurer qu'ils n'ont pas de défauts graves. Les paquets de cette distribution sont moins défectueux que ceux de la distribution unstable mais comportent des risques. On ne peut pas installer des paquets dans testing.

frozen

De temps en temps, la distribution testing entre dans un état dit de « gel du code » qui anticipe la version stable. Pendant cette période de test, seules les corrections d'erreurs existantes ou nouvellement découvertes sont autorisées. Le détail précis de cette étape est déterminé par le responsable de l'édition (« Release Manager »).

experimental

Les paquets qui possèdent cette valeur de distribution sont considérés par leur responsable comme représentant un grand risque. Souvent, ce sont des paquets en phase bêta ou en cours de développement, provenant de sources variées que les responsables veulent faire tester, mais ce ne sont pas des paquets qui peuvent être inclus dans d'autres répertoires de l'arbre Debian des distributions. À utiliser à ses risques et périls.

On listera toutes les distributions dans lesquelles le paquet sera installé.

.

Date

Ce champ donne la date de la construction de paquet ou de la dernière édition.

Sa valeur est tirée du fichier debian/changelog - voyez .

Format

Ce champ indique une révision de format pour le fichier. Le format décrit ici est la version 1.5. La syntaxe de la valeur du format est la même que la numérotation de la version des paquets, sauf que epoch et la révision Debian ne sont pas autorisés - voir .

Urgency

Ce champ décrit l'importance de la mise à jour de cette version par rapport aux autres versions. Il contient un simple mot-clé qui prend habituellement une de ces valeurs low, medium ou high (peu importe la casse) suivie par un commentaire optionnel (séparé par une espace) qui est généralement entre parenthèses. Par exemple : Urgency: low (HIGH pour les utilisateurs de diversions)

La valeur de ce champ est habituellement tirée du fichier debian/changelog - voyez .

Changes

Ce champ contient les données lisibles des changements, décrivant les différences entre la dernière version et celle courante.

Il ne doit rien y avoir dans ce champ avant le première nouvelle ligne ; toutes les lignes suivantes doivent être indentées d'au moins une espace ; les lignes vides doivent être représentées par une ligne contenant seulement une espace et un point.

La valeur de ce champ est habituellement tirée du fichier debian/changelog – voyez .

Chaque information de changement de version doit être précédée par une ligne de titre donnant au moins la version, la ou les distributions et l'urgence, d'une façon lisible.

Si les données de plusieurs versions sont retournées, l'entrée de la plus récente version doit être retournée d'abord, et les entrées doivent être séparées par une ligne vide (la ligne de titre peut aussi être suivie par une ligne vide).

Binary

Ce champ est une liste de paquets binaires.

Quand il apparaît dans un fichier .dsc, il représente la liste des paquets binaires qu'un paquet source peut produire. Il ne produit pas nécessairement tous ces paquets binaires pour chaque architecture. Le fichier de contrôle source ne contient pas les détails sur les architectures qui sont les plus appropriées pour les paquets binaires.

Quand il apparaît dans un fichier .changes, il liste les noms des paquets binaires actuellement installés sur le serveur.

La syntaxe est une liste de paquets binaires séparée par des virgules

Par convention, il y a une espace après chaque virgule.

. Actuellement, les paquets doivent être séparés en utilisant seulement des espaces dans le fichier .changes.

Installed-Size

Ce champ apparaît dans les fichiers de contrôle des paquets binaires, et dans les fichiers Packages. Il donne la capacité totale du disque nécessaire pour installer le paquet.

L'espace disque est représenté en Kilo-octets comme un nombre décimal simple.

Files

Ce champ contient la liste des fichiers avec des informations sur chacun d'eux. L'information exacte et la syntaxe exacte varient avec le contexte. Dans tous les cas, la partie du contenu du champ sur la même ligne que le nom du champ est vide. Le reste du champ est une ligne par fichier, chaque ligne est indentée par une espace et contient un nombre de sous-champs séparés par des espaces.

Dans le fichier .dsc (contrôle des sources Debian), chaque ligne contient la somme de contrôle MD5, la taille et le nom du fichier tar et (éventuellement) le fichier diff qui représente le reste du paquet source

C'est la partie qui n'est pas .dsc.

. Les formes exactes des noms de fichier sont décrites dans .

Dans le fichier .changes, il contient une ligne par fichier chargé. Chaque ligne contient la somme de contrôle, la taille, la section et la priorité et le nom du fichier. La section et la priorité sont les valeurs des champs correspondants dans le fichier principal de contrôle des sources. Si aucune section ou priorité n'est spécifiée alors - doit être utilisé, bien que les valeurs de section et de priorité doivent être spécifiées pour installer correctement les nouveaux paquets.

La valeur spéciale byhand pour la section dans un fichier .changes indique que le fichier en question n'est pas un fichier ordinaire de paquet et doit être installé à la main par les responsables de la distribution. Si la valeur de la section est byhand alors la valeur de la priorité devrait être -.

Si une nouvelle révision Debian d'un paquet est chargée et qu'aucune archive originale source n'est distribuée, le fichier .dsc doit toujours contenir l'entrée du champ Fields pour l'archive originale source package-upstream-version.orig.tar.gz mais le fichier .changes devrait l'omettre. Dans ce cas, l'archive originale source sur le site de distribution doit être exactement, octet par octet, l'archive originale source qui a été utilisée pour créer le fichier .dsc et le fichier diff qui a été installé sur le serveur.

Closes

Une liste de numéros de rapport de bogues séparés par des espaces qui sont fermés par le téléchargement défini par le fichier .changes .

Champs définis par l'utilisateur

Des champs utilisateurs supplémentaires peuvent être ajoutés au fichier de contrôle du paquet source. Ces champs seront ignorés, ne seront pas copiés dans les fichiers de contrôle des paquets sources ou binaires (par exemple) ou dans les fichiers de contrôle de l'installation sur le serveur.

Quand on souhaite ajouter des champs supplémentaires non reconnus par ces fichiers de sortie, on utilisera le mécanisme décrit ci-dessous.

Les champs du fichier principal de contrôle de source avec des noms commençant par X, suivis par une ou plusieurs lettres BCS et un trait d'union -, seront copiés vers les fichiers de sortie. Seule la partie du nom du champ qui se trouve après le trait d'union sera utilisée dans le fichier de sortie. Si la lettre B est utilisée, le champ apparaîtra dans les fichiers de contrôle des paquets binaires, si c'est la lettre S, dans les fichiers de contrôle de paquet source, et si c'est la lettre C, dans les fichiers de contrôle de l'installation sur le serveur (.changes).

Par exemple, le fichier principal de contrôle de source contient le champ suivant : XBS-Comment: I stand between the candle and the star. alors les fichiers de contrôle des paquets sources et binaires contiendront le champ : Comment: I stand between the candle and the star.

Les scripts du responsable de paquet et la procédure d'installation Introduction aux scripts du responsable de paquet

Il est possible de fournir des scripts qui seront exécutés par le système de gestion des paquets lors d'une installation, d'une mise à jour ou d'une suppression du paquet.

Ces scripts sont les fichiers preinst, postinst, prerm et postrm contenus dans le répertoire de contrôle du paquet. Ils doivent être des fichiers exécutables corrects ; quand ce sont des scripts (ce qui est recommandé), ils doivent commencer par la convention habituelle : #!. Ils seront lisibles et exécutables par tout le monde mais ils ne doivent pas être modifiables par tout le monde.

Le système de gestion de paquets teste le code de sortie de ces scripts. Il est important que ce code soit différent de zéro quand il y a une erreur ; le système de gestion de paquets peut alors s'interrompre. Pour les scripts shell, cela signifie que l'on doit presque toujours utiliser set -e (et c'est généralement vrai pour tout script shell). Bien sûr, il est aussi important que ce code ne soit pas différent de zéro quand tout s'est bien passé.

De plus, les paquets interagissant avec les utilisateurs utilisant debconf dans le script postinst doivent installer un script config dans la zone de contrôle, voir pour plus de détails.

Quand un paquet est mis à jour, une combinaison des scripts de l'ancien et du nouveau paquet est appelée durant la procédure de mise à jour. Il faut faire attention quand les scripts se compliquent et il faut vérifier leurs arguments.

D'une manière générale, le script preinst est appelé avant d'installer (une version particulière d') un paquet, et le script postinst après ; le script prerm avant d'effacer (une version d') un paquet et postrm après.

Normalement on ne doit pas préfixer le chemin des programmes appelés par les scripts. Avant le début de l'installation, le système de gestion de paquet vérifie que les programmes ldconfig, start-stop-daemon, install-info et update-rc.d peuvent être trouvés via la variable d'environnement PATH. Ces programmes, et n'importe quel autre programme qu'on s'attend à trouver dans le PATH, seront donc appelés sans nom de chemin absolu. Les scripts du responsable ne doivent pas non plus réinitialiser la variable PATH, bien qu'ils puissent choisir de la modifier en ajoutant au début ou à la fin un répertoire spécifique à un paquet. Ces considérations s'appliquent vraiment à tous les scripts shell.

L'idempotence des scripts du responsable

Il est nécessaire pour les procédures de gestion des erreurs que les scripts soient idempotents. Cela signifie qu'un script, appelé à nouveau après une exécution réussie, n'explose pas et ne fait pas de dégâts ; il s'assure simplement que chaque chose est à sa place. Si le premier appel échoue, ou s'arrête au milieu du chemin pour une raison ou une autre, le second appel fera, s'il y en a, les choses qui n'ont pas été faites la première fois et se terminera normalement si tout est correct

Qu'une erreur arrive -- l'utilisateur interrompt dpkg ou bien quelque chose d'imprévu se passe -- il ne faut pas laisser un paquet défectueux à l'utilisateur quand dpkg essaye de refaire l'action.

.

Les terminaux de contrôle et les scripts du responsable

Les scripts du responsable sont assurés de s'exécuter avec un terminal de contrôle et de pouvoir interagir avec l'utilisateur. Comme ces scripts peuvent rediriger leur sortie standard dans un tube à des fins d'enregistrement, les scripts Perl utiliseront un mode de sortie sans tampon mémoire en déclarant $|=1 de manière à ce que la sortie soit affichée immédiatement plutôt que d'être mise dans un tampon mémoire.

Code de sortie

Chaque script retournera un code de sortie égal à zéro en cas de succès et un code différent de zéro en cas d'échec. Chaque script doit retourner un code de sortie égal à zéro en cas de succès et un code différent de zéro en cas d'échec car le système de gestion des paquets récupère le code de sortie de ces scripts et détermine l'action suivante en fonction de cette valeur.

Résumé des façons d'appeler les scripts du responsable

preinst-du-nouveau-paquet install

preinst-du-nouveau-paquet install vieille-version

preinst-du-nouveau-paquet upgrade vieille-version

preinst-de-l'ancien-paquet abort-upgrade nouvelle-version

postinst configure version-la-plus-récemment-configurée

postinst-de-l'ancien-paquet abort-upgrade nouvelle-version

postinst-du-paquet-conflictuel abort-remove in-favour paquet nouvelle-version

postinst abort-remove

postinst-du-paquet-déconfiguré abort-deconfigure in-favour paquet-dont-installation-a-échoué version removing paquet-conflictuel version

prerm remove

prerm-de-l'ancien-paquet upgrade nouvelle-version

prerm-du-nouveau-paquet failed-upgrade vieille-version

prerm-du-paquet-conflictuel remove in-favour paquet nouvelle-version

prerm-du-paquet-déconfiguré deconfigure in-favour paquet-installé version removing paquet-conflictuel version

postrm remove

postrm purge

postrm-de-l'ancien-paquet upgrade nouvelle-version

postrm-du-nouveau-paquet failed-upgrade vieille-version

postrm-du-nouveau-paquet abort-install

postrm-du-nouveau-paquet abort-install vieille-version

postrm-du-nouveau-paquet abort-upgrade vieille-version

postrm-du-paquet-disparu disappear remplaçant version-du-remplaçant

Précisions sur la phase de dépaquetage lors d'une installation ou d'une mise à jour

La procédure lors d'une installation, d'une mise à jour, d'un remplacement ou d'une disparition (c'est-à-dire quand on exécute dpkg --unpack, ou bien l'étape unpack de dpkg --install) est la suivante. Dans chaque cas, si une erreur majeure se produit (à moins d'être listée ci-dessous), les actions sont généralement « rembobinées » -- ce qui signifie que les scripts du responsable sont exécutés dans l'ordre inverse avec des arguments différents. Ce sont les appels « correction d'erreur » listés ci-dessous.

Si une version du paquet est déjà installée, appel de prerm-de-l'ancien-paquet upgrade nouvelle-version

Quand le script se termine avec un code de sortie différent de zéro, dpkg essaye : prerm-du-nouveau-paquet failed-upgrade vieille-version Si cela réussit, la mise à jour continue. Sinon, correction d'erreur : postinst-de l'ancien-paquet abort-upgrade nouvelle-version Si cela réussit, alors l'ancienne version est dans l'état « Installed ». Sinon, l'ancienne version est dans l'état « Failed-Config ».

Si un paquet conflictuel est enlevé en même temps :

Quand un paquet dépend de ce paquet conflictuel et si l'option --auto-deconfigure est spécifiée, appel pour chaque paquet : prerm-du-paquet-déconfiguré deconfigure in-favour paquet-à-installer version removing paquet-conflictuel version Correction d'erreurs : postinst-du-paquet-déconfiguré abort-deconfigure in-favour paquet-dont-l'installation-a-échoué version removing paquet-conflictuel version Les paquets déconfigurés sont indiqués comme nécessitant une configuration, afin que, si l'option --install est utilisée, ils soient, si possible, de nouveau configurés.

Pour préparer l'effacement du paquet conflictuel, appel de : prerm-du-paquet-conflictuel remove in-favour paquet nouvelle-version Correction d'erreurs : postinst-du-paquet-conflictuel abort-remove in-favour paquet nouvelle-version

Si le paquet est mis à jour, appel de : preinst-du-nouveau-paquet upgrade vieille-version Si cela échoue, on appelle : postrm-du-nouveau-paquet abort-upgrade vieille-version

Si cela fonctionne, alors postinst-de-l'ancien-paquet abort-upgrade nouvelle-version est appelé. Si cela fonctionne, alors l'ancienne version est dans un état « Installed », sinon elle est laissée dans un état « Unpacked ».

Si cela échoue, alors l'ancienne version est laissée dans un état « Half-Installed ».

Autrement, si le paquet a des fichiers de configuration d'une version précédemment installée (c'est-à-dire, s'il ne reste plus du paquet que les fichiers de configuration) : preinst-du-nouveau-paquet install vieille-version Correction d'erreur : postrm-du-nouveau-paquet abort-install vieille-version Si cela échoue, le paquet est laissé dans un état « Half-Installed » qui impose une réinstallation. Si cela réussit, le paquet est laissé dans un état « Config Files ».

Autrement (c'est-à-dire, le paquet a été complètement effacé) : preinst-du-nouveau-paquet install Correction d'erreurs postrm-du-nouveau-paquet abort-install Si la correction d'erreur échoue, le paquet est dans un état « Half Installed » et nécessite une réinstallation. Si elle réussit, le paquet n'est plus installé.

Les fichiers du nouveau paquet sont dépaquetés, remplaçant ceux qui peuvent déjà être sur le système, par exemple, les fichiers appartenant à la vieille version du même paquet ou ceux d'un autre paquet. Les sauvegardes des vieux fichiers sont laissées, et si quelque chose se passe mal, le système de gestion des paquets, dans sa partie « correction d'erreurs » essayera de les remettre en place.

C'est une erreur pour un paquet de contenir des fichiers qui sont sur le système dans un autre paquet, à moins que Replaces ne soit utilisé (voir ).

C'est une erreur plus grave pour un paquet de contenir un simple fichier ou autre chose qu'un répertoire quand un autre paquet veut un répertoire (à moins que Replaces ne soit utilisé). Cette erreur peut être évitée si c'est l'effet recherché, en utilisant --force-overwrite-dir, mais ce n'est pas à conseiller.

Les paquets qui remplacent mutuellement leurs fichiers ont une démarche qui, bien que déterministe, est difficile à comprendre pour un administrateur système. Cela peut aisément conduire à des programmes annoncés comme « absent » quand, par exemple, un paquet remplaçant tel fichier d'un autre paquet est installé puis effacé

Une partie du problème vient certainement d'une erreur de dpkg.

.

Un répertoire ne sera jamais remplacé par un lien symbolique vers un répertoire et vice versa ; à la place, l'état existant (lien symbolique ou non) est conservé et dpkg suivra les liens s'il y en a.

Si le paquet est mis à jour, appel de : postrm-de l'ancien-paquet upgrade nouvelle-version

Si cela échoue, dpkg essaye : postrm-du-nouveau-paquet failed-upgrade vieille-version Si cela réussit, l'installation continue. Sinon, correction d'erreur : preinst-de-l'ancien-paquet abort-upgrade nouvelle-version Si cela échoue, l'ancienne version est laissée dans un état « Half Installed ». Si cela réussit, dpkg appelle maintenant : postrm-du-nouveau-paquet abort-upgrade vieille-version Si cela échoue, l'ancienne version est laissée dans un état « Half Installed ». Si cela échoue, dpkg appelle maintenant : postinst-de-l'ancien-paquet abort-upgrade nouvelle-version Si cela échoue, l'ancienne version est dans un état « Unpacked ».

C'est le point de non-retour. Quand dpkg atteint ce point, il ne revient pas en arrière si une erreur se produit. Le paquet reste dans un très mauvais état et demande une réinstallation réussie pour remettre tout en place ; cela arrive quand dpkg commence à faire des choses irréversibles.

Tous les fichiers de la version précédente du paquet qui ne sont pas dans la nouvelle sont effacés.

La nouvelle liste de fichiers remplace la précédente.

Les nouveaux scripts du responsable remplacent les anciens.

Les paquets dont tous les fichiers ont été remplacés pendant l'installation, et qui ne sont pas nécessaires pour les dépendances, sont considérés comme effacés. Pour ces paquets :

dpkg appelle : postrm-du-paquet-effacé disappear remplaçant version-du-remplaçant

Les scripts du responsable de paquet sont effacés.

Le paquet est inscrit dans la base de données « status » comme étant dans un état correct, à savoir non installé (ses conffiles sont ignorés et non pas supprimés par dpkg). Il faut remarquer que dpkg n'appelle pas le script prerm du paquet effacé, car il ne sait pas à l'avance que le paquet va disparaître.

Les fichiers du paquet à installer qui sont aussi répertoriés par d'autres paquets sont enlevés des listes de ces paquets, ce qui lobotomisera la liste de fichiers du paquet « conflictuel », s'il y en a un.

Les fichiers de sauvegarde faits pendant la phase précédente d'installation sont effacés.

Le statut du nouveau paquet est correct et enregistré comme « dépaqueté ».

C'est un autre point de non-retour - si l'effacement d'un paquet conflictuel échoue, on ne « rembobine » pas le reste de l'installation ; le paquet conflictuel est laissé dans un état « enlevé à moitié ».

Au cas où existe un paquet conflictuel, on procède aux actions d'effacement (décrites ci-dessus), en commençant par l'effacement des fichiers du paquet conflictuel (les fichiers qui sont aussi dans le paquet installé ont déjà été effacés de la liste des fichiers du paquet conflictuel et ne sont pas enlevés maintenant).

Précisions sur la configuration

Quand on configure un paquet (avec dpkg --install, ou avec --configure), on met à jour d'abord les conffiles et ensuite on appelle : postinst configure version-la-plus-récemment-configurée

On n'essaye pas de « rembobiner » après une erreur pendant la configuration. Si la configuration échoue, le paquet est dans un état « Failed Config » et un message d'erreur est généré.

S'il n'existe pas de « version-la-plus-récemment-configurée », dpkg passe un argument nul 

Note historique : les versions vraiment anciennes (pre-1997) de dpkg passaient dans ce cas <unknown> (avec les signes supérieur et inférieur). Et les plus vieilles versions ne passaient pas de second argument du tout, quelles que soient les circonstances. Notez qu'une mise à jour utilisant de telles versions de dpkg ne fonctionnera vraisemblablement pas, pour d'autres raisons, et même si votre script postinst gère ce cas.

.

Précisions sur la phase de suppression sans ou avec suppression des fichiers de configuration

prerm remove

Si le script prerm échoue pendant le remplacement à cause d'un conflit postinst-du-paquet-en-conflit abort-remove \ in-favour paquet nouvelle-version Ou sinon on appelle : postinst abort-remove

Si cela échoue, le paquet est dans un état « Failed-Config » ou sinon il reste « Installed ».

Les fichiers du paquet sont effacés (sauf les conffiles).

postrm remove

Si cela échoue, il n'y a pas de correction d'erreur et le paquet est dans un état « Half-Installed ».

Tous les scripts du responsable sont effacés sauf postrm.

Si on n'efface pas le paquet, la procédure s'arrête là. Il faut remarquer que les paquets qui n'ont pas de postrm ni de conffiles sont automatiquement purgés pendant l'effacement, puisqu'il n'y pas de différence, sauf pour le fichier status de dpkg.

Les conffiles et les fichiers de sauvegarde (fichiers ~, fichiers #*#, fichiers %, .dpkg-{old, new, tmp}, etc.) sont effacés.

postrm purge

Si cela échoue, le paquet reste dans un état « Config-Files ».

La liste des fichiers du paquet est effacée.

Comment déclarer des relations entre les paquets ? La syntaxe des champs de relation

Ces champs ont tous la même syntaxe. Ce sont des listes de noms de paquets séparés par des virgules.

Dans les champs Depends, Recommends, Suggests, Pre-Depends, Build-Depends et Build-Depends-Indep (les champs qui déclarent les dépendances d'un paquet envers d'autres paquets), ces noms peuvent aussi être des listes de noms de paquets alternatifs, séparés par des symboles barre verticale « | » (symbole du tube de communication). Si c'est le cas, quand l'un des paquets alternatifs est installé, on considère que cette partie de la dépendance est satisfaite.

Tous les champs sauf le champ Provides peuvent restreindre leur application à des versions particulières de chaque paquet nommé. Ces versions sont indiquées entre parenthèses après chaque nom de paquet ; les parenthèses contiendront une des relations de la liste ci-dessous, suivie par un numéro de version, dans le format décrit dans .

Les relations autorisées sont : <<, <=, =, >= et >> pour strictement avant, avant ou égal, égal, après ou égal, strictement après, respectivement. Les formes déconseillées < et > ont été utilisées pour signifier avant/après ou égal, plutôt que strictement avant/après, ainsi elles ne doivent pas apparaître dans les nouveaux paquets (bien que dpkg les accepte encore).

Les espaces peuvent apparaître n'importe où dans la spécification de version sujette aux règles énoncées dans , et doivent apparaître là où c'est nécessaire pour supprimer toute ambiguïté ; autrement elles ne sont pas significatives. Pour la cohérence et dans le cas de futures modifications de dpkg, il est recommandé de mettre une seule espace après une relation de version et avant un numéro de version ; il est aussi convenu de mettre une espace après chaque virgule, de chaque côté d'une barre verticale, et avant chaque parenthèse ouvrante.

Par exemple, une liste de dépendances peut apparaître ainsi : Package: mutt Version: 1.3.17-1 Depends: libc6 (>= 2.2.1), exim | mail-transport-agent

On peut limiter à un ensemble d'architectures tous les champs qui précisent des relations pour la compilation (Build-Depends, Build-Depends-Indep, Build-Conflicts et Build-Conflicts-Indep). On se sert de crochets après chaque nom de paquet et l'indication facultative de la version. Les crochets enferment une liste d'architectures acceptées par Debian, séparées par une espace. Un point d'exclamation peut être ajouté à chaque nom. On ne peut pas ajouter un point d'exclamation à certains noms et pas à d'autres. Quand l'architecture de la machine hôte n'est pas présente dans la liste et qu'il n'y a pas de point d'exclamation, ou bien quand elle est dans la liste et qu'elle est préfixée par un point d'exclamation, le paquet et l'indication de la version associée sont complètement ignorés pour ce qui concerne la définition du système de relation.

Par exemple : Source: glibc Build-Depends-Indep: texinfo Build-Depends: kernel-headers-2.2.10 [!hurd-i386], hurd-dev [hurd-i386], gnumach-dev [hurd-i386]

Il faut remarquer que les champs concernant les relations entre paquets binaires tel que Depends apparaissent dans l'une des sections du fichier de contrôle du paquet binaire, alors que les champs concernant les relations pour la construction tel que Build-Depends apparaissent dans la première section du fichier de contrôle du paquet source.

Les dépendances pour les paquets binaires - Depends, Recommends, Suggests, Enhances, Pre-Depends

Les paquets peuvent déclarer dans leur fichier de contrôle qu'ils ont certaines relations avec d'autres paquets - par exemple, qu'ils ne peuvent pas être installés en même temps que tel paquet, ou qu'ils dépendent de la présence de tel autre.

On se sert pour cela des champs du fichier control suivants : Depends, Pre-Depends, Recommends, Suggests, Enhances et Conflicts.

Ces six champs sont utilisés pour déclarer une relation de dépendance d'un paquet envers un autre paquet. Ils apparaissent dans le fichier control du paquet dépendant (binaire), sauf le champ Enhances qui apparaît dans le fichier de contrôle du paquet recommandé.

Un champ Depends prend effet seulement lors de la configuration du paquet. Il n'empêche pas qu'un paquet soit sur le système dans un état « non configuré » et ses dépendances non satisfaites ; il est aussi possible de remplacer un paquet correctement installé et dont les dépendances sont satisfaites par une version différente dont les dépendances ne sont pas et ne peuvent pas être satisfaites ; quand c'est le cas, le paquet dépendant est laissé « non configuré » (étant donné que les tentatives pour le configurer donnent des erreurs) et il ne fonctionne pas correctement. On peut utiliser si nécessaire un champ Pre-Depends qui a un effet limité même si le paquet est dans la phase de dépaquetage, comme c'est expliqué plus bas. (Les trois autres champs, Recommends, Suggests et Enhances, ne sont utilisés que par les différentes interfaces de dpkg, telle que dselect.)

Pour cette raison, lors d'une installation, les paquets sont généralement tous installés d'abord et tous configurés ensuite ; cela permet que les dernières versions des paquets ayant des dépendances sur les dernières versions d'autres paquets voient leurs dépendances satisfaites.

Dans le cas de dépendances circulaires, comme l'ordre d'installation ou de suppression pour honorer l'ordre des dépendances ne peut être établi, les boucles de dépendances sont cassées à un certain point (basé sur les règles ci-dessous) et certains paquets peuvent ne pas pouvoir être certain que leurs dépendances soient présentes lors de l'installation ou de la suppression selon de quel côté de la cassure de la boucle de dépendance circulaire ils sont placés. Si l'un des paquets dans la boucle n'a pas de script postinst, alors le cycle peut être cassé sur ce paquet pour garantir que tous les scripts postinst sont exécutés avec leurs dépendances correctement configurés si cela est possible. Sinon, le point de cassure est arbitraire.

Ainsi le champ Depends autorise les responsables de paquet à imposer un ordre sur la manière de configurer les paquets.

Voici la signification des cinq champs de dépendance : Depends

Ce champ déclare une dépendance absolue. Il n'est pas possible de configurer un paquet tant que tous les paquets listés dans ce champ n'ont pas été correctement configurés.

Le champ Depends sera utilisé quand le paquet dépendant a besoin, pour fonctionner d'une manière intéressante, de tel paquet.

Le champ Depends sera aussi utilisé quand les scripts postinst, prerm ou postrm demandent que tel paquet soit présent pour qu'ils puissent fonctionner. Cependant, il faut noter que le script postrm ne peut pas compter sur la présence de paquets « non-essential » pendant la phase de purge.

Recommends

Ce champ déclare une dépendance forte, mais pas absolue. Le champ Recommends listera les paquets qu'on trouve habituellement avec ce paquet dans toute installation standard.

Suggests

On se sert de ce champ pour déclarer qu'un paquet serait plus utile avec un ou plusieurs autres paquets. On indique au système de gestion de paquet et à l'utilisateur que les paquets listés sont liés au paquet et qu'ils peuvent peut-être augmenter son utilité, mais qu'une installation sans ces paquets est parfaitement concevable.

Enhances

Ce champ ressemble au champ Suggests mais il marche en sens inverse. On s'en sert pour déclarer qu'un paquet améliore l'efficacité de tel autre paquet.

Pre-Depends

Ce champ ressemble au champ Depends, sauf qu'il force aussi dpkg à terminer l'installation des paquets qu'il liste avant même de démarrer l'installation du paquet qui déclare ces pré-dépendances.

Quand un paquet déclarant une relation de pré-dépendance est sur le point d'être dépaqueté, cette relation peut être satisfaite si le paquet exigé par la pré-dépendance est, soit pleinement configuré, soit même s'il est seulement dépaqueté ou « à demi configuré », pourvu qu'il ait été déjà correctement configuré au moins une fois (et pas effacé ou partiellement effacé depuis). Dans ce cas, les deux versions, celle précédemment configurée et celle actuellement dépaquetée ou dans un état « à moitié configuré », doivent satisfaire à toute clause de version contenue dans le champ Pre-Depends.

Quand le paquet déclarant une relation de Pre-Dépendance est configuré, cette relation sera considérée comme une relation Depends normale ; c'est-à-dire, elle sera considérée comme satisfaite seulement si le paquet dépendant a bien été configuré.

Le champ Pre-Depends sera utilisé parcimonieusement et de préférence seulement pour les paquets dont une mise à jour ou une installation prématurée entraverait la capacité du système à continuer les mises à jour en cours.

Des relations Pre-Depends sont aussi exigées quand un script preinst dépend d'un paquet cité. Il vaut mieux éviter cette situation.

Pour choisir un niveau de dépendance, on mesurera l'importance du paquet demandé pour les fonctionnalités du paquet qui déclare la dépendance. Certains paquets sont composés d'éléments plus ou moins importants. Un tel paquet listera dans le champ Depends le ou les paquets qui sont nécessaires aux éléments les plus importants. Les autres éléments peuvent être mentionnés comme des Suggestions ou des Recommandations, selon l'importance relative de ces éléments.

Mettre en conflit des paquets binaires -- le champ Conflicts

Quand un paquet déclare un conflit avec un autre, en utilisant le champ Conflicts, dpkg refuse de les installer en même temps sur le système.

Si l'on veut installer l'un de ces paquets, l'autre doit d'abord être supprimé — si le paquet en cours d'installation est marqué comme remplaçant (voir ) le paquet sur le système, ou si celui-ci est marqué comme « désélectionné », ou bien si les deux paquets sont marqués Essential, alors dpkg enlève automatiquement le paquet qui crée le conflit, ou bien arrête l'installation du nouveau paquet par une erreur. Ce mécanisme est spécifiquement conçu pour provoquer une erreur quand le paquet installé est marqué Essential et que le nouveau paquet ne l'est pas.

Un paquet ne provoque pas de conflit simplement parce que ses fichiers de configuration sont toujours installés ; il doit être au moins dans l'état « à moitié installé ».

Une exception spéciale est faite pour les paquets qui déclarent un conflit avec leur propre nom de paquet, ou avec le paquet virtuel qu'ils fournissent (voir ci-dessous) : cela n'empêche pas leur installation, et cela autorise un paquet à déclarer un conflit avec les paquets qui peuvent le remplacer. On utilise ce dispositif quand on veut que le paquet en question soit le seul paquet à fournir une fonctionnalité particulière.

Une entrée Conflicts ne devrait presque jamais avoir une clause de version indiquant une relation « avant ». Cela empêcherait dpkg de mettre à jour ou d'installer le paquet qui déclare un tel conflit jusqu'à ce que la mise à jour ou l'effacement du paquet en conflit ait été terminé.

Les paquets virtuels -- le champ Provides

Aussi bien que des noms de paquets réels (concrets), les champs de relation Depends, Recommends, Suggests, Enhances, Pre-Depends, Conflicts, Build-Depends, Build-Depends-Indep, Build-Conflicts et Build-Conflicts-Indep peuvent mentionner des noms de « paquets virtuels ».

Un paquet « virtuel » est un paquet qui apparaît dans le champ Provides du fichier « control » d'un autre paquet. L'effet est le même que si le ou les paquets qui fournissent un paquet virtuel particulier avaient été listés par leur nom partout où le nom du paquet virtuel apparaît. Voir aussi .

Quand un paquet concret et un paquet virtuel ont le même nom, la dépendance peut être satisfaite (ou le conflit provoqué) soit par le paquet concret du même nom soit par tout autre paquet concret fournissant le paquet virtuel du même nom. Par exemple, en supposant que nous ayons : Package: foo Depends: bar et que quelqu'un d'autre sorte un paquet bar amélioré, il peut dire : Package: bar-plus Provides: bar et le paquet bar-plus satisfera aussi la dépendance pour le paquet foo.

Quand un numéro de version est attaché à une dépendance ou à un conflit, seuls les paquets réels seront examinés pour savoir si la relation est satisfaite (ou, pour un conflit, l'interdiction violée) - on supposera qu'un paquet réel qui fournit un paquet virtuel n'a pas la « bonne » version. Ainsi, un champ Provides ne peut pas contenir de numéros de version, et le numéro de version du paquet concret qui fournit un paquet virtuel particulier n'est pas examiné quand on considère une dépendance envers ou un conflit avec le nom du paquet virtuel.

Il est probable que la possibilité d'indiquer un numéro de version pour chaque paquet virtuel sera ajoutée dans une version prochaine de dpkg. Cette caractéristique n'est pas encore présente et il est probable qu'elle sera très peu utilisée.

Quand on veut spécifier quel paquet d'un ensemble de paquets réels sera celui qui satisfait par défaut une dépendance particulière envers un paquet virtuel, on listera le paquet réel alternatif avant le paquet virtuel.

le champ Replaces -- regénérer les fichiers et remplacer les paquets

Un paquet peut déclarer dans son fichier control qu'il modifiera des fichiers appartenant à un autre paquet ou qu'il remplacera complètement un autre paquet. Le champ Replaces du fichier control remplit ces deux fonctions.

Regénérer les fichiers appartenant à d'autres paquets

Tout d'abord, comme mentionné auparavant, qu'un paquet possède des fichiers qui sont sur le système mais dans un autre paquet est généralement une erreur.

Cependant, si le paquet, qui veut faire un remplacement, déclare, dans le champ Replaces, qu'il remplace le paquet qui contient le fichier à remplacer, dpkg procède au remplacement du fichier de l'ancien paquet par le nouveau. Ce fichier ne sera plus listé comme faisant partie de l'ancien paquet.

Quand un paquet est ainsi complètement remplacé, de sorte que dpkg ne sait pas quels fichiers il contient encore, on considère qu'il a « disparu ». Sur le système, il est marqué comme « non sélectionné » (sélectionné pour l'effacement) et « non installé ». Tous les renseignements contenus dans les conffiles sont ignorés, vu que le paquet remplaçant les aura repris. Le script postrm du paquet est exécuté avec un argument particulier pour permettre au paquet de faire le nettoyage final nécessaire. Voir

Replaces est une relation à sens unique -- vous devez installer le paquet remplaçant après le paquet remplacé.

.

Avec cette utilisation du champ Replaces, et quand on l'examine, on ne prend pas en compte les paquets virtuels (voyez ) -- les paquets déclarant qu'ils sont remplacés doivent être mentionnés par leurs noms réels.

De plus, cet usage de Replaces prend seulement effet quand deux paquets sont -- au moins partiellement -- en même temps sur le système, et cela peut seulement se produire s'ils ne sont pas en conflit, ou si le conflit a été annulé.

Le remplacement total d'un paquet ; forcer sa suppression

Et deuxièmement, le champ Replaces permet au système de gestion des paquets de savoir quel paquet enlever quand il y a un conflit - voir . Cet usage prend seulement effet quand deux paquets sont réellement en conflit, afin que les deux usages de ce champ n'interfèrent pas l'un avec l'autre.

Dans ce cas, le paquet déclaré comme étant remplacé peut être un paquet virtuel ; c'est ainsi que les agents de transport du courrier (MTA) pourront avoir les champs suivants dans leur fichier de contrôle : Provides: mail-transport-agent Conflicts: mail-transport-agent Replaces: mail-transport-agent On s'assure ainsi qu'un seul MTA peut être installé à la fois.

Les relations entre les paquets binaires et les paquets sources -- les champs Build-Depends, Build-Depends-Indep, Build-Conflicts, Build-Conflicts-Indep

Les paquets sources peuvent déclarer des relations avec des paquets binaires si, par exemple, ils ont besoin que tel paquet binaire soit présent ou absent au moment de leur construction.

On se sert des champs Build-Depends, Build-Depends-Indep, Build-Conflicts et Build-Conflicts-Indep du fichier control.

Les dépendances de construction sur les paquets binaires appartenant à « build-essential » peuvent être omises. Voyez pour davantage d'informations.

Les dépendances ou les conflits qu'ils définissent doivent être résolus (comme cela a été défini plus haut pour les paquets binaires) pour pouvoir appeler les cibles de debian/rules

Si vous construisez « build-arch » ou « binary-arch », vous avez besoin de Build-Depends. Si vous construisez « build-indep » ou « binary-indep », vous avez besoin de Build-Depends et de Build-Depends-Indep. Si vous construisez « build » ou « binary », vous avez besoin des deux.

« Build-Depends-Arch » n'existe pas ; ce rôle est essentiellement rempli par les Build-Depends. Il est supposé que celui qui veut construire les cibles build-indep et binary-indep veut de toute façon construire le paquet dans son entier et qu'il installe donc toutes les dépendances de construction. Les constructeurs automatiques (« autobuilders ») utilisent dpkg-buildpackage -B qui appelle build (pas build-arch car il ne sait pas encore vérifier son existence) et binary-arch.

Le but de cette séparation, je m'en rappelle, était que les constructeurs automatiques n'aient pas besoin d'installer les paquets supplémentaires requis par les cibles binary-indep. Mais, sans la séparation build-arch/build-indep, cela ne marchait pas, car le plus gros du travail était fait par la cible build et non pas par la cible binary.

comme suit : Build-Depends, Build-Conflicts

Les champs Build-Depends et Build-Conflicts doivent être satisfaits quand l'une des cibles suivantes est appelée : build, clean, binary, binary-arch, build-arch, build-indep et binary-indep.

Build-Depends-Indep, Build-Conflicts-Indep

Les champs Build-Depends-Indep et Build-Conflicts-Indep doivent être satisfaits quand l'une des cibles suivantes est appelée : build, build-indep, binary et binary-indep.

Les bibliothèques partagées

On doit construire avec soin les paquets qui contiennent des bibliothèques partagées afin de s'assurer que ces bibliothèques seront toujours disponibles. Et particulièrement, les paquets qui demandent des bibliothèques vitales, telle que la bibliothèque C, (actuellement : libc6).

Un paquet qui contient des bibliothèques partagées sera séparé en plusieurs paquets binaires. Cette section est consacrée à la façon de faire cette séparation ; les règles pour les fichiers à l'intérieur des paquets de bibliothèques partagées sont traitées dans .

Les bibliothèques reliables dynamiquement

La bibliothèque partagée doit être placée dans un paquet dont le nom change chaque fois que la version objet partagée change.

Puisqu'il est courant d'installer plusieurs versions d'un paquet qui fournit des bibliothèques partagées, c'est une bonne idée que la bibliothèque ne contienne pas des fichiers supplémentaires sans version, à moins qu'ils soient placés dans des répertoires qui ont une version.

Le mécanisme le plus courant est de mettre la bibliothèque dans un paquet appelé nom-de-bibliothèqueversion-so, où version-so est le numéro de version du nom-so de la bibliothèque partagée

Le nom-so est le nom du fichier objet partagé : c'est ce qui, entre le moment de la construction de l'exécutable et celui de son fonctionnement, doit être exactement le même pour que l'éditeur des liens dynamiques soit capable de faire marcher le programme. Par exemple, si le nom-so de la bibliothèque est libfoo.so.6, le paquet de la bibliothèque sera appelé libfoo6.

Quand cela amène de la confusion d'ajouter directement version-so à nom-de-bibliothèque (par exemple, quand nom-de-bibliothèque se termine lui-même par un numéro), on peut aussi utiliser à la place nom-de-bibliothèque-version-so et nom-de-bibliothèque-version-so-dev.

Si votre paquet comprend des programmes d'aide exécutables que les utilisateurs n'ont pas besoin d'appeler eux-mêmes, mais qui sont néammoins nécessaires au fonctionnement du paquet, il est recommandé de placer ces programmes (si ce sont des binaires) dans un répertoire de /usr/lib, de préférence sous /usr/lib/nom-de-paquet. Si les programmes ne dépendent pas de l'architecture, il est recommandé de les placer dans un répertoire de /usr/share, de préférence sous /usr/share/nom-de-paquet.

Si vous construisez plusieurs bibliothèques partagées à partir d'un même arbre de sources, vous pouvez les regrouper dans le même paquet de bibliothèques, sachant que vous devrez changer tous leurs nom-so simultanément (pour éviter des conflits de noms de fichiers lors de l'installation de différentes versions de ce paquet).

Une paquet installera les bibliothèques partagées sous leurs vrais noms. Par exemple, le paquet libgdbm3 installera libgdbm.so.3.0.0 en tant que /usr/lib/libgdbm.so.3.0.0. Aucun script prerm ou postrm ne changera le nom de ces fichiers ni ne créera de lien pour ces fichiers ; dpkg s'occupe des changements de nom et cela, sans troubler les programmes en fonctionnement. Essayer d'interférer avec ce système crée des problèmes.

Les bibliothèques partagées ne doivent pas être installées comme exécutables, puisque l'éditeur de liens dynamiques ne le demande pas et que tenter d'exécuter une bibliothèque partagée se traduit par un core dump.

Le paquet de la bibliothèque partagée comportera le lien symbolique que ldconfig voudra créer pour les bibliothèques partagées. Par exemple, le paquet libgdbm3 inclura un lien symbolique de /usr/lib/libgdbm.so.3 vers libgdbm.so.3.0.0. C'est nécessaire pour que l'éditeur des liens dynamiques (ld.so ou ld-linux.so.*) puisse trouver la bibliothèque entre le moment où dpkg l'installe et celui où ldconfig est exécuté par le script postinst

Le système de gestion des paquets demande que la bibliothèque soit placée avant le lien symbolique qui pointe vers elle dans le fichier .deb. Ainsi, avant que dpkg n'installe le lien symbolique (en remplaçant le lien précédent qui pointe sur une version plus ancienne de la bibliothèque), la nouvelle bibliothèque est déjà en place. Par le passé, on créait la bibliothèque dans le répertoire temporaire où l'on faisait le paquet avant de créer le lien symbolique. Malheureusement, cela ne marchait pas toujours car la construction du fichier tar pour le fichier .deb dépendait du système de fichier sous-jacent. Des systèmes de fichiers (comme reiserfs) réordonne les fichiers de sorte que l'ordre dans lequel on les crée est oublié. Avec sa version 1.7.0, dpkg réordonne, si nécessaire, les fichiers lors de la construction d'un paquet. Et il n'est plus nécessaire de se préoccuper de l'ordre de création des fichiers.

.

ldconfig

Tout paquet qui installe des bibliothèques partagées dans l'un des répertoires par défaut de l'éditeur de liens dynamiques, (actuellement, /usr/lib et /lib) ou dans un répertoire listé par /etc/ld.so.conf

Les voici :

/usr/local/lib

/usr/lib/libc5-compat

/lib/libc5-compat

doit utiliser ldconfig pour mettre à jour le système des bibliothèques partagées.

Les scripts de responsable de paquet ne doivent appeler ldconfig que dans ces circonstances : quand le script postinst est exécuté avec comme premier paramètre configure, le script doit appeler ldconfig et peut facultativement appeler ldconfig à d'autres moments. quand le script postrm est exécuté avec comme premier paramètre remove, le script devrait appeler ldconfig.

Pendant une installation ou une mise à jour, le script preinst est appelé avant que de nouveaux fichiers ne soient installés : appeler « ldconfig » est inutile. Le script preinst d'un paquet existant peut aussi être appelé en cas d'échec de la mise à jour. Cela arrive cependant au moment critique où une bibliothèque partagée existe sur le disque sous un nom temporaire. Ainsi, il est dangereux, et c'est interdit par la Charte, d'appeler « ldconfig » à ce moment.

Lors de l'installation ou la mise à jour d'un paquet, le script « postinst configure » s'exécute après que les nouveaux fichiers ont été installés de façon certaine sur le disque. Puisqu'on peut parfaitement appeler sans condition ldconfig dans un postinst, un paquet peut mettre ldconfig dans son postinst sans vérifier les arguments. Le script postinst peut aussi être appelé lors d'un essai de récupération après l'échec d'une mise à jour. Cela arrive avant que les nouveaux fichiers ne soient dépaquetés : il n'y a donc pas besoin d'appeler « ldconfig » à ce moment.

Lors de la suppression d'un paquet, le script prerm est appelé alors que tous les fichiers sont intacts : appeler « ldconfig » est inutile. Les autres appels de « prerm » se passent lors d'une mise à jour, quand tous les fichiers de l'ancien paquet sont sur le disque, et, encore une fois, appeler « ldconfig » est inutile.

D'un autre côté, le script postrm est appelé avec l'argument remove juste après que les fichiers ont été supprimés : c'est le moment idéal pour appeler « ldconfig » et notifier ainsi au système la suppression des bibliothèques partagées appartenant au paquet. Le script postrm peut être appelé à plusieurs moments. Lors de « postrm purge », de « postrm abort-install » ou de « postrm abort-upgrade », appeler « ldconfig » est inutile parce que les fichiers de la bibliothèque partagée ne sont pas sur le disque. Cependant, lorsque le script postrm est appelé avec les arguments « upgrade », « failed-upgrade » ou « disappear », la bibliothèque partagée peut exister sur le disque sous un nom temporaire.

.

Les programmes d'aide au fonctionnement

Si votre paquet contient des programmes d'aide au fonctionnement qui utilisent la bibliothèque partagée, vous ne devez pas les mettre dans le paquet de la bibliothèque partagée. Si vous le faites, vous ne pourrez pas installer plusieurs versions de la bibliothèque sans créer des conflits de noms de fichiers.

À la place, vous pouvez soit créer un autre paquet pour ces binaires fonctionnels (le paquet peut s'appeler nom-de-bibliothèque-runtime -- notez l'absence de version-so dans le nom du paquet), soit inclure ces binaires dans le paquet de développement si celui-ci est petit.

Les bibliothèques statiques

Une bibliothèque statique (nom-de-bibliothèque.a) accompagne généralement la version partagée ; elle est placée dans le paquet de développement. Voyez plus bas.

Dans les cas suivants, il est acceptable qu'une bibliothèque ne soit disponible que sous sa forme statique :

bibliothèque pour langage dont la version partagée est immature ou instable ;

bibliothèque dont l'interface change constamment ou est en développement (c'est le cas pour une bibliothèque dont le numéro majeur de version est zéro, ou dont la compatibilité binaire (ABI) n'est pas assurée pour des niveaux de patch différents) ;

bibliothèque explicitement prévue pour n'être disponible que sous une forme statique par ses auteurs.

Les fichiers de développement

Les fichiers de développement associés à une bibliothèque partagée seront placés dans un paquet appelé nom-de-bibliothèqueversion-so-dev, ou, si vous préférez ne gérer qu'une version de développement à la fois, nom-de-bibliothèque-dev.

Quand plusieurs versions de développement existent, vous pouvez utiliser le mécanisme de gestion des conflits de dpkg (voir ) pour vous assurer que l'utilisateur ne peut installer qu'une seule version de développement à la fois. Plusieurs versions de développement auront sans doute les mêmes fichiers d'en-tête, ce qui créera un conflit de nom en cas d'installation multiple.

Le paquet de développement contiendra un lien symbolique vers la bibliothèque partagé qui lui est associée sans le numéro de version. Par exemple, le paquet libgdbm-dev fera un lien de /usr/lib/libgdbm.so vers libgdbm.so.3.0.0. L'éditeur de liens (ld) a besoin de ce lien pour la compilation des programmes car il ne recherche que libgdbm.so lors d'une compilation dynamique.

Les dépendances entre les paquets d'une même bibliothèque

La version de développement aura une dépendance sur une version précise de la bibliothèque partagée afin que la compilation et l'édition de liens s'effectuent correctement. La variable de substitution ${Source-Version} peut être utile dans ce cas.

Les dépendances entre une bibliothèque et les paquets - le système shlibs

Quand un paquet contient un binaire ou une bibliothèque liés à une bibliothèque partagée, on doit s'assurer que, lors de l'installation de ce paquet sur le système, toutes les bibliothèques nécessaires sont aussi installées. Cela a conduit à la création du système shlibs ; de conception très simple, ce système demande que tout paquet qui fournit (champ provides) une bibliothèque partagée donne aussi les informations de dépendance nécessaires à la présence de cette bibliothèque ; ainsi tout paquet qui utilise une bibliothèque partagée, utilise ces informations pour connaître les dépendances requises. Les fichiers qui contiennent les relations entre les bibliothèques partagées et les informations sur les dépendances nécessaires sont les fichiers shlibs.

Ainsi, quand on construit un paquet contenant une bibliothèque partagée, on doit fournir un fichier shlibs utilisable par d'autres paquets ; et quand on construit un paquet contenant une bibliothèque partagée ou un binaire compilé, ce paquet doit exécuter dpkg-shlibdeps pour ces programmes de manière à connaître les bibliothèques utilisées et donc les dépendances nécessaires à ce paquet

Par le passé, on appelait ldd pour connaître les bibliothèques partagées requises ; maintenant on appelle objdump. Le seul changement dans la manière de construire un paquet est que l'on doit aussi exécuter dpkg-shlibdeps sur les bibliothèques partagées, alors qu'avant ce n'était pas nécessaire. La suite de cette note explique les avantages de cette méthode.

Un binaire foo utilise directement la bibliothèque libbar quand il est lié explicitement à cette bibliothèque (c'est à dire qu'il utilise le drapeau -lbar pendant la phase de liaison). Les autres bibliothèques dont libbar a besoin sont liées indirectement à foo, et l'éditeur de liens dynamiques les charge automatiquement quand il charge libbar. Un paquet dépendra des bibliothèques qu'il utilise directement, et les dépendances de ces bibliothèques amèneront automatiquement les autres bibliothèques.

Malheureusement, le programme ldd indique toutes les bibliothèques, celles directement utilisées et celles indirectement utilisées ; ce qui signifie que les dépendances comportent des dépendances directes et indirectes. Avec objdump, on évite ce problème en indiquant seulement les bibliothèques directement utilisées.

Voici un exemple qui montre l'intérêt de ce système : on pourrait mettre à jour libimlib avec une version qui accepte le nouveau format graphique dgf (tout en gardant le même numéro majeur de version). En utilisant l'ancienne méthode ldd, chaque paquet qui se sert de libimlib devrait être recompilé pour qu'il dépende aussi de libdgf, sinon il ne marcherait pas à cause de symboles manquants. Mais, avec le nouveau système, les paquets qui se servent de libimlib peuvent dépendre simplement de libimlib qui possède elle-même la dépendance envers libdgf et ils n'auront pas besoin d'être mis à jour.

.

Les sections suivantes décrivent l'emplacement des différents fichiers shlibs, la façon d'utiliser le programme dpkg-shlibdeps, et le format du fichier shlibs ainsi que la façon de créer ces fichiers quand un paquet contient une bibliothèque partagée.

Les fichiers shlibs sur le système

On peut trouver des fichiers shlibs à plusieurs endroits. La liste suivante les donne dans l'ordre selon lequel dpkg-shlibdeps les a lus. Le premier qui donne l'information demandée est utilisé.

debian/shlibs.local

Cela donne les remplacements à faire pour ce paquet. Son usage est décrit plus bas ().

/etc/dpkg/shlibs.override

Cela donne les remplacements à faire pour tout le système. Cette liste, maintenue par l'administrateur local, est normalement vide.

Les fichiers DEBIAN/shlibs dans le « répertoire de construction »

Quand on construit un paquet, tous les fichiers debian/shlibs sont copiés dans le répertoire temporaire de construction avec comme nom shlibs. Ces fichiers donnent des renseignements sur toutes les bibliothèques partagées contenues dans le paquet

Un exemple nous aidera : supposons que le paquet source foo produit deux paquets binaires, libfoo2 et foo-runtime. Pour la construction de ces paquets, on utilise les répertoires debian/libfoo2 et debian/foo-runtime respectivement (on pourrait utiliser debian/tmp à la place de l'un des deux). Puisque libfoo2 fournit la bibliothèque partagée libfoo, il demandera un fichier shlibs qui sera installé dans debian/libfoo2/DEBIAN/shlibs, et deviendra finalement /var/lib/dpkg/info/libfoo2.shlibs. Maintenant, quand on exécute dpkg-shlibdeps pour l'exécutable debian/foo-runtime/usr/bin/foo-prog, dpkg-shlibdeps examine le fichier debian/libfoo2/DEBIAN/shlibs pour savoir si les dépendances de foo-prog en ce qui concerne les bibliothèques sont satisfaites par les bibliothèques fournies par libfoo2. Pour cette raison, on ne doit exécuter dpkg-shlibdeps qu'après que tous les fichiers shlibs de chaque paquet binaire ont été installés dans le répertoire de construction.

.

/var/lib/dpkg/info/*.shlibs

Ce sont tous les fichiers shlibs de tous les paquets installés sur le système ; ils sont maintenus par les responsables des paquets concernés.

/etc/dpkg/shlibs.default

Ce fichier liste toutes les bibliothèques partagées dont les paquets n'ont pas pu fournir de fichiers shlibs corrects. Il était utilisé quand on a introduit le système shlibs pour la première fois ; il est maintenant normalement vide. Il est maintenu par le responsable de dpkg.

Comment utiliser dpkg-shlibdeps et les fichiers shlibs ?

Placez un appel au programme dpkg-shlibdeps dans le fichier debian/rules. Si le paquet contient seulement des binaires compilés et des bibliothèques (mais pas de scripts), on peut utiliser la commande : dpkg-shlibdeps debian/tmp/usr/bin/* debian/tmp/usr/sbin/* \ debian/tmp/usr/lib/* Sinon, on devra explicitement lister les binaires compilés et les bibliothèques

Quand on utilise debhelper, le programme dh_shlibdeps fera le nécessaire pour vous. Il gérera convenablement les paquets avec plusieurs binaires.

.

Cette commande place les informations sur les dépendances dans le fichier debian/substvars, qui est ensuite utilisé par dpkg-gencontrol. Vous devrez placer une variable ${shlibs:Depends} dans le champ Depends du fichier de contrôle pour que cela marche.

Si dpkg-shlibdeps ne se plaint pas, c'est bon. Sinon, vous pourriez avoir besoin de créer un fichier debian/shlibs.local, comme expliqué plus bas ().

Si vous avez des paquets contenant plusieurs binaires, vous devrez appeler dpkg-shlibdeps sur tous ceux qui ont des binaires compilés et des bibliothèques. Dans ce cas, vous aurez besoin de l'option -T des outils dpkg pour spécifier un fichier substvars différent.

Veuillez consulter et pour des précisions sur le programme dpkg-shlibdeps.

Le format du fichier shlibs

Chaque fichier shlibs possède le même format. Les lignes commençant par # sont des commentaires et sont ignorées. Chaque ligne est de la forme : nom-de-bibliothèque nomso-version-numéro dépendances ...\

Nous allons expliquer cette ligne en prenant comme exemple le paquet zlib1g, qui, au moment où est écrit ce texte, installe la bibliothèque partagée /usr/lib/libz.so.1.1.3.

nom-de-bibliothèque est le nom de la bibliothèque partagée, dans ce cas : libz. Cela doit correspondre à la partie « nom » du nomso, voyez plus bas.

nomso-version-numéro est la partie version du nomso de la bibliothèque. Le nomso est ce qui doit coller exactement pour que la bibliothèque soit reconnue par l'éditeur des liens dynamiques, et il est habituellement de la forme : nom.so.version-numéromajeur, et dans ce cas libz.so.1

La commande suivante peut le déterminer : objdump -p /usr/lib/libz.so.1.1.3 | grep SONAME

. La partie version est la partie qui suit .so., et donc ici : 1.

dépendances possède le même format qu'un champ de dépendances dans le fichier de contrôle d'un paquet binaire. Cette partie donnera des renseignements sur les paquets qui sont demandés pour compiler un binaire avec la version de la bibliothèque contenue dans le paquet. Voir pour des précisions.

Dans notre exemple, si la première version du paquet zlib1g, contenant un numéro mineur égal à au moins 1.3, était de 1:1.1.3-1, alors l'entrée shlibs pour cette bibliothèque pourra énoncer : libz 1 zlib1g (>= 1:1.1.3) La dépendance pour une version particulière sert à éviter les avertissements de l'éditeur de liens dynamiques au sujet de l'utilisation d'anciennes bibliothèques avec des binaires plus récents.

Comment créer un fichier shlibs ?

Si le paquet fournit une bibliothèque partagée, vous devez créer un fichier shlibs en suivant le format décrit plus haut. Habituellement, on le nomme debian/shlibs (mais si le paquet contient plusieurs binaires, on pourra l'appeler debian/shlibs.package). Puis on laissera debian/rules l'installer dans la zone de contrôle : install -m644 debian/shlibs debian/tmp/DEBIAN ou, en cas de paquet avec de multiples binaires : install -m644 debian/shlibs.package debian/package/DEBIAN/shlibs Une autre façon de faire est de créer directement le fichier shlibs dans la zone de contrôle à partir du fichier debian/rules sans utiliser un fichier debian/shlibs

C'est ce que fait dh_makeshlibs de la suite debhelper.

, puisque le fichier debian/shlibs lui-même est ignoré par le programme dpkg-shlibdeps.

Comme dpkg-shlibdeps lit tous les fichiers DEBIAN/shlibs de tous les paquets binaires construits à partir du paquet source, tous les fichiers DEBIAN/shlibs seront installés avant d'appeler dpkg-shlibdeps pour chaque paquet binaire.

Comment écrire le fichier debian/shlibs.local ?

Ce fichier est prévu seulement pour une correction temporaire quand les binaires ou les bibliothèques dépendent d'une bibliothèque pour laquelle aucun fichier shlibs correct n'est produit par le paquet.

Nous supposons que vous essayez de créer un paquet binaire foo. Quand vous essayez d'exécuter dpkg-shlibdeps, vous obtenez le message d'erreur suivant (l'option -O affiche les informations de dépendance sur stdout au lieu de les écrire dans le fichier debian/substvars, et les lignes ont été enveloppées pour faciliter la lecture) : $ dpkg-shlibdeps -O debian/tmp/usr/bin/foo dpkg-shlibdeps: warning: unable to find dependency information for shared library libbar (soname 1, path /usr/lib/libbar.so.1, dependency field Depends) shlibs:Depends=libc6 (>= 2.2.2-2) Vous pouvez alors exécuter ldd sur le binaire pour trouver l'emplacement exact de la bibliothèque en question : $ ldd foo libbar.so.1 => /usr/lib/libbar.so.1 (0x4001e000) libc.so.6 => /lib/libc.so.6 (0x40032000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) Ainsi le binaire foo dépend de la bibliothèque partagée libbar, mais aucun paquet ne donne un fichier *.shlibs qui gère libbar.so.1 dans /var/lib/dpkg/info/. Déterminons le paquet responsable : $ dpkg -S /usr/lib/libbar.so.1 bar1: /usr/lib/libbar.so.1 $ dpkg -s bar1 | grep Version Version: 1.0-1 Ce qui nous indique que le paquet bar1, version 1.0-1, est celui qu'on utilise. Maintenant nous pouvons envoyer un rapport de bogue contre le paquet bar1 et créer notre propre fichier debian/shlibs.local pour corriger localement le problème évoqué. Insérer la ligne suivante dans le fichier debian/shlibs.local : libbar 1 bar1 (>= 1.0-1) permettra la construction du paquet.

Dès que le responsable de bar1 fournit un fichier shlibs correct, vous supprimerez cette ligne dans le fichier debian/shlibs.local. Vous aurez sans doute aussi un champ Build-Depends concernant les versions pour bar1 de manière à s'assurer que d'autres n'aient pas le même problème pour construire votre paquet.

Le système d'exploitation La hiérarchie du système de fichiers La structure du système de fichiers

L'emplacement de tous les répertoires et fichiers installés doit être conforme au standard sur la hiérarchie du système de fichiers (FHS, version 2.3), avec les exceptions notées ci-dessous et sauf si cela va à l'encontre d'un principe de la charte Debian. Les exceptions suivantes au FSH s'appliquent :

Les serveurs XFree86 historiques sont autorisés à conserver l'emplacement du fichier de configuration /etc/X11/XF86Config-4.

Les règles optionnelles relatives aux fichiers de configuration spécifiques à l'utilisateurs pour les applications sont stockées dans le répertoire personnel de l'utilisateur sont réduites. Il est recommandé que de tels fichiers commencent par un point (« fichier caché ») et si une application a besoin de créer plus d'un fichier caché, alors l'emplacement préféré est dans un sous-répertoire dont le nom commence par un point (« répertoire caché »). Dans ce cas, il est recommandé que les fichiers de configuration ne commencent pas par un point.

L'obligation pour amd64 d'utiliser /lib64 pour les binaires 64 bit est supprimée.

L'obligation que /usr/local/share/man soit « synonyme » de /usr/local/man est réduite à une recommendation.

L'obligation que les gestionnaires de fenêtres avec un seul fichier de configuration l'appelle system.*wmrc est supprimée, tout comme la restriction que le sous-répertoire du gestionnaire de fenêtres soit nommée de façon identique au nom du gestionnaire de fenêtres lui-même.

L'obligation que les fichiers de configuration des gestionnaires d'amorçage soient placés sous /etc ou au moins aient un lien symbolique à cet endroit, est réduite à une recommendation.

On peut trouver cette version du document dans le paquet debian-policy ou, avec ce manuel, sur (ou, si le paquet debian-policy est installé, sur ). La version la plus récente (ou simplement une plus récente) se trouve sur . Toute question relative à la manière de suivre ce standard peut être posée dans la liste de diffusion debian-devel ou dans la liste consacrée au FHS (voyez, pour des renseignements supplémentaires, ).

Les programmes spécifiques à un site

Conformément au « FHS », aucun paquet ne doit placer de fichiers dans/usr/local, que ce soit en les mettant dans l'archive qui doit être dépaquetée par dpkg ou en les manipulant dans les scripts d'installation.

Cependant, un paquet peut créer des répertoires vides sous /usr/local de manière que l'administrateur système ait un endroit où placer des fichiers locaux. Ce ne sont pas des répertoires directement dans /usr/local, mais des sous-répertoires de répertoires dans /usr/local. Si ces répertoires (/usr/local/*/dir/) sont vides, ils seront supprimés quand on supprime le paquet.

On notera que cela ne s'applique qu'aux répertoires sous /usr/local et non pas dans /usr/local. Le répertoire /usr/local ne doit contenir lui-même que les répertoires listés dans le FHS, section 4.5. Cependant vous pouvez créer autant de répertoires que vous voulez sous ces répertoires. Vous ne devez pas supprimer les répertoires listés à la section 4.5, même si vous les avez créés.

Comme /usr/local peut être monté depuis un serveur distant et n'autoriser que la lecture, on doit créer ces répertoires avec les scripts de post-installation, postinst et on doit les supprimer avec les scripts de pré-désinstallation, prerm ; ils ne doivent pas être dans l'archive .deb. Ces scripts ne doivent pas échouer si l'une de ces opérations échoue.

Par exemple, le paquet emacsen-common pourrait contenir if [ ! -e /usr/local/share/emacs ] then if mkdir /usr/local/share/emacs 2>/dev/null then chown root:staff /usr/local/share/emacs chmod 2775 /usr/local/share/emacs fi fi dans le script postinst, et rmdir /usr/local/share/emacs/site-lisp 2>/dev/null || true rmdir /usr/local/share/emacs 2>/dev/null || true dans le script prerm. Il faut remarquer qu'on utilise cette forme pour s'assurer que le répertoire /usr/local/share/emacs sera encore supprimé si le script est interrompu.

Si vous créez un répertoire dans /usr/local pour ajouter des éléments à un paquet, vous vous assurerez que le paramétrage dans /usr/local sera prioritaire par rapport à celui dans /usr.

Cependant, puisque /usr/local et son contenu sont réservés à l'administrateur local, un paquet ne doit pas compter sur la présence ou l'absence de fichiers ou répertoires dans /usr/local pour toute opération normale.

Le répertoire /usr/local lui-même et tous les sous-répertoires créés par un paquet, auront (par défaut) les droits 2775 (modifiables et exécutables par le groupe (bit « set-group-id » positionné)). Ils doivent appartenir à root.staff.

Le répertoire commun pour le courrier

Le répertoire commun pour le courrier est /var/mail. Ce répertoire fait partie du système de base et il n'appartiendra à aucun opérateur de courrier particulier. L'utilisation de l'ancien répertoire /var/spool/mail est déconseillée, même si le courrier se trouve toujours physiquement là. Pour garder, lors d'une mise à jour, une compatibilité avec les systèmes qui utilisent /var/spool/mail comme répertoire de courrier, les paquets qui se servent de /var/mail doivent dépendre de libc6 (>= 2.1.3-13), ou bien de base-files (>= 2.2.0), et des versions plus récentes de ces paquets.

Les utilisateurs et les groupes Introduction

Le système Debian est configuré pour utiliser soit les mots de passe ordinaires soit les mots de passe masqués (« shadow password »).

L'utilisation de quelques identifiants d'utilisateur (UID) et de groupe (GID) est réservée à certains paquets. Ces paquets ont besoin d'inclure des fichiers appartenant à ces utilisateurs ou à ces groupes, ou bien ont besoin de compiler des binaires avec ces identifiants ; c'est pourquoi, sur tout système Debian, ces identifiants ne pourront être utilisés que dans un cadre prédéfini. C'est une restriction importante, et on évitera d'interférer avec des politiques particulières d'administration système. De nombreux sites notamment attribuent des utilisateurs ou des groupes systèmes spécifiques à partir de 100.

En dehors de cet aspect, les identifiants seront attribués dynamiquement et seront rangés selon un ordre raisonnable mais qui peut être redéfini.

Seul le paquet base-passwd a le droit de modifier /etc/passwd, /etc/shadow, /etc/group ou /etc/gshadow.

Les classes d'« UID » et de « GID »

Les numéros des « UID » et des « GID » sont rangés en classes : 0-99 :

Attribués en bloc par le projet Debian, ils doivent être identiques sur tout système Debian. Ces identifiants apparaîtront dans les fichiers passwd et group de tout système Debian, tout nouvel identifiant dans cet intervalle étant automatiquement ajouté quand le paquet base-passwd est mis à jour.

Un paquet qui a besoin d'un identifiant UID ou GID unique et attribué de manière fixe utilisera cet intervalle ; le responsable demandera son obtention au responsable de base-passwd.

100-999 :

Utilisateurs et groupes système attribués dynamiquement. Les paquets qui ont besoin d'un utilisateur ou d'un groupe et qui tolèrent que cet identifiant soit attribué dynamiquement et différemment sur chaque système, utiliseront adduser --system pour la création d'un tel groupe ou utilisateur. Le programme adduser vérifie qu'un tel groupe ou utilisateur n'existe pas déjà et utilise si nécessaire un autre identifiant dans l'intervalle spécifié par adduser.conf.

1000-29999 :

Comptes utilisateur attribués dynamiquement. Par défaut, adduser choisit les « UID » et les « GID » pour les comptes utilisateur dans cet intervalle, bien que adduser.conf puisse modifier ce comportement.

30000-59999 :

Usage réservé.

60000-64999 :

Attribués en bloc par le projet Debian, mais ils ne sont créés qu'à la demande. Les identifiants sont attribués de manière fixe et centralisée mais les comptes ne sont effectivement créés sur le système qu'à la demande.

Ces identifiants sont réservés à des paquets obscurs ou à des paquets qui demandent de nombreux identifiants attribués de manière fixe. Ces paquets doivent s'assurer de l'inexistence de ces comptes dans /etc/passwd ou dans /etc/group et les créer eux-mêmes si nécessaire (en utilisant si possible adduser). Les paquets qui risquent d'avoir besoin de davantage d'identifiants, se réserveront un intervalle d'attribution plus large que de besoin, laissant ainsi des possibilités de développement.

65000-65533 :

Usage réservé.

65534 :

Utilisateur nobody. Le « gid » correspondant renvoie au groupe nogroup.

65535 :

(uid_t)(-1) == (gid_t)(-1). Ne doit pas être utilisé car il s'agit de la valeur sentinelle pour retourner une erreur.

Les niveaux de fonctionnement du système et les scripts dans init.d Introduction

Le répertoire /etc/init.d contient les scripts exécutés par init quand le système démarre et quand l'état de init (son « niveau de fonctionnement ») est modifié (voir ).

Il y a au moins deux façons, différentes mais fonctionnellement équivalentes, de se servir de ces scripts. Pour rester simple, on décrit ici la méthode des liens symboliques. Les scripts du responsable ne doivent cependant pas présumer que cette méthode est utilisée, et toute manipulation automatisée du comportement des différents niveaux de fonctionnement doit être faite avec le programme update-rc.d comme décrit plus bas, et non pas en créant ou en supprimant eux-même les liens symboliques. Voyez la documentation du paquet file-rc pour des renseignements sur la mise en ½uvre de l'autre méthode.

Ces scripts sont référencés par des liens symboliques dans les répertoires /etc/rcn.d. Lorsque le niveau de fonctionnement change, init recherche les scripts qu'il doit exécuter dans le répertoire /etc/rcn.d, où n est soit le niveau de fonctionnement demandé, soit S pour le démarrage.

Les noms de ces liens sont tous de la forme Smmscript ou de la forme Kmmscript ; mm est un nombre à deux chiffres et script est le nom du script (qui sera le même que le véritable script dans /etc/init.d).

Lorsque init change de niveau de fonctionnement, il exécute d'abord les scripts référencés par les liens dont le nom commence par K, chacun avec un seul argument : stop. Puis init exécute les scripts préfixés par S, avec pour chacun un seul argument : start. (Les liens appartiennent au répertoire de /etc/rcn.d qui correspond au nouveau niveau de fonctionnement.) Les liens K sont chargés d'arrêter les services et les liens S de démarrer les services au démarrage du niveau de fonctionnement.

Par exemple, pour passer du niveau 2 au niveau 3, init exécutera d'abord tous les scripts préfixés par K qu'il trouve dans /etc/rc3.d, puis tous les scripts de ce répertoire préfixés par S. Les liens qui commencent par K entraîneront l'exécution des scripts qu'ils référencent avec l'argument stop alors que les liens S entraîneront l'exécution des scripts avec l'argument start.

Le nombre à deux chiffres mm est utilisé pour décider de l'ordre d'exécution des scripts : les scripts de numéros les plus faibles sont exécutés en priorité. Par exemple les scripts K20 seront exécutés avant les scripts K30. Cela sert quand un service doit être démarré avant un autre. Par exemple, il peut être nécessaire de démarrer le serveur de noms bind avant le serveur de nouvelles inn afin que inn puisse positionner ses listes d'accès. Dans ce cas, le script de démarrage de bind doit avoir un numéro plus faible que le script qui démarre inn : /etc/rc2.d/S17bind /etc/rc2.d/S70inn

Les deux niveaux 0 (halt) et 6 (reboot) sont légèrement différents. Dans ces niveaux, les liens préfixés par S sont toujours appelés après les liens préfixés par K, mais ils sont aussi appelés avec l'unique argument stop.

De plus, quand le nom du script se termine par .sh, le script sera créé dans le niveau S plutôt que d'être exécuté dans un sous-processus « forké », et dans tous les autres niveaux il sera exécuté par le programme sh.

L'écriture des scripts

Les paquets qui mettent en service des « démons » mettront des scripts dans /etc/init.d pour démarrer ou arrêter des services au moment de l'amorçage ou pour un changement du niveau de fonctionnement. Ces scripts seront nommés /etc/init.d/paquet et ne doivent prendre qu'un seul argument, lequel indique ce qu'il faut faire : start

démarrer le service,

stop

arrêter le service,

restart

arrêter et redémarrer le service s'il fonctionne déjà, sinon lancer le service

reload

chargement d'une nouvelle configuration du service sans réellement arrêter et redémarrer le service,

force-reload

chargement d'une nouvelle configuration si le service le permet, sinon redémarrer le service.

Les options start, stop, restart et force-reload seront acceptées par tous les scripts de /etc/init.d ; l'option reload est facultative.

Les scripts de /etc/init.d doivent avoir un comportement raisonnable quand ils sont appelés avec l'option start alors que le service tourne déjà. Il en est de même pour l'option stop quand le service ne tourne pas. Ils ne doivent pas tuer des processus utilisateur appelés par mégarde. Le meilleur moyen est généralement d'utiliser start-stop-daemon.

Quand un service recharge automatiquement sa configuration (comme c'est le cas de cron par exemple), l'option reload du script dans /etc/init.d se comportera comme si la configuration avait été rechargée avec succès.

Les scripts dans /etc/init.d seront considérés comme des fichiers de configuration, soit en les marquant comme des conffiles (s'ils se trouvent dans le paquet, c'est-à-dire dans le fichier .deb), soit en les gérant correctement dans les scripts du responsable de paquet (s'ils ne sont pas présents dans le fichier .deb) : voyez . C'est important car nous voulons laisser à l'administrateur système la possibilité d'adapter ces scripts à son système local — par exemple, désactiver un service sans désinstaller le paquet, ou bien spécifier des options particulières sur la ligne de commande au démarrage d'un service — tout en assurant que ses modifications ne seront pas perdues lors de la prochaine mise à jour du paquet.

Ces scripts ne doivent pas échouer de façon obscure quand ils trouvent dans le système les fichiers de configuration d'un paquet supprimé ; en effet par défaut, dpkg conserve ces fichiers de configuration et ne les supprime qu'avec l'option --purge. En particulier, comme le script init lui-même est un fichier de configuration (voir ), il reste sur le système quand le paquet est supprimé avec l'option remove et non pas avec l'option purge. C'est pourquoi vous inclurez une instruction de test au début du script, comme par exemple : test -f programme-exécuté-plus-tard-dans-le-script || exit 0

Dans les scripts init.d, il y a souvent des valeurs que l'administrateur voudra changer fréquemment. Modifier ces scripts qui sont souvent des conffiles demande que l'administrateur rajoute ses modifications à chaque mise à jour du paquet et à chaque modification des conffiles. Pour rendre la vie des administrateurs système moins dure, on ne placera pas de telles valeurs configurables directement dans le script mais plutôt dans un fichier /etc/default qui aura, de façon classique, le même nom que le script d'init.d. Ce fichier supplémentaire sera lu quand le script démarrera. Il doit seulement contenir les définitions des variables et des commentaires dans le format POSIX sh. Ce peut être aussi bien un conffile qu'un fichier de configuration maintenu avec les scripts du responsable de paquet. Voir pour des précisions.

Pour s'assurer que des valeurs vitales sont toujours définies et disponibles, le script init.d, affectera, avant de lire le fichier /etc/default/, une valeur par défaut pour chaque variable du shell dont il se sert ; soit avant de lire le fichier /etc/default/, soit après avoir utilisé une syntaxe de ce genre : ${VAR:=default}. Et le script init.d doit se comporter raisonnablement et sans échec quand le fichier /etc/default est supprimé.

L'interfaçage avec le système d'initialisation par script

Les responsables de paquet utiliseront le modèle abstrait donné par les programmes update-rc.d et invoke-rc.d pour gérer la façon dont leurs scripts postinst, prerm ou postrm gèrent les scripts d'initialisation.

La gestion directe des liens dans « /etc/rc?.d » et l'appel des scripts dans /etc/init.d/ seront faits seulement par les paquets qui fournissent le sous-système d'initialisation (sysv-rc et file-rc).

La gestion des liens

Avec le programme update-rc.d, les responsables de paquet peuvent gérer la création et la suppression des liens symboliques dans /etc/rcn.d, ou de leurs équivalents fonctionnels quand une autre méthode est employée. Les responsables de paquet peuvent s'en servir dans leurs scripts postinst et postrm.

On ne doit pas inclure des liens symboliques dans le /etc/rcn.d du système réel, ni en créer ou en supprimer directement dans les scripts du responsable de paquet (cela échouera si le système d'information sur les niveaux de fonctionnement utilise une autre méthode) : on doit utiliser le programme update-rc.d. On ne doit pas non plus inclure les répertoires /etc/rcn.d dans l'archive. (Seul le paquet sysvinit peut le faire.)

Par défaut, update-rc.d démarrera les serveurs dans chacun des niveaux de fonctionnement du système (2, 3, 4 et 5) pour le mode multi-utilisateurs et les arrêtera dans le niveau (0) mode arrêt, le niveau (1) mode mono-utilisateur et le niveau (6) mode redémarrage. L'administrateur système pourra paramétrer les niveaux de fonctionnement soit en ajoutant, supprimant ou déplaçant les liens symboliques contenus dans /etc/rcn.d si la méthode des liens symboliques est utilisée, soit en modifiant /etc/runlevel.conf quand on utilise la méthode file-rc.

Pour obtenir le comportement par défaut pour votre paquet, mettez dans le script postinst : update-rc.d paquet defaults et dans votre postrm if [ "$1" = purge ]; then update-rc.d paquet remove fi Remarquez que si votre paquet change les niveaux de fonctionnement ou les priorités, il vous faudra supprimer les liens puis les recréer ; sinon les liens précédents persisteraient. Référez-vous à la documentation de update-rc.d.

Le numéro d'ordre d'exécution par défaut sera égal à 20. Si l'ordre ou le moment d'exécution du script init.d sont indifférents, utilisez cette valeur par défaut. S'ils sont importants, vous devez en discuter avec le responsable du paquet sysvinit ou envoyer un message à debian-devel. Ceci devrait vous aider à déterminer le numéro d'ordre d'exécution.

Pour plus d'informations sur l'utilisation d'update-rc.d, veuillez consulter sa page de manuel .

Comment utiliser les scripts d'initialisation

Le programme invoke-rc.d facilite l'appel correct d'un script d'initialisation par les responsables de paquet ; cela comprend le respect du niveau de fonctionnement et des contraintes définies localement qui pourraient limiter le droit au démarrage d'un paquet, ainsi que la gestion d'autres services. Les responsables de paquets peuvent utiliser ce programme dans leurs scripts.

Les scripts du responsable de paquet doivent utiliser invoke-rc.d pour l'appel des scripts dans /etc/init.d/* au lieu de les appeler directement.

Par défaut, invoke-rc.d passera toute demande d'action (start, stop, reload, restart...) au script /etc/init.d et filtrera les demandes de démarrage ou de redémarrage d'un service selon ses niveaux de fonctionnement prévus.

La plupart des paquets auront simplement à changer /etc/init.d/<package> <action> dans leurs scripts postinst et prerm pour : if which invoke-rc.d >/dev/null 2>&1; then invoke-rc.d package <action> else /etc/init.d/package <action> fi

Davantage d'informations sur l'utilisation de invoke-rc.d se trouvent dans sa page de manuel .

L'initialisation au moment de l'amorçage

Classiquement, un autre répertoire, /etc/rc.boot, contenait les scripts exécutés seulement au démarrage. Mais on préfère maintenant se servir de liens de /etc/rcS.d vers les fichiers dans /etc/init.d, comme décrit dans . Aucun paquet ne doit placer de fichier dans /etc/rc.boot.

Exemple

Un exemple sur lequel baser les scripts de /etc/init.d se trouve dans /etc/init.d/skeleton.

Les messages de la console provenant des scripts init.d

Cette section décrit les formats des messages que les scripts du répertoire /etc/init.d écrivent sur la sortie standard. L'objectif est d'améliorer la cohérence du style Debian en matière de séquences de démarrage et d'arrêt d'un système. Pour cette raison, veuillez faire très attention aux détails. Nous voulons que les messages standardisés fassent une utilisation identique des espaces, de la ponctuation et de la casse des lettres.

Voici une liste des règles générales à respecter pour la création de messages provenant des scripts de /etc/init.d.

Tous les messages tiendront sur une ligne (inférieure à 80 caractères). Ils commenceront par une capitale et se termineront par un point « . » et un saut de ligne ("\n").

Quand vous voulez signaler que l'ordinateur est occupé (exécution d'une tâche particulière et non pas le démarrage ou l'arrêt d'un programme), utilisez une « ellipse », à savoir trois points ..., sans espace avant ou après les points ni de retour à la ligne.

Concevez vos messages comme si l'ordinateur vous disait ce qu'il fait (rendez-le poli :-), mais n'en faites pas un personnage. Par exemple, si vous voulez dire : I'm starting network daemons: nfsd mountd. dites simplement : Starting network daemons: nfsd mountd.

Il y a des messages standard pour les situations suivantes. Ils seront utilisés par les scripts d'init.d.

au lancement d'un démon.

Utilisez ce format si votre script démarre un ou plusieurs démons. Le message en sortie (une seule ligne, sans espace au début) doit ressembler à ceci : Starting description: daemon-1 ... daemon-n. L'élément description décrira le sous-système dont fait partie le ou les démons alors que les éléments de daemon-1 jusqu'à daemon-n indiqueront chacun le nom du démon (habituellement le nom du fichier programme).

Par exemple, la sortie de /etc/init.d/lpd ressemble à : Starting printer spooler: lpd.

ce qui peut être obtenu en écrivant dans le script : echo -n "Starting printer spooler: lpd" start-stop-daemon --start --quiet --exec /usr/sbin/lpd echo "." Si vous devez démarrer plusieurs démons, vous pouvez écrire le code suivant : echo -n "Starting remote file system services:" echo -n " nfsd"; start-stop-daemon --start --quiet nfsd echo -n " mountd"; start-stop-daemon --start --quiet mountd echo -n " ugidd"; start-stop-daemon --start --quiet ugidd echo "." L'utilisateur peut savoir ainsi ce qui prend tant de temps et quand le dernier démon a été démarré. Vous serez précis avec les espaces : dans l'exemple précédent un administrateur système peut facilement commenter une ligne s'il ne veut pas lancer un démon particulier ; le message affiché reste correct.

quand un paramètre système est positionné.

Si vous devez positionner différents paramètres au démarrage du système, vous utiliserez ce format : Setting parameter to "value".

vous pouvez utiliser le message suivant qui place correctement les guillemets : echo "Setting DNS domainname to \"$domainname\"."

Il faut noter que le même caractère (") est utilisé pour les guillemets à gauche et à droite. Un accent grave (`) n'est pas un guillemet gauche ; de même, une apostrophe (') n'est pas un guillemet droit.

quand on arrête ou relance un démon.

Quand vous arrêtez ou relancez un démon, vous devez afficher un message similaire à celui du démarrage en remplaçant Starting par Stopping ou Restarting.

Le message à l'arrêt du démon d'impression sera : Stopping printer spooler: lpd.

quand on exécute un programme.

Il y a plusieurs cas où vous devez lancer un programme soit au démarrage soit à l'arrêt du système pour exécuter des tâches spécifiques. Par exemple, initialiser l'heure système à l'aide de netdate ou bien tuer tous les processus à l'arrêt du système. Vos messages suivront cet exemple : Doing something very useful...done. Vous afficherez le done. immédiatement après la fin de la tâche de manière que l'utilisateur soit renseigné sur le pourquoi de son attente. Pour cela, mettez dans votre script : echo -n "Doing something very useful..." do_something echo "done."

quand la configuration est rechargée.

Quand un démon est forcé de recharger ses fichiers de configuration, vous utiliserez des messages qui suivent le format suivant : Reloading description configuration...done. description est identique au message de démarrage du démon.

Les travaux de « Cron »

Les paquets ne doivent pas modifier le fichier de configuration /etc/crontab, ni les fichiers contenus dans /var/spool/cron/crontabs.

Quand un paquet veut confier une tâche au programme cron, il placera un fichier de même nom que lui dans l'un des répertoires suivants : /etc/cron.daily /etc/cron.weekly /etc/cron.monthly Comme l'indique le nom de ces répertoires, les fichiers sont exécutés une fois par jour, une fois par semaine ou une fois par mois. Le rythme exact est contenu dans /etc/crontab.

Tous les fichiers installés dans l'un de ces répertoires doivent être des scripts (scripts shell, Perl, etc.) pour que l'administrateur du système local puisse facilement les modifier. De plus ils seront traités comme des fichiers de configuration.

Quand une tâche doit s'exécuter plus souvent que quotidiennement, le paquet installera un fichier /etc/cron.d/paquet. Ce fichier a la même syntaxe que le fichier /etc/crontab et est traité automatiquement par cron. Il doit aussi être considéré comme un fichier de configuration. (On remarquera que le programme anacron ne se sert pas des scripts dans le répertoire /etc/cron.d. Vous ne l'utiliserez donc que pour des tâches qui peuvent être omises si le système ne tourne pas.)

Les scripts ou les entrées de la « crontab » dans ces répertoires doivent vérifier d'abord la présence de tous les fichiers nécessaires à leur exécution. Sinon, il y aura des problèmes avec les paquets qui ont été supprimés sans l'option « purge », car, dans ce cas, les fichiers de configuration sont conservés.

Les menus

Le paquet Debian menu propose une interface standard entre les paquets qui fournissent des applications et les programmes offrant des menus (aussi bien des gestionnaires de fenêtres sous X que des programmes qui fournissent des menus en mode texte, comme par exemple pdmenu).

Les paquets renseigneront une rubrique de menu pour toutes les applications qui, pour leur usage normal, n'ont pas besoin de recevoir d'argument particulier depuis la ligne de commande. Ainsi les utilisateurs du paquet menu auront automatiquement des rubriques de menu pour ces applications dans leurs gestionnaires de fenêtres et dans des shells comme pdmenu.

Les entrées de menu suivront les règles contenues dans le texte menu-policy.

On peut trouver ces règles dans les fichiers menu-policy du paquet debian-policy. Elles sont aussi disponibles sur les miroirs web de Debian, .

Veuillez-vous référer au document Debian Menu System livré avec le paquet menu pour plus d'informations sur la manière de déclarer vos applications et vos documents web.

Outils pour le multimédia

MIME (Multipurpose Internet Mail Extensions, RFC 2045-2049) est une manière de coder les fichiers et les flux de données et de donner des informations supplémentaires, telles que, par exemple, leur type (par exemple, audio ou vidéo) et leur format (par exemple, PNG, HTML, MP3).

La déclaration de la capacité à traiter les types « MIME » permet à des programmes comme les logiciels de courriers (MUA) ou les butineurs web de faire appel à ces outils pour lire, éditer ou afficher les types « MIME » qu'ils ne reconnaissent pas directement.

Les paquets qui proposent des solutions pour lire, afficher, jouer, composer, modifier ou imprimer les types « MIME » déclareront cette capacité, et se conformeront ainsi à l'actuelle directive concernant « MIME ».

On peut trouver les règles concernant MIME dans le fichier mime-policy du paquet debian-policy. Elles sont aussi disponibles sur les miroirs web de Debian, .

La configuration du clavier

Pour obtenir une configuration cohérente du clavier de façon que tous les programmes interprètent les événements clavier de la même manière, tous les programmes de la distribution Debian doivent suivre les directives suivantes :

Les touches suivantes doivent être interprétées ainsi : <--

supprime le caractère à gauche du curseur

Delete

supprime le caractère à droite du curseur

Control+H

emacs : le préfixe d'aide

L'interprétation des événements clavier sera indépendante du terminal utilisé (la console, X Window, une session rlogin ou telnet, etc.).

La liste suivante explique comment les différents programmes seront configurés pour y arriver :

<-- génère KB_BackSpace sous X.

Delete génère KB_Delete sous X.

Le mécanisme « X translations » est configuré pour que KB_Backspace déclenche ASCII DEL et que KB_Delete déclenche ESC [ 3 ~ (c'est la séquence d'échappement du vt220 pour la touche « delete character »). Il faut charger les ressources sur tous les serveurs locaux « X » à l'aide de xrdb et ne pas utiliser les valeurs par défaut des applications pour que les ressources de translation correspondent aux choix de xmodmap.

La console Linux est configurée pour que la touche <-- déclenche DEL et Delete déclenche ESC [ 3 ~.

Les applications X sont configurées pour que <-- efface à gauche et Delete efface à droite. Les applications Motif fonctionnent déjà de cette manière.

Les terminaux auront stty erase ^? .

L'entrée xterm dans terminfo aura ESC [ 3~ pour kdch1, tout comme TERM=linux et TERM=vt220.

Emacs est programmé pour associer KB_Backspace ou le caractère stty erase à delete-backward-char. Il associe KB_Delete ou kdch1 à delete-forward-char et associe ^H à help comme toujours.

D'autres applications utilisent le caractère stty erase et kdch1 comme deux touches d'effacement. ASCII DEL est la « suppression du caractère précédent ». kdch1 est la « suppression du caractère sous le curseur ».

Tout cela résout le problème sauf dans les cas suivants :

Certains terminaux ont une touche <-- qui ne peut pas produire autre chose que ^H. Sur ces terminaux l'aide d'Emacs ne sera pas accessible à partir de ^H (en supposant que le caractère « stty erase » est prioritaire dans Emacs et qu'il ait été bien configuré). Les touches M-x help ou F1 (si elles sont disponibles) peuvent être utilisées en remplacement.

Certains systèmes utilisent ^H pour stty erase. Cependant les versions modernes de telnet et toutes les versions de rlogin diffusent les configurations stty. Presque toutes les versions d'UNIX acceptent stty erase. Quand la configuration stty n'est pas reproduite correctement, on peut résoudre le problème en utilisant stty manuellement.

Certains systèmes (notamment des versions antérieures de Debian) utilisent xmodmap pour que <-- et Delete déclenchent KB_Delete. Nous pouvons changer le comportement de leurs clients X à l'aide des mêmes ressources que nous avons utilisées ou bien configurer nos propres clients avec les ressources de ces systèmes dans le cas inverse. Sur des serveurs configurés de cette manière, <-- fonctionnera mais pas Delete.

Certains systèmes d'exploitation ont d'autres configurations pour kdch1 dans leur base de données terminfo pour xterm et consort. Sur ces systèmes, la touche Delete ne fonctionnera pas quand vous vous connecterez depuis un système qui suit notre politique. Mais <-- fonctionnera.

Les variables d'environnement

Un programme ne doit pas dépendre des variables d'environnement pour déterminer des valeurs par défaut ; cela impliquerait de définir ces variables globalement au niveau du système par exemple dans /etc/profile, ce que tous les shells ne permettent pas.

Quand un programme dépend de variables d'environnement pour sa configuration, il doit prévoir, en leur absence, une configuration raisonnable par défaut. Si c'est difficile à faire (p. ex. quand le code source d'un programme non libre n'est pas disponible), le programme doit être remplacé par un petit script shell enveloppant (« wrapper ») qui positionne les variables d'environnement et appelle le programme initial.

Voici un exemple de script enveloppant écrit dans ce but : #!/bin/sh BAR=${BAR:-/var/lib/fubar} export BAR exec /usr/lib/foo/foo "$@"

De plus, comme /etc/profile est un fichier de configuration du paquet bash, aucun autre paquet ne peut y ajouter des variables d'environnement ou des commandes.

Enregistrer des documents avec doc-base

Le paquet doc-base implémente un mécanisme souple pour la gestion et la présentation de la documentation. Il est recommandé que chaque paquet Debian enregistre les documents qu'il fournit (autres que les pages du manuel) avec doc-base, en installant un fichier de contrôle doc-base grâce aux scripts install-docs. Cela se fait au moment de l'installation et lors de la suppression du paquet, l'enregistrement des documents est supprimé.

Veuillez vous reporter à la documentation du paquet doc-base pour des précisions.

Les fichiers Les fichiers binaires

Deux paquets ne doivent pas installer des programmes qui ont des fonctions différentes tout en ayant le même nom. Le cas de deux programmes avec les mêmes fonctionnalités mais des implémentations différentes est traité via « alternatives » ou par le mécanisme « Conflicts ». Voir et . Si ce cas se produit, un des deux programmes doit changer de nom. Les responsables rapporteront ce problème sur la liste de distribution debian-devel pour essayer de trouver un consensus. Si aucun consensus n'est trouvé, le nom des deux programmes doit être changé.

Par défaut, lors de la construction d'un paquet, tous les binaires créés incluront des informations pour le débogage et seront compilés avec optimisation. Vous mettrez aussi tous les avertissements de compilation qui vous semblent raisonnables : cela facilite la vie des responsables de portage qui peuvent consulter les journaux de construction en cas de problèmes. Pour le cas de la programmation en C, on utilisera les paramètres de compilation suivants : CC = gcc CFLAGS = -O2 -g -Wall # les bonnes options peuvent différer selon les programmes LDFLAGS = # aucun INSTALL = install -s # (ou bien utiliser strip sur les fichiers dans debian/tmp)

On remarquera que tous les binaires installés sont épurés de tout symbole, soit en utilisant l'option -s de install, soit en appliquant le programme strip sur les binaires après qu'ils ont été copiés dans debian/tmp mais avant qu'une arborescence ne soit faite pour le paquet.

Bien que les binaires dans l'arbre de construction soient compilés par défaut avec des informations pour le débogage, il est souvent difficile de déboguer les programmes qui sont soumis à des optimisations pour compilateur. Pour cette raison, il est conseillé de reconnaître la variable d'environnement standard DEB_BUILD_OPTIONS. Cette variable peut contenir plusieurs drapeaux de manière à pouvoir modifier la construction et la compilation d'un paquet.

noopt

La présence de cette chaîne signifie que le paquet ne sera soumis qu'à un minimum d'optimisation. Pour les programmes en C, il vaut mieux ajouter -O0 à CFLAGS (bien que ce soit la valeur par défaut). Il peut arriver que quelques programmes ne se construisent pas ou ne fonctionnent pas à ce niveau d'optimisation : il peut être nécessaire, par exemple, d'utiliser -O1.

nostrip

Cette chaîne signifie que les symboles de débogage ne seront pas enlevés du binaire pendant l'installation de manière à ce que les informations pour le débogage puissent être incluses dans le paquet.

Le petit makefile suivant explique comment implémenter les options de construction ; vous aurez sans doute à l'adapter aux conditions de votre paquet. CFLAGS = -Wall -g INSTALL = install INSTALL_FILE = $(INSTALL) -p -o root -g root -m 644 INSTALL_PROGRAM = $(INSTALL) -p -o root -g root -m 755 INSTALL_SCRIPT = $(INSTALL) -p -o root -g root -m 755 INSTALL_DIR = $(INSTALL) -p -d -o root -g root -m 755 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 else CFLAGS += -O2 endif ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) INSTALL_PROGRAM += -s endif

C'est au responsable du paquet de décider des meilleures options de compilation. Certains binaires (comme ceux qui font des calculs intensifs) fonctionnent mieux avec certaines options (p. ex. -O3) ; faites comme vous voulez. Utilisez ces options avec discernement : pour de bonnes raisons, pas seulement pour elles-mêmes. Ne craignez pas de remplacer les options qu'avait choisies l'auteur du programme original : elles sont souvent inappropriées dans votre environnement.

Les bibliothèques

Si le paquet est architecture: any, alors les options de compilation et de liaison de la bibliothèque partagée doivent inclure -fPIC, sinon le paquet ne se construira pas sur certaines des architectures prises en charge

Si vous utilisez GCC, -fPIC produira du code avec du code indépendant de la position relogeable, ce qui est nécessaire pour la plupart des architectures pour créer une bibliothèque partagée, avec i386 et peut-être quelques autres où le code non indépendant de la position est permis dans une bibliothèque partagée..

Le code indépendant de la position peut avoir un impact négatif sur les performance, en particulier sur i386. Cependant, dans la plupart des cas, la perte de performance doit être mesurée par rapport à la mémoire gaspillée sur les quelques architectures où du code non indépendant de la position est même possible.

. Toute exception à cette règle doit être discutée sur la liste de diffusion debian-devel@lists.debian.org et un consensus général obtenu. Les raisons pour ne pas compiler avec l'option -fPIC doivent être notifiées dans un fichier README.Debian et une attention particulière doit être prise pour restreindre l'architecture ou pour s'arranger pour que -fPIC soit utilisé sur les architectures où cela est nécessaire.

Parmi les raisons pour lesquelles ceci peut être nécessaire, la bibliothèque peut contenir du code assembleur écrit manuellement qui n'est pas relogeable, l'impact de performance peut être excessif pour des bibltiohèques de calcul intensif et des raisons similaires.

Pour les bibliothèques statiques, le cas général est de ne pas avoir de code relogeable car il n'y a pas de bénéfice sauf dans des cas spécifiques ; c'est pourquoi la version statique ne doit pas être compilée avec l'option -fPIC. Toute exception à cette règle doit être discutée sur la liste de diffusion debian-devel@lists.debian.org et les raisons pour compiler avec l'option -fPIC doivent être notifiées dans le fichier README.Debian.

Parmi les raisons pour lier des bibliothèques statiques avec l'option -fPIC, par exemple, on peut avoir besoin d'une API Perl pour une bibliothèque en développement rapide et qui a une API instable, des bibliothèques partagées sont alors sans intérêt à ce moment du développement de la bibliothèque. Dans ce cas, comme perl a besoin d'une bibliothèque avec du code relogeable, il peut y avoir un intérêt de créer une bibliothèque statique avec du code relogeable. Une autre raison citée est si vous distillez plusieurs bibliothèques dans une bibliothèque partagée commune comme le fait mklibs dans le projet de l'installateur Debian.

En d'autres mots, si à la fois une bibliothèque partagée et une bibliothèque statique sont à construire, chaque source (fichiers *.c pour les sources C, par exemple) devra être compilé deux fois dans le cas normal.

Vous devez indiquer l'option -D_REENTRANT de gcc quand vous compilez une bibliothèque (statique ou dynamique) pour qu'elle soit compatible avec les threads Linux.

Bien que les outils de construction ne respectent pas cette règle, les bibliothèques partagées, tout comme les binaires, doivent être liées à toute bibliothèque dont elles utilisent les symboles. Cela permet le bon fonctionnement du système shlibs et cela garantit que toutes les bibliothèques peuvent être ouvertes avec dlopen(). Les responsables de paquet peuvent utiliser gcc avec l'option -Wl,-z,defs lors de la construction d'une bibliothèque partagée. Cette option effectuant la résolution des symboles au moment de la construction, une référence à une bibliothèque manquante sera rapidement transformée en erreur fatale.

Toutes les bibliothèques partagées qu'on installe seront épurées de tout symbole par : strip --strip-unneeded votre-bibliothèque L'option --strip-unneeded fait que strip enlève uniquement les symboles qui ne sont pas utiles au mécanisme de réallocation. Les bibliothèques partagées fonctionnent parfaitement bien quand elles sont épurées, car les symboles de liens dynamiques sont dans une autre partie du fichier objet « ELF »

Vous pourriez aussi utiliser les options --remove-section=.comment et --remove-section=.note sur les bibliothèques partagées et sur les exécutables, et l'option --strip-debug sur les bibliothèques statiques.

.

Il faut noter que dans certaines circonstances, il peut être utile d'installer une bibliothèque non épurée, p. ex. pour la construction d'un paquet d'aide au débogage.

Les fichiers objet partagés (comme les fichiers .so) qui ne sont pas des bibliothèques publiques, c'est-à-dire que des exécutables tiers (les binaires d'autres paquets) ne peuvent s'y lier, seront installés dans des sous-répertoires de /usr/lib. De tels fichiers n'ont pas à se plier aux règles qui gouvernent les bibliothèques partagées ordinaires ; mais ils ne doivent pas être exécutables et seront épurés

Les « plug-ins », ces objets internes partagés, chargés dynamiquement par des programmes en utilisant , en sont un exemple.

.

Les paquets contenant des bibliothèques partagées qui peuvent être liées à d'autres binaires mais qui, pour quelque raison contraignante, ne peuvent être installées dans le répertoire /usr/lib, peuvent installer les bibliothèques partagées dans des sous-répertoires de /usr/lib ; dans ce cas, ils ajouteront ce répertoire dans /etc/ld.so.conf avec le script de post-installation du paquet et le supprimeront avec le script de post-removal.

Un nombre toujours croissant de paquets utilisent libtool pour l'édition de liens. La plus récente version de « GNU libtools (>= 1.3a) » peut se servir avantageusement des meta-données contenues dans les fichiers (*.la) de libtool. Le principal avantage de ces fichiers est que libtool peut conserver ces meta-données et donc y accéder en fonction des bibliothèques qu'il construit. Libtool cherche ces fichiers et les renseignements utiles qu'ils contiennent à propos des bibliothèques (p. ex. les bibliothèques nécessaires pour une édition de liens statiques). Ils sont aussi indispensables aux programmes utilisant libltdl

Sans doute, libtool peut faire de l'édition de liens avec des bibliothèques qui n'ont pas de fichier .la ; mais, n'étant qu'un simple script shell, il peut augmenter considérablement le temps de compilation d'un paquet s'il doit, pour chaque bibliothèque et chaque fois qu'elle est liée, déduire tous ces renseignements des premiers principes. Avec l'apparition de «libtool-1.4 (et dans une moindre mesure de libtool-1.3), les fichiers .la gardent des renseignements sur les dépendances entre bibliothèques qui ne peuvent pas être nécessairement déduits une fois détruit le fichier .la.

.

Les paquets qui se servent de libtool pour créer des bibliothèques partagées mettront les fichiers .la dans les paquets -dev ; dans le cas où un paquet compte sur la bibliothèque libltdl de libtool, les fichiers .la iront dans le paquet de la bibliothèque.

Vous devez vous assurer que vous n'utilisez que les versions diffusées des bibliothèques partagées pour construire vos paquets ; dans le cas contraire, les autres utilisateurs ne pourront pas exécuter vos binaires correctement. Produire des paquets sources qui dépendent de compilateurs non diffusés est habituellement une mauvaise idée.

Les bibliothèques partagées

Cette section a été déplacée dans .

Les scripts

Tous les scripts de commandes, y compris les scripts inclus dans un paquet par le responsable et utilisés par dpkg, commenceront par #! et le nom du shell interpréteur.

Pour les scripts Perl, c'est #!/usr/bin/perl.

Quand des scripts sont installés dans un répertoire du PATH système, le nom du script ne devrait pas inclure d'extension comme .sh ou .pl indiquant le langage de programmation actuellement utilisé pour l'implémenter.

Les scripts shell (sh et bash) commenceront presque systématiquement par set -e pour que les erreurs soient détectées. Tous les scripts utiliseront set -e ou vérifieront l'état de sortie de toutes les commandes.

L'interpréteur shell de base /bin/sh peut être un lien symbolique vers n'importe quel shell compatible POSIX, si echo -n ne produit pas une nouvelle ligne

La charte Debian indique que /bin/sh suit la norme POSIX, mais echo -n est largement utilisé dans la communauté Linux (dans cette charte, dans les sources du noyau Linux, dans beaucoup de scripts Debian, etc.). Ce mécanisme est valable mais n'est pas demandé par POSIX, d'où cet ajout explicite. D'autre part, la rumeur dit que ce mécanisme doit devenir de toute façon obligatoire dans la LSB.

. Les scripts shell indiquant /bin/sh comme interpréteur ne doivent donc utiliser que des caractéristiques POSIX. Si un script a besoin des caractéristiques non-POSIX d'un interpréteur, celui-ci doit être spécifié dans la première ligne du script (par exemple #!/bin/bash). Son paquet doit dépendre du paquet qui fournit le shell (à moins que le paquet ne soit marqué « Essential », comme par exemple pour bash).

Quand c'est possible, on peut vouloir limiter les scripts aux caractéristiques POSIX de manière à utiliser l'interpréteur /bin/sh. Si votre script fonctionne avec dash (anciennement ash), il est probablement conforme à POSIX, mais en cas de doute, utilisez /bin/bash.

Les scripts Perl détecteront les erreurs survenant lors de tous les appels système, comme open, print, close, rename et system.

Les shells csh et tcsh seront évités comme langage de script. Référez-vous au document Csh Programming Considered Harmful (Pourquoi programmer en Csh est risqué), l'une des FAQ du groupe usenet comp.unix.*. Il peut être trouvé sur . Si un paquet original utilise des scripts csh vous devez vous assurer qu'ils commencent par #!/bin/csh et vous devez rendre votre paquet dépendant du paquet virtuel c-shell.

Tout script qui crée des fichiers dans des répertoires où tout le monde peut écrire, (p. ex. dans /tmp) doit utiliser un mécanisme qui provoquera une erreur de façon atomique si un fichier de même nom existe déjà.

À cet usage, le système Debian de base fournit les utilitaires tempfile et mktemp.

Les liens symboliques

En général, les liens symboliques à l'intérieur d'un répertoire de premier niveau seront relatifs alors que les liens symboliques qui pointent d'un répertoire de premier niveau vers un autre répertoire de premier niveau seront absolus. Un répertoire de premier niveau est un sous-répertoire du répertoire racine /.

De plus, les liens symboliques doivent utiliser un nom de chemin le plus court possible ; on évitera par exemple le chemin foo/../bar.

On remarquera que pour créer un lien relatif avec ln, il n'est pas nécessaire que le fichier cible soit relatif au répertoire où est exécuté ln ; de même il n'est pas nécessaire de se déplacer dans le répertoire où vous désirez créer le lien. Donnez simplement à ln comme premier argument la chaîne de caractères qui représentera la cible du lien (cette chaîne doit être un chemin relatif au répertoire contenant le lien).

Par exemple, dans votre Makefile ou dans debian/rules, vous pouvez écrire : ln -fs gcc $(prefix)/bin/cc ln -fs gcc debian/tmp/usr/bin/cc ln -fs ../sbin/sendmail $(prefix)/bin/runq ln -fs ../sbin/sendmail debian/tmp/usr/bin/runq

Un lien symbolique vers un fichier comprimé aura toujours le même suffixe que le fichier référencé. (Par exemple, si le fichier foo.gz est référencé par un lien symbolique, le nom du lien doit aussi se terminer par « .gz », comme par exemple bar.gz.)

Les fichiers de périphérique

Un paquet ne doit pas contenir de fichiers de périphérique dans son arborescence.

Si un paquet a besoin d'un fichier de périphérique particulier qui n'est pas inclus dans le système de base, il doit appeler MAKEDEV dans le script postinst, après avoir prévenu l'utilisateur

On peut prévenir l'utilisateur par un message de debconf dont la priorité sera basse, ou bien par un echo (printf).

.

Un paquet ne doit pas supprimer de fichier de périphérique dans le script postrm ou dans un autre script. Ceci doit être laissé à l'initiative de l'administrateur système.

Debian utilise les périphériques série /dev/ttyS*. Les programmes qui utilisent les anciens périphériques /dev/cu* seront modifiés pour utiliser /dev/ttyS*.

Les fichiers de configuration Définitions

fichier de configuration

C'est un fichier qui influe sur le fonctionnement d'un programme, ou bien qui donne des renseignements particuliers à un site ou à un hôte, autrement dit un fichier qui singularise le comportement d'un programme. Classiquement, les fichiers de configuration sont faits pour être modifiés par l'administrateur système (s'il en a besoin ou s'il le souhaite) de manière à se conformer aux règles locales ou bien à obtenir un fonctionnement plus utile au site.

conffile

C'est un fichier répertorié dans le fichier conffiles d'un paquet ; dpkg en fait un usage particulier (voir ).

Cette distinction est importante : ce ne sont pas des concepts interchangeables. Presque tous les conffiles sont des fichiers de configuration, mais beaucoup de fichiers de configuration ne sont pas des conffiles.

Il faut noter que les scripts qui renferment des informations de configuration (ainsi la plupart des fichiers de /etc/default et de /etc/cron.{daily,weekly,monthly}) sont de facto des fichiers de configuration et seront traités comme tels.

Emplacement

Tout fichier de configuration créé ou utilisé par un paquet doit se trouver dans le répertoire /etc. S'ils sont nombreux, on envisagera la création d'un sous-répertoire de /etc qu'on nommera d'après le le nom du paquet.

Quand un paquet crée ou utilise des fichiers de configuration qui ne sont pas dans /etc et qu'il n'est pas facile de modifier ce programme pour qu'il utilise /etc, on mettra quand même les fichiers dans /etc et on créera des liens symboliques vers ces fichiers depuis les emplacements voulus par le paquet.

Comportement

La gestion des fichiers de configuration doit se conformer aux principes suivants :

les changements locaux doivent être préservés pendant la mise à jour d'un paquet ;

les fichiers de configuration doivent être préservés quand le paquet est supprimé ; ils ne sont détruits que si le paquet est supprimé avec « purge ».

La façon simple d'obtenir cela, c'est que le fichier de configuration soit un conffile. C'est parfait quand on peut distribuer une version par défaut qui marche pour la plupart des installations, bien que quelques administrateurs puissent vouloir la modifier. Cela suppose que la version par défaut fasse partie du paquet et que les scripts du responsable du paquet ne la modifient pas pendant l'installation (ou à quelque autre moment).

Pour faire que les changements locaux soient préservés correctement, nul paquet ne peut contenir des liens « en dur », ou en créer, vers des « conffiles »

Argument : Il y a deux problèmes avec les liens « en dur ». Le premier, c'est que certains « éditeurs » cassent le lien quand ils modifient l'un des fichiers, et les deux fichiers peuvent devenir involontairement différents. Le second, c'est qu'il arrive que dpkg casse le lien pendant une mise à jour de conffiles.

.

L'autre façon, c'est d'utiliser les scripts du responsable de paquet. Dans ce cas, le fichier de configuration ne doit pas être un conffile et ne doit pas faire partie du paquet. Si la configuration correcte d'un paquet demande un fichier, c'est au responsable du paquet, via ses scripts, de créer, mettre à jour, maintenir et supprimer un tel fichier. Voir pour des précisions. Ces scripts doivent être idempotents (c.-à-d. qu'ils doivent fonctionner correctement si dpkg a besoin de les relancer à cause d'erreurs survenues pendant l'installation ou la suppression) ; ils doivent comprendre toutes les manières de dpkg en ce qui concerne l'appel des scripts ; ils ne doivent pas remplacer ou même déformer la configuration de l'utilisateur sans lui demander ; ils ne doivent pas poser des questions sans intérêt (surtout pendant les mises à jour) ; bref, ils doivent être de bons citoyens.

Ces scripts n'ont pas à configurer toutes les options possibles d'un paquet, mais seulement celles qui sont nécessaires à son bon fonctionnement sur un système donné. Idéalement, un sysadmin ne devrait faire aucune autre configuration que celle faite presque automatiquement par le script postinst.

Une manière commune de faire est de créer un script paquet-configure qu'appellera le script postinst du paquet si et seulement si le fichier de configuration n'existe pas déjà. Parfois, il est bon d'avoir un fichier d'exemple ou un fichier modèle utilisable par les scripts du responsable. On mettra ces fichiers dans /usr/share/paquet ou dans /usr/lib/paquet (selon qu'ils sont dépendants d'une architecture ou non). On créera des liens symboliques vers ces fichiers dans /usr/share/doc/paquet/examples si ce sont des fichiers d'exemples ; ces fichiers sont des fichiers parfaitement ordinaires pour dpkg (ce ne sont pas des fichiers de configuration).

On ne doit pas mélanger ces deux manières de gérer les fichiers de configuration car alors la folie guette : dpkg voudra remplacer le fichier à chaque mise à jour du paquet.

Partager des fichiers de configuration

On doit indiquer un conflit entre des paquets qui ont le même fichier conffile. C'est une application de la règle générale qui veut qu'on ne partage pas des fichiers. Ni les alternatives ni les diversions ne sont appropriés dans ce cas ; en particulier, dpkg ne gère pas bien les conffiles déviés (diverted).

Les scripts d'un responsable de paquet ne doivent modifier le conffile d'aucun paquet, même celui du paquet auquel ils appartiennent.

Quand deux paquets ou plus ont le même fichier de configuration et qu'il est raisonnable d'installer les deux paquets, on doit définir l'un des paquets comme le propriétaire du fichier de configuration, et ce sera le paquet qui gère ce fichier comme un fichier de configuration. Les autres paquets qui utilisent le fichier de configuration doivent déclarer une dépendance envers ce paquet s'ils ont besoin de ce fichier de configuration pour leur fonctionnement. Quand ils ne l'utilisent que s'il est présent et qu'ils sont capables de fonctionner sans lui, ces paquets n'ont pas besoin de déclarer de dépendance.

Si l'on veut que deux ou plusieurs paquets apparentés partagent un fichier de configuration et que chacun d'eux soit capable de le modifier, il faut faire ce qui suit :

L'un des paquets apparentés (le paquet « propriétaire ») doit gérer le fichier de configuration avec les scripts du responsable de paquet comme il est décrit dans les sections précédentes ;

le paquet « propriétaire » fournira aussi un programme que les autres paquets utiliseront pour modifier le fichier de configuration ;

les paquets apparentés doivent se servir de ce programme pour faire les modifications voulues sur le fichier de configuration. Ils dépendront alors de la garantie donnée quant à la disponibilité de ce programme, ou bien ils accepteront avec élégance de ne pouvoir modifier le fichier de configuration si ce programme n'est pas disponible. C'est une addition au fait que le fichier de configuration pourrait même ne pas exister dans ce dernier scénario.

Quelques fois, il convient de créer un nouveau paquet qui fournit l'infrastructure de base pour les autres paquets et qui gère les fichiers de configuration partagés (on peut consulter le paquet sgml-base comme exemple).

Les fichiers de configuration de l'utilisateur (« dotfiles »)

Les fichiers dans /etc/skel sont copiés automatiquement dans les comptes des nouveaux utilisateurs par adduser. Aucun programme ne devra référencer les fichiers dans /etc/skel.

Ainsi, quand un programme, pour fonctionner correctement, a besoin qu'un fichier « .fichier » existe par avance dans $HOME, le paquet installera ce fichier dans /etc/skel et le traitera comme un fichier de configuration.

Cependant, avoir un programme qui, pour fonctionner correctement, a besoin de fichiers « .fichier » est une mauvaise idée, à moins que ce programme ne crée automatiquement ces fichiers.

L'installation par défaut de Debian devrait configurer les programmes d'une manière aussi proche que possible de la configuration originelle par défaut.

Ainsi, le programme d'un paquet Debian, qui a besoin d'une quelconque configuration pour fonctionner correctement, sera configuré globalement pour le système à l'aide d'un fichier placé dans /etc. C'est uniquement dans le cas où le programme n'accepte pas de configuration globale au site, et si le responsable du paquet n'a pas le temps d'ajouter un fichier de configuration par défaut, qu'un tel fichier pourra être placé dans /etc/skel.

/etc/skel sera aussi vide que possible. C'est d'autant plus nécessaire qu'il n'existe pas de mécanisme simple (ou même désirable) pour s'assurer que les fichiers « .fichier » nécessaires sont copiés dans les comptes des utilisateurs existants à l'installation du paquet.

Les fichiers-journaux (« log file »)

Les fichiers-journaux se nomment habituellement /var/log/paquet.log. Si vous avez de nombreux fichiers-journaux ou si vous avez besoin d'un répertoire pour des raisons de droits (/var/log ne peut être modifié que par root), vous créerez habituellement un répertoire nommé /var/log/paquet où vous mettrez ces fichiers.

Une rotation des fichiers-journaux doit être assurée de manière qu'ils ne grandissent pas indéfiniment ; la meilleure façon de procéder est de mettre un fichier de configuration pour la rotation des fichiers dans le répertoire /etc/logrotate.d et d'utiliser les facilités apportées par logrotate

L'approche traditionnelle pour les fichiers-journaux était d'utiliser « cron » et de simples scripts shell pour monter des combines ad hoc pour la rotation des fichiers. Cette approche, grandement paramétrable, demandait beaucoup de travail à l'administrateur système. Bien que le premier système Debian ait apporté une aide en installant automatiquement un système qui pouvait être pris comme modèle, cela ne fut pas considéré comme suffisant.

Une meilleure idée est d'utiliser logrotate, un programme développé par Red Hat, qui centralise la gestion des fichiers-journaux. Il possède à la fois un fichier de configuration (/etc/logrotate.conf) et un répertoire où les paquets peuvent déposer leurs configurations pour la rotation des fichiers, (/etc/logrotate.d).

. Voici un bon exemple de fichier de configuration de « logrotate » (pour plus de renseignements voir ) : /var/log/foo/*.log { rotate 12 weekly compress postrotate /etc/init.d/foo force-reload endscript } Cela fait tourner tous les fichiers sous /var/log/foo, sauve 12 compressions, et demande au démon de recharger ses informations de configuration après la rotation des fichiers.

Les fichiers-journaux seront supprimés quand le paquet est « purgé » (mais pas quand le paquet est simplement supprimé). Ce sera fait par le script postrm quand il sera appelé avec l'argument purge (voir ).

Permissions et propriétaires

Les règles de cette section sont des directives pour une utilisation élémentaire. Quand c'est nécessaire, vous pouvez vous écarter de certains détails. Cependant, dans ce cas, sécurisez ce que vous faites et restez aussi cohérent que possible avec le système. Vous devriez probablement en discuter aussi dans debian-devel.

Les fichiers appartiendront à root.root. Ils seront modifiables uniquement par le propriétaire et seront lisibles par tous (exécutables si nécessaire) c'est-à-dire 644 ou 755.

Les répertoires auront le mode 755 ou, pour ceux qui doivent être modifiables par un groupe, le mode 2775. La propriété du répertoire sera cohérente avec le mode -- si le répertoire a comme mode 2775, il appartiendra au groupe qui a besoin d'y accéder.

Quand un paquet est mis à jour et que le propriétaire ou les permissions d'un fichier inclus dans le paquet a changé, dpkg s'arrange pour que le propriétaire et les permissions soient positionnées correctement lors de l'installation. Cependant, cela ne s'étend pas aux répertoires ; les permissions et le propriétaire des répertoires déjà présents sur le système ne changent pas lors d'une installation ou d'une mise à jour de paquet. Cela est logique car, sinon, des répertoires communs comme /usr serait toujours en flux. Pour changer correctement les permissions d'un répertoire appartenant à un paquet, une action explicite est nécessaire, habituellement dans le script postinst. Dans ce cas, une attention particulière doit être prise pour gérer également les mises à jour vers une version antérieure.

Les exécutables qui sont « setuid » et « setgid » auront respectivement les modes 4755 et 2755, et ils appartiendront à l'utilisateur ou au groupe approprié. On n'interdira pas leur lecture (par des modes comme 4711 ou 2711 ou même 4111) ; en effet cela n'apporte aucun gain de sécurité puisque n'importe qui peut obtenir les binaires dans les paquets Debian qui sont librement disponibles ; c'est simplement gênant. Pour la même raison vous ne restreindrez pas les droits en lecture ou en exécution des exécutables « non-set-id ».

Certains programmes « setuid » doivent être restreints à certains groupes d'utilisateurs en se servant des permissions sur les fichiers. Dans ce cas, ils appartiendront à l'« uid » pour lesquels ils sont « set-id » et au groupe qui aura des droits d'exécution. Ils auront le mode 4754 ; cela ne sert à rien d'empêcher leur lecture aux utilisateurs qui n'ont pas les droits d'exécution.

On peut permettre que, pour suivre sa politique locale de sécurité, un administrateur système puisse reconfigurer un paquet en changeant les permissions des fichiers binaires : il peut utiliser dpkg-statoverride pour cela, comme c'est décrit plus bas

Les fichiers ordinaires (à l'exception des conffiles et d'autres fichiers similaires) installés par dpkg ont normalement leurs droits réinitialisés avec les droits de la distribution lors de la réinstallation d'un paquet. Cependant, l'utilisation du programme dpkg-statoverride annule ce comportement par défaut. Si vous utilisez cette méthode, vous penserez à décrire ce programme dans la documentation du paquet ; en tant qu'apport relativement récent à Debian, il est probablement peu connu.

. Une autre méthode est de créer un groupe comprenant les utilisateurs autorisés à utiliser le programme et de rendre tous les exécutables setuid exécutables seulement par ce groupe.

Si vous avez besoin d'un nouvel utilisateur ou groupe pour votre paquet, vous avez deux possibilités. La première est de rendre cet utilisateur ou ce groupe propriétaire d'un ou plusieurs fichiers de votre paquet. La deuxième est de compiler l'identifiant (plutôt que le nom) d'utilisateur ou de groupe dans le binaire. Dans ce cas vous avez besoin d'un identifiant attribué de façon fixe.

Si vous avez besoin d'un identifiant attribué de façon fixe, vous devez alors demander un identifiant d'utilisateur ou de groupe au responsable du système de base, base-passwd et vous ne devez pas livrer votre paquet avant d'avoir reçu un tel identifiant. Quand vous l'avez reçu, vous devez faire dépendre votre paquet d'une version du système de base dans laquelle l'identifiant est présent dans /etc/passwd ou dans /etc/group. Alternativement, vous pouvez modifier votre paquet pour qu'il crée lui-même l'utilisateur ou le groupe avec le bon identifiant (en utilisant adduser) dans les scripts preinst ou postinst. (Utiliser postinst est préférable si c'est possible ; sinon, il faudra une pré-dépendance envers le paquet adduser.)

D'un autre côté, un programme peut être capable, en fonctionnement, de déterminer l'« uid » ou le « gid » à partir du nom d'un groupe de façon à utiliser un identifiant attribué de façon dynamique. Dans ce cas vous choisirez un nom d'utilisateur ou de groupe approprié, vous en discuterez dans debian-devel, vous vérifierez avec le responsable du paquet base-passwd que ce nom est unique et vous vous assurerez qu'ils (la liste debian-devel) ne préfèrent pas un identifiant attribué de manière fixe. Quand tout cela a été vérifié, vous devez modifier votre paquet pour qu'il crée, si nécessaire, l'utilisateur ou le groupe avec adduser dans les scripts preinst ou postinst (à nouveau, ces derniers sont préférables si c'est possible).

Il faut noter que changer la valeur numérique d'un identifiant associé à un nom est une opération très difficile. Elle implique de rechercher dans le système de fichier tous les fichiers concernés. Réfléchissez sérieusement au meilleur choix entre « id » statique ou dynamique, car modifier votre choix ultérieurement posera des problèmes.

L'utilisation du programme dpkg-statoverride

Cette section ne se veut pas normative : c'est une description de l'utilisation du programme dpkg-statoverride.

Le programme dpkg-statoverride remplace le paquet suidmanager. Les paquets qui utilisaient suidmanager auront un champ Conflicts: suidmanager (<<0.50) et les appels à suidregister et à suidunregister seront simplement supprimés des scripts des responsables de paquet.

Quand un administrateur système souhaite installer un fichier (un répertoire, etc.) avec un système de permissions différent de celui du paquet Debian distribué, il peut se servir de dpkg-statoverride pour dire à dpkg d'utiliser un système particulier à chaque installation du fichier. Ainsi, le responsable du paquet distribuera les fichiers avec un système de permissions normal et laissera faire ses modifications. Par exemple, un démon, qui est normalement setuid root mais qui pourrait parfois être utilisé sans être setuid, sera installé setuid dans le fichier .deb. Puis, l'administrateur système local changera cela s'il le souhaite. Quand il y a deux façons de faire, le responsable de paquet peut utiliser debconf pour trouver la préférée, et appeler dpkg-statoverride dans ses scripts pour prendre en compte les choix de l'administrateur système. Une attention particulière doit être prise pendant les mises à jour pour ne pas supprimer un paramétrage existant.

Le programme dpkg-statoverride est donc essentiellement un outil pour administrateur système et les scripts de responsable de paquet ne devraient pas en avoir besoin. Il y a cependant une situation où des appels à dpkg-statoverride peuvent être nécessaires dans ces scripts ; il s'agit des paquets qui se servent d'identifiants d'utilisateur ou de groupe attribués dynamiquement. Dans cette situation, où sysuser est un identifiant dynamiquement attribué, il peut être utile de se servir, dans le postinst du paquet, de quelque chose comme : for i in /usr/bin/foo /usr/sbin/bar do # ne faire quelque chose que si aucun paramétrage n'existe if ! dpkg-statoverride --list $i >/dev/null then #inclus : traitement debconf, question à propos de foo et bar if [ "$RET" = "true" ] ; then dpkg-statoverride --update --add sysuser root 4755 $i fi fi done Quand le paquet est purgé, on peut faire sans condition les appels correspondants dpkg-statoverride --remove.

Programmes personnalisés Les chaînes de spécification d'architecture

Quand un programme doit fournir une chaîne de spécification d'architecture, il devra choisir l'une des chaînes fournies par dpkg-architecture -L. Les chaînes sont au format : os-arch, bien que la partie OS soit parfois omise quand l'OS est Linux.

Actuellement, les chaînes sont : i386 ia64 alpha amd64 armeb arm hppa m32r m68k mips mipsel powerpc ppc64 s390 s390x sh3 sh3eb sh4 sh4eb sparc darwin-i386 darwin-ia64 darwin-alpha darwin-amd64 darwin-armeb darwin-arm darwin-hppa darwin-m32r darwin-m68k darwin-mips darwin-mipsel darwin-powerpc darwin-ppc64 darwin-s390 darwin-s390x darwin-sh3 darwin-sh3eb darwin-sh4 darwin-sh4eb darwin-sparc freebsd-i386 freebsd-ia64 freebsd-alpha freebsd-amd64 freebsd-armeb freebsd-arm freebsd-hppa freebsd-m32r freebsd-m68k freebsd-mips freebsd-mipsel freebsd-powerpc freebsd-ppc64 freebsd-s390 freebsd-s390x freebsd-sh3 freebsd-sh3eb freebsd-sh4 freebsd-sh4eb freebsd-sparc kfreebsd-i386 kfreebsd-ia64 kfreebsd-alpha kfreebsd-amd64 kfreebsd-armeb kfreebsd-arm kfreebsd-hppa kfreebsd-m32r kfreebsd-m68k kfreebsd-mips kfreebsd-mipsel kfreebsd-powerpc kfreebsd-ppc64 kfreebsd-s390 kfreebsd-s390x kfreebsd-sh3 kfreebsd-sh3eb kfreebsd-sh4 kfreebsd-sh4eb kfreebsd-sparc knetbsd-i386 knetbsd-ia64 knetbsd-alpha knetbsd-amd64 knetbsd-armeb knetbsd-arm knetbsd-hppa knetbsd-m32r knetbsd-m68k knetbsd-mips knetbsd-mipsel knetbsd-powerpc knetbsd-ppc64 knetbsd-s390 knetbsd-s390x knetbsd-sh3 knetbsd-sh3eb knetbsd-sh4 knetbsd-sh4eb knetbsd-sparc netbsd-i386 netbsd-ia64 netbsd-alpha netbsd-amd64 netbsd-armeb netbsd-arm netbsd-hppa netbsd-m32r netbsd-m68k netbsd-mips netbsd-mipsel netbsd-powerpc netbsd-ppc64 netbsd-s390 netbsd-s390x netbsd-sh3 netbsd-sh3eb netbsd-sh4 netbsd-sh4eb netbsd-sparc openbsd-i386 openbsd-ia64 openbsd-alpha openbsd-amd64 openbsd-armeb openbsd-arm openbsd-hppa openbsd-m32r openbsd-m68k openbsd-mips openbsd-mipsel openbsd-powerpc openbsd-ppc64 openbsd-s390 openbsd-s390x openbsd-sh3 openbsd-sh3eb openbsd-sh4 openbsd-sh4eb openbsd-sparc hurd-i386 hurd-ia64 hurd-alpha hurd-amd64 hurd-armeb hurd-arm hurd-hppa hurd-m32r hurd-m68k hurd-mips hurd-mipsel hurd-powerpc hurd-ppc64 hurd-s390 hurd-s390x hurd-sh3 hurd-sh3eb hurd-sh4 hurd-sh4eb hurd-sparc

On remarquera que nous ne voulons pas utiliser arch-debian-linux dans la chaîne architecture-vendor-os car cela rendrait nos programmes incompatibles avec les autres distributions Linux. Notez aussi que nous n'utilisons pas arch-unknown-linux, car unknown ne sonne pas très bien.

Les « démons »

Les fichiers de configuration /etc/services, /etc/protocols et /etc/rpc sont gérés par le paquet netbase et ne doivent pas être modifiés par d'autres paquets.

Quand un paquet a besoin d'une nouvelle entrée dans l'un de ces fichiers, son responsable contactera le responsable du paquet netbase, qui ajoutera cette entrée et produira une nouvelle version du paquet netbase.

Le fichier de configuration /etc/inetd.conf ne doit pas être modifié par les scripts d'un paquet sauf si c'est via le script update-inetd ou le module Perl DebianNet.pm. Voir la documentation pour savoir comment ajouter des entrées.

Quand un paquet veut ajouter un exemple d'entrée dans /etc/inetd.conf, cette entrée doit être précédée par un seul caractère « # ». De telles lignes sont traitées comme des commentaires de l'utilisateur par le script update-inetd et ne seront pas modifiées ou activées lors des mises à jour des paquets.

L'utilisation des pseudo-ttys et la modification de « wtmp », « utmp » et « lastlog »

Certains programmes ont besoin de créer des pseudo-ttys. On doit le faire avec les « Unix98 » ptys si la bibliothèque « C » le permet. Le programme résultant ne doit pas être installé « setuid root », à moins que d'autres fonctions ne le demandent.

Les fichiers /var/run/utmp, /var/log/wtmp et /var/log/lastlog doivent être modifiables par le groupe utmp. Les programmes qui ont besoin de modifier ces fichiers doivent appartenir au groupe utmp.

Les éditeurs de texte et les pagineurs

Certains programmes peuvent appeler un éditeur ou un pagineur pour modifier ou afficher un document texte. Comme de nombreux éditeurs et pagineurs sont disponibles dans la distribution Debian, l'administrateur système et les utilisateurs pourront choisir leur éditeur ou leur pagineur préféré.

De plus, chaque programme choisira un éditeur ou un pagineur par défaut si l'utilisateur ou l'administrateur système n'en a pas choisi un.

Ainsi chaque programme qui appelle un éditeur ou un pagineur doit utiliser les variables d'environnement EDITOR ou PAGER pour déterminer l'éditeur ou le pagineur que l'utilisateur souhaite employer. Si ces variables ne sont pas définies, les programmes /usr/bin/editor et /usr/bin/pager seront, respectivement, utilisés.

Ces deux fichiers sont gérés par l'outil de dpkg, « alternatives ». Tout paquet, fournissant un éditeur ou un pagineur, doit employer le script « update-alternatives » pour déclarer ces programmes.

Lorsqu'il est très difficile d'adapter un programme pour qu'il utilise les variables EDITOR et PAGER, ce programme peut être configuré pour utiliser respectivement /usr/bin/sensible-editor et /usr/bin/sensible-pager comme éditeur ou pagineur. Ce sont deux scripts fournis par le système Debian de base qui testent les variables EDITOR ou PAGER et lancent les programmes appropriés ou bien exécutent par défaut /usr/bin/editor ou /usr/bin/pager quand la variable n'est pas définie.

Un programme peut aussi se servir de la variable d'environnement VISUAL pour connaître l'éditeur choisi par l'utilisateur. Si elle existe, elle prend le pas sur la variable EDITOR. Et c'est ce que fait /usr/bin/sensible-editor.

Un paquet n'a pas besoin de dépendre d'editor ou de pager, et il n'y a pas besoin de paquets virtuels pour cela

Le système Debian de base fournit déjà un éditeur et un pagineur.

.

Serveurs et applications Web

Cette section décrit les emplacements et les « URL » qui seront employés par tous les serveurs et applications Web dans le système Debian.

Les fichiers exécutables cgi-bin sont installés dans le répertoire /usr/lib/cgi-bin/cgi-bin-name et seront référencés par http://localhost/cgi-bin/cgi-bin-name

L'accès aux documents HTML

Les documents HTML d'un paquet sont conservés dans /usr/share/doc/package et peuvent être référencés par http://localhost/doc/paquet/nom-de-fichier

Le serveur web restreindra l'accès à l'arborescence des documents pour que seuls les clients appartenant à cette machine puissent consulter ces documents. Quand le serveur ne peut contrôler les accès, il ne fournira aucun accès, ou questionnera, pendant l'installation, au sujet d'un tel accès.

L'accés au images

Il est recommandé de mettre les images d'un paquet dans /usr/share/images/paquet et de les référencer par un alias comme dans cet exemple : http://localhost/images/<package>/<filename>

La racine des documents Web

Les applications Web éviteront de conserver des fichiers dans la racine des documents Web. Il faut utiliser, à la place, le répertoire /usr/share/doc/paquet pour les documents et déclarer l'application Web via le paquet doc-base. Si l'accès à la racine des documents Web est inévitable alors il faut utiliser /var/www comme racine des documents. Cela peut être juste un lien symbolique vers l'emplacement où l'administrateur a mis la véritable racine des documents.

Fournir httpd et/ou httpd-cgi

Tous les serveurs web devraient fournir le paquet virtuel httpd. Si un serveur intègre une gestion des CGI, il devrait de plus fournir httpd-cgi.

Toutes les applications web ne contenant pas de scripts CGI devraient dépendre de httpd, toutes les applications web contenant des scripts CGI, devraient dépendre de httpd-cgi.

Le courrier : transport, distribution et lecture des messages.

Les paquets Debian qui traitent le courrier électronique, que ce soient les agents utilisateurs (MUA: Mail User Agents) ou les agents de transport (MTA: Mail Transport Agent), doivent respecter les directives de configuration qui suivent. Le non-respect de celles-ci peut entraîner la perte de messages, la présence de lignes From: incorrectes et d'autres dommages sérieux !

Le répertoire pour le courrier est /var/mail et l'interface pour envoyer des courriers est /usr/sbin/sendmail (conformément au FHS). Sur des systèmes plus anciens, le répertoire du courrier peut être physiquement situé dans /var/spool/mail mais les accès à ce répertoire se feront par le lien symbolique /var/mail. Le répertoire pour le courrier fait partie du système de base et n'appartient pas au paquet MTA.

Dans le système Debian, tous les MUA, MTA, MDA et autres programmes de gestions des boîtes aux lettres (comme les démons IMAP) doivent verrouiller les boîtes aux lettres de façon à permettre l'usage de NFS. Cela signifie que le verrouillage de type fcntl() doit être associé avec celui de type point (« dot locking »). Pour éviter les situations inextricables, un programme utilisera d'abord fcntl() et ensuite le verrouillage « point » ou bien implantera si possible les deux méthodes à la fois

Quand il n'est pas possible d'établir les deux modes de verrouillage, le système ne doit pas attendre que le second mode soit mis en place, mais doit enlever le premier mode, attendre un certain temps et recommencer le verrouillage.

. Pour faire cela, il est conseillé d'employer les fonctions maillock et mailunlock présentes dans le paquet liblockfile*

Pour utiliser ces fonctions, il faut avoir une dépendance envers liblockfile version >>1.01.

.

Les boîtes aux lettres ont généralement le mode 660 utilisateur.mail à moins que l'administrateur système n'en ait décidé autrement. Un MUA peut supprimer une boîte aux lettres (sauf si elle n'a pas les permissions standards). Dans ce cas, le MTA ou un autre MUA doit la recréer au besoin. Le groupe mail doit pouvoir modifier les boîtes aux lettres.

La file d'attente du courrier a le mode 2775 root.mail et les MUA doivent appartenir au groupe mail pour effectuer le verrouillage mentionné précédemment (et doivent évidemment s'interdire l'accès aux boîtes aux lettres des autres utilisateurs en employant ce privilège).

/etc/aliases est le fichier contenant les alias du système de messagerie (par exemple postmaster, usenet, etc.) — c'est l'un des fichiers que l'administrateur système et les scripts postinst peuvent modifier. Après avoir modifié /etc/aliases, le programme ou l'administrateur doit exécuter newaliases. Tous les paquets MTA doivent contenir un programme newaliases, même s'il ne fait rien. Cependant les anciens paquets MTA ne le faisant pas, les programmes ne doivent pas échouer si newaliases ne peut être trouvé. À cause de cela, tous les MTA doivent posséder les champs Provides, Conflicts et Replaces: mail-transport-agent dans leur fichier de contrôle.

La convention consistant à écrire forward to adresse dans la boîte aux lettres elle-même n'est pas supportée. Utilisez un fichier .forward à la place.

L'emplacement du programme rmail utilisé par UUCP pour les messages entrants sera /usr/sbin/rmail. De même le programme rsmtp, qui reçoit des lots SMTP via UUCP, sera placé dans /usr/sbin/rsmtp s'il est supporté.

Quand un programme veut savoir quel nom d'hôte employer, par exemple, pour les messages sortants (courrier et nouvelles) qui sont créés localement, il utilisera le fichier /etc/mailname. Il contient la partie située après le nom d'utilisateur et le signe @ (at) des adresses électroniques des utilisateurs de la machine (suivi par un retour à la ligne).

Un tel programme s'assurera de l'existence de ce fichier. S'il existe, il sera employé sans commentaire (le script de configuration d'un MTA peut vouloir interroger l'utilisateur même s'il trouve ce fichier). S'il n'existe pas, il demandera une valeur à l'utilisateur (en utilisant de préférence debconf) et la stockera dans /etc/mailname puis l'emploiera pour la configuration du paquet. Le message d'invite sera explicite afin d'indiquer que ce nom ne sera pas utilisé seulement par ce paquet. Par exemple dans cette situation, le paquet INN pourrait dire : Please enter the "mail name" of your system. This is the hostname portion of the address to be shown on outgoing news and mail messages. The default is syshostname, your system's host name. Mail name ["syshostname">']: syshostname est la sortie de hostname --fqdn.

La configuration du système de « Nouvelles »

Tous les fichiers de configuration relatifs aux serveurs et aux clients NNTP (nouvelles) seront placés dans le répertoire /etc/news.

Quelques points de configuration s'appliquent à de nombreux paquets concernant les nouvelles (clients et serveurs) sur la machine : /etc/news/organization

c'est une chaîne qui apparaîtra dans le champ organisation de l'en-tête de chaque message posté par les clients NNTP de la machine.

/etc/news/server

contient soit le FQDN du serveur NNTP principal soit localhost si la machine locale est un serveur NNTP.

D'autres fichiers de portée générale peuvent être ajoutés s'ils sont requis pour la configuration commune à plusieurs paquets concernant les nouvelles.

Les programmes pour le système X Window X et la priorité des paquets

On doit configurer pour le système X Window les programmes qui peuvent l'être, et on doit déclarer toutes les dépendances nécessaires à leur fonctionnement sous « X ». Quand ces dépendances sont pour un paquet dont la priorité est une priorité supérieure à celles des paquets X dont il dépend, les binaires spécifiques à « X » peuvent être mis dans un paquet distinct, ou bien des versions alternatives du paquet avec support de « X » peuvent être fournies, ou bien encore la priorité du paquet peut être abaissée.

Les paquets fournissant un serveur X

Les paquets qui fournissent un serveur « X » et qui, directement ou indirectement, communiquent avec le matériel d'entrée et d'affichage, déclareront dans leurs données de contrôle qu'ils fournissent le paquet virtuel xserver

Cela met en ½uvre la pratique actuelle et offre une vraie politique pour l'utilisation du paquet virtuel xserver, lequel apparaît dans la liste des paquets virtuels. En résumé, les serveurs « X » qui communiquent directement avec le matériel d'entrée et d'affichage ou via un autre sous-système (p. ex. GGI) fourniront xserver. Des choses comme Xvfb, Xnest et Xprt ne doivent pas le faire.

.

Les paquets fournissant un émulateur de terminal

Les paquets qui fournissent un émulateur de terminal pour le système X Window et qui correspondent aux critères énumérés plus bas, déclareront dans leurs données de contrôle qu'ils fournissent le paquet virtuel x-terminal-emulator. Ils se déclareront comme une alternative pour /usr/bin/x-terminal-emulator, avec une priorité égale à 20.

Pour être un x-terminal-emulator, un programme doit :

se comporter comme un terminal DEC VT100 ou un terminal compatible ;

accepter l'option de ligne de commande -e commande qui crée une nouvelle fenêtre de terminal Une nouvelle fenêtre de terminal ne signifie pas nécessairement une nouvelle fenêtre X de plus haut niveau directement liée au gestionnaire de fenêtres ; elle pourrait être, si l'application qui émule le terminal était codée ainsi, une nouvelle « vue » dans une interface pour plusieurs documents (MDI, multiple-document interface). et exécuter la commande spécifiée, en interprétant tout le reste de la ligne de commande comme une commande à donner directement à exec, à la manière de xterm ;

accepter l'option de ligne de commande -T titre qui crée une nouvelle fenêtre de terminal avec comme titre titre.

Les paquets fournissant des gestionnaires de fenêtres

Les paquets qui fournissent des gestionnaires de fenêtres déclareront dans leurs données de contrôle qu'ils fournissent le paquet virtuel x-window-manager. Ils se déclareront comme une alternative pour /usr/bin/x-window-manager, avec une priorité qu'on calculera ainsi :

Commencez avec une priorité égale à 20.

Si le gestionnaire de fenêtres permet le système des menus de Debian, on ajoutera 20 points si cela se fait avec la configuration par défaut du paquet (c.-à-d. qu'il n'y a pas besoin, pour obtenir cette fonctionnalité, de modifier des fichiers de configuration appartenant au système ou à l'utilisateur) ; si l'on doit modifier des fichiers de configuration, on ajoutera seulement 10 points.

Si le gestionnaire de fenêtres est conforme au , écrit par le , on ajoutera 20 points.

Si le gestionnaire de fenêtres autorise, dans sa configuration par défaut, le redémarrage d'une session X avec un nouveau gestionnaire de fenêtres (sans tuer le serveur X), on ajoutera 10 points ; sinon, rien.

Les paquets fournissant des polices

Les paquets qui fournissent des polices pour le système X Window

Dans le cadre de cette charte, une « police pour le système X Window » est une police accessible par des requêtes utilisant le protocole X. Les polices pour la console Linux, pour les formateurs PostScript, etc., ne rentrent pas dans cette catégorie. Tous les outils qui rendent disponibles de telles polices pour le système X Window doivent cependant se conformer à cette règle.

doivent faire un certain nombre de choses pour s'assurer à la fois qu'ils sont disponibles sans avoir à modifier la configuration du serveur X ou du serveur de polices, et qu'ils n'abîment pas les fichiers utilisés par d'autres paquets pour déclarer les renseignements qui les concernent.

Les polices de tout type offertes pour le système X Window doivent être dans des paquets distincts des binaires, bibliothèques ou de la documentation (sauf celle liée à la police fournie, par exemple leur licence). Quand une ou plusieurs polices sont nécessaires à l'exploitation correcte du paquet auquel elles sont associées, le paquet qui les contient peut être placé dans un champ Recommends ; si elles n'apportent que des améliorations, on peut utiliser un champ Suggests. Les paquets ne doivent pas dépendre de paquets contenants des polices

Le serveur X peut en effet récupérer des polices sur le système de fichiers local ou, à travers le réseau, sur un serveur de polices pour X ; le système Debian des paquets ne permet que l'utilisation du système de fichiers local.

.

Les polices BDF seront converties en polices PCF avec le programme bdftopcf (disponible dans le paquet xfonts-utils), gzipées, et placées dans un répertoire qui correspond à leur définition :

Les polices à 100 dpi seront mises dans /usr/share/fonts/X11/100dpi/ ;

Les polices à 75 dpi seront mises dans /usr/share/fonts/X11/75dpi/ ;

Les polices à chasse fixe, les polices pour le curseur, ainsi que d'autres polices de faible définition seront mises dans /usr/share/fonts/X11/misc/.

les polices « Speedo » seront mises dans /usr/share/fonts/X11/Speedo/.

les polices « Type 1 » seront mises dans /usr/share/fonts/X11/Type1/. Si des fichiers de métrique sont disponibles, ils peuvent aussi être placés là.

On ne doit pas créer ni utiliser d'autres répertoires dans /usr/share/fonts/X11/ que ceux répertoriés dans la liste qui précède. Les répertoires PEX, CID et cyrillic font exception pour des raisons historiques, mais l'installation de fichiers dans ces répertoires reste déconseillée.

Au lieu de mettre directement des fichiers dans les répertoires cités dans la liste qui précède, les paquets peuvent fournir des liens symboliques dans le répertoire des polices pointant vers l'emplacement réel des fichiers dans l'arborescence. Un tel emplacement doit se conformer au « FHS ».

Les paquets ne contiendront pas à la fois les versions à 75 dpi et les versions à 100 dpi d'une police. Si les deux sont disponibles, elles seront fournies dans des paquets distincts dont les noms seront étiquetés -75dpi ou -100dpi.

Les polices destinées au répertoire misc ne doivent pas être mises dans les mêmes paquets que ceux des polices à 75 dpi ou 100 dpi mais elles seront fournies dans un paquet distinct étiqueté -misc.

Les paquets ne doivent pas fournir les fichiers fonts.dir, fonts.alias ou fonts.scale dans un répertoire de polices.

les fichiers fonts.dir ne doivent en aucun cas être fournis ;

si besoin est, les fichiers fonts.alias et fonts.scale seront fournis dans le répertoire /etc/X11/fonts/fontdir/paquet.extensionfontdir est le nom du répertoire de /usr/share/fonts/X11/ dans lequel sont conservées les polices du paquet correspondant (p. ex. 75dpi ou misc), où paquet est le nom du paquet qui fournit ces polices, et où extension correspond au contenu du fichier, soit scale soit alias.

Les paquets doivent déclarer une dépendance envers le paquet xfonts-utils dans leurs données de contrôle.

Les paquets qui fournissent un ou plusieurs fichiers fonts.scale tels qu'ils sont décrits plus haut, doivent appeler le programme update-fonts-scale, pour chaque répertoire où est installée une police, avant d'appeler le programme update-fonts-dir pour ce répertoire. Cet appel doit se faire à la fois dans le script postinst (pour tous les arguments) et dans le script postrm (pour tous les arguments sauf upgrade).

Les paquets qui fournissent un ou plusieurs de ces fichiers fonts.alias dont on vient de parler, doivent appeler le programme update-fonts-alias pour chaque répertoire où ils installent des polices. Cet appel doit se faire à la fois dans le script postinst (pour tous les arguments) et dans le script postrm (pour tous les arguments sauf upgrade).

Les paquets doivent appeler le programme update-fonts-dir pour chaque répertoire où ils installent des polices. Cet appel doit se faire à la fois dans le script postinst (pour tous les arguments) et dans le script postrm (pour tous les arguments sauf upgrade).

Les paquets ne doivent pas proposer, pour les noms des polices qu'ils fournissent, des alias qui entrent en conflit avec les alias déjà utilisés par des polices d'autres paquets.

Les paquets ne doivent pas fournir des polices qui ont le même nom pour l'enregistrement XLFD que celui donné par une police déjà en usage.

Les fichiers « défaut » des applications

Les fichiers « défaut » des applications doivent être installés dans le répertoire /etc/X11/app-defaults/ (on peut utiliser un répertoire particulier dans /etc/X11/ comme l'indique le manuel X Toolkit Intrinsics - C Language Interface). On ne les déclarera pas comme des conffiles et on ne les traitera pas non plus comme des fichiers de configuration. Les paquets ne doivent pas fournir le répertoire /usr/X11R6/lib/X11/app-defaults/.

Le paramétrage des ressources X des programmes peut aussi se faire par l'intermédiaire d'un fichier portant le même nom que celui du paquet mis dans le répertoire /etc/X11/Xresources/ et qui doit être enregistré comme conffile ou traité comme un fichier de configuration

Ce mécanisme n'est pas identique à celui d'app-defaults ; les fichiers app-defaults sont liés au binaire client du système de fichiers local, alors que les ressources X sont stockées dans le serveur X et influencent tous les clients qui se connectent.

. Important : les paquets qui installent des fichiers dans le répertoire /etc/X11/Xresources/ doivent déclarer un conflit avec le paquet xbase (<<3.3.2.3a-2) ; si ce n'est pas fait, le paquet peut détruire un fichier /etc/X11/Xresources préexistant qui a pu être paramétré par l'administrateur système.

Questions concernant le répertoire d'installation

Les paquets qui utilisent le système X Window ne seront pas configurés pour installer des fichiers sous le répertoire /usr/X11R6/. La hiérarchie du répertoire /usr/X11R6/ sera tenue comme obsolète.

Les programmes qui utilisent les programmes GNU autoconf et automake sont facilement configurés au moment de la compilation pour utiliser /usr/ au lieu de /usr/X11R6/, et cela sera fait à chaque fois que c'est possible. On placera les fichiers de configuration des gestionnaires de fenêtres et des gestionnaires d'affichage dans un sous-répertoire de /etc/X11/ correspondant au nom du paquet ; cela est dû à l'interpénétration étroite de ces programmes et du mécanisme du système X Window. Les programmes applicatifs utiliseront le répertoire /etc/ sauf si cette charte impose autre chose.

L'installation de fichiers dans des sous-répertoires de /usr/X11R6/include/X11/ et de /usr/X11R6/lib/X11/ est maintenant interdite ; les responsables de paquet détermineront s'ils peuvent utiliser des sous-répertoires de /usr/lib/ et de /usr/share/.

Les paquets devraient installer tout fichier pertinent dans les répertoires /usr/include/X11/ et /usr/lib/X11/, mais s'ils le font, ils doivent avoir une pré-dépendance sur x11-common (>= 1:7.0.0).

Ces bibliothèques étaient auparavant des liens symboliques. Cependant, avec X11R7, /usr/include/X11 et /usr/lib/X11 sont maintenant des vrais répertoires et les paquets devraient placer leur fichiers à cet endroit plutôt que dans /usr/X11R6/{include,lib}/X11. x11-common (>= 1:7.0.0) est le paquet responsable de la conversion de ces liens symboliques en répertoires.

Les bibliothèques OSF/Motif et OpenMotif

Les programmes qui demandent les bibliothèque OSF-Motif et OpenMotif

Dans ce document, on regroupe les deux termes sous le nom de « Motif ».

, bibliothèques non conformes aux « DFSG », seront compilés et testés avec « LessTif » (une libre ré-implémentation de « Motif »). Quand le responsable du paquet juge que le programme ne fonctionne pas suffisamment bien avec « LessTif » pour être distribué et supporté, mais qu'il fonctionne correctement quand il est compilé avec « Motif », il créera alors deux versions du paquet ; l'une qui sera liée de façon statique à « Motif » et dont le nom sera étiqueté « -smotif », et l'autre qui sera liée de façon dynamique à « Motif » et dont le nom sera étiqueté « -dmotif ».

Les deux versions liées à « Motif » sont dépendantes de logiciels non conformes aux « DFSG » et donc ne peuvent être mises dans la section « main » de la distribution ; si le logiciel lui-même est conforme aux « DFSG » il peut être mis dans la section « contrib ». Toutes les versions connues de « OSF-Motif » autorisent la redistribution sans restriction de binaires liés de façon statique ou dynamique à cette bibliothèque, mais c'est au responsable de paquet de déterminer si la licence de la version de « Motif » qu'il possède le permet.

Les programmes et modules Perl

Les programmes et modules Perl suivront les règles concernant Perl.

On peut trouver ces règles dans le fichier perl-policy du paquet debian-policy. Elles sont aussi disponibles sur les miroirs web de Debian, .

Les programmes emacs lisp

Veuillez consulter le « Debian Emacs Policy » pour les détails concernant la création de paquets de programmes emacs lisp.

On peut trouver les règles concernant Emacs dans le fichier debian-emacs-policy.gz du paquet emacsen-common package. Elles sont aussi disponibles sur les miroirs web de Debian, .

Les jeux

Les permissions de /var/lib/games sont 755 , propriétaire root et groupe root.

Chaque jeu décide de ses propres règles de sécurité.

Les jeux qui demandent des accès privilégiés et protégés à des fichiers de scores, de sauvegardes de parties, etc., peuvent appartenir à root.games et être exécutables par le groupe games (mode 2755) et doivent utiliser des fichiers et des répertoires avec des permissions appropriées (770 root.games par exemple). Ils ne doivent pas être exécutable par un utilisateur (set-user-id), car cela entraîne des problèmes de sécurité. Si un attaquant arrive à corrompre un jeu « set-user-id », il peut alors remplacer l'exécutable d'autres utilisateurs, forçant les autres joueurs de ces jeux à exécuter un cheval de Troie. Avec un programme « set-group-id », l'attaquant n'a accès qu'à des données de jeu moins importantes. S'il veut accéder aux comptes des autres joueurs, cela lui demandera des efforts beaucoup plus importants.

Certains paquets, comme les programmes « fortune », sont configurés par leurs auteurs originaux pour interdire la lecture de leurs fichiers de données ou d'autres informations statiques, de manière qu'ils ne puissent être accessibles que par les programmes « set-id » fournis. Vous ne ferez pas de même dans un paquet Debian : n'importe qui peut télécharger le fichier .deb et y lire les données, cela n'a donc pas de sens d'avoir des fichiers non lisibles. Créer des fichiers accessibles en lecture implique aussi que vous n'avez pas à construire des programmes « set-id », ce qui réduit le risque de failles de sécurité.

Conformément au « FHS », les binaires des jeux seront installés dans le répertoire /usr/games. Cela s'applique aussi aux jeux utilisant le système X Window. On installera les pages de manuel des jeux (« X » et « non-X ») dans /usr/share/man/man6.

La documentation Les pages du manuel

On installera les pages de manuel sous la forme d'un source nroff, à l'emplacement approprié dans /usr/share/man. Vous utiliserez uniquement les sections 1 à 9 (voir le FHS pour plus de détails). Vous ne devez pas installer de pages « cat » préformatées.

Chaque programme, utilitaire ou fonction aura une page de manuel associée dans le même paquet. On suggère aussi que chaque fichier de configuration ait une page de manuel associée. Pour des protocoles ou des programmes secondaires, les pages de manuel sont facultatives.

L'absence de page de manuel est considérée comme un bogue et un rapport sera envoyé au système Debian de suivi de bogues (le responsable du paquet peut écrire lui-même ce rapport, s'il le souhaite). On ne doit pas fermer le rapport tant que la page de manuel n'est pas disponible

Ce n'est pas très difficile d'écrire une page de manuel. Voyez le , la page , les exemples créés par debmake ou par dh_make, les programmes d'aide help2man, ou les exemples dans le répertoire /usr/share/doc/man-db/examples.

.

Vous pouvez faire suivre une plainte concernant l'absence d'une page du manuel aux auteurs originaux, et signaler qu'un rapport de bogue a été envoyé au système Debian de suivi des bogues. Même si le projet GNU ne considère pas en général l'absence d'une page du manuel comme un bogue, nous oui. S'ils vous répondent qu'ils ne considèrent pas cela comme un bogue, laissez quand même le bogue ouvert dans notre système de suivi.

Les pages de manuel seront installées comprimées avec gzip -9.

Si une page de manuel doit être accessible via différents noms, il est préférable d'utiliser un lien symbolique plutôt que la fonctionnalité .so, mais il est inutile de bricoler les parties incriminées dans les sources originaux pour changer les .so en liens symboliques (à moins que ce soit trivial). Ne créez pas de lien physique dans les répertoires des pages du manuel et ne mettez pas de chemin absolu dans les directives .so. Le nom du fichier dans le .so d'une page du manuel sera relatif à la racine des pages (habituellement /usr/share/man). Si l'on ne crée pas de liens (liens symboliques, liens « en dur » ou des directives .so) dans le système de fichiers pour les autres noms de cette page, on ne comptera pas sur man pour trouver la page de manuel sous ces noms à partir des seuls renseignements contenus dans l'en-tête de la page

Cette faculté demande à man un temps de calcul déraisonnable pour trouver une page de manuel, rapporter qu'elle n'existe pas et transférer dans sa base de données une information qui devrait rester dans le système de fichier. Elle est déconseillée et cessera d'exister à l'avenir.

.

Les documents « Info »

On installera les documents « Info » dans /usr/share/info. Ils seront comprimés avec gzip -9.

Votre paquet appellera install-info, dans le script postinst, appelé par exemple avec un argument configure, pour mettre à jour le fichier dir de « Info » : install-info --quiet --section Development Development \ /usr/share/info/foobar.info

Il est judicieux de spécifier une section pour l'emplacement de votre programme ; cela se fait avec l'option --section. Pour déterminer la section à utiliser, vous devez consulter /usr/share/info/dir sur votre système et choisir la plus adéquate (ou créer une nouvelle section si aucune des sections actuelles n'est adaptée). Notez que l'option --section prend deux arguments ; le premier est une expression régulière pour rechercher une section existante (indépendamment de la casse), le second est utilisé pour la création d'une nouvelle section.

Vous retirerez les entrées dans le script prerm appelé avec un argument remove : install-info --quiet --remove /usr/share/info/foobar.info

Si install-info ne trouve pas une entrée descriptive dans le fichier Info, vous devrez en fournir une. Voir pour des précisions.

Documentations supplémentaires

Le responsable d'un paquet peut installer toute documentation supplémentaire qui vient avec ce paquet. Les documents texte seront placés dans le répertoire /usr/share/doc/paquet, et comprimés avec gzip -9 à moins qu'ils soient petits.

Si un paquet contient une importante documentation dont la majorité des utilisateurs du paquet n'a pas besoin, vous la mettrez dans un paquet binaire distinct. Ainsi elle ne prendra pas d'espace disque sur les machines des utilisateurs qui n'en ont pas besoin ou qui ne veulent pas l'installer.

Il est souvent judicieux de mettre les fichiers d'informations (README, changelogs, etc.) provenant du paquet source dans /usr/share/doc/paquet au sein des paquets binaires. Bien entendu, vous n'avez pas besoin de fournir les instructions de compilation et d'installation.

Aucun programme ne demandera, pour son fonctionnement, que des fichiers existent dans /usr/share/doc

L'administrateur système pourra supprimer tout fichier dans /usr/share/doc/ sans craindre de planter un programme.

. Tout fichier référencé par un programme et qui est utile en tant que documentation indépendante sera installé dans /usr/share/paquet/ et lié symboliquement avec /usr/share/doc/paquet/.

/usr/share/doc/paquet peut être un lien symbolique vers un autre répertoire de /usr/share/doc seulement si les deux paquets proviennent de la même source et si le premier paquet dépend du second.

Il faut remarquer que cela n'annule pas la section dans les fichiers changelog et le fichier /usr/share/package/changelog.Debian.gz doit se référer au changelog de la version courante du paquet en question. En pratique, cela signifie que la source de la cible et la destination du lien symbolique doivent être identiques (même paquet source et même version).

Les précédentes versions de Debian plaçaient toute la documentation supplémentaire dans /usr/doc/paquet. C'est maintenant /usr/share/doc/paquet, et les paquets ne doivent pas mettre de la documentation dans le répertoire /usr/doc/paquet

À ce moment de la transition, nous n'avons plus besoin d'un lien symbolique vers /usr/doc/. Plus tard, la charte transformera ces liens symboliques en bogues.

.

Les formats préférés pour la documentation

L'unification de la documentation Debian se fait autour du format HTML.

Si votre paquet comprend une importante documentation dans un format balisé qui peut être converti en d'autres formats, vous livrerez si possible la version HTML dans le paquet binaire, dans le répertoire /usr/share/doc/paquet-approprié ou l'un de ses sous-répertoires

Le raisonnement : ce qui importe ici, c'est que les documents HTML soient disponibles dans certains paquets, et pas nécessairement dans le paquet binaire principal.

.

Le responsable de paquet peut fournir à sa guise d'autres formats, comme PostScript.

Les informations de copyright

Chaque paquet doit être accompagné d'une copie verbatim de son copyright ainsi que de sa licence de distribution dans le fichier /usr/share/doc/paquet/copyright. Ce fichier ne doit pas être comprimé ni être un lien symbolique.

De plus, le fichier de copyright doit préciser où ont été obtenus les fichiers sources originaux (s'ils existent). Il nommera les auteurs originaux et le(s) responsable(s) Debian qui ont ½uvré à la création du paquet.

Une copie du fichier installé dans /usr/share/doc/paquet/copyright sera faite dans le debian/copyright du paquet source.

/usr/share/doc/paquet peut être un lien symbolique vers un répertoire de /usr/share/doc seulement si, de deux paquets provenant tous les deux de la même source, le premier possède une relation « Depends » avec le second. Ces règles sont importantes car on doit pouvoir extraire les copyrights par des moyens automatiques.

Les paquets distribués sous la licence « UCB BSD », la licence « Artistic », la licence « GNU GPL » ou la licence « GNU LGPL » feront respectivement référence aux fichiers correspondants sous /usr/share/common-licenses,

Par exemple, /usr/share/common-licenses/Artistic, /usr/share/common-licenses/BSD, /usr/share/common-licenses/GPL, /usr/share/common-licenses/LGPL, /usr/share/common-licenses/GFDL, /usr/share/common-licenses/GPL-2 et /usr/share/common-licenses/LGPL-2.1 et ainsi de suite. Notez que la GFDL est nouvelle ici et que le fichier de licence peut ne pas être encore en place dans /usr/share/common-licenses/GFDL.

plutôt que de les citer dans le fichier de copyright.

Vous ne devez pas utiliser le fichier copyright comme un fichier README général. Si votre paquet possède un tel fichier, vous l'installerez dans /usr/share/doc/paquet/README ou README.Debian ou dans un autre endroit approprié.

Exemples

On installera tous les exemples (configuration, fichiers source, autres) dans un répertoire /usr/share/doc/paquet/examples. Ces fichiers ne seront pas utilisés par un quelconque programme. Ils ne sont là qu'en tant que documentation, et pour le seul bénéfice de l'administrateur système et des utilisateurs. On installera les exemples concernant une architecture particulière dans un répertoire /usr/lib/paquet/examples et les fichiers dans /usr/share/doc/paquet/examples seront des liens symboliques. Ou bien, ce dernier répertoire sera un lien vers le premier.

Si le but d'un paquet est de fournir des exemples, les fichiers d'exemples peuvent être installés dans /usr/share/doc/paquet.

Les fichiers « Changelog »

Les paquets qui ne sont pas originaires de Debian doivent contenir, dans /usr/share/doc/paquet, une copie compressée nommée changelog.Debian.gz du fichier debian/changelog qui est dans l'arborescence des sources.

S'il existe un « changelog » original, il sera accessible comme un fichier texte, /usr/share/doc/paquet/changelog.gz. Si le « changelog » original est distribué comme un fichier HTML, il sera rendu disponible en tant que /usr/share/doc/paquet/changelog.html.gz et le changelog.gz sera produit en utilisant p. ex. lynx -dump -nolist. Si le changelog original n'est pas déjà conforme à cette convention, alors cela peut être réalisé soit en renommant ce fichier soit en créant un lien symbolique, c'est à la convenance du responsable du paquet

Argument : on n'a pas à chercher dans deux endroits les « changelogs » originaux simplement parce qu'ils ont des noms différents ou parce qu'ils sont dans un format HTML.

.

Ces fichiers seront installés comprimés par gzip -9, car ils grossissent avec le temps même s'ils commencent petitement.

Quand un paquet a un seul changelog, utilisé à la fois comme changelog Debian et changelog original car le responsable principal est le même que le responsable Debian, on appellera simplement ce changelog : /usr/share/doc/paquet/changelog.gz. S'il y a un responsable principal mais pas de changelog source, on appellera toujours le changelog Debian : changelog.Debian.gz.

Pour des précisions sur le format et le contenu d'un fichier changelog de Debian, voyez .

Introduction : la portée des ces annexes

Ces annexes sont tirées essentiellement verbatim du Packaging Manual, version 3.2.1.0, dont l'usage est maintenant déconseillé. Elles contiennent les chapitres qui peuvent aider les responsables de paquet et qui n'ont pas été inclus dans la Charte elle-même. La plupart de ces sections ne sont sans doute pas pertinentes pour une charte ; elles seront vues comme une documentation du système d'empaquetage. Veuillez remarquer que ces annexes ont été incluses pour leur utilité et pour des raisons historiques : elles faisaient partie du paquet « policy » et n'ont pas encore intégré la documentation de dpkg. Cependant, elles sont utiles et sont donc présentées ici.

On ne s'est pas assuré qu'elles étaient compatibles avec le contenu de la Charte ; s'il y a contradiction, la version de la Charte prime. On ne s'est pas assuré non plus qu'aucune partie des chapitres restants du vieux Packaging Manual n'a été oubliée. Ces deux choses seront faites en temps et en heure.

Des parties du Packaging Manual ont été intégrées dans la Charte et supprimées de ces annexes. Des liens renvoient de l'ancienne place à la nouvelle.

dpkg est un ensemble de programmes servant à la création, l'installation et la suppression des fichiers des paquets binaires sur les systèmes Unix

dpkg est conçu d'abord pour Debian GNU/Linux, mais peut fonctionner sur, ou être porté vers, d'autres systèmes.

.

Les paquets binaires sont conçus pour la gestion des programmes exécutables installés (habituellement des binaires compilés) et de leurs données associées, bien que les exemples de code source et la documentation fassent partie de certains paquets.

Ce manuel décrit les aspects techniques de la création des paquets binaires Debian (fichiers .deb). Il documente le comportement des programmes de gestion des paquets dpkg, dselect et al., et la manière dont ils interagissent avec les paquets.

Il précise aussi les interactions entre le c½ur de dselect et les méthodes d'accès qu'il utilise pour installer réellement les paquets sélectionnés, et décrit comment créer une nouvelle méthode d'accès.

Ce manuel ne détaille pas les options et l'utilisation des outils de création et d'installation des paquets. Il est donc souhaitable de le lire conjointement avec les pages de manuel de ces programmes.

Les utilitaires qui sont fournis avec dpkg pour gérer les problèmes de configuration des différents systèmes, tels que update-rc.d et install-info ne sont pas non plus décrits en détail, voyez leurs pages de manuel.

On supposera que le lecteur est familier avec le manuel de l'administrateur système dpkg. Malheureusement ce document n'existe pas encore.

La version Debian du programme GNU hello de la FSF est proposé comme exemple aux personnes qui souhaitent créer des paquets Debian. Le paquet Debian debmake est un outil recommandé pour la création et la maintenance des paquets Debian. Bien qu'utiles, ces outils et les exemples ne peuvent cependant dispenser de la lecture de la Charte.

Les paquets binaires (annexe tirée de l'ancien Packaging Manual)

Un paquet binaire comporte deux parties principales. La première comprend divers fichiers d'information de contrôle et des scripts utilisés par dpkg lors de l'installation ou de la dés-installation. Voir .

La deuxième partie est une archive contenant les fichiers et les répertoires à installer.

À l'avenir les paquets binaires pourront contenir d'autres composants, comme des sommes de contrôle ou des signatures numériques. Le format de l'archive est décrit dans la page de manuel de deb(5).

Comment créer les fichiers d'un paquet ? -- dpkg-deb

Toutes les manipulations des fichiers d'un paquet binaire se font avec dpkg-deb ; c'est le seul programme qui connaisse le format. dpkg-deb peut être appelé par dpkg, car dpkg reconnaît que les options qui lui sont données appartiennent à dpkg-deb et l'appelle avec ces arguments.

Pour créer un paquet binaire, on doit créer une arborescence qui contient tous les fichiers et répertoires destinés à la partie « données » du système de fichiers du paquet. Dans les paquets Debian au format source, ce répertoire, debian/tmp, est habituellement relatif à la racine de l'arborescence du paquet source.

Ces fichiers auront l'adresse (relativement à la racine de l'arborescence que l'on construit) et le système de propriété et de permissions que l'on veut leur donner sur le système où ils seront installés.

Avec les versions actuelles de dpkg, les identifiants uid (utilisateur) et les identifiants gid (groupe) utilisés seront les mêmes pour le système sur lequel on construit que pour le système pour lequel on construit.

On doit ajouter un répertoire spécial à la racine de la mini arborescence créée : DEBIAN. Il contiendra les fichiers de contrôle, notamment le fichier de contrôle des paquets binaires (voir ).

Le répertoire DEBIAN n'apparaîtra pas dans l'archive du système de fichiers du paquet, et ainsi ne sera pas créé par dpkg quand le paquet sera installé.

Quand le paquet est prêt, on appellera : dpkg --build répertoire

Le paquet sera construit dans répertoire.deb. (dpkg sait que --build est une option de dpkg-deb et il appelle dpkg-deb avec ces arguments pour construire le paquet.)

Voir les pages de manuel pour savoir comment examiner le contenu de ce fichier fraîchement créé. Les sorties des commandes suivantes peuvent être éclairantes : dpkg-deb --info filename.deb dpkg-deb --contents filename.deb dpkg --contents filename.deb Pour voir le copyright d'un paquet, on peut utiliser cette commande : dpkg --fsys-tarfile filename.deb | tar xOf - \*/copyright | pager

Les fichiers de contrôle d'un paquet

La partie contenant les informations de contrôle d'un paquet binaire est une collection de fichiers dont les noms sont connus par dpkg. dpkg traitera le contenu de ces fichiers d'une manière spéciale - certains d'entre eux contiennent des informations utilisées pour l'installation ou la suppression d'un paquet ; les autres sont des scripts dont le responsable de paquet désire l'exécution.

Il est possible de mettre d'autres fichiers dans la zone de contrôle du paquet, mais ce n'est pas une bonne idée (de toute façon ils seront ignorés).

Voici une brève liste des fichiers de contrôle utilisés par dpkg et un résumé de ce qu'ils font.

control

C'est le principal fichier de description utilisé par dpkg. Il indique le nom et la version du paquet, donne sa description pour les utilisateurs, établit les relations avec les autres paquets, etc. Voir et .

Ce fichier est créé par le programme dpkg-gencontrol, avec l'aide de dpkg-shlibdeps, à partir des informations contenues dans le paquet source. Voir .

postinst, preinst, postrm, prerm

Ce sont des fichiers exécutables (habituellement des scripts) que dpkg exécute pendant l'installation, la mise à jour ou la suppression des paquets. Ils permettent de traiter les particularités d'un paquet ou celles qui nécessitent un traitement plus compliqué que celui fourni par dpkg. Quand et comment ils sont appelés est indiqué dans .

Il est très important de rendre ces scripts idempotents. Voyez .

Les scripts de maintenance peuvent compter sur un terminal de contrôle et peuvent interagir avec l'utilisateur. Voyez .

conffiles

Ce fichier contient une liste des fichiers de configuration qui doivent être gérés automatiquement par dpkg (voir ). Il faut remarquer que tous les fichiers de configuration ne sont pas nécessairement listés là.

shlibs

Ce fichier contient une liste des bibliothèques partagées fournies par le paquet avec les informations de dépendances pour chacune. Elle est utilisée par dpkg-shlibdeps quand il détermine quelles dépendances sont nécessaires dans un fichier de contrôle de paquet. Le format du fichier shlibs est décrit dans .

Le principal fichier d'informations de contrôle : control

control est le plus important des fichiers pour dpkg. Il contient toutes les informations vitales d'un paquet.

Les fichiers de contrôle des paquets binaires construits à partir des sources Debian sont faits par un outil spécial dpkg-gencontrol qui lit debian/control et debian/changelog pour trouver les informations dont il a besoin. Voir pour des précisions.

Les champs d'un fichier de contrôle d'un paquet binaire sont listés dans .

La description de la syntaxe de ces champs et de leur signification se trouve dans .

Les cachets de date

Voyez .

Les paquets sources (annexe tirée de l'ancien Packaging Manual)

Les paquets binaires de la distribution Debian sont créés à partir des paquets sources, lesquels sont dans un format spécial pour faciliter la construction automatique des binaires.

Les outils pour gérer les paquets sources

De nombreux outils sont fournis pour manipuler les paquets sources. Ils emballent et déballent les sources, aident à la construction des paquets binaires et gèrent la distribution des nouvelles versions.

Ils sont présentés ici et leurs usages habituels décrits ; pour de plus amples informations, voir .

Le paquet hello est un exemple de construction de paquet source Debian et de la mise en ½uvre des utilitaires qui y sont impliqués.

dpkg-source - faire et défaire un paquet source Debian

Ce programme est fréquemment utilisé sur la ligne de commande ; il est aussi appelé à partir des scripts de construction automatique de paquet, tel que dpkg-buildpackage.

Il est appelé ainsi pour dépaqueter un paquet : dpkg-source -x .../path/to/filename.dsc

avec filename.tar.gz et filename.diff.gz (si c'est utile) dans le même répertoire. Il dépaquette dans package-version, et, si c'est utile, package-version.orig, dans le répertoire actuel.

Pour créer un paquet, on utilise : dpkg-source -b paquet-version

Les fichiers .dsc, .tar.gz et .diff.gz seront créés (si c'est utile) dans le répertoire courant. dpkg-source n'efface pas l'arborescence des sources. Cela doit être fait séparément, si nécessaire.

Voir aussi .

dpkg-buildpackage - script de contrôle pour la construction de paquet

dpkg-buidpackage est un script qui fait appel à dpkg-source, aux cibles de debian/rules : clean, build et binary, à dpkg-genchanges et à pgp (ou pgp) pour construire des paquets signés, source et binaire, installables sur le serveur.

Il est généralement utilisé sur la ligne de commande, à la racine du répertoire source à créer ou à détruire. Il peut être invoqué sans arguments. Les arguments utiles sont : -uc, -us

ne pas chiffrer, respectivement le fichier .changes et le fichier paquet source .dsc.

-psign-command

Invoque la commande sign-command au lieu de chercher gpg ou pgp dans la variable PATH. sign-command doit avoir le même comportement que gpg ou pgp.

-rroot-command

Quand les privilèges de root sont nécessaires, invoque la commande root-command. root-command invoquera son premier argument comme une commande, dans le PATH si nécessaire, et passera son second argument et les autres à la commande qu'il appelle. Si aucune root-command n'est fournie, dpkg-buildpackage ne fera rien pour obtenir les privilèges de root ; ainsi, pour la plupart des programmes, il devra être appelé par root pour démarrer.

-b, -B

Deux types de construction et d'installation pour les binaires, voir .

dpkg-gencontrol - créer des fichiers de contrôle pour les paquets binaires

Ce programme est habituellement appelé à partir du fichier debian/rules (voir ) depuis la racine de l'arborescence source.

On l'appelle juste avant que ne soit établi le système des permissions pour les fichiers et les répertoires du répertoire temporaire où le paquet est construit et avant la construction du paquet par dpkg-deb

Il en est ainsi afin que le fichier de contrôle produit possède les bonnes permissions.

.

dpkg-gencontrol doit être appelé après que tous les fichiers du paquet ont été mis en place dans le répertoire temporaire de construction, afin que le calcul de la taille du paquet installé soit correct.

Il faut aussi que dpkg-gencontrol soit exécuté après dpkg-shlibdeps afin que les variables de substitutions, créées par dpkg-shlibdeps dans le fichier debian/substvars, soient disponibles.

Un paquet qui crée un seul paquet binaire et qui le construit dans le répertoire debian/tmp relatif à la racine du paquet source, appellera simplement : dpkg-gencontrol.

Les sources qui construisent plusieurs binaires utiliseront : dpkg-gencontrol -Pdebian/tmp-pkg -ppaquet L'argument P indique à dpkg-gencontrol que le paquet est en train de se construire dans un répertoire différent de celui par défaut et l'argument -p indique le fichier de contrôle qui sera créé.

dpkg-gencontrol ajoute aussi des informations à la liste des fichiers dans debian/files ; cela peut servir à un prochain appel à dpkg-genchanges.

dpkg-shlibdeps - les dépendances des bibliothèques partagées

Ce programme est habituellement appelé à partir du fichier debian/rules, juste avant dpkg-gencontrol (voir ), à la racine de l'arborescence source.

Les arguments sont des exécutables

Dans une prochaine version de dpkg, dpkg-shlibdeps serait aussi appelé pour les bibliothèques partagées.

Ils peuvent être spécifiés soit dans les emplacements de l'arborescence source où ils sont créés soit dans les emplacements de l'arborescence temporaire de construction où ils sont installés avant la création du paquet binaire.

pour lesquels les dépendances des bibliothèques partagées seront incluses dans le fichier de contrôle du paquet.

Si certaines bibliothèques partagées doivent seulement justifier d'un Recommends ou d'un Suggests, ou si certaines demandent un Pre-Depends, cela peut être réalisé en utilisant l'option -ddependency-field avant ces exécutables (chaque option -d prend effet jusqu'au prochain -d).

dpkg-shlibdeps ne modifie pas directement le fichier de contrôle. Par défaut, il ajoute au fichier debian/substvars des variables comme shlibs:Depends. Ces variables doivent être référencées dans les champs de dépendance du fichier de contrôle source dans les sections propres aux paquets binaires.

Par exemple, un paquet, avec une partie essentielle qui demande des dépendances et des parties facultatives qui ne demandent que des recommandations, séparerait ces dépendances en deux champs On peut trouver aujourd'hui un exemple avec le paquet xmms dont le champ Depends est utilisé pour l'exéutable xmms, le champ Recommends pour des extensions (« plug-ins » et le champ Suggests par d'autres fonctionnalités fournies par unzip. . Cela peut être indiqué dans le fichier debian/rules par : dpkg-shlibdeps -dDepends programme autreprogramme ... \ -dRecommends partiefacultative autrepartiefacultative et ensuite dans le fichier principal de contrôle debian/control : ... Depends: ${shlibs:Pre-Depends} Recommends: ${shlibs:Recommends} ...

Les sources qui produisent plusieurs paquets binaires avec des exigences différentes pour les dépendances envers les bibliothèques partagées peuvent utiliser l'option -pvarnameprefix pour annuler le préfixe shlibs: par défaut (un seul appel à dpkg-shlibdeps par réglage de cette option). Ils peuvent ainsi produire plusieurs ensembles de variables de dépendance, chacune de la forme varnameprefix:dependencyfield, auxquelles peuvent se référer les parties appropriées des fichiers de contrôle des paquets binaires.

dpkg-distaddfile - ajouter un fichier à debian/files

Certaines installations de paquets sur le serveur nécessitent d'inclure d'autres fichiers que les fichiers des paquets sources et binaires.

dpkg-distaddfile ajoute un fichier dans debian/files afin qu'il soit inclus dans le fichier .changes lorsque dpkg-genchanges sera lancé.

Il est habituellement invoqué à partir de la cible binary du fichier debian/rules : dpkg-distaddfile fichier section priority L'argument filename est relatif au répertoire où dpkg-genchanges s'attend à le trouver, généralement au-dessus de la racine de l'arborescence source. La règle de debian/rules devrait placer ce fichier juste avant ou juste après l'appel à dpkg-distaddfile.

Les arguments section et priority sont placés sans modification dans le fichier résultant .changes.

dpkg-genchanges - créer un fichier de contrôle de l'installation sur le serveur .changes

Ce programme est généralement appelé par des scripts de construction automatique de paquet tels que dpkg-buildpackage mais peut être aussi appelé sur la ligne de commande.

Il est habituellement exécuté à la racine de l'arborescence source construite, et quand il est invoqué sans arguments, il écrira un simple fichier .changes basé sur les informations des fichiers de contrôle et de changement des paquets sources, et des paquets sources et binaires qui ont dû être construits.

dpkg-parsechangelog - produire une représentation du fichier changelog

Ce programme est utilisé en interne par dpkg-source et al. Il peut être aussi occasionnellement utilisé dans debian/rules et ailleurs. Il analyse un fichier changelog, par défaut debian/changelog, et affiche sur la sortie standard une représentation des informations contenues faite selon le format d'un fichier de contrôle.

dpkg-architecture - informations sur les systèmes de construction et d'installation

On peut utiliser ce programme sur la ligne de commande ; mais il est aussi appelé par dpkg-buildpackage ou debian/rules pour déterminer les variables d'environnement qui indiquent les architectures utilisées pour la construction et pour l'installation pendant le processus de construction du paquet.

L'arborescence debianisée

La structure de l'archive source, décrite ci-dessous, a été conçue pour permettre à une arborescence source debianisée et ses informations de contrôle associées d'être facilement dupliquée et transportée. L'arborescence source debianisée comprend une version du programme original, certains fichiers ajoutés pour le processus de debianisation, ainsi que tous les changements nécessaires réalisés sur les codes sources et scripts d'installation.

Les fichiers supplémentaires créés pour Debian sont dans le répertoire debian à la racine de l'arborescence source debianisée. Ils sont décrits ci-dessous.

debian/rules - le script principal de construction

Voyez .

debian/changelog

Voyez .

Il est recommandé que tout le fichier changelog soit codé en de

Il me paraît évident que nous devrons passer au codage UTF-8 pour notre infrastructure des paquets. C'est réellement le seul codage adéquat à un environnement international. Mais nous ne pouvons l'utiliser dans les champs des fichiers de contrôle des paquets tant que dpkg n'accepte pas ce codage. On peut malgré tout demander aujourd'hui que les fichiers changelogs soient codés en UTF-8.

Vérifier la présence de caractères n'appartenant pas à UTF-8 dans les changelogs est facile. Passer le fichier dans iconv -f utf-8 -t ucs-4, délaisser la sortie et vérifier la valeur de retour. Si des chaînes comportent des séquences qui n'appartiennent pas à UTF-8, iconv s'arrêtera avec un code d'erreur. Ce sera pareil avec la grande majorité des autres jeux de caractères.

Comment définir des formats alternatifs pour le fichier changelog

Il est possible d'utiliser un format différent de celui proposé, en fournissant un analyseur pour le format qu'on veut utiliser.

Pour que dpkg-parsechangelog exécute l'analyseur, on inclura une ligne à l'intérieur des quarante dernières lignes du fichier correspondant à l'expression rationnelle Perl suivante : \schangelog-format:\s+([0-9a-z]+)\W. La partie entre parenthèses sera le nom du format. Par exemple, on pourrait dire : @@@ changelog-format: joebloggs @@@ Les noms des formats pour changelog sont des chaînes non vides de caractères alphanumériques.

Quand une telle ligne existe, dpkg-parsechangelog cherche l'analyseur dans /usr/lib/dpkg/parsechangelog/format-name ou dans /usr/local/lib/dpkg/parsechangelog/format-name ; c'est une erreur de ne pas le trouver, ou qu'il ne soit pas exécutable. Le format changelog par défaut est dpkg et un analyseur est fourni avec le paquet dpkg.

L'analyseur sera invoqué, au début du fichier, avec le changelog ouvert sur l'entrée standard. Il lira le fichier (ou le parcourra avec seek) pour trouver l'information et la retourner analysée sur la sortie standard sous la forme d'une série de champ de contrôle dans le format standard. Par défaut, il retournera seulement les informations les plus récentes du fichier changelog ; il acceptera l'option -vversion pour retourner les informations de changement de toutes les versions présentes strictement supérieures à version et ce sera donc une erreur que version soit absent dans le fichier changelog.

Voici les champs : Source Version (obligatoire) Distribution (obligatoire) Urgency (obligatoire) Maintainer (obligatoire) Date Changes (obligatoire)

Si plusieurs versions sont retournées (à cause de l'utilisation de l'option -v), la valeur urgency sera la plus grande listée par toutes les versions requises et sera suivie par les commentaires concaténés (séparés par une espace) de toutes les versions requises ; les champs : maintainer, version, distribution et date proviennent toujours de la version la plus récente.

Pour le format du champ Changes voir .

Si le format du fichier changelog analysé laisse toujours ou presque toujours une ligne vide entre les notes de modifications individuelles, ces lignes vides seront supprimées, pour rendre la sortie résultante plus compacte.

Si le format de changelog ne contient pas de date ou d'information sur le nom du paquet, ces informations seront omises en sortie. L'analyseur ne doit pas essayer de les synthétiser ou de les trouver à partir d'autres sources.

Si le fichier changelog n'a pas le format attendu, l'analyseur se terminera avec un statut différent de zéro, plutôt que d'essayer de se débrouiller tant bien que mal et créer des sorties incorrectes.

Un analyseur de changelog ne doit pas être interactif.

debian/substvars et les variables de substitution

Voyez .

debian/files

Voyez .

debian/tmp

C'est l'emplacement temporaire, pour la construction des paquets binaires par la cible binary. Le répertoire tmp sert de racine à l'arbre du système de fichier qui est en train de se construire (par exemple en utilisant la règle d'installation du Makefile du paquet original et en le redirigeant dans tmp), et il contient aussi le sous-répertoire DEBIAN. Voir .

Si plusieurs paquets binaires sont créés à partir du même arbre source, il est habituel d'utiliser plusieurs répertoires debian/tmp-truc, par exemple tmp-a ou tmp-doc.

Quelques soient les répertoires tmp créés et utilisés par binary, la cible clean doit bien sûr les effacer.

Les paquets sources en tant qu'archive

Sur les sites FTP, les paquets sources contiennent trois fichiers reliés entre eux. On doit avoir les trois bonnes versions pour pouvoir les utiliser.

Le fichier de contrôle des sources Debian - .dsc Ce fichier est un fichier de contrôle utilisé par dpkg-source pour extraire un paquet source. Voyez . L'archive source originelle - paquet_version-amont.orig.tar.gz

C'est un fichier tar comprimé (avec gzip -9) contenant le code source de l'auteur original du programme.

fichier diff de debianisation - paquet_version_amont-revision.diff.gz

C'est un fichier diff unifié (diff -u) donnant les changements requis pour modifier le source original en source Debian. Ces changements peuvent inclure seulement la modification ou la création de simples fichiers. Les permissions des fichiers, les cibles des liens symboliques et les caractéristiques des fichiers spéciaux ou tubes ne peuvent pas être changés et aucun fichier ne doit être enlevé ou renommé.

Tous les répertoires dans le fichier diff doivent exister, sauf le sous-répertoire debian à la racine de l'arbre source, qui sera crée par dpkg-source, si nécessaire, lors de l'extraction.

Le programme dpkg-source rendra automatiquement exécutable le fichier debian/rules (voir ci-dessous).

S'il n'y a pas de code source original, par exemple, si le paquet a été spécialement préparé pour Debian ou si le responsable Debian est le même que le responsable original, le format est alors légèrement différent : il n'y pas de fichier diff et le fichier tar est nommé paquet-version.tar.gz et contient de préférence un répertoire nommé paquet-version.

Comment dépaqueter un paquet source Debian sans dpkg-source

dpkg-source -x est la manière recommandée pour dépaqueter un paquet source Debian. Cependant, si le programme n'est pas disponible, il est possible de faire comme suit :

Déballer le fichier tar, pour créer un répertoire .orig.

Changer le nom du répertoire .orig en package-version.

Créer le sous-répertoire Debian à la racine de l'arborescence source.

Appliquer le fichier diff en utilisant patch -p0.

Déballer le fichier tar de nouveau, si l'on veut une copie du code source original à côté de la version debianisée.

Il n'est pas possible de créer une archive source Debian valide sans utiliser dpkg-source. En particulier, essayer d'utiliser diff directement pour créer le fichier .diff.gz ne fonctionnera pas.

Les fichiers de contrôle et leurs champs (annexe tirée de l'ancien Packaging Manual)

Beaucoup d'outils de la suite dpkg manipulent les données dans un format commun, connu sous le nom de fichiers de contrôle. Les paquets source et binaire ont des données de contrôle comme les fichiers .changes qui contrôlent l'installation des fichiers sur le serveur, et les bases de données internes à dpkg sont dans un format similaire.

La syntaxe des fichiers de contrôle

Voyez .

Il est important de noter que plusieurs champs sont facultatifs pour ce qui concerne dpkg et ses outils associés ; mais ils doivent apparaître dans chaque paquet Debian, et leur omission peut entraîner des problèmes.

La liste des champs

Voyez .

Cette section ne contient plus que les champs qui n'appartiennent pas à la charte Debian.

Filename et MSDOS-Filename

Ces champs dans les fichiers Packages donnent les noms de fichiers d'un paquet dans une distribution, par rapport à la racine de la hiérarchie Debian. Si le paquet a été découpé en plusieurs morceaux, les parties sont toutes listées dans l'ordre, séparées par des espaces.

Size et MD5sum

Ces champs dans les fichiers Packages donnent la taille (en octets, exprimée en décimal) et la somme de contrôle MD5 du ou des fichiers qui composent le paquet de la distribution. Si le paquet est découpé en plusieurs parties, les valeurs pour ces parties sont listées dans l'ordre, séparées par des espaces.

Status

Ce champ dans le fichier status de dpkg enregistre si l'utilisateur veut un paquet installé, enlevé ou laissé tout seul, s'il est défectueux (nécessite une réinstallation) ou non et son état actuel sur le système. Chaque partie de ces informations est un simple mot.

Config-Version

Si un paquet n'est pas installé, ou non configuré, ce champ dans le fichier status de dpkg enregistre la dernière version de ce paquet qui a été configurée avec succès.

Conffiles

Ce champ dans le fichier status de dpkg contient des informations sur les fichiers de configuration automatiquement gérés et maintenus par un paquet. Ce champ ne doit pas apparaître n'importe où dans un paquet !

Champs obsolètes

Ils sont toujours reconnus par dpkg mais ne doivent plus apparaître n'importe où. Revision Package-Revision Package_Revision

La partie revision Debian d'une version de paquet a été dans un champ de fichier de contrôle séparé. Ce champ était présent à travers plusieurs noms.

Recommended

ancien nom de Recommends

Optional

ancien nom de Suggests.

Class

ancien nom de Priority.

La gestion des fichiers de configuration (annexe tirée de l'ancien Packaging Manual)

dpkg peut faire de la gestion automatique de fichiers de configuration des paquets.

Que ce mécanisme soit adéquat, dépend d'un certain nombre de facteurs ; mais fondamentalement, pour tout fichier de configuration, il y a deux approches.

Une méthode simple est de mettre la meilleure configuration possible dans le paquet et d'utiliser le mécanisme des conffile de dpkg pour faire les mises à jour. Il est peu probable que l'utilisateur veuille modifier le fichier, mais il faut que cela soit possible sans perdre les modifications ; et un nouveau paquet avec une version modifiée du fichier est mis à jour rarement ; c'est la meilleure approche.

La méthode radicale est de construire le fichier de configuration à partir du script postinst, et de prendre la responsabilité de résoudre automatiquement les erreurs des versions précédentes du paquet. C'est justifié si le fichier est nécessairement différent sur chaque système.

Dpkg et la gestion automatique des fichiers de configuration.

Un paquet peut contenir un fichier dans la zone de contrôle appelé conffiles. Ce fichier doit être une liste de noms de fichier de configuration nécessitant une gestion automatique ; les noms sont séparés par un retour chariot. Les noms de fichiers seront des noms absolus, et les fichiers référencés doivent réellement exister dans le paquet.

Quand un paquet est mis à jour, dpkg traitera les fichiers de configuration pendant l'étape de configuration, juste avant d'exécuter le script postinst du paquet.

Pour chaque fichier, il vérifie si la version du fichier inclus dans le paquet est la même que celle du fichier inclus dans la dernière version du paquet (celui à partir duquel on fait la mise à jour). dpkg compare aussi la version actuellement installée sur le système avec celle donnée dans la dernière version du paquet.

Quand ni l'utilisateur ni le responsable du paquet n'ont changé le fichier, il est laissé tel quel. Si l'un ou l'autre l'ont modifié, les nouvelles versions sont prises en compte : si l'utilisateur modifie son fichier, mais le responsable ne donne pas de nouvelle version, les modifications de l'utilisateur sont conservées (silencieusement) ; si le responsable donne une nouvelle version et l'utilisateur n'a pas modifié son fichier, la nouvelle version sera installée (avec un message d'avertissement). Si les deux ont modifié le fichier, l'utilisateur est averti du problème et doit résoudre les différences lui-même.

La comparaison est faite en calculant le MD5 des fichiers et en stockant ce MD5 comme s'il était inclus dans la plus récente version du paquet.

Quand un paquet est installé pour la première fois, dpkg installera le fichier qui l'accompagne, à moins que cela ne signifie le remplacement d'un fichier existant sur le système de fichiers.

Cependant, notons que dpkg ne remplacera pas un conffile qui a été supprimé par l'utilisateur (ou par un script). C'est nécessaire parce qu'avec certains programmes, un fichier manquant produit un effet difficile ou impossible à réaliser d'une autre manière ; un fichier manquant ne sera pas remplacé si l'utilisateur en a décidé ainsi.

Notons qu'un paquet ne doit pas modifier un conffile géré par dpkg dans ses scripts de maintenance. Faire cela amènera dpkg à donner à l'utilisateur des options confuses ou dangereuses pour la mise à jour des fichiers de configuration quand le paquet est mis à niveau.

La gestion de la configuration entièrement faite par les scripts du responsable de paquet.

Pour les fichiers qui contiennent des informations spécifiques telles que le nom de l'hôte, les informations sur le réseau, il est préférable de créer le fichier dans le script postinst du paquet.

Ceci impliquera l'examen de l'état du reste du système pour déterminer valeurs et autres informations, et peut aussi impliquer de demander à l'utilisateur des informations qui n'ont pas pu être obtenues autrement.

Quand on utilise cette méthode, il y a un nombre important de problèmes à considérer :

Si l'on découvre une erreur dans le programme qui crée le fichier de configuration, ou si le format d'un fichier change d'une version à la suivante, on devra modifier le script postinst pour le corriger ; habituellement cela veut dire, éditer le fichier de configuration installé et enlever le problème ou changer la syntaxe. On devra faire ça avec soin : l'utilisateur peut avoir changé le fichier, peut-être pour fixer le problème que le script est en train de traiter ; on devra détecter ces situations et les traiter correctement.

Si l'on choisit cette voie, c'est alors une bonne idée de mettre le programme qui crée le fichier de configuration dans un programme séparé dans /usr/sbin, appelé par convention packageconfig et de l'exécuter si nécessaire, à partir du script de post-installation. Le programme packageconfig ne doit pas écraser une configuration existante - si son mode opératoire s'applique à une première installation (non pas une reconfiguration arbitraire ultérieure), on doit vérifier si une configuration existe déjà, et utiliser l'option --force pour la remplacer.

Versions alternatives d'une interface - update-alternatives (annexe tirée de l'ancien Packaging Manual)

Quand plusieurs paquets fournissent tous des versions différentes du même programme ou fichier, il est utile que le système en sélectionne un par défaut, tout en autorisant l'administrateur système à le changer et à faire respecter ses décisions.

Par exemple, il y a plusieurs versions de l'éditeur vi, et il n'y a aucune raison d'empêcher leur installation, chacun sous son propre nom (nvi, vim, etc.). Néanmoins, il est souhaitable que le nom vi se réfère à quelque chose, au moins par défaut.

Si tous les paquets impliqués coopèrent, ceci peut être fait par update-alternatives.

Chaque paquet fournit sa propre version sous son propre nom, et appelle update-alternatives dans le script postinst pour enregistrer sa version (et dans le script prerm pour l'enlever).

Voir le manuel en page pour des précisions.

Si update-alternatives ne semble pas approprié, on peut essayer d'utiliser les déviations.

Les déviations - remplacer la version d'un fichier contenue dans un paquet.

Quand dpkg réinstalle un paquet, on peut faire que tel ancien fichier ne soit pas remplacé et que le nouveau fichier correspondant soit mis ailleurs.

Une utilisation locale de cette technique peut être de remplacer la version d'un fichier contenue dans un paquet ; un paquet peut aussi s'en servir pour remplacer tel fichier d'un autre paquet ou bien pour mettre à sa place un « wrapper ».

Avant de décider de l'utilisation d'une déviation, lire , pour savoir si on veut vraiment une déviation plutôt que plusieurs versions différentes d'un même programme.

Il y a une liste des déviations qui est lue par dpkg et mise à jour par un programme spécial dpkg-divert. Voir pour plus de renseignements sur ses arguments.

Quand un paquet souhaite remplacer un fichier par un autre, il doit appeler dpkg-divert dans son fichier « preinst » pour ajouter la déviation et changer le nom du fichier existant. Par exemple, supposons qu'un paquet smailwrapper souhaite installer un « wrapper » pour /usr/sbin/smail : if [ install = "$1" ]; then dpkg-divert --package smailwrapper --add --rename \ --divert /usr/sbin/smail.real /usr/sbin/smail fi Le test de $1 est nécessaire afin que le script n'essaye pas d'ajouter encore la déviation quand smailwrapper est mis à jour. L'option --package smailwrapper assure que la copie du fichier /usr/sbin/smail contenue dans le paquet smailwrapper évitera la déviation et s'installera comme la vraie version.

Le postrm fait l'inverse : if [ remove = "$1" ]; then dpkg-divert --package smailwrapper --remove --rename \ --divert /usr/sbin/smail.real /usr/sbin/smail fi Il ne faut pas essayer de remplacer un fichier vital pour la marche du système. Il y a en effet un moment, quand on utilise dpkg, après que le fichier a été dévié, mais avant que dpkg ait installé la nouvelle version, où le fichier n'existe pas.

doc-debian-fr-3.1.3.1/doc/debian-euro-support.fr.sgml0000644000175000017500000022214210531161420021532 0ustar jeromejerome Debian Euro HOWTO Javier Fernández-Sanguino Peña jfs@computer.org Traduction de Julien Louis leonptitlouis@ifrance.com version 1.2, 4 juin 2003. Copyright © 2001, 2002, 2003 Javier Fernández-Sanguino Peña.

Ce document est distribué sous les termes de la Licence de Libre de GNU, disponible sur Introduction Pourquoi le support de l'euro ?

Le 1er janvier 2002, douze pays de l'Union Européenne, et plusieurs autres, ont commencé à utiliser l'euro comme seule monnaie officiellle. Donc, tout les prix seront affichés en euro et toutes les transactions financières l'utiliseront. L'euro va devenir une monnaie commune à l'Europe et même à d'autres continents.

Les ordinateurs doivent bien sûr représenter correctement l'euro pour que les gens puissent l'utiliser dans leurs documents (factures, tableaux ou quoique ce soit d'autre) et puissent lire les documents qui l'emploient. Comme l'indique , les systèmes d'exploitation doivent être prêts à représenter ce symbole.

L'euro est une monnaie mais aussi un symbole. Depuis le standard Unicode version 2.1 (daté de 1998) le symbole euro est ajouté, donc c'est aussi un caractère Unicode qui peut être représenté (interprété) avec différents glyphes (différentes polices qui peuvent changer la hauteur ou la largeur). Quel est le symbole de l'euro ?

Le symbole euro ressemble à la lettre « e » — il ressemble à un « c » avec deux lignes horizontales parallèles qui le traversent en son milieu. Certaines personnes comprendront mieux si l'on dit qu'il ressemble au symbole de Quake tourné de 90 degrés dans le sens des aiguilles d'une montre :-)

Le symbole est inspiré de la lettre grecque epsilon et indique aussi la première lettre du mot « Europe ». La stabilité à l'intérieur de la zone euro est indiquée par les deux lignes parallèles.

L'abréviation officielle (ISO-compliant) pour l'euro est EUR et peut être utilisée comme représentation pour la monnaie. Pourquoi tout ce bruit pour seulement un caractère ?

Le problème est que changer le caractère implique un changement du jeu de caractères utilisée par l'utilisateur. Le jeu de caractères est la liste des représentations des caractères utilisés par le système. Généralement, la plupart des utilisateurs dans la zone euro utilisent le jeu de caractères latin1. Le jeu de caractères, cependant, est limité à 256 caractères. Le caractère euro est introduit en enlevant un caractère et ce changement crée un nouveau jeu de caractères. Latin9 (ISO-8859-15 ou codepage 924 pour IBM, habituellement raccourci par latin0) remplace Latin1 (ISO-8859-1) et Latin10 (ISO-8859-16) remplace Latin2 (cependant, le tchèque n'est pas entièrement couvert dans Latin10, ce n'est donc pas un remplacement complet, et il couvre le roumain, ce que Latin2 ne faisait pas). Gardez à l'esprit que le jeu de caractère est limité à 256 caractères. (voir )

Latin9 diffère de Latin1 par huit positions : 0xA4 (U+20AC) : SIGNE EURO 0xA6 (U+0160) : LETTRE MAJUSCULE S AVEC ACCENT CARON, 0xA8 (U+0161) : LETTRE MINUSCULE S AVEC ACCENT CARON, 0xB4 (U+017D) : LETTRE MAJUSCULE Z AVEC ACCENT CARON, 0xB8 (U+017E) : LETTRE MINUSCULE Z AVEC ACCENT CARON, 0xBC (U+0152) : LETTRES LIÉES MAJUSCULES OE, 0xBD (U+0153) : LETTRES LIÉES MINUSCULES OE 0xBE (U+0178) : LETTRE MAJUSCULE Y AVEC TRÉMA.

Bien sûr, ceux qui utilisent déjà les polices UTF-8 ne sont pas affectés par ce problème puisqu'unicode est un ensemble comprennant tous les jeux ISO 8859 plus les caractères requis pour représenter pratiquement toutes les langues connues (voir ). Cependant, le support de l'unicode est actuellement loin d'être généralisé. Pour plus d'information lisez et/ou . Standards

La définition de l'euro fait partie de plusieurs standards  : Le code de EUR (code numérique 978) fait partie du standard ISO-4217 ; Pour les systèmes 8-bit, l'ISO/IEC défini le nouveau jeu de caractère 8859-15 (aussi connu comme latin 9) et 8859-16 (aussi connu comme latin 10) où le symbole euro remplace le symbole monétaire international à la position 164 (hex A4) ; Le système utilisant un symbole 16 bit, l'euro est le numéro 8364 (hex 20AC) de ISO/IEC-10646-1 ; La représentation à l'écran (police) pour l'euro est une partie du standard ISO/IEC-10036. Le glyphe est une représentation réelle (bit pattern) du caractère. L'euro est le glyphe 8059 ; Le World Wide Web Consortium utilise &euro; pour la représentation de ce symbole en HTML 4.0 (Voir ).

La Commission Européenne a publié dans ces deux solutions, une à court terme et une à long terme pour le caractère euro. La solution à court terme est de taper au clavier le caractère euro par la combinaison AltGr+E (AltGr est la touche « Alt » à la droite de la barre d'espace) ; la solution à long terme est d'utiliser une nouvelle touche pour le caractère euro. La plupart des fabriquants de clavier ont seulement appliqué la solution à court terme en introduisant une représentation de l'euro sous la touche E. Le système d'exploitation doit prendre cette entrée et la convertir en symbole EURO intérieurement. Néanmoins : Le clavier international US et le latin grec utilisent AltGr+5 et Ctrl+Alt+5 pour représenter l'euro ; Le clavier grec utilise AltGr+? pour représenter l'euro. Les claviers anglais et irlandais utilisent les combinaisons AltGr+4 et Ctrl+Alt+4 ; Les claviers hongrois et polonais utilisent la combinaison AltGr+U.

Dans ce document, la plupart des exemples vont supposer que le symbole euro va être affiché en tapant AltGr+E (le programme euro-test le suppose aussi). Debian est-elle prête pour l'euro ?

Le système d'exploitation Debian peut être correctement configuré pour afficher le caractère euro, aussi bien en console que sous environnement X, depuis la version 2.2 (potato). Pourtant, beaucoup d'utilisateurs n'ont pas réussi à le faire et il reste quelques problèmes qui n'ont pas été corrigés dans la Debian 3.0.

Dans certains cas, quelques problèmes peuvent venir des programmes utilisant ISO-8859-1 ou encore ASCII-US par défaut ; de plus, certains ne peuvent être correctement configurés pour utiliser ISO-8859-15 (faire des rapports de bogues avec le à l'encontre ces programmes). Configuration automatique Le paquet language-env

Ce paquet essaie d'installer correctement les variables d'environnement de l'utilisateur en changeant certains fichiers de configuration, dont ces fichiers ~/.bash_profile, ~/.Xresources et d'autres fichiers de configuration. Le programme d'installation guide l'utilisateur dans la définition des variables en lui demandant son pays et en lui demandant s'il désire (ou pas) le support de l'euro. Ces tâches doivent être faites séparément (puisque le programme s'exécute en tant qu'utilisateur normal, il ne peut changer la configuration du système) et sont présentées à l'utilisateur donc il peut (en tant que super-utilisateur) faire les changements appropriés. Le paquet euro-support

Le paquet euro-support essaie de fournir la configuration système adéquate pour représenter le caractère euro facilement dans le système d'exploitation Debian GNU/Linux. Ce paquet propose cette configuration de deux manières : En dépendant des paquets adéquats pour avoir le support de l'euro ; En configurant le système à l'installation pour inclure le support de l'euro.

NOTE : la seconde partie n'est pas encore dans le paquet euro-support.

Il y a actuellement trois paquets : euro-support inclut ce document aussi bien que le programme euro-test ; euro-support-console inclut les dépendances pour avoir une icône euro en console ; euro-support-X inclut les dépendances pour l'environnement X Window. Le programme euro-test

Il y a un programme de test appelé euro-test inclus dans le paquet euro-support pour permettre à l'utilisateur de voir si le symbole euro est correctement représenté sur son système. Ce programme a été écrit afin de tester si la configuration système est correcte et fonctionne pour la console texte et pour l'environnement graphique. Bien que développé pour le système Debian GNU/Linux, il peut être utilisé sur d'autres systèmes d'exploitation GNU/Linux pour tester le support de l'euro.

Le but de ce programme est de déterminer si le système de l'utilisateur peut afficher le symbole euro. Les informations rassemblées pourront être utilisées pour configurer le système manuellement à l'aide de ce document. Les paquets user-euro-XXX

Il y a aussi d'autres paquets (actuellement il n'y a que la version espagnole : le paquet user-euro-es) qui personnaliseront entièrement l'environnement système (pas celui de l'utilisateur) afin de fournir le support de l'euro. Ces paquets modifieront (par l'éxécution d'une commande donnée) les fichiers de configuration du système (comme expliqué ci-dessous) et feront les étapes nécessaires pour configurer l'environnement.

Les administrateurs pressés sont encouragés à utiliser ces paquets et à exécuter les scripts mentionnés ci-dessus (user-euro-es ). Cependant, les utilisateurs sont encouragés à lire tout ce document pour être avertis de toutes les possibilités (certaines ne pouvant être gérées automatiquement).

Ce paquet est une tentative pour installer la locale d'environnement de l'utilisateur Configurer le support de l'euro Considérations initiales

Configurer le support de l'euro sur un système implique deux étapes assez simples : Dites au système que vous voulez utiliser l'euro (localisation) ; Ayez une police disponible qui représente l'euro ; Fournissez un mécanisme pour le clavier pour envoyer le caractère euro.

Les dans la zone euro pour la génération du symbole euro sur des claviers modernes sont la combinaison AltGr+e pour l'euro et AltGr+c pour le centime. Note : Les utilisateurs d'ordinateurs portables n'ont peut être pas AltGr.

Ce document abordera la configuration de l'euro sous Debian, en commençant, par les problèmes de localisation et comment la localisation peut être correctement effectuée sous Debian. Ensuite, on verra comment configurer les consoles (terminaux virtuels) disponibles sur tous les systèmes Debian GNU/Linux. Beaucoup d'utilisateurs peuvent passer cette section et aller directement à la prochaine, qui parle de la configuration adéquate de l'environnement graphique (X Window) pour le support de l'euro.

Même si parfois cela peut induire en erreur le lecteur, les différentes solutions de configuration sont valables pour l'ancienne version de Debian (à ce jour, debian 2.2 nom de code « potato ») et la dernière version (Debian 3.0 nom de code « woody »). Les versions futures de ce document devraient séparer les informations entre les différentes versions de Debian (quand cela deviendra vraiment le désordre :) Édition de la localisation

Les programmes utilisent l'environnement de localisation afin de connaître et la langue et le jeu de caractères utilisés. Actuellement il n'y aucune séparation, entre la locale et la représentation sauf si vous utilisez UTF-8. Les locales d'environnement utilisent les deux langues par exemple : es_ES.ISO-8859-1 en_US.utf ....

Pour Debian, les définitions des locales sont stockées dans /etc/locale.alias et /usr/X11R6/lib/X11/locale/locale.alias pour la bibliothèque libc. Pour indiquer quel jeu de caractères vous utilisez, vous devez définir la variable d'environnement LANG. Une des solutions pour faire ce changement est de changer /etc/environment ou /etc/profile.

Néanmoins, il y a un problème à cause de la représentation différente des locales sous XFree86 (Xlib) et glibc (l'une utilise ISO8859 et l'autre ISO-8859, notez le tiret). Ainsi, fixer la locale en XX_XX.ISO-8859-15 dans /etc/environment causera des problèmes en environnement X (la locale pourrait ne pas être reconnue ou créer des erreurs dans les applications).

Depuis la Debian 3.0, les alias XX_XX@euro sont donnés dans /usr/X11R6/lib/X11/locale/locale.alias et dans /etc/locale.alias ; les utilisateurs souhaitant définir leur locale d'environnement devraient utiliser cette abbréviation au lieu des XX_XX@ISO-...  précédents.

Vous pouvez voir votre environnement courant en lançant locale, et votre jeu de caractères actuel en utilisant locale charmap. Afin de changer votre locale modifiez /etc/environment ou /etc/profile et ajoutez (l'exemple est pour l'espagnol, adaptez si nécessaire) : export LANG=es_ES@euro export LC_ALL=es_ES@euro

Note : Vous devez utiliser la partie @euro. Sinon, si vous utilisez seulement es_ES la définition de la locale sera le jeu de caractères ISO-8859-1.

Veuillez, notez que les définitions de LANG et de LC_ALL doivent être similaires (ou alors mieux la même). Sinon les bibliothèques pourraient avertir de l'incompatibilité des locales. Vous verrez des avertissements si, par exemple, vous définissez : export LANG=spanish export LC_ALL=es_ES@euro

Puisque « spanish » est un alias de es_ES.ISO-8859-1 et es_ES@euro est un alias de es_ES.ISO-8859-15. Soyez attentif avec cette action puisque certains programmes ne vérifient pas le fichier locale.aliases et utilisent une valeur spécifique. Ce n'est pas recommandé de changer locale.alias pour avoir, par exemple, « spanish » en alias de es_ES.ISO-8859-15 puisque le programmes qui utilisent cette méthode ne fonctionneront pas correctement. Si votre logiciel favori ne fonctionne pas avec 'XX_XX@euro' veuillez envoyez un rapport de bogue.

Vous pouvez vérifier quelles sont toutes les locales disponibles en éxécutant locale -a

Pour les programmes qui donnent trop d'avertissements concernant le résultat de la localisation/représentation est semblable à : Gdk-WARNING **: locale not supported by C library ou Warning: locale not supported by C library, locale unchanged utilisez LANG=XX_XX.ISO-8859-1 programmes pour les exécuter et supprimer les erreurs/avertissements. En tout cas, vérifiez que vous avez correctement défini votre locale et, dans l'affirmative, remplissez un rapport de bogue pour le paquet concerné.

Pour que votre environnement X fonctionne, il doit y avoir une définition de iso8859-15 dans /usr/X11R6/lib/X11/locale. Si vous n'avez pas correctement configuré les locales, X devrait vous avertir (avant de démarer un programme). Veuilez votre fichier ~/.xsession-errors parce que cela devrait arriver sans que l'utilisateur soit averti dans les environnements de bureaux récents (toutes les erreurs sont redirigées et n'apparaissent pas à l'écran). Un extrait de l'avertissement serait : Warning: locale not supported by Xlib, locale set to C Les locales sous Debian 3.0

Pour que vos locales fonctionnent sous 3.0, l'administrateur doit configurer correctement la localisation du système. La façon la plus simple de faire ces modifications est d'appeler dpkg-reconfigure -plow locales, et de choisir votre locale dans la version avec un @euro ajouté.

Vous pouvez aussi modifier directement /etc/locale.gen, en insérant les définitions des locales euro et puis en lançant locale-gen. Si vos locales sont déjà définies mais avec un signe #, décommentez (effacez ce signe) les lignes nécessaires pour la locale de l'utilisateur. Principalement les lignes XX_XX.ISO-8859-15 et les lignes XX_XX@euro et lancez locale-gen. Cela devrait créer /usr/lib/locale/XX_XX@euro. Les locales sous Debian 2.2

Vous ne pouvez pas modifier /etc/locale.gen si vous utilisez Debian 2.2 parce qu'il n'existe pas. Mais, dans certains cas, vous n'avez pas besoin de le faire puisque toutes les locales sont incluses par défaut sous Debian. Pourtant, Debian 2.2 locales (version 2.1.3-13) ne contient pas la définition de l'euro. Si une mise à niveau des locales de Woody (3.0) n'est pas possible (cette mise à jour va probablement changer la version de libc), vous devez faire les changements manuellement.

Sous Debian 2.2, les utilisateurs ont besoin de changer quelques fichiers (ces changements ne sont pas nécessaires sous 3.0 puisqu'ils ont déjà été fait). En supposant un environnement espagnol (locale es_ES), le changement pour /etc/locale.alias est : es_ES@euro es_ES.ISO-8859-15 et pour /usr/X11R6/lib/X11/locale/locale.alias est : es_ES@euro es_ES.ISO8859-15

Après avoir fait cela vous devez générer vos locales Vous pouvez le faire en lançant manuellement localedef. Les fichiers de jeu de caractères sont dans /usr/share/i18n/charmaps, les fichiers de locales peuvent être trouvé dans /usr/share/i18n/locales. Afin de créer, par exemple, une locale en_US.ISO-8859-15, vous devrez faire cela : $ localedef --force -i /usr/share/i18n/locales/en_US \ -f /usr/share/i18n/charmaps/ISO-8859-15 \ en_US.ISO-8859-15

Vous pouvez aussi utiliser une version simplifiée puisque localedef devrait être capable de trouver les jeux de caractères et les locales lui-même : $ localedef --force -v -i en_US -f ISO-8859-15 en_US.ISO-8859-15

Le répertoire créé est appelé /usr/share/locale/en_US.iso885915. Vous devez aussi créer le répertoire en_US.ISO-8859-15  faites-le en créant un lien symbolique vers le précédent. $ cd /usr/share/locale $ ln -s en_US.ISO-8859-15 en_US.iso885915 Configurer la console

Configurer la console afin d'avoir le symoble euro est simple. Ce qui suit fonctionnera sur un système Debian GNU/Linux : $ loadkeys euro.inc $ consolechars -f lat0-16.psf

Toutefois, ces changements sont perdus après un redémarrage. Afin qu'ils deviennent permanents, quelques changements doivent être faits aux fichiers de configurations des paquets Debian. Configurer le clavier de la console

Changer la carte clavier implique de changer /etc/console-tools/default.map.gz ou /etc/kbd/default.map.gz. Habituellement, cette carte clavier est changée en utilisant kbdconfig (si vous n'utilisez pas console-tools regardez en dessous pour les différents systèmes clavier console sous Debian) ; puisque elle est chargée avant que le système de fichier réseau ne soit monté, vous ne pouvez pas le changer directement (par exemple en ajoutant include euro ici), les extensions ne pouvant pas être chargées (puisqu'elles sont localisées dans /usr/share/keymaps). Afin d'avoir le support de l'euro, si votre carte clavier ne l'a pas vous devrez en modifier une déjà existante. Voici un exemple qui montre comment changer la carte clavier espagnole pour supporter le caractère euro (kbdconfig posera quelques questions, seules les réponses sont affichées ci-dessous) : $ cd /usr/share/keymaps/i386/qwerty $ cp es.kmap.gz es-euro.kmap.gz $ gzip -d es-euro.kmap.gz $ echo "include \"euro\"" >>es-euro.kmap $ echo "altgr keycode 46 = cent" >>es-euro.kmap $ gzip es-euro.kmap $ kbdconfig -----REPONSES: n i386 qwerty es-euro y y $ zgrep "keycode 18" /etc/console-tools/default.kmap.gz keycode 18 = +e +E currency Control_e Control_e Meta_e Meta_E Meta_Control_e

FIXME : Un bogue devrait être ouvert contre console-data pour inclure ceci par défaut dans toutes les langues de la zone euro. Comment le clavier est-il chargé sous Debian ?

Le paquet console-common sous Debian 3.0 installe /etc/init.d/keymap.sh qui lance loadkeys de console-tools (en utilisant /etc/console-tools/default.map.gz) ou kbd (en utilisant /etc/console/boottime.kmap.gz). Ce fichier a été créé en utilisant /usr/sbin/install-keymap.

Quand un système démarre il lance /etc/rcS.d/S05keymap.sh (pour kbd) ou /etc/rcS.d/S05keymap-lct.sh (pour console-tools) qui installe la carte clavier adéquate. Les deux scripts feront soit /etc/init.d/keymap.sh soit /etc/init.d/S05keymap-lct.sh étant appelés avec l'option « start ». Configurer les polices de la console

La façon la plus simple pour configurer une console sur un système Debian est d'installer le paquet fonty inclus depuis Debian 2.2 et dites lui d'utiliser les polices iso15 (fonty actuellement ne supporte pas encore iso-8859-16). Ces polices incluront le caractère euro et le paquet configurera convenablement les fichiers de configuration requis. Vous aurez besoin, néanmoins, de configurer la carte clavier, comme décrit ci-dessus.

Si vous ne voulez pas (ou n'aimez pas) le paquet fonty, vous pouvez configurer les polices de la console vous-même. Pour que les polices soit chargées automatiquement quand le système est démarré, vous (en tant que root) devez changer quelques fichiers de configuration.

Si le sytème utilise le paquet console-tools, alors le fichier /etc/console-tools/config sera présent. Afin de charger la police adéquate, vous aurez besoin d'inclure la ligne : SCREEN_FONT=lat0-16 APP_CHARSET_MAP=iso15

Si vous utilisez le paquet kbd vous aurez besoin de modifier le ficher /etc/kbd/config en ajoutant, par exemple : CONSOLE_FONT=lat0-16.psfu.gz # CONSOLE_MAP=iso15 CONSOLE_MAP=8859-15_to_uni

Bien sûr, la police lat0-16 n'est pas la seule disponible, depuis le paquet console-data version 1999.08.29-11.1, il y a un bon nombre de polices latin9 (cf. latin0) disponibles dans /usr/share/consolefonts. D'autres personnes préfèrent la police lat0-sun16, c'est juste une histoire de goût.

Si vous utilisez le paquet svgatextmode (obsolète depuis l'existence de framebuffer) vous pourriez configurer le police de la console aussi en changeant le fichier /etc/TextConfig.

NOTE : Si vous utilisez le périphérique framebuffer pour la console texte, lisez la note qui concerne la configuration de console-tools dans le fichier /etc/console-tools/config. À la base, la définition globale ne devrait fonctionner que pour le premier terminal virtuel, vous avez besoin de déclarer explicitement la police pour les autres terminaux comme ceci : SCREEN_FONT_vc1=lat0-16 SCREEN_FONT_vc2=lat0-16 SCREEN_FONT_vc3=lat0-16 .... Configurer X11

Pour que l'environnement graphique puisse aussi représenter l'euro vous avez besoin de : Polices qui incluent le symbole euro ; Une bonne configuration du clavier.

XFree86 inclut des polices prêtes pour l'euro depuis la version 3.3.3.1, comme, par exemple 7x13euro.bdf ou 7x13euroB.bdf. Toutefois, l'utilisateur ne devrait pas les avoir d'installées puisque les polices ISO-8859-15 ne font pas parti de l'installation par défaut d'XFree86.

Debian 3.0 fournit aussi des configurations clavier adéquates pour la plupart de lagages. Cependant, certains langages ne contiennent pas un support de l'euro complet à cause de keycode n'étant pas définis convenablement. Si votre language ne se comporte pas correctement sous X, veuillez soumettre un (Ndt : « whishlist » en anglais) contre le paquet xlibs (les bogues connus relatifs à ce problème sont : , et ) Configuration du clavier

La configuration du clavier est plus simple que pour la console. Si vous utilisez les extensions Xkb dans le serveur X (par défaut depuis 3.3.5) vous pouvez la changer en utilisant l'option XkbLayout dans la section InputDevice du fichier de configuration de X. Ce fichier est localisé sous /etc/X11/XF86Config pour XFree86 3.3.6 et /etc/X11/XF86Config-4 pour XFree86 4.1.

Il y a plusieurs façons d'ajouter la définition de l'euro : En changeant les extensions xkb incluses dans le serveur X . En chargeant un nouveau modmap (en utilisant /xmodmap/).

Si vous changez le modmap avec /xmodmap/ et que ça fonctionne, c'est une solution temporaire, car après avoir redémarré le serveur les changements seront perdus. Pour avoir cette définition chargée au démarrage vous devez ajouter la définition suivante dans votre Xmodmap  : $ xmodmap -pke > ~/.xmodmap

NOTE : Xmodmap est obsolète, veuillez utiliser les extensions Xkb. Les prochaines versions de XFree86 pourraient même ne plus supporter les définitions des utilisateurs xmodmap.

NOTE : le paramètrage des locales doivent être fait avant que ne démarre Xsession, donc assurez-vous que votre configuration est chargée correctement avant d'exécuter startx (Si vous utilisez un gestionnaire de session comme gdm vous pouvez choisir ses paramètres).

NOTE : Le symbole utilisé pour le signe euro varie d'Xfree 3.3.6 (serveur standard X sous in Debian 2.2) à Xfree 4.1 (serveur standard X sous Debian 3.0). Sous Xfree 3.3.6 vous devrez utiliser currency à la place de EuroSign comme définition du symbole. Cela a changé sous Xfree 4.1 qui à incorporé le support du caractère EuroSign. Si vous utilisé le même symbole currency sous Xfree 4.1, à cause du support de l'UTF, cela ne repésentera pas forcément correctement le caractère euro. Xfree sous Debian 3.0

Si vous utilisez Debian Woody (3.0), qui inclut XFree86 4.1, vous avez seulement besoin de l'avoir correctement configuré dans une langue de la zone euro, Ceci est fait dans le fichier de configuration /etc/X11/XF86Config-4. L'entrée du symbole euro devrait fonctionner correctement (Si non,s'il vous plaît, faites un rapport de bogue).

Vous pouvez aussi faire quelques changements pour fournir le support de l'euro si votre système ne fonctionne pas correctement. Vous pouvez changer les extensions Xkb (dans les fichiers /etc/X11/xkb/symbols) pour inclure le support de l'Euro avec quelque chose dans le genre de : key <AD03> { [ e, E ], [ EuroSign, cent ] };

Ceci, cependant, devrait être déjà fourni dans tous les fichiers des langues de la zone euro (es, de...)

Ou, vous pouvez changer votre définition de Xmodmap avec : $ echo "keycode 0x1A = e E EuroSign cent" | xmodmap -

Si vous n'utilisez pas les extensions Xkb vous devrez changer les définitions disponibles dans le répertoire /usr/share/xmodmap/ (le nom du fichier est xmodmap.XXX avec un XXX adéquat à votre langue).

Puisque les extensions Xkb est le comportement par défaut, les fichiers Xmodmap fournis par Xfree86 4.1 ne devraient pas être mis à jour correctement. Vérifiez si la ligne relative à keycode 26 (caractère E) ressemble à la ligne suivante : keycode 26 = e E EuroSign cent Xfree sous Debian 2.2

Si vous utilisez des versions égales à, ou antérieures à la Debian potato (2.2), la langue ne devrait pas être définie correctement. Si une mise à jour vers une version supérieur d'XFree86 est impossible, vous pouvez utiliser n'importe quelle approche précédente pour ajouter le support pour la définition de l'euro.

Vous pouvez changer les extensions Xkb (/usr/X11R6/lib/X11/xkb/symbols) pour inclure le support currency avec des lignes du genre de key <AD03> { [ e, E ], [ currency, cent ] };

Ou, vous pouvez changez votre définition d'Xmodmap avec : $ echo "keycode 0x1A = e E currency cent" | xmodmap -

Vous pouvez aussi utiliser les définitions disponibles dans le répertoire /usr/share/xmodmap/ (changez le fichier approprié à votre langage) si vous n'utilisez pas les extensions. Vérifiez que la ligne relative au keycode 26 (caractère E) ressemble à la ligne suivante : keycode 26 = e E currency cent

Les définitions Xmodmap de Debian 2.2 pour les langues dans la zone euro contiennent le caractère euro (en utilisant le symbole currency), Donc vous pouvez utiliser le xmodmap suivant /usr/share/xmodmap/xmodmap.XX (XX est le langage que vous voulez utiliser). Configuration des polices

Pour représenter le symbole euro sous X vous aurez besoin d'avoir les polices adéquates pour représenter le codage ISO-8859-15 (si vous n'utilisez pas UTF-8). Vous pouvez voir quelles polices pourront être utilisées pour ça en faisant : $ xlsfonts | grep 'iso8859-15$'

Dans une installation Debian par défaut, la seule police qui fournit cet encodage est la police fixed (misc), qui devrait être adéquate pour un xterm mais pourrait ne pas se montrer agréable dans beaucoup d'autres applications. Si bien que, Debian 3.0 (woody) fournit les paquets de polices transcoded qui incluent d'autres polices ISO-8859-15. Les paquets sont xfonts-base-transcoded, xfonts-75dpi-transcoded, xfonts-100dpi-transcoded et vous pouvez les installer en lançant apt-get install 'xfonts.*transcoded'.

Certaines personne pourraient ne pas vouloir installer ces paquets parce qu'ils sont assez gros, à peu près 15 Mo. Il y a une version plus légère disponible, sans les polices non-15, qui fait moins de 3 Mo. Vous pouvez le trouver ici . Notez qu'il ne fait pas partie de la distribution standard de Debian.

(FIXME : Si les utilisateurs en ont vraiment besoin, les paquets transcoded pourront être coupés en deux.) Potato, XFree86 3.X

Veuillez noter que si vous utilisez Debian 2.2 vous ne pouvez installer ces paquets sans mettre à jour le système puisqu'ils dépendent d'XFree86 4.

Les paquets suivants fournissent aussi des polices ISO-8859-15 : xfonts-jmk, xfonts-arphic-bsmi00lp, xfonts-arphic-gbsn00lp, xfonts-arphic-bkai00mp et xfonts-arphic-gkai00mp.

Le paquet xfonts-cyrillic fournit aussi (pour XFree86 3.3.6) quelques polices ISO-8859-15.

FIXME : Vérifiez cette dernière phrase (qui semble être juste vus les fichiers de données que les utilisateurs du programme euro-test m'ont envoyés.)

NOTE : Soyez sûr que vous n'avez pas une définition par défaut d'une autre police dans votre fichier .Xdefaults. Par exemple avec *VT100.font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-16

Si vous ne parvenez pas à trouver de polices convenables, vous pouvez utiliser les polices ISO10646-1 qui sont un super-jeu des différentes polices ISO8859-X et sont aussi fournies sous Debian. Markus Kuhn fournit un script appelé ucs2any.pl et qui propose : Ce script Perl vous permet de générer à partir d'une police BDF ISO10646-1 d'autres polices BDF dans n'importe quel encodage possible. Cette fois vous pouvez dériver d'une simple police principale ISO10646-1 tout un jeu de polices 8-bit dans tous les encodages ISO 8859 et divers autres.

Il y a des polices Unicode disponibles pour X Window sur . Dans ucs-fonts.tar.gz et ucs-fonts-75dpi100dpi.tar.gz, il y a Times, Helvetica, Lucida, Utopia, New Century, Schoolbook, Courier... polices pouvant être utilisées. Vous pouvez aussi utiliser le programme yudit pour changer ces polices.

Il y a des paquets Debian disponibles pour installer les polices unicode de Kuhn. FIXME : Quels sont leurs noms ?

Il y a d'autres polices ISO-8859-15 utilisables pour XFree86 3.3.6 sur , même si elles sont fournies principalement pour les utilisateurs Estoniens ce sont des polices correctes et elles incluent des modifications de helvetica, times, courier et une police pour terminal. Le support de l'Euro dans les applications

FIXME : Besoin de textes Pourquoi parler des applications ?

Même si vous avez le symbole euro qui marche corectement (vous pouvez l'entrer au clavier et le voir sur votre écran) vous avez toujours besoin de voir si vos applications fonctionnent correctement.

Quelques problèmes apparaissent ici. Les applications graphiques qui utilisent leurs propres polices et pourraient donc être incapable de représenter le symbole euro (même si votre entrée est correcte) parce qu'elles n'en ont pas de représentation interne.

Conseil : vous vous simplifierez la vie si vous lancez un programme de sélection de polices comme gtkfontsel (paquet gtkfontsel) et si vous réglez le masque des polices visible sur ISO-8859-15.

Toutefois, le codage fait par le programme pour les textes et les données qu'ils utilisent est aussi un problème important. S'il est impossible de représenter intérieurement le jeu de caractère utilisé (ISO-8859-15 ou Unicode), l'euro ne devrait pas fonctionner totalement. Donc, une chose est d'utiliser ISO-8859-15 pour les barres de menus, les messages des programmes..., c'en est une autre d'utiliser ISO-8859-15 pour les données utilisées par le programme (texte, informations sur les bases de données...). Applications connues avec le support de l'euro

Les applications suivantes sont connues pour avoir le support du caractère euro : Terminaux: XTerm, Rxvt et ses dérivées, GNOME Terminal, Eterm ; Éditeurs: gVim, Emacs, XEmacs, Kword, Mcedit, kedit, kwrite ; Note : Emacs21 (sous Woody) supporte les documents en latin9. Programmes utilisant GTK+/GLib ; Environnements de bureaux: GNOME et KDE ; Konqueror, Mozilla ; Mutt ; Apache ; LaTeX ; Groff (nroff, troff, grotty) ; A2ps ; Staroffice 5.0 (non fournie sous Debian mais il y a une FAQ à ce sujet), il semble qu'il utilise ses propres polices, donc vous ne pouvez utiliser les polices installées localement, toutefois il semblerait que la police « Conga » comporte le caractère euro ; LyX (1.1.6fix4 et supérieures) ; Perl. XTerm et ses dérivés

Si le caractère euro n'est pas affiché dans votre émulateur de terminal, vous pouvez changez la police par défaut en changeant soit le fichier de configuration de l'utilisateur(.Xdefaults ou .Xresources) ou le fichier de configuration du système /etc/X11/app-defaults/XTerm : *font: -misc-fixed-medium-r-normal-*-*-120-*-*-c-*-iso8859-15 *VT100*font2: -misc-fixed-medium-r-normal-*-*-70-*-*-c-*-iso8859-15 *VT100*font3: -misc-fixed-medium-r-normal-*-*-100-*-*-c-*-iso8859-15 *VT100*font4: -misc-fixed-medium-r-normal-*-*-120-*-*-c-*-iso8859-15 *VT100*font5: -misc-fixed-medium-r-normal-*-*-140-*-*-c-*-iso8859-15 *VT100*font6: -misc-fixed-medium-r-normal-*-*-200-*-*-c-*-iso8859-15

Dans /etc/X11/app-defaults/XTerm, assurez-vous que vous remplacez les anciennes lignes avec ces options.

Après avoir modifié un fichier .Xdefaults, rechargez-le avec xrdb -merge ~/.Xdefaults. (de même pour .Xresources.)

Notez que les programmes dérivés utilisent aussi comme ressources la police définie par défaut, donc la procédure est analogue. GNOME Terminal

Vous pouvez configurer le terminal de Gnome pour utiliser une police prête pour l'euro en changeant la police dans le menu Configuration->Preferences. RXVT et ses dérivées

Rxvt et les programmes dérivant de lui (e.g. Aterm, Wterm) utilisent aussi comme ressource les polices de ~/.Xresources ou ~/.Xdefaults, regardez plus haut comment c'est fait pour XTerm. Eterm

Changez la configuration de l'utilisateur (~/.Eterm/user.cfg) avec: <Eterm-0.9.1> begin attributes scrollbar_type motif scrollbar_width 10 font default 2 font proportional 0 font 0 -b&h-lucidatypewriter-medium-r-normal-*-*-80-*-*-m-*-iso8859-15 font 1 -b&h-lucidatypewriter-medium-r-normal-*-*-100-*-*-m-*-iso8859-15 font 2 -b&h-lucidatypewriter-medium-r-normal-*-*-120-*-*-m-*-iso8859-15 font 3 -b&h-lucidatypewriter-medium-r-normal-*-*-140-*-*-m-*-iso8859-15 font 4 -b&h-lucidatypewriter-medium-r-normal-*-*-180-*-*-m-*-iso8859-15 end attributes gVim

~/.vimrc ou /etc/vim/vimrc: set guifont=-b&h-lucidatypewriter-medium-r-normal-*-*-140-*-*-m-*-iso8859-15 set encoding=iso-8859-15 Emacs, XEmacs

GNU Emacs 21 et XEmacs 21 fournissent le support pour latin9. Toutefois, les versions précédentes d'Emacs21, (Mule) n'affichent pas d'options pour sauvegarder des documents utilisant latin9 (latin0) ou ISO-8859-15.

Vous devriez avoir besoin, toutefois, de changer la police qu'Emacs lance pour afficher le caractère Euro sous X windows. Pour ce faire, lancez emacs avec une police euro avec l'argument -fn ou configurez-le pour toujours utiliser un police donnée en modifiant ~/.Xresources: Emacs.default.attributeFont: -*-Lucidatypewriter-Medium-R-*-*-*-110-*-*-*-*-iso 8859-15

Vous pouvez aussi essayer d'ajouter les lignes suivantes dans .emacs, ou .xemacs/init.el pour XEmacs : (set-face-font 'default '"-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-15") GNOME et GTK+

Les applications Gnome dans la plupart des cas, supportent un autre jeu de caractères sans aucun problème. Cela dépend de votre configuration des locales, vous devrez probablement changer la police par défaut. Veuillez démarrer (sous Gnome) le centre de contrôle et choisissez une police avec l'encodage iso8859-15. Si vous n'avez pas gnomecc d'installé, vous pouvez faire ce changement manuellement, en créant un fichier gtkrc personnalisé dans votre répertoire personnel (~/.gtkrc) et en ajoutant les lignes ci-dessous.

Mieux encore, changez les paramètres système de GTK+ dans /etc/gtk/gtkrc. Vous pouvez le faire de deux façons : En liant (ou copiant) /etc/gtk/gtkrc.iso-8859-15 dans /etc/gtk/gtkrc (recommandé). Sous Debian ce fichier contient : style "gtk-default-iso-8859-15" { fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-15,\ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-15,*-r-*" } class "GtkWidget" style "gtk-default-iso-8859-15"  ; En ajoutant les lignes dont on a besoin directement dans /etc/gtk/gtkrc (non recommendé mais parfois nécessaire).

Ici il y a quelques lignes que vous pouvez ajouter dans le fichier de configuration : style "user-font" { font="-monotype-arial-medium-r-normal-*-12-*-*-*-p-*-iso8859-15" } widget_class "*" style "user-font" KDE

Le support de l'euro sous KDE fonctionne comme décrit sur . Vous devez configurer votre environnement XFree comme décrit plus haut. Les utilisateurs ont rapporté que le support de l'euro de KDE fonctionne sous Potato en utilisant des polices d'XFree86 3.3.6 personnalisées (comme décrit dans .

Soyez prudents quand vous modifiez la locale et utilisez les alias définis dans la bibliothèque X puisque, comme décrit sur , cela risque de ne pas fonctionner avec le jeu de caractère égal à ISO-8859-15, il faut qu'il soit 'ISO8859-15'. Cette solution est abordée plus haut dans .

Une fois terminée, vous devez allez dans le Centre de Contrôle de KDE::Personnalisation::Pays & Langue. Et vous devez déclarer votre pays et votre jeu de caractères « Jeu de caractère: iso8859-15 ».

Lors de l'écriture de ce document, j'ai d'abord pensé, en lisant que KDE ne fonctionnait pas avec le caractère euro. Mais vous n'avez qu'à le configurer correctement. Vous pouvez . Si cela ne fonctionne pas pour vous vérifiez votre jeu de caractères et les polices disponibles.

Néanmoins, il y a quelques bogues connus à cause du paquet localesconf qui ne configure pas l'environnement KDE correctement. Vous devriez prendre votre temps et lire le bug . et le bug . Apache Apache

Vous devriez changer les paramètres de votre serveur web si vous voulez présenter quelques sites avec un jeu de caractères non-ISO8859-1,à moins que vous vouliez que vos utilisateurs changent leurs paramètres manuellement à chaque fois. Les paramètres suivants (les mettre dans un fichier .htaccess) disent aux navigateurs le jeu de caractères qu'ils doivent utiliser : AddType text/html;charset=ISO-8859-15 html

Vous pouvez utilisez directement le caractère euro dans vos documents, ces informations peuvent être incluses dans les documents HTML DTD. Dans n'importe quel cas vous pouvez utiliser, la représentation HTML 4.0 de l'euro et ne pas configurer Apache. Mutt

Fonctionne remarquablement bien si $LC_TYPE est correctement définie. Si vous rencontrez des problèmes pour le faire fonctionner (i.e. vous avez un système cassé) essayez d'ajouter dans le fichier muttrc (de l'utilisateur ou système) : set charset=iso-8859-15 set send_charset="us-ascii:iso-8859-15:iso-8859-1:utf-8" LaTeX

Il y a différentes façons d'introduire le caractère euro sous LaTeX : Avec le paquet textcomp et la macro \texteuro (police TS1) ; Avec le paquet marvosym, utilisant des polices type1 ; Avec le paquet eurosym utilisant des polices metafont.

Ainsi, vous pouvez utiliser le paquet marvosym qui est inclus dans tetex-base (/usr/share/texmf/tex/latex/misc/marvosym.sty). Ce paquet inclut quelques symboles, et l'euro, dans différentes polices (Times, Helvetica et Courier). Bien sûr, vous n'avez pas besoin de pouvoir entrer le caractère euro (ou le voir sous X) puisque les fichiers LaTeX seront traduits en fichiers postscript (pas besoin de polices pour les voir avec xpdf ou d'autres visualiseurs postscript). L'inclure dans vos documents avec \EUR

Debian 3.0 possède aussi le paquet tetex-eurosym qui permet aussi la représentation de l'euro. Vous pouvez utiliser ce paquet même si c'est pour reproduire le symoble Euro sur un système vraiment stable. \texteuro

Pour représenter le centime vous avez besoin d'utiliser textcomp.sty qui est inclus dans tetex-base.

Un problème est, pourtant, de ne pas avoir le codage d'entrée pour inclure ce caractère directement. Vous pouvez utiliser, toutefois les fichiers fournis dans , et les placer dans /usr/share/texmf/tex/latex/base/ afin de pouvoir faire ainsi.

FIXME: Wishlist bug against tetex-base so they get included. (?) Kword

Kword inclut un document dans le dossier de démonstration appelé eurosign.kwd qui peut être utilisé pour déterminer si les polices sont correctement installées. Il est disponible dans /usr/share/doc/kword/examples/eurosign.kwd.gz

Note : Ce fichier était disponible depuis Kword 1.1.1-5, voir . LyX

Depuis la version 1.1.6fix4-2, LyX ajoute le support pour le codage en latin3, latin4 et latin9. groff (nroff, troff, grotty)

Il fournit latin1, ascii8 et utf8 comme dispositif. Afin de générer des pages de manuel en latin0 il semblerait que le dispositif ascii8 doit être utilisé.

Les dernière versions de groff (1.18, disponible sur Sarge ou Sid) fournissent les glyphs pour le signe Euro (eu pour le symbole Euro officiel et Eu comme la variante d'un glyph spécifique à la police). Debiandoc-sgml

Le paquet debiandoc-sgml a été corrigé depuis Avril 2002 réparant le et supporte maintenant les locales @euro. Tgif

tgif peut aussi supporter le caractère euro. Vous devrez ajouter les lignes suivantes dans votre .Xdefaults ou pour le système app-defaults (sous /usr/share/apps/tgif/app-defaults/) : Tgif.AdditionalFonts: \n\ new century schoolbook-medium-r-normal,iso8859-15,Helvetica2-Light\n\ new century schoolbook-bold-r-normal,iso8859-15,Helvetica2-Bold\n\ new century schoolbook-medium-i-normal,iso8859-15,Helvetica2-Italic\n\ new century schoolbook-bold-i-normal,iso8859-15,Helvetica2-BoldItalic

Cela devrait ajouter une autre police (Helvetica2) dans votre menu de polices. Pour avoir un signe Euro faites Esc-$. Répétez cette action pour toutes les polices iso8859-15 que vous voulez ajouter. Perl

Perl gère l'euro. Si un message du type « This locale is not supported » lorsque vous utilisez une locale euro, c'est que votre système est mal configuré et qu'il ne reconnaît pas les locales euro (voir ).

Perl est utilisé par un grand nombre de scripts d'administration (y compris Debconf) ; attendez-vous à rencontrer cette erreur si vous n'avez pas configuré correctement votre système (pour ce qui concerne les locales). Applications qui ne reconnaissent pas le caractère euro

Les applications suivantes (et leur version associée) semblent ne pas fonctionner avec le caractère euro : LyX 1.1.6fix3. ISO-8859-15 n'est pas inclus dans /usr/share/lyx/encodings et /usr/share/lyx/languages montre ISO8859-1 pour les langues de la zone euro (par exemple, pour l'espagnol). Les problèmes avec LyX sont semblables à ceux de LaTeX, il y a besoin d'un nouveau inputenc. Vérifiez, toutefois , vous aurez besoin, dans certains cas de polices type1 pour LaTeX pour pouvoir imprimer le caractère convenablement (actuellement pas inclus) ; Xfig 3.2.3 ; GnuPG, ne supporte que ISO-8859-1, ISO-8859-2, koi8-r et utf-8 (voir l'option --charset dans ) ; Les outils SGML (nsgml, sgml-tools La plupart des outils vous avertiront si vous utilisez une locale @euro, le paquet nsgmls n'a accepte pas le codage iso-8859-15 ; Foire aux Question Je vois un étrange caractère à la place de l'euro

Si vous voyez un caractère qui ressemble à un cercle avec quatre lignes s'étendant en dehors (le symbole international pour le currency) et non le symbole euro, c'est que la police que vous utilisez ne représente pas correctement les euros mais votre clavier l'envoie correctement. Veuillez vérifier votre/vos environnement/applications afin de voir si vous utilisez des polices ISO-8859-15 et non ISO-8859-1. Le caractère euro est perdu en passant de X à la console

FIX : Lancez (sous root) /etc/init.d/console-screen reload (si console-tools est installé), ou lancez setfont -u (si kbd est installé.

RAISON : il y a des polices avec une carte unicode dans les fichiers .psf et d'autres qui ne l'incluent pas. Si ces dernières sont utilisées la carte unicode du noyau Linux se réinitialise et quand vous revenez dans un terminal virtuel X, la carte est tronquée. Le « Keyboard and Console HOWTO » (disponible dans /usr/share/doc/HOWTO/en-txt/Keyboard-and-Console-HOWTO.txt.gz si vous avez le paquet doc-linux) donne un peu plus de détails sur ceci. Comment puis-je savoir si mon clavier est correctement configuré ?

(Console terminal) Vous devriez voir « currency » en faisant : $ dumpkeys |grep -i currency

(environnement graphique X) Vous devriez voir « currency » en faisant : $ xmodmap -pke | grep -i EuroSign Comment puis-je voir si je peux représenter le caractère euro correctement ?

Si vous utilisez ISO-8859-15 : $ printf "\xa4\n"

Si vous utilisez UTF-8 : $ printf "\xe2\x82\xac\n"

Bien sûr, vous pouvez aussi voir si les caractères euro et centime sont représentés correctement en allant voir un document qui les inclut. euro-support inclut une représentation de ceux-ci dans /usr/share/doc/euro-support/examples/characters, concaténer seulement le fichier et voyez s'ils sont affichés correctement à l'écran. J'utilise un framebuffer, puis-je représenter l'euro en console ?

Oui vous pouvez, (depuis le ) vous avez seulement besoin d'utiliser le paquet kbd version 0.99 ou suivante. Je peut entrer le caractère euro lorsque je lance « euro-test » mais cette entrée est perdue lorsque X est redémarré.

Le programme euro-test affichera le keycode correct lors de l'entrée du caractère euro en utilisant xmodmap. Si vous avez la possibilité d'utiliser les combinaisons clavier pour entrer le caractère Euro après avoir utiliser le programme mais que vous ne pouvez pas le refaire après que vous ayez redémarrer X, le problème alors vient de votre définition du clavier qui n'est pas correctement configurée.

Sous Debian 3.0 (qui fournit xfree86-common version 4.1.0-16) la plupart des disposition xkb incluent le signe Euro Seulement la disposition gb (Grande-Bretagne) semblerait être manquante un , mais, dans tous les cas, vous pouvez récupérer un nouveau /etc/X11/xkb/symbols/gb depuis qui inclues le signe Euro. mais si vous n'aimez pas cette solution, alors envoyez un contre le paquet xlibs. Quelle est la solution à long terme pour ce résultat ?

Se diriger vers le codage UTF-8 et séparer de la localisation et la représentation (plus de XX_XX.ISO-8859-X). À propos de ce document Pourquoi ce document ?

J'ai (Javier) réfléchi pendant un certain temps à comment fournir une configuration automatique de l'euro d'après les lignes du script de configuration automatique fait parcastellanizar dans le paquet user-es. Après avoir parcouru quelques informations sur le problème et lu quelques discussions dans les listes debian concernées comme , et , j'ai décidé de publier un questionnaire pour voir comment était le support de l'euro chez les espagnols (). Les résultats indiquaient que beaucoup de gens n'avaient pas configuré correctement leur système alors que Debian 2.2 (sortie il y a plus d'un an) le permettait.

Ce document est le premier pas vers l'écriture d'un outil de configuration automatique du système de l'utilisateur pour un support de l'euro complet. Même s'il suffirait que les utilisateurs Debian passent à UTF-8 il y a un besoin d'une solution à court terme. Références

Les documents suivants complètent celui-ci et sont utiles pour les lecteurs en ce qui concerne l'euro, l'internationalisation et Unicode : . par Tomohiro Kubota, qui introduit les concepts basiques de l'internationalisation et est centré sur l'affichage et l'entrée des caractères avec différents codages (ASCII, ISO-8859, caractères multibytes...) .

Quelques autres références (officielles) :  ; Le document produit par la Commission Européenne. Historique

Liste des changements faits sur ce document. Changements dans 1.1 ;

Correction d'une référence à Linuxdoc ; Correction de fautes à l'aide d'une rustine envoyée par Tommaso Moroni. Changements dans 1.0 ;

correction de fautes ; changement des références de woody en 3.0 ; ajout d'un item dans la FAQ concernant les extensions clavier sous X (bogue de woody) ; mise à jour des informations sur groff, merci à jrfern ; changement de la localisation des symboles à la place correcte (/etc et non /usr/lib/X11) ajout d'une référence des bogues connus de Woody concernant l'euro sous X (généralement en relation avec la disposition GB) ; suppression d'un lien 404. Changements dans 0.92 ;

Mise à jour des informations debiandocsgml ; Application partielle de la rustine envoyée par jrfern (plus tard) ; Ajout des information concernant tgif fournies par J.I. van Hemert pour clore le bug #143054 ; Changements dans 0.91 ;

Mise à jour des informations sur KDE en incluant les liens vers les deux rapports de bug ; Mise à jour des infos sur LyX (Il n'est pas euro-consentant) ; Ajout de Perl à la liste des programmes non euro-consentant (mais?) ; Changements dans 0.9 ;

Ajout des notes sur emacs 21 ; Suppression des chapitres répétés (Pourquoi tous ce bruit... ? et Pourquoi ce document ?) ; Ajout des informations sur user-euro-es ; Modification de currency à symbole Euro (en discussion) ; Reécriture majeure de la section XFree afin de distinguer clairement les versions d'XFree (currency et symbole Euro) ; Reécriture de la section locale pour séparerles informations de woody et potato. Changements dans 0.8 ;

Ajout des information concernant tetex-eurosym sur stable envoyées par Martin Schulze ; Représentation HTML fixée, suggérée par Bernd Eckenfels ; Ajout d'une note concernant l'utilisation de kbdconfig, suggérée par Bernd Eckenfels ; Ajout d'un remerciement à Guylhem Aznar ; Réparation du guillemet manquant, envoyé par Cyrille Artho. Changements dans 0.7 ;

Correction et petite réorganistation par Josip Rodin. Changements dans 0.6 ;

Correction des erreurs de grammaire avec rustine envoyée par Matt Kraai. Changements dans 0.5 ;

Ajout des contributions de Juan Rafael Fernández, Miguel Sanjuan, Aurelien Jano, Phillip Siegert, Tomohiro Kubota, Ionel Mugurel et Alexander Steinert ; Déplacement des explications concernant fonty ; Réécriture de la présentation des applications supportées pour améliorer la lisibilité ; Réécriture des remerciements (Je deviens sentimental:) Changements dans 0.4 ;

Ajout des contributions soumises par Juan Rafael Fernández ; Correction d'erreurs découvertes par Carlos Valdivia ; Ajout de plus d'information sur le paquet euro-support. Changements dans 0.3 ;

Ajout d'informations concernant LaTeX fournient par Juan Rafael Fernández ; Ajout d'informations et de corrections contribuées par Eduard Bloch. Changements in 0.2 ;

Ajout d'informations concernant le standard euro ; Ajout de liens vers des fils de discussions de listes debian ; Corrections de quelques erreures. Solutions en cours

C'est une liste de solutions en cours envoyées par des utilisateurs qui devraient être vérifiées et documentées : Modifier la section relative à TeX, LaTeX et à l'interface de LyX. Les solutions Entée/Sortie sont mélangées, et l'utilisation de latin0 et l'euro ne sont pas le même problème (jrfern) ; Parler de comment changer les polices et de la méthode préférée pour enregistrer une police sous woody : defoma (faire un howto, en tant qu'utilisateur j'exécute seulement type1inst et mkfontdir) (jrfern) ; Il semblerait que les locales *@euro, ispell et tous les programmes qui l'appellent (emacs, mc..) ont besoin de -t latin1 pour fonctionner correctement. À vérifier. (jrfern) Remerciements

J'aimerais saisir l'opportunité pour remercier toutes les personnes qui ont contribués (sciemment ou non) aux informations contenues dans ce HOWTO, spécialement : Juan Rafael Fernández (jrfern), qui a écrit le premier brouillon de l'euro-howto en espagnol. il a aussi contribué à un bon nombre de corrections et de suggestions afin d'améliorer ce document. Hue-Bond, qui a répondu lui-même à quelques FAQ dans la liste de discussions debian-user-spanish. Jose Carlos Garcia Sogo, qui a montré quelques très bons aperçus le 9 mai sur la liste de discussion debian-users-spanish concernant cette solution. Ionel Mugurel qui a fait une longue explication sur la solution euro le 14 septembre 2000 sur la liste de discussion debian-i18n et m'a fourni les codages d'entrée pour LaTeX. Guylhem Aznar le rédacteur de . Présenter dans un article en 1998. Eduard Bloch, le rédacteur de . Tomohiro Kubota qui m'a éclairé sur quelques problèmes en jouant avec les locales et leurs risques. Pablo de Vicente, de l'équipe de traduction espagnole de KDE qui a fait des efforts pour me prouver que j'avais tort quand je disais que KDE ne supportait pas l'euro. Thomas Roessler, qui a contribué à la section locales et me l'a fait séparer en deux.

Et bien sûr, toute les autres personnes qui ont contribué aux corrections/suggestions dont est fait ce HOWTO. Si vous, lecteurs, vous avez à remercier quelqu'un, ce sont eux, pour leur aide et leur savoir, moi je n'ai fait ici que les réunir. Fichier de définitions pour LaTeX

Ionel Mugurel a fourni le fichier de code de l'entrée pour latin9 et latin10 (pas encore inclus dans Debian). Latin9.def

%% %% This is file `latin9.def', %% %% This is a new file. %% %% Copyright 2001 %% Ionel Mugurel Ciobica %% %% Permision granted to copy, distribute and redistribute this file. %% %% Because of the euro symbol the tetex-eurosym package has to be %% installed. Otherwise an alternative is made to "draw" the character %% on place. Uncomment that line and comment the next one. %% %% Because of \textdegree and many other \text... commands, %% you might want to use \usepackage{textcomp} in your document. %% %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \ProvidesFile{latin9.def} [2001/10/07 v0.01 Input encoding file (test version: still liable to change)] \makeatletter \DeclareInputText{160}{\nobreakspace} \DeclareInputText{161}{\textexclamdown} \DeclareInputText{162}{\textcent} \DeclareInputText{163}{\pounds} %\DeclareInputText{164}{{\sffamily C\makebox[0pt][l]{\kern-.70em\mbox{--}}\makebox[0pt][l]{\kern-.68em\raisebox{.25ex}{--}}}} \DeclareInputText{164}{\euro} \DeclareInputText{165}{\textyen} \DeclareInputText{166}{\v S} \DeclareInputText{167}{\S} \DeclareInputText{168}{\v s} \DeclareInputText{169}{\copyright} \DeclareInputText{170}{\textordfeminine} \DeclareInputText{171}{\guillemotleft} \DeclareInputMath{172}{\lnot} \DeclareInputText{173}{\-} \DeclareInputText{174}{\textregistered} \DeclareInputText{175}{\@tabacckludge={}} \DeclareInputText{176}{\textdegree} \DeclareInputMath{177}{\pm} \DeclareInputMath{178}{^2} \DeclareInputMath{179}{^3} \DeclareInputText{180}{\v Z} \DeclareInputMath{181}{\mu} \DeclareInputText{182}{\P} \DeclareInputText{183}{\textperiodcentered} \DeclareInputText{184}{\v z} \DeclareInputMath{185}{^1} \DeclareInputText{186}{\textordmasculine} \DeclareInputText{187}{\guillemotright} \DeclareInputText{188}{\OE} \DeclareInputText{189}{\oe} \DeclareInputText{190}{\" Y} \DeclareInputText{191}{\textquestiondown} \DeclareInputText{192}{\@tabacckludge`A} \DeclareInputText{193}{\@tabacckludge'A} \DeclareInputText{194}{\^A} \DeclareInputText{195}{\~A} \DeclareInputText{196}{\"A} \DeclareInputText{197}{\r A} \DeclareInputText{198}{\AE} \DeclareInputText{199}{\c C} \DeclareInputText{200}{\@tabacckludge`E} \DeclareInputText{201}{\@tabacckludge'E} \DeclareInputText{202}{\^E} \DeclareInputText{203}{\"E} \DeclareInputText{204}{\@tabacckludge`I} \DeclareInputText{205}{\@tabacckludge'I} \DeclareInputText{206}{\^I} \DeclareInputText{207}{\"I} \DeclareInputText{208}{\DH} \DeclareInputText{209}{\~N} \DeclareInputText{210}{\@tabacckludge`O} \DeclareInputText{211}{\@tabacckludge'O} \DeclareInputText{212}{\^O} \DeclareInputText{213}{\~O} \DeclareInputText{214}{\"O} \DeclareInputMath{215}{\times} \DeclareInputText{216}{\O} \DeclareInputText{217}{\@tabacckludge`U} \DeclareInputText{218}{\@tabacckludge'U} \DeclareInputText{219}{\^U} \DeclareInputText{220}{\"U} \DeclareInputText{221}{\@tabacckludge'Y} \DeclareInputText{222}{\TH} \DeclareInputText{223}{\ss} \DeclareInputText{224}{\@tabacckludge`a} \DeclareInputText{225}{\@tabacckludge'a} \DeclareInputText{226}{\^a} \DeclareInputText{227}{\~a} \DeclareInputText{228}{\"a} \DeclareInputText{229}{\r a} \DeclareInputText{230}{\ae} \DeclareInputText{231}{\c c} \DeclareInputText{232}{\@tabacckludge`e} \DeclareInputText{233}{\@tabacckludge'e} \DeclareInputText{234}{\^e} \DeclareInputText{235}{\"e} \DeclareInputText{236}{\@tabacckludge`\i} \DeclareInputText{237}{\@tabacckludge'\i} \DeclareInputText{238}{\^\i} \DeclareInputText{239}{\"\i} \DeclareInputText{240}{\dh} \DeclareInputText{241}{\~n} \DeclareInputText{242}{\@tabacckludge`o} \DeclareInputText{243}{\@tabacckludge'o} \DeclareInputText{244}{\^o} \DeclareInputText{245}{\~o} \DeclareInputText{246}{\"o} \DeclareInputMath{247}{\div} \DeclareInputText{248}{\o} \DeclareInputText{249}{\@tabacckludge`u} \DeclareInputText{250}{\@tabacckludge'u} \DeclareInputText{251}{\^u} \DeclareInputText{252}{\"u} \DeclareInputText{253}{\@tabacckludge'y} \DeclareInputText{254}{\th} \DeclareInputText{255}{\"y} \makeatother \endinput %% %% End of file `latin9.def'. latin10.def

%% %% This is file `latin10.def', %% %% This is a new file. %% %% Copyright 2001 %% Ionel Mugurel Ciobîcã %% %% Permision granted to copy, distribute and redistribute this file. %% %% The comma below accent for S, s, T and t doesn't look good %% for large characters. A solution would be to include internal %% support for comma below in the same way like for the dot below, %% so \C{t} to create the t comma below, etc. %% %% Because of the euro symbol the tetex-eurosym package has to be %% installed. Otherwise an alternative is made to "draw" the character %% on place. Uncomment that line and comment the next one. %% %% Latin10 is also comming with support for the German double quotations. %% You have to use babel with a language which support those quotations, %% German and Romanian come now in my mind... %% %% Because of \textdegree you might want to use \usepackage{textcomp} in %% your document. %% %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \ProvidesFile{latin10.def} [2001/10/07 v0.01 Input encoding file (test version: still liable to change)] \makeatletter \DeclareInputText{160}{\nobreakspace} \DeclareInputText{161}{\k A} \DeclareInputText{162}{\k a} \DeclareInputText{163}{\L} %\DeclareInputText{164}{{\sffamily C\makebox[0pt][l]{\kern-.70em\mbox{--}}\makebox[0pt][l]{\kern-.68em\raisebox{.25ex}{--}}}} \DeclareInputText{164}{\euro} \DeclareInputText{165}{\guillemotleft} \DeclareInputText{166}{\v S} \DeclareInputText{167}{\S} \DeclareInputText{168}{\v s} \DeclareInputText{169}{\copyright} \DeclareInputText{170}{\ooalign{S\crcr\hidewidth\raise-.31ex\hbox{\scriptsize,}\hidewidth}} \DeclareInputText{171}{\quotedblbase} \DeclareInputText{172}{\@tabacckludge'Z} \DeclareInputText{173}{\-} \DeclareInputText{174}{\@tabacckludge' Z} \DeclareInputText{175}{\.Z} \DeclareInputText{176}{\textdegree} \DeclareInputMath{177}{\pm} \DeclareInputText{178}{\v C} \DeclareInputText{179}{\l} \DeclareInputText{180}{\v Z} \DeclareInputText{181}{\textquotedblleft} \DeclareInputText{182}{\P} \DeclareInputText{183}{\textperiodcentered} \DeclareInputText{184}{\v z} \DeclareInputText{185}{\v c} \DeclareInputText{186}{\ooalign{s\crcr\hidewidth\raise-.31ex\hbox{\scriptsize,}\hidewidth}} \DeclareInputText{187}{\guillemotright} \DeclareInputText{188}{\OE} \DeclareInputText{189}{\oe} \DeclareInputText{190}{\" Y} \DeclareInputText{191}{\.z} \DeclareInputText{192}{\@tabacckludge`A} \DeclareInputText{193}{\@tabacckludge'A} \DeclareInputText{194}{\^A} \DeclareInputText{195}{\u A} \DeclareInputText{196}{\"A} \DeclareInputText{197}{\@tabacckludge'C} \DeclareInputText{198}{\AE} \DeclareInputText{199}{\c C} \DeclareInputText{200}{\@tabacckludge`E} \DeclareInputText{201}{\@tabacckludge'E} \DeclareInputText{202}{\^ E} \DeclareInputText{203}{\" E} \DeclareInputText{204}{\@tabacckludge`I} \DeclareInputText{205}{\@tabacckludge'I} \DeclareInputText{206}{\^I} \DeclareInputText{207}{\" I} \DeclareInputText{208}{\D} \DeclareInputText{209}{\@tabacckludge'N} \DeclareInputText{210}{\@tabacckludge`O} \DeclareInputText{211}{\@tabacckludge'O} \DeclareInputText{212}{\^O} \DeclareInputText{213}{\H O} \DeclareInputText{214}{\"O} \DeclareInputText{215}{\@tabacckludge'S} \DeclareInputText{216}{\H U} \DeclareInputText{217}{\@tabacckludge`U} \DeclareInputText{218}{\@tabacckludge'U} \DeclareInputText{219}{\^ U} \DeclareInputText{220}{\"U} \DeclareInputText{221}{\k E} \DeclareInputText{222}{\ooalign{T\crcr\hidewidth\raise-.31ex\hbox{\scriptsize,}\hidewidth}} \DeclareInputText{223}{\ss} \DeclareInputText{224}{\@tabacckludge`a} \DeclareInputText{225}{\@tabacckludge'a} \DeclareInputText{226}{\^a} \DeclareInputText{227}{\u a} \DeclareInputText{228}{\"a} \DeclareInputText{229}{\@tabacckludge'c} \DeclareInputText{230}{\ae} \DeclareInputText{231}{\c c} \DeclareInputText{232}{\@tabacckludge`e} \DeclareInputText{233}{\@tabacckludge'e} \DeclareInputText{234}{\^e} \DeclareInputText{235}{\"e} \DeclareInputText{236}{\@tabacckludge`\i} \DeclareInputText{237}{\@tabacckludge'\i} \DeclareInputText{238}{\^\i} \DeclareInputText{239}{\"\i} \DeclareInputText{240}{\d} \DeclareInputText{241}{\@tabacckludge'n} \DeclareInputText{242}{\@tabacckludge`o} \DeclareInputText{243}{\@tabacckludge'o} \DeclareInputText{244}{\^o} \DeclareInputText{245}{\H o} \DeclareInputText{246}{\"o} \DeclareInputText{247}{\@tabacckludge's} \DeclareInputText{248}{\H u} \DeclareInputText{249}{\@tabacckludge`u} \DeclareInputText{250}{\@tabacckludge'u} \DeclareInputText{251}{\^u} \DeclareInputText{252}{\"u} \DeclareInputText{253}{\k e} \DeclareInputText{254}{\ooalign{t\crcr\hidewidth\raise-.31ex\hbox{\scriptsize,}\hidewidth}} \DeclareInputText{255}{\"y} \makeatother \endinput %% %% End of file `latin10.def'. doc-debian-fr-3.1.3.1/doc/debian-l10n-french-faq.sgml0000600000175000017500000026666307605113047021244 0ustar jeromejerome Foire aux questions de la liste debian-l10n-french Patrice Karatchentzeff p.karatchentzeff@free.fr Version 1.12 Ce document est la foire aux questions de la liste de diffusion debian-l10n-french qui a pour but de franciser Debian. Il rassemble les questions les plus fréquemment posées sur la liste, de façon à répondre rapidement à toutes les questions que se posent les nouveaux arrivants. Veuillez donc lire avec attention le document suivant de façon à éviter de poser une question dont la réponse se trouve ci-après. Copyright © 2001-2002 Patrice Karatchentzeff

Contributeurs : Martin Quinson (auteur original de la partie « Traduire pour Debian (et pour le logiciel libre) » Youssef Oualmakran (auteur original de la partie « Comment traduire les descriptions de paquets Debian »)

Ce manuel est distribué dans l'espoir qu'il vous sera utile mais sans aucune garantie. Il est distribué sous la licence « GNU General Public License », version 2 ou suivante.

Pour obtenir cette licence, lisez /usr/doc/copyright/GPL dans votre distribution Debian GNU/Linux ou sur la toile La vie de la liste

Où trouver cette FAQ ?

Vous trouverez les sources (au format sgml debian-doc) de cette FAQ sur le serveur cvs de Debian :

/cvs/webwml/french/international/french/debian-l10-french-faq.sgml

(voir « Comment récupérer un document ? ») et en ligne sur le serveur de Debian à l'adresse :

Pour contribuer, me contacter directement ou poster sur debian-l10n-french. Comment lire cette FAQ ?

J'ai essayé, suite à différentes remarques, de satisfaire tout le monde. Du coup, chaque point important est divisé en deux parties : une partie destinée à celui qui a besoin de l'information rapidement et sans fioriture et une autre plus développée avec explications techniques à la clé. Comment s'abonner ? se désabonner ?

Tout est détaillé dans la page .

Si vous n'avez pas accès à http, il vous suffit d'envoyer un courriel à debian-l10n-french-request@lists.debian.org avec DANS LE CORPS DU MESSAGE :

subscribe <votre_adresse_électronique>

Pour se désabonner, la procédure est indiquée sur chacun des courriels reçus de la liste de diffusion. Il vous suffit d'envoyer un courriel à debian-l10n-french-request@lists.debian.org avec DANS LE CHAMP SUJET :

unsubscribe Comment se règlent les différends ?

À coups de poings virtuels, bien sûr :-)

En fait, en cas de désaccord sur une traduction (un terme, un sens général...), on fait un vote des gens inscrits. Un inscrit participant vaut une voix. Tout le reste ne vaut rien. Personne ne vaut plus qu'un autre. La démocratie, quoi :-).

Bon, le tout est d'arriver à un consensus pour pouvoir continuer. Ne pas oublier quand même que l'on n'est pas là pour se battre sur la terminologie mais pour faire avancer la francisation de Debian.

Le pouvoir ici se résume à la traduction de documents en français. Et uniquement cela. Pour tout le reste du projet Debian, la liste ici n'a aucun pouvoir.

Il y a quand même une règle non écrite en cas de litige profond : c'est au final toujours celui qui est l'auteur du document qui peut imposer son point de vue en vertu du fait que c'est lui qui a fait l'effort de créer le premier document. Bien sûr, il est rare d'en arriver à de telles extrémités... Je n'ai plus le temps de (ou je ne veux plus) participer

Il se peut que, débordé par votre vie professionnelle ou familiale, vous n'ayez plus de temps à consacrer à la traduction pour Debian. Si vous étiez responsable de traduction, il est bon alors de contacter un des responsables de la liste ou d'y poster un message en disant que vous renoncez à votre charge, de façon à faciliter la maintenance des projets de traductions. Quelle est la fréquentation du forum ?

Faible. Quelques messages par semaine, sauf les jours de grands débats :-). Cela dit, cela a notablement augmenté ces derniers temps. La rançon du succès ?

On pourra visualiser l'état de la fréquentation de la liste directement sur le site Debian à

Quels sont les critères pour participer ?

Être volontaire. Et surtout, être volontaire. Et puis, enfin, être volontaire. Si en plus, vous êtes volontaire...

Tous les gens inscrits peuvent (doivent...) participer au débat et surtout aux relectures. Pas de fausse pudeur...

Pour participer, il vous suffit de savoir lire et écrire correctement le français. Pas besoin d'être Molière ni Rabelais : il vous suffit de savoir vous servir d'un éditeur de texte. Qui est le responsable ? (Qui contacter en cas de...)

Il y a maintenant un simple duo responsable de cette liste :

Denis Barbier <barbier@imacs.polytechnique.fr>, Martin Quinson <mquinson@ens-lyon.fr>.

Christophe Le Bars <clebars@debian.org>, qui fut à l'origine le précurseur de la localisation en français de Debian et le principal acteur de cette liste en son début vient de nous signifier qu'il abandonnait cette responsabilité de chef et de responsable de traduction.

Christophe, sois ici bien remercié d'avoir lancé cette lourde mécanique et d'avoir rendu possible l'énorme travail qui est accompli aujourd'hui et qui s'accomplit encore chaque jour.

On peut aussi aller directement sur le site Debian pour obtenir cette information :

Ce sont les gens qui ont les droits d'accès au cvs du serveur Debian et qui peuvent archiver les traductions au fur et à mesure de leur arrivée. Ils ont aussi pour rôle d'essayer de faire régner l'harmonie et l'amour entre les participants de la liste ;-) Où est archivée la liste ?

Puis allez cliquer dans le mois-année qui vous intéresse dans debian-l10-french.

Qui est René Cougnenc ?

René Cougnenc fut un des précurseurs de Linux en France et il a contribué à sa diffusion par la qualité de ses traductions. Un certain nombre d'ouvrages faisant encore référence ont été traduits de sa main (liste chez O'Reilly).

René nous a quitté il y a quelques années.

Comme ses traductions sont remarquables, nous y faisons souvent référence. Techniques Quel est le format des traductions ?

Le format retenu pour la documentation Debian est le sgml : il s'agit du format debian-doc dont la documentation est livrée avec toutes les distributions Debian (cf. « Comment apprendre le format debian-doc sgml ? »).

En ce qui concerne le format des pages du site oueb de Debian, le format retenu est le wml. Il est peu probable que vous ayez directement à créer une page donc une connaissance très approximative de ce format est suffisante. Il s'agit en fait de html.

Enfin, il y a des documents plus particuliers comme les pages de manuels ou les logiciels spécifiques à Debian (comme dpkg ou apt). Pour le coup, il vaut mieux savoir un peu ce que l'on fait avant de se jeter sur ce type de traduction. Pour plus de détails, voir le chapitre « Traduire pour Debian (et pour le logiciel libre en général) ». Comment apprendre le format debian-doc sgml et wml ?

Il existe deux documents, l'un en anglais et l'autre traduit en français. Le premier est disponible dans le paquet debiandoc-sgml et le second dans le paquet doc-debian-fr. Ils sont donc livrés en standard dans chaque distribution Debian.

On peut aussi trouver directement le document en français sur le site de Debian à

Quelle traduction choisir ?

De préférence une traduction qui ne soit pas en cours ou maintenue activement par quelqu'un. Cela dépend un peu de vos compétences et de votre temps disponible. Ne soyez pas trop gourmand au début : commencez par quelque chose de court pour vous faire la main.

Pour éviter de se noyer dans la masse des documents à traduire, Martin Quinson a écrit un petit script pour faciliter et automatiser la recherche. Son script, en fait, synchronise les pages traduites avec les pages originales. Voici comment cela fonctionneVous n'êtes bien sûr pas obligé d'en comprendre les mécanismes internes pour vous en servir : l'explication est ici juste dans un but pédagogique. :

Il faut avoir en local (c'est-à-dire sur son disque dur) toutes les pages anglaises et françaises. Mettez à jour régulièrement l'ensemble par cvs. Ensuite pour chaque page anglaise, sa version cvs (listée dans le CVS/Entries du répertoire où se trouve le document) est récupérée. Puis, il essaie de déterminer si la page française traduite existe. Dans l'affirmative, il cherche à déterminer si la version de traduction est conforme. Pour cela, il tente d'extraire l'information de la ligne

#use wml::debian::translation-check translation="X.x" maintainer="aze"

du document. C'est un en-tête obligatoire des documents comme l'indique le document :

Le script /cvs/webwml/check_trans.pl détermine ainsi ce qui est à jour ou non. De plus, il envoie automatiquement un courriel au responsable de la traduction du document en cas de changement pour le prévenir. Pour cela, il faut que ledit responsable ait préalablement indiqué dans le fichier /cvs/webwml/french/international/french/translator.db.pl son adresse électronique et la fréquence avec laquelle il veut recevoir ces notifications.

En pratique, pour choisir une traduction, il faut récupérer les sources des documents par cvs des pages anglaises et françaises (cf. « Comment utiliser cvs ? »). Ensuite, il faut lancer le script précité, sans l'option -m qui active l'envoi des courriels, et en précisant la langue (par exemple, ./check_trans.pl french.

À ce moment, le script va vous renvoyer plein de lignes NeedToUpdate et Missing. Il suffit alors de choisir un document manquant (ligne Missing).

On peut aussi consulter ces informations en ligne sur ou de manière plus détaillée sur (la page est bien sûr beaucoup plus lourde que la précédente). Comment se déclarer traducteur ?

Il suffit de poster un message sur la liste de diffusion debian-l10n-french déclarant que vous allez vous occuper de tel document, si personne ne le fait déjà. Dans ce cas, généralement, il y a approbation simple d'un des responsables des traductions et vous devenez automatiquement responsable de la traduction que vous avez choisie. Vous en devenez aussi le responsable officiel, c'est-à-dire qu'il vous incombe de suivre le document original et de modifier la traduction le cas échéant. Vous devez de plus rassembler les relectures qui vous seront adressées sur la liste et corriger votre texte en conséquence.

Si par hasard vous n'avez pas reçu d'approbation, vous pouvez vous considérer comme nommé responsable automatiquement. Faites bien attention toutefois que le courriel destiné à la liste a bien été acheminé...  Attendez quand même un ou deux jours avant de vous lancer.

Si quelqu'un s'occupe déjà du document, il le fera savoir. Comment récupérer la responsabilité d'une traduction ?

Il arrive qu'un traducteur n'ait plus le temps de poursuivre son travail. Et vous avez envie de prendre la suite (le document a par exemple beaucoup de retard dans la mise à jour...). Il vous suffit de contacter directement le responsable ou bien de vous déclarer sur la liste. Dans ce dernier cas, il vous faudra attendre obligatoirement une confirmation d'un responsable qui contactera lui-même l'ancien responsable.

Il est d'usage de réattribuer une traduction si rien n'en est sorti au bout de deux mois et que le responsable officiel ne donne plus signe de vie. Comment récupérer un document ?

L'ensemble de la documentation est géré par cvs sur le site de Debian. C'est un outil permettant de régler les problèmes de versions avec aisance. Par mesure de prudence, seuls les responsables officiels de la liste ont le droit d'accès en écriture via cvs. Par contre, tout le monde y a accès en lecture. Cela permet de récupérer n'importe quel document très facilement. Voici deux pages d'explications :

Si vous n'êtes pas connecté en lisant ces lignes, voici un rapide résumé des opérations à effectuer :

Créez-vous un répertoire local de travail : mkdir debian cd debian

Positionnez la variable CVSROOT correctement : export CVSROOT=":pserver:anonymous@cvs.debian.org:/cvs/webwml"

Pour éviter de le faire à chaque fois, inscrivez-la en dur dans votre fichier de configuration de shell par défaut. Si vous ne savez pas ce que vous utilisez, mettez-le par défaut dans votre ~/.bashrc.

La première fois, vous aurez à taper : cvs login

et ensuite sur la touche Entrée lorsque cvs demandera le mot de passe.

Toujours la première fois, vous aurez à valider (co : check-out) chaque nouvelle entrée dans l'arborescence : cvs co <nom du répertoire>

puis, pour mettre à jour (update), faire régulièrement cvs update <nom de répertoire> Exemple : cvs co webwml/english cvs co webwml/french/Bugs

Ceci créera dans le répertoire debian une image du site Debian contenant le répertoire webwml contenant lui-même le contenu de english et celui de french/Bugs.

Le répertoire english est très gros mais je conseille de le faire, même avec un modem. Au 14 octobre 2001, il faisait environ 18 mégaoctets. Un petit mauvais moment à passer. Les mises à jour ne sont pas du tout coûteuse. Le répertoire french est lui plus petit (4,8 Mo le 14 octobre 2001). Comment éditer une traduction ?

Il faut récupérer le document original sur le cvs de Debian au format sgml pour un document et wml pour une page oueb. Le document est alors en ASCII s'il ne comporte que la langue anglaise et en iso-latin 1 (ou 15) s'il comporte du français. Les accents sont autorisés (et même chaudement recommandés :-) Vous pouvez donc l'éditer avec n'importe quel (bon) éditeur de texte. Ceux qui permettent la mise en couleur de balises favorisent évidemment le travail du traducteur-relecteur.

Si vous ne connaissez rien aux éditeurs de texte, j'ai fait une introduction à Emacs destinée aux débutants sur mon site :

Cela peut vous servir de base de départ. L'emploi d'un mode ad hoc comme le psgml-mode peut grandement vous aider. Voir la page de Stéphane Bortzmeyer à ce sujet :

Si vous partez d'un document vierge, il suffit de coller au document original en respectant scrupuleusement les balises initiales. Tout ce qui est à l'extérieur des balises doit être traduit. Les balises doivent toutes être conservées. À l'exception de l'attribut name de la balise url qui doit être traduit. Comment modifier une traduction ?

De la même façon que pour un nouveau document mais en partant cette fois d'un document déjà traduit. Si la dernière traduction est trop ancienne, il peut être judicieux de repartir d'une feuille blanche.

Vous devez aussi inclure votre nom comme traducteur ou l'ajouter à celui qui vous a précédé dans ce travail. Pour cela, il suffit d'ajouter au-dessous des auteurs originaux :

<author> Jean Dupont <email> jean.dupont@fai.fr </email> </author>

Même si vous repartez d'une feuille blanche, conservez le(s) nom(s) de celui ou ceux qui vous ont précédé dans la traduction du document. Comment m'assurer que je n'ai pas modifié une balise par inadvertance ?

La meilleure méthode consiste encore à compiler votre document s'il s'agit d'un format debian-doc ou bien de l'éditer dans un butineur html s'il s'agit d'un document wml. Quels sont les paquets Debian nécessaires à la compilation d'un document ?

Il vous faudra installer le paquet debiandoc-sgml. Pour ce faire, acquérez les droits de root et faites :

$ apt-get install debiandoc-sgml

Et c'est tout. Comment compile-t-on un document au format sgml ?

Tout d'abord, vous devez avoir installé le paquet debiandoc-sgml (cf. « Quels sont les paquets Debian nécessaires à la compilation d'un document ? »).

Vous devez avoir sur votre système la série d'utilitaires suivante :

/usr/bin/debiandoc2html /usr/bin/debiandoc2latex /usr/bin/debiandoc2texinfo /usr/bin/debiandoc2text /usr/bin/debiandoc2textov /usr/bin/debiandoc2info /usr/bin/debiandoc2latexdvi /usr/bin/debiandoc2latexpdf /usr/bin/debiandoc2latexps

Ces commandes permettent une transformation aisée du document sgml vers le format de sortie de votre choix (ici, dans l'ordre de la série précédente : html, LaTeX, texte, textov (troff), info, dvi, pdf et PostScript.

Si vous désirez une sortie en PostScript, vous n'avez alors qu'à taper la commande suivante :

$ debiandoc2latexps MonDocument.sgml

Si le document compile sans erreur, vous obtiendrez alors dans le répertoire en cours le document MonDocument.ps en PostScript. Il en va de même pour tous les formats de conversion.

Si la compilation tourne mal, debiandoc2xxx s'arrête et renvoie sur la sortie standard l'erreur en anglais qui l'a fait se planter. Comme les numéros de ligne et de colonne sont fournis, il est aisé d'aller enquêter et de déterminer l'erreur (la plupart du temps, c'est un problème d'ouverture-fermeture de balises...). Il y a aussi à ce moment un fichier MonDocument.sasp qui est engendré automatiquement.

N'hésitez pas à aller lire la documentation afférente à ces outils. Comment obtenir une sortie imprimable d'un document ?

Il vous est peut-être plus facile de relire la documentation sur papier pour différentes raisons (la première généralement est que l'écran de votre ordinateur et la baignoire ne font pas bon ménage...).

Le site Debian ne propose la documentation que sous sa forme de sources (sgml ou wml). Donc, vous allez devoir le faire vous-même. Récupérez le document source, de toute façon indispensable à l'annotation des erreurs et compilez-le vous-même. Reportez-vous à la question « Comment compile-t-on un document au format sgml ? » pour ce faire.

Si votre système d'impression est bien configuré sous votre Debian, la méthode la plus rapide consiste à obtenir du dvi. Vous pourrez l'imprimer directement en tapant tout simplement la commande lpr. Sinon, utilisez du PostScript ou du pdf suivant la configuration de votre environnement. Si vous n'y arrivez pas, faites-vous aider pour la configuration de votre système.

Il n'y a rien d'analogue pour les pages du site au format wml. Vous pouvez toujours les éditer dans un butineur html et tenter de les imprimer directement. Sachez toutefois qu'il existera toujours une ligne en en-tête du document, du genre :

#use wml::debian::template title="Lexique du projet de traduction de Debian"

qui n'est évidemment pas une erreur ;-) Y a-t-il un site ou une référence pour les traductions ?

La page de départ est

Pour les traducteurs et relecteurs, un lexique de base est disponible à :

Pour ceux qui ne sont pas connectés, voici un petit lexique (qui sera forcément moins à jour que la page ci-dessus) : Vocabulaire spécifique à Debian

backport ............ : portage arrière, rétroportage bug tracking system . : système de suivi des bogues dependency .......... : dépendance (pour dpkg) diversion ........... : détournement (pour dpkg) diverted ............ : détourné (pour dpkg) essential ........... : essentiel (pour dpkg) maintainer .......... : responsable newsletter (DWN) .... : gazette on hold ............. : gelé, {à garder, bloquer, en suspens, en attente, préservé, maintenu}(pour dpkg) overriding .......... : recouvrement (pour dpkg) package ............. : paquet package management .. : gestion des paquets release note ........ : carnet de lancement (?), note de version, numéro de version selected ............ : sélectionné (pour dpkg) to divert ........... : détourner (pour dpkg) unpacked ............ : dépaqueté unpacking ........... : dépaquetage update .............. : mise à jour upgrade ............. : mise à niveau Vocabulaire spécifique à Debian/Hurd

translator ............ : traducteur Vocabulaire spécifique à l'informatique

(device) driver ........ : pilote ou gestionnaire (de périphérique) FAQ .................... : Foire aux questions RAM disk ............... : disque virtuel, image de disque en mémoire accounting ............. : comptabilité back-end ............... : dorsal, de sortie (suivant contexte) block device files ..... : fichiers de périphérique en mode bloc buffering .............. : retenir, mettre en mémoire character device files . : fichiers de périphérique en mode caractère checksums .............. : (MD5 checksum -> code de contrôle MD5), code de contrôle depot .................. : dépôts, entrepôt, downgrade .............. : remise à un niveau inférieur, « abaissement du niveau », mise à jour e-mail ................. : courrier, courriel, adresse électronique error handler .......... : routine de traitement d'erreurs failure ................ : échec file details field ..... : champ des détails du fichier force .................. : forçage front-end .............. : interface, frontal, surcouche, lanceur de programme garbage ................ : résidu incorporated ........... : intégré, incorporé linker ................. : éditeur de liens mailing list ........... : liste de diffusion matching ............... : correspondance, identification out of memory .......... : mémoire insuffisante patch .................. : rustine padding ................ : remplissage pattern ................ : motif, modèle plain file ............. : vrai fichier (?) fichier ASCII, régulier (?) regular expressions .... : expressions rationnelles repository ............. : référentiel support ................ : assistance timestamps ............. : cachet de date (pour les tar.po) to fsync ............... : synchroniser (?) synchroniser des fichier par fsync fix (a bug) (to)........ : corriger (un bogue) to overwrite ........... : remplacer to rewind .............. : revenir, rembobiner, recommencer to seek ................ : rejoindre, atteindre, traverser to set ................. : paramétrer to scan ................ : numériser to stat ................ : analyser (?) extraire à des fins statistiques (?) trailing garbage ....... : résidus restant transceiver ............ : émetteur-récepteur, « transcepteur » (néologisme, à éviter si possible), micro-transmetteur (expression utilisée dans certaines docs, mais incorrecte) unable ................. : impossible de, préférer « incapacité à » ou « je ne peux pas » unable seek ............ : déplacement impossible, destination impossible Faux-amis

alternative ............ : solution de remplacement, de rechange , (?) completion ............. : complètement compress ............... : comprimer couple ................. : quelques decade ................. : décennie publicity .............. : publication generate ............... : engendrer, fabriquer, produire library ................ : bibliothèque pipe ................... : tube status ................ : état Termes polémiques

(dans cette partie sont regroupés les termes dont l'usage n'a pas encore décidé sous quelle forme ils vont être figés. Le traducteur a donc la liberté de choisir la forme de celui qui lui paraît être la meilleure)

CD-ROM .............. : cédérom, CD-ROM DVD-ROM ............. : dévédérom, DVD-ROM (?) epoch ............... : époque Comment poster une traduction ?

Une fois votre traduction terminée, vous n'avez plus qu'à la poster directement sur la liste de diffusion afin de la soumettre à relecture. Vous pouvez aussi très bien la faire relire par d'autres personnes complètement extérieures. Mais elle doit être obligatoirement postée sur la liste.

Le document doit être posté tel quel et dans la mesure du possible livré en attaché (pour faciliter un traitement ultérieur automatique). Il serait aussi pratique de positionner le type MIME en text/plain avec un encodage favorisant une intervention directe comme le 8 bits (évitez l'uuencodage si possible). Si vous êtes sous Linux, créez un fichier $HOME/.mime.types contenant text/plain wml diff patch devrait suffire. Il faut indiquer le nom du document et aussi sa révision, en demandant sa relecture. Sauf empêchement majeur, le document sera archivé rapidement sur le cvs de Debian en l'état, à charge au responsable de centraliser les relectures et d'apporter les modifications nécessaires. Il pourra alors déposer une nouvelle version qui mettra ainsi à jour le cvs de Debian jusqu'au document final.

Si le document est déraisonnablement trop gros pour être posté sur la liste (pensez que tout le monde n'a pas une liaison haut débit (i.e. qui commence à 56 kbps)), il vaut mieux contacter en privé ou sur la liste les responsables de la liste. Le document leur sera alors À LEUR DEMANDE envoyé personnellement et ils s'occuperont de sa mise en place sur le site de Debian. Une annonce sera postée alors sur la liste pour un appel à relecture avec le pointeur ad hoc.

En ce qui concerne le format du messagee, soyez raisonnable : une petite page en wml pourra être postée dans le corps du message ou en attaché tandis qu'un diff conséquent sera attaché après avoir été gzipé.

Il est à noter une nouvelle habitude qui prend peu à peu le pas sur la précédente. Depuis que les templates Debconf font partie du travail de la liste, il aurait été trop lourd de livrer chaque relecture sur la liste elle-même, ce qui fait que dans ce cas, les corrections sont à envoyer directement à celui qui est responsable du document. Il en va de même pour les DWN (« les Nouvelles Hebdomadaire de Debian »). Il y a bien sûr un risque non négligeable de perte en procédant ainsi : toute idée d'amélioration est bonne à prendre... Comment relire une traduction ?

Tout d'abord, bien lire la page :

et notamment la partie « Comment relire une traduction ».

Pour résumer, tout le monde peut participer à son niveau donc il ne faut pas hésiter une seconde. Il n'y a pas de commentaire stupide : chaque pierre apportée construit l'édifice.

Il vous faut récupérer le document posté sur la liste de diffusion ou bien sur le serveur cvs de Debian. Sauvegardez alors le document original sous son nom d'origine et dupliquez-le sous un autre nom (soyez logique : gardez le même nom avec un commentaire astucieux : si le document s'appelle toto.fr.sgml, appelez le vôtre toto.fr.relu.sgml).

Éditez alors le document et apportez-y les modifications que vous désirez (fautes d'orthographe, de grammaire, de traduction, maladresse de style, incompréhension,...). Vous pouvez bien sûr commenter pour vous faire comprendre. Quand vous aurez fini (et même si vous n'avez pas le temps de tout faire : il vaut mieux un texte relu au quart que pas du tout), vous faites alors :

diff -u texte texte.relu > diff_texte

diff est un utilitaire Unix qui permet d'extraire avec l'option -u les différences entre deux fichiers. On redirige le tout vers un nouveau fichier (ici, diff_texte). Éditez ce fichier et vous comprendrez vite...  L'intérêt est qu'il permet au responsable de la traduction d'appliquer rapidement les modifications et que l'envoi du fichier est allégé (on ne renvoie que les modifications et non tout le texte modifié). Comment poster une relecture ?

Vous devez poster la relecture comme une demande de relecture (de préférence dans le corps du message, sans attaché ni compression). Si vous avez conservé l'envoi original de demande de relecture, faites un « reply-to » sur le courriel original. Sinon, mettez un titre explicite pour que le responsable de traduction sache bien que cela lui est destiné. Un titre du genre « relecture du document toto.fr.sgml » ou « [relecture] toto.fr.sgml » est parfait.

Inutile de mettre le responsable en copie (CC). Il est abonné. Comment demander de l'aide ?

S'il s'agit d'un problème spécifique à Debian ET à la traduction, la liste debian-l10n-french est là pour cela. Assurez-vous avant d'avoir bien cherché par vous-même — notamment en ayant lu la FAQ et les documents d'aides à

Sinon, sur Debian en général, adressez-vous à la liste de diffusion debian-user-french pour avoir des renseignements en français sur Debian. Après avoir lu la FAQ à

Que devient un document traduit ?

Tout document traduit se voit intégré dans le système de gestion de versions (cvs) de Debian. La liste des traductions en cours est accessible à

Qu'est-ce qui fait référence en matière de traduction pour Debian ?

La page donne un lexique minimaliste qui a été arrêté pour la traduction en français de certains termes spécifiques.

Il n'y a pas spécialement de doctrine arrêtée pour le reste, chacun puisant là où il veut. Toutefois, en dernier ressort, en cas de dilemme, c'est la majorité qui emporte la décision. Le mot ou l'expression est alors entré dans le lexique Debian et les traducteurs doivent alors s'y conformer. Traduire pour Debian (et pour le logiciel libre en général)

Note : Ce chapitre est appelé à être traduit en anglais de façon à devenir le HOWTO-l10n de Debian en particulier mais aussi de tous les logiciels libres.

Ce chapitre est l'oeuvre de Martin Quinson : il a été publié originalement dans la Foire aux questions de debian-user-french. Je le reprends à mon compte à présent. Introduction

La traduction fait partie des objectifs de Debian. C'est un fait. Mais tout n'est pas si simple, et les volontaires potentiels sont souvent rebutés par les difficultés rencontrées. L'objectif de ce document est de faire le point sur ce qui se fait et comment le faire.

Il convient tout d'abord d'insister sur le fait que la traduction est l'une des tâches les plus simples permettant de faire avancer Debian et les logiciels libres. Nul besoin de savoir programmer pour le faire. Mais il ne faut pas non plus prendre cela à la légère. Il ne s'agit pas de traduire à la chaîne, n'importe comment. Il faut se souvenir que c'est ce que les utilisateurs verront. Il faut donc faire attention à ne pas faire de contresens, et soigner sa grammaire et son orthographe. Cela me semble évident et cela va sans le dire, mais je suppose que cela va mieux en le disant. Que traduire dans un paquet ?

Avant de continuer, il faut préciser que traduire les messages affichés n'est qu'une pierre de l'édifice. Avant ça, il faut que quelqu'un modifie le code source pour que le programme puisse utiliser plusieurs catalogues de messages. C'est une partie de ce qu'on appelle l'internationalisation d'un code source, ou i18n en raccourci. Les autres parties consistent à permettre aux programmes d'afficher des caractères autre que ceux utilisés aux États-Unis (Le problème ne se pose plus vraiment pour le français et les langues européennes, mais il est d'une actualité brûlante pour les langues asiatiques, par exemple). Mais nous ne parlerons ici que de la traduction (« localization » en anglais, l10n pour faire court). Pour l'i18n, un bon point de départ est le manuel « Introduction à i18n », disponible à l'adresse .

Voyons maintenant les différentes choses que l'on peut traduire dans un paquet Debian Les messages affichés

Debian (et Linux en général) sont dotés de beaux mécanismes pour traduire les messages des programmes. Le plus célèbre (et le seul dont je parlerais ici) est gettext. D'un point de vue technique, c'est basé sur une bibliothèque gettext, justement) qui permet au programme de charger à l'exécution le catalogue de messages utilisé pour pouvoir parler dans la langue de l'utilisateur. Pour ceux qui veulent en savoir plus sur comment ça marche, le manuel de gettext n'est pas si mal fait que ça (www.gnu.org/manual/gettext ou /usr/share/doc/gettext-doc/index.html si vous avez installé le paquet gettext-doc).

Évidemment, pour que cela marche, il faut bien que quelqu'un traduise lesdits catalogues de messages. L'objectif de ce document est entre autres d'expliquer comment le faire. Nous reviendrons sur ce point dans une partie ultérieure. La documentation

La documentation est une partie importante à traduire. Qu'il s'agisse des pages de manuel, (ce qu'on obtient par la commande man(1)), des fichiers info (cf. info(1)) ou des manuels de l'utilisateur fournis (en html ou autre) par certains paquets.

Mais pour tout cela, il n'y a rien de bien fixé. Pas de belles procédures pour savoir si la traduction est à jour. Et pour être honnête, pour l'instant, chaque projet développe sa propre méthode sans qu'aucun plan général ne se dégage jusqu'à présent. Je n'en parlerai donc pas dans ce document. On a déjà assez à faire avec le reste. Les différents fichiers GNOME

Mais même si on se restreint au matériel à traduire pour lesquels il existe des procédures automatiques, parler des fichiers po ne suffit pas [tout à fait]. Les menus de GNOME (et KDE ?) sont à traduire, aussi, mais ce ne sont pas des messages affichés par le programme lui-même. Donc, dans un premier temps, on a inventé des fichiers .desktop qui contenaient ces informations.

Voici un exemple : [Desktop Entry] Name=Netscape Comment=Netscape browser Name[ro]=Netscape Name[bg]=Netscape Comment[bg]=Netscape Íàâèãàòîð Comment[br]=Merdeer Netscape Name[ca]=Netscape Comment[ca]=Navegador d'Internet Netscape Name[cs]=Netscape Comment[cs]=Prohlí¾eè HTML souborù umístìných na Síti nebo disku Name[da]=Netscape Comment[da]=Netscape webbrowser Name[de]=Netscape Comment[de]=Netscape Navigator Name[el]=Netscape Comment[el]=ÖõëëïìåôñçôÞò Netscape Name[es]=Netscape Comment[es]=Navegador Netscape Name[et]=netscape Comment[et]=WWW lehitseja Netscape Name[eu]=Netscape

La syntaxe n'est pas si complexe, et je n'approfondis pas.

Mais ce n'était pas vraiment pratique de tenir à jour les .po et les .desktop. Les gens de GNOME (je ne sais pas comment font les gens de KDE ou de WindowMaker, mais cela doit être équivalent) ont donc fait les programmes que l'on peut installer sur sa machine en installant le paquet xml-i18n-tools. Il s'agit de séries de scripts qui prennent les chaînes à traduire dans le .desktop (et autre du même genre), les met dans le .po pour que les traducteurs puissent faire leur boulot simplement, et récupère la traduction pour la remettre à sa place dans le .desktop lors de la compilation. Bref, tout ça pour dire que du point de vue du traducteur, les .desktop peuvent être oubliés. On traduit les .po, et la machine se dépatouille. Les templates debconf

Autre catégorie que l'on peut traduire : les fichiers de templates debconf. Il s'agit des textes de questions qu'on va voir quand on configure un paquet. C'est une debianerie (i.e., hors de Debian, ça n'existe pas [encore]).

Voici un exemple (traduit) : Template: debconf/showold Type: boolean Default: false Description: Show all old questions again and again? Debconf normally only asks you any given question once. Then it remembers your answer and never asks you that question again. If you prefer, debconf can ask you questions over and over again, each time you upgrade or reinstall a package that asks them. . Note that no matter what you choose here, you can see old questions again by using the dpkg-reconfigure program. Description-fr: Poser de nouveau les anciennes questions ? Normalement, debconf ne pose chaque question qu'une seule fois. Ensuite, il se souvient de la réponse que vous avez donnée, et ne repose jamais cette question. Si vous préférez, debconf peut reposer chaque question encore et encore, chaque fois qu'un paquet ayant besoin de cette réponse est installé ou mis à jour. . Notez que quel que soit votre choix ici, vous pouvez revoir la configuration d'un paquet avec le programme dpkg-reconfigure. Description-it: Mostrare sempre le vecchie domande? Debconf normalmente pone le domande una sola volta, ricorda le risposte date e non pone più la stessa domanda. Se preferite potete ora scegliere che vi venga posta la stessa domanda ogni volta che aggiornate o reinstallate un pacchetto. . Notate che non importa la scelta fatta qui, potete vedere di nuovo le vecchie domande usando il programma dpkg-reconfigure.

Encore une fois, cela se passe d'explication.

Il existe toute une mécanique pour gérer les traductions, ce qui permet de vérifier que les traductions sont à jour. C'est dans le paquet debconf-utils : ce sont les programmes debconf-getconf et debconf-mergetemplates.

Mais bon. Je commence à me dire qu'il serait pas mal de faire des fichiers de templates comme des fichiers po. Disons que j'y réfléchis. En attendant, il faut passer par la traduction séparée des templates (sur laquelle on reviendra plus tard). Les pages oueb

Le site oueb de Debian compte parmi les mieux internationalisés. Si on a bien réglé son navigateur (la page indique comment le faire), les pages arrivent directement dans la langue choisie.

Il y a aussi un mécanisme pour vérifier que la traduction est à jour, et indiquer au visiteur si la traduction qu'il voit est obsolète, ainsi que pour prévenir le traducteur qu'il doit mettre son travail à jour. Plus de détails sur la page . Les menus Debian

Comme Debian utilise un méta-système de menu, on devrait arriver à les traduire. Il y a même un pseudo mécanisme de traduction dans le paquet menu. Et dans le fichier doc/translate, on peut lire :

What I propose is that update-menus simply learns the dutch, german, whatever translations for "Apps", "Editors", "The Gimp", "X Window Snapshot", and so on. These translations would be provided in a form similar/identical to the already used i18n format.

The French translations would be provided by a menu-fr.deb package, the Dutch translations by menu-du.deb, etc.

This may seem strange at first, as now the gimp package has no control over how the menu-entry looks in german. It might at first sight be much better to put in the menu entry file for the gimp all translations of "The Gimp" in however many languages we want to support.

The downside of this, is that it simply doesn't work in Debian. The maintainer of the gimp surely doens't know the translations of "The Gimp" in Dutch, Turkish, Japanise, Esperanto, whatever. Somewhere in Turkey there may be somone who is really good at translating all english titles into turkish, but s/he will have a very hard time convincing all 500+ package maintainers to include his/her translation into the package. And, a week later someone in Bulgaria wakes up, and sends 500+ discriptions to 500+ maintainers, asking them to include that. Well, you see, with about 6000 languages on this earth, the maintainers are going to have a hard time.

That is why I propose that the package maintainers simply don't do anything about the languages, but simply upload their packages with menu entry files in them. Then some deamon on master scans all menu entry files in the distribution, and creates a file with all english words/phrases that should be translated. This file can be put somewhere on the web, and then this the translators simply gets that file, translate the 500+ entries in it, and create a menu-tr.deb (menu-de.deb, etc) package, and uploads that. Then, the users that want turkish systems simply install menu-tr.deb package, set the appropriate LC_* variables, and update-menus does what it should do.

This approach has the advantages that

It actually works. Forceing 500+ package maintainers to include the world's 6000+ languages into their menu entry files is really never going to work.

It makes things easy for both the maintainer of the packages with the menu entry files (they do nothing), and for the translators (they don't need to get the to-be-translated words and phrases from all kinds of packages, and send the results to many different package maintainers).

It allows users to select what languages to install, so they don't have to buy extra harddisks because each menu entry file now is 0.5 M big (5000 languages, 100 chars per language).

Mais à ma connaissance, rien n'a été fait dans ce sens... Les descriptions de paquets

Je n'ai pas vraiment suivi ce qui se passe de ce côté. J'ai juste un petit pointeur à vous proposer.

input welcome. Les pour et les contre de la traduction dans Debian

Et oui, tout n'est pas si rose, et tout le monde n'est pas prêt à traduire Debian à tout va. Et même, on peut dire que dpkg n'est pas vraiment prêt à ce que tout ce qu'il est possible de traduire le soit. Il est impossible de lui préciser quelles langues on veut avoir sur la machine, et le résultat, c'est qu'il installe plein de trucs dont la plupart des gens n'ont aucune utilité. Allez visiter le répertoire /usr/share/locale/ sur votre machine. C'est là que sont placés les fichiers po compilés prêts à l'emploi. Il y a plusieurs dizaines de mégaoctets utilisés pour avoir les messages en russe ou en coréen, ce que je suis bien incapable d'exploiter. Alors comme je suis un peu juste en place, je fais le nettoyage à la main de temps en temps, mais ceci est l'argument principal des opposants à cette méthode. Dans le camp des pour, il y a quelques idées (voir par exemple ) mais rien n'a été fait jusque là.

La morale de l'histoire, c'est que pour l'instant, le consensus semble être que les fichiers po sont inclus avec le paquet qu'ils traduisent (sauf pour KDE. Tous les messages de tous les paquets KDE dans toutes les langues sont dans le paquet kde-i18n, ce qui n'est pas mieux). Certaines langues font un paquet qui contient tous les catalogues existants. Cette pratique est courante pour les pages de manuel des paquets de base. Ainsi, le paquet manpages-fr installe les pages de manuel les plus courantes. En ce qui concerne les templates Debconf, jusqu'à présent, personne n'a refusé de les inclure à son paquet pour gagner de la place. Mais ça pourrait se produire un jour. Ce jour-là, la querelle de clocher de savoir comment aider dpkg à gérer les traductions pourra reprendre de plus belle. ;) Comment aider : la partie administrative

Le plus gros problème en ce qui concerne la traduction (mis à part la qualité des traductions, qui est évidemment primordiale), est de se coordonner.

Ce besoin de coordination doit se manifester :

Entre les traducteurs : pour ne pas faire le travail deux fois, et que les traductions restent à jour. Il y a pire qu'une page de manuel non traduite : une page traduite non à jour, puisque l'utilisateur n'a aucun moyen simple de s'en rendre compte.

Entre traducteurs et responsables : pour que les choses traduites soient incluses dans les paquets, et que les traductions restent à jour.

Entre Debian et le reste du monde : la très grande majorité des programmes distribués par Debian ne sont pas développés au sein du projet. Et quelques projets extérieurs ont mis en place des sous projets de traductions. Il s'agit donc de ne pas marcher sur les plates-bandes de ces gens et, encore une fois, de ne pas dupliquer le travail fait (et ne pas ternir encore la réputation de Debian auprès des développeurs).

Pour résoudre ces problèmes, je propose les procédures suivantes : Coordination entre traducteurs au sein de Debian

Les abonnés à la liste debian-devel connaissent les messages dont le titre commence par « ITP ». Il s'agit de « Intend To Package ». Ce sont des déclarations d'intention de mise en paquet. L'usage veut qu'on annonce sur la liste son intention de créer un nouveau paquet avant de se mettre au boulot, afin d'éviter que deux personnes se mettent à travailler sur la même chose dans leur coin.

Je propose de reprendre le principe et de poster des « ITT »(Intend To Translate) sur la liste qui va bien. Pour les traductions vers le français, la liste est évidemment debian-l10n-french.

Comme personne n'est parfait, il est possible que quelqu'un ait déjà traduit ce que vous comptiez traduire sans rien dire, et l'ait déjà renvoyé au responsable. Pour en avoir le coeur net, allez faire un tour sur la page des bogues du paquet pour lequel vous comptez travailler (nom_du_paquet), afin de vérifier qu'il n'y a pas de rapport de bogue contenant les traductions. En résumé

Avant de commencer à traduire, veuillez-vous inscrire à la liste de coordination des traductions. Dans le cas du français, il s'agit de debian-l10n-french@lists.debian.org

Ensuite, vérifiez que personne n'a traduit ce qui vous intéresse sans rien dire en regardant les rapports de bogue du paquet.

Annoncez votre intention par un courriel à la liste « ITT » avant de commencer.

Si personne ne réagit, allez-y. Vous pouvez traduire. (voir plus loin sur comment traduire quel type de matériel) Coordination entre traducteurs et développeurs Debian

Ça, c'est facile. Une fois que vous avez fini votre traduction, il suffit de faire un rapport de bogue contre le paquet de sévérité « souhait » ou à l'extrême limite « normale » (pas pire), en expliquant ce que vous avez traduit, et en attachant le matériel traduit. Si vous êtes perfectionniste, vous pouvez surveiller la prochaine version du paquet pour voir si votre contribution a bien été prise en compte, et pour râler si ce n'est pas le cas, ou si le responsable a mis vos fichiers au mauvais endroit. Coordination entre Debian et le reste du monde

Ça, c'est la partie la plus difficile. Je n'ai pas de réponse magique. Je considère qu'il y a plusieurs catégories de paquets :

Les paquets purement Debian comme dpkg ou bug. Dans ce cas, le problème ne se pose pas.

Les paquets issus de projet ayant un projet de traduction bien établi comme les programmes GNOME ou KDE. Dans ce cas, je pense que le plus simple est de rejoindre le projet de traduction associé. Voici la liste des plus gros projets de traductions (i-e., ceux que je connais) vers lesquels il faut vous tourner :

GNU : L'url est . Attention, GNU étant GNU, il faut avoir signé un papier disant qu'on renonce au copyright pour pouvoir traduire leurs programmes. Plus de détails sur leur site.

GNOME : l'url à connaître dans ce cas est .

KDE : le projet de traduction de KDE est le plus organisé et efficace que je connaisse. Leur url est .

Dans ce cas, il me semble important de traduire à la source. Les modifications se retrouveront dans la prochaine version du paquet Debian

Programmes ne faisant pas partie d'un grand projet, mais tout de même assez bien organisés en ce qui concerne les traductions. Un exemple est bluefish. Il s'agit d'un programme « indépendant », mais il a tout de même des traducteurs attitrés. Le seul moyen de s'en rendre compte est d'aller sur la page du projet. Dans ce cas, il vaut mieux contribuer à la source, et ne pas rester au sein de Debian.

Programmes indépendants où rien n'est fait pour la traduction. Il s'agit sans doute des petits projets, qui n'ont pas les reins assez solides pour avoir une logistique de traduction en place. Dans ce cas, on peut rester dans Debian (et espérer que le responsable enverra à la source nos traductions). En résumé

Sauf dans le cas de paquets purement Debian, où il convient évidemment de traduire au sein de Debian, ou dans le cas de petits projets n'ayant aucune infrastructure pour la traduction, il me semble important de traduire à la source. Que cela ne vous dispense pas d'annoncer votre intention sur la liste. On peut y coordonner l'aide apportée à la source. Problème supplémentaire

Tout ça ne résout pas le problème du matériel apporté par la mise en paquet Debian de programmes ayant une source extérieure. Dans le cas des templates Debconf, on les traduit évidemment au sein de Debian. Mais je me demande depuis longtemps s'il existe des chaînes de fichier po introduites par les responsables Debian (lors de leurs modifications). Si c'est le cas, je ne sais pas comment coordonner la chose. En résumé

Toute cette démarche administrative peut paraître un peu rébarbative, mais elle n'est quand même pas très compliquée à appliquer. Et si on ne le fait pas, les traductions vont être dupliquées, ou au contraire ne seront plus maintenues, ou le projet Debian va se faire maudire par le reste du monde libre pour son manque de respect des autres projets existants. Alors s'il vous plaît, faites un petit effort... Comment traduire Choisir sa cible

Vouloir traduire, c'est très bien ; savoir ce qu'on va traduire, c'est mieux.

Il faut choisir la catégorie de matériel que l'on veut traduire : catalogues po, templates debconf, pages de manuel, document info, manuel de l'utilisateur en html ou assimilé, ou autre.

Pour choisir sur quel paquet travailler, la méthode dépend du matériel. Pour les deux premières catégories, un petit tour sur le Debian Translation Center () peut être utile pour voir quels paquets sont prêts à être traduits et ceux qui ont besoin d'une mise à jour. Pour toutes les autres catégories, il faut télécharger le code source des paquets et regarder à la main. Je n'ai pas encore trouvé comment les ajouter au DTC. Comment récupérer le matériel à traduire

Vous pouvez récupérer les fichiers tous seuls depuis le DTC, mais personnellement, je préfère récupérer toutes les sources du paquet (avec la commande apt-get source nom_du_paquet). Comme ça, en cas de doute, je peux toujours me référer au code source. Maintenant, chacun est libre de faire comme bon lui semblera...

Une fois que vous avez choisi votre cible, que vous êtes assuré par la partie administrative que vous pouviez vous lancer et que vous avez récupéré votre cible, il reste à traduire la chose. Voyons comment faire. Comment traduire les catalogues po ?

Commençons par quelques pointeurs vers plus de documentation.

Le manuel de gettext : inclus dans le paquet gettext-doc.

Le KDE Translation HOWTO :

Lorsque vous éditerez un catalogue po, vous verrez des initiales apparaître dans les commentaires, du genre 167 t ; 166 f ; 12 u .

C'est une indication pour vous guider dans le travail de traduction : [T]ranslated :

Chaîne traduite ; rien à faire. [F]uzzy :

Le programme qui cherche les nouvelles chaînes à traduire dans le code source trouve parfois des morceaux de chaînes qui ont peu changé. Il propose alors l'ancienne traduction, et marque la chaîne comme floue (fuzzy). Il faut alors une intervention humaine pour vérifier, et le cas échéant, corriger, et enfin supprimer le marqueur « flou ». [U]ntranslated :

Chaîne non traduite ; à traduire. [O]bsolete :

Chaîne à traduire dans une version précédente du programme mais qui a disparu depuis et n'est plus utilisée. On doit pouvoir se débarrasser de cette chaîne normalement.

Voyons ensuite les principaux programmes disponibles pour vous aider dans votre tâche :

emacs dispose d'un mode po-mode. C'est ce que j'utilise, et c'est la solution que je conseille à tout le monde (évidemment, puisque c'est mon choix).

Ses qualités :

une fois qu'on connaît les raccourcis claviers, il est très simple à utiliser.

permet de voir le code correspondant très simplement.

Ses défauts

C'est dans emacs, et il est préférable de connaître cette merveilleuse usine à gaz pour utiliser ce mode.

Pas de correction orthographique par défaut. Vous pouvez toutefois lancer le mode flyspell-mode pour le faire.

pas de compendium (voir la documentation de gettext pour savoir ce qu'est un compendium).

kbabel est l'outil issu du monde KDE. Il semble très évolué, mais...  je n'aime pas son ergonomie (c'est personnel, évidemment)

Ses qualités :

Correction orthographique.

Compendiums. Ses défauts :

Je ne crois pas qu'il permette de voir le code simplement, mais je ne suis pas sûr, je ne le connais pas bien.

On ne voit qu'une traduction à la fois.

gtranslator est l'outil issu du monde GNOME. Je ne l'ai jamais utilisé. Input Welcome.

Attention, s'il s'agit d'une mise à jour, veuillez contacter le traducteur précédent (dont l'adresse figure normalement dans le document) pour avoir le feu vert. Il est le responsable de fait de cette mise à jour et vous pouvez lui offrir l'opportunité de vous substituer à lui. Ajoutez alors votre adresse à la suite de la sienne. Comment traduire les templates Debconf ?

Voici quelques instructions issues du fichier README.translators du paquet debconf :

Le fichier que vous devez traduire est le template Debian, en engendrant un fichier template <lang>. Ceci est spécifique à debconf. Pour fabriquer facilement un fichier de référence d'un template <lang> vous n'avez qu'à taper : debconf-getlang <lang> debian/templates > debian/templates.<lang>

Ensuite, éditez le nouveau fichier, et remplissez par des traductions toutes les lignes vides. Lorsque je change le fichier template de référence, vous pouvez rassembler le tout avec la commande debconf-mergetemplate : debconf-mergetemplate debian/templates debian/templates.<lang> > new

Un dernier mot au sujet de la syntaxe des templates : la première ligne de description est comme un en-tête. Vous n'êtes pas autorisé à poursuivre la première ligne sur les suivantes. Par exemple, le template suivant est mauvais : Template: autolog/note Type: note Description: Autolog daemon will start logging out users if it wants to, but it's not sure. Will see if it's nice today. The autolog daemon will be activated now and will log users out after two hours of idle time. If you do not want this then either uninstall autolog or customize /etc/autolog.conf and /etc/rc.d/autolog according to your needs.

La description brève s'étale sur deux lignes mais debconf n'utilisera que la première ligne comme descriptif rapide, et le reste comme descriptif détaillé. Ainsi, ne faites pas de description rapide trop longue ! Les spécifications imposent une limite de « 50 caractères au plus ». Comment traduire les descriptions de paquets Debian ?

Les descriptions de paquets Debian sont les parties de texte explicatives concernant ledit paquet. Les descriptions à traduire sont souvent très courtes, quelques lignes à peine, mais les traduire toutes est une tâche de longue haleine (prédiction : juillet 2003...  date non-contractuelle bien sûr).

Plus que des traducteurs, il nous faut des relecteurs ! Organisation

Le projet a été initié par Michael Bramer, qui en assure la maintenance. L'adresse électronique du serveur est et la page d'accueil est . Comme on peut le constater, ce projet n'a pas encore de statut très clair au sein de Debian, ne disposant ni d'un espace oueb ni d'une liste de diffusion dédiés. De plus, son intégration en tant que tel pose aussi pas mal de soucis. Mais c'est un autre débat (suivre debian-devel pour les tenants et aboutissants). Demander des traductions par courrier électronique

Il vous suffit d'envoyer un courriel banal à grisu-td@auric.debian.org, en mettant dans le sujet du courriel votre commande, (comme par exemple GET 1 fr, laissez le corps du courriel vide). Attendez quelques instants, puis vérifiez votre boîte aux lettres électroniques. Voila, ce n'est pas plus compliqué que cela !

Les commandes disponibles sont les suivantes :

GET x fr

demande « x » descriptions non encore traduites (nombre compris entre 1 et 9). REQUEST <nom du paquet> fr

demande la description du paquet <nom du paquet>. SREQUEST <nom du paquet> fr

demande toutes les descriptions du paquet source qui porte le nom <nom du paquet>. STATUS fr

demande un rapport sur l'état des traductions pour la langue française. NOGUIDE

n'affiche pas ce guide dans la réponse du serveur. NOTHING

n'envoie pas de nouvelles descriptions, l'état des traductions, etc. Traductions

Après avoir envoyé votre courriel, vous recevez un formulaire du serveur (il s'agit d'une pièce jointe). Sauvez la pièce jointe et ouvrez-la avec votre éditeur de texte favori. Dans ce formulaire, vous découvrirez la description originale, en anglais donc, (ne la modifiez surtout pas, même si elle contient des fautes) et le squelette de la traduction que vous allez faire.

Parfois deux descriptions différentes contiennent une phrase ou paragraphe identique, si le serveur a déjà reçu une traduction française d'un segment de texte identique (dans l'exemple qui suit : « GNOME signifie... »), il vous propose une traduction française pour vous alléger le travail. Il ne s'agit que d'une simple suggestion ; vous pouvez sans problème l'effacer ou la modifier.

Voici un exemple de formulaire : Description: A tetris clone. Gnome is the "GNU Network Object Model Environment" . It is a project to build a complete, user-friendly desktop based entirely on free software. Description-fr: <trans> Gnome signifie « GNU Network Object Model Environment » . <trans>

Dans le squelette du formulaire : Les lignes commençant par « # » sont des commentaires. La ligne commençant par « From: Nom <email@host.com> » indique l'adresse électronique du traducteur. (Cette ligne est utile si le traducteur envoie son courrier à partir d'une autre adresse électronique). Les descriptions doivent être séparées par une et une seule ligne vide.

Vous n'avez qu'à remplacer le « <trans> » par votre traduction, puis, sauvez votre traduction et envoyez-la en pièce jointe à grisu-td@auric.debian.org. Le contenu du sujet du courriel n'a pas d'importance.

Règles à respecter ne traduisez pas le mot description, gardez la structure de la description, ne modifiez pas la description anglaise : si vous trouvez une erreur, envoyez un rapport de bogue. Ne modifiez rien d'autre que le français. N'insérez pas de lignes supplémentaires notamment ! Traduisez conformément aux règles en vigueur dans la traduction chez Debian. Relectures

Il se peut qu'un membre de la liste vous écrive directement pour vous proposer des améliorations ou des corrections. Dans tous les cas, suivez la liste pour y relever les diverses corrections.

Vous trouverez toutes les explications dans le fichier suivant dans l'arborescence cvs :

webwml/french/international/french/ddts.wml

Ensuite, voici la démarche à suivre : passer à l'entrée standard du script le rapport reçu avec l'option parse, renommer les fichiers NomDuPaquet.todo en NomDuPaquet.relu éditer NomDuPaquet.relu et effectuer les corrections nécessaires, vous pouvez ajouter des commentaires en ajoutant des lignes commençant par « >> » suivi d'une espace puis le texte de commentaire, lancer le script avec l'option mail pour fabriquer les courriels automatiquement.

Pour plus d'information, lisez la documentation fournie avec le script : perldoc ddts-script.

Les scripts sont désormais installables via apt. Vous n'avez qu'à ajouter dans votre /etc/apt/sources.lists : deb http://nico.bertol.free.fr/debian bertol/fr/

puis de faire apt-get update apt-get install ddtc l10n-check l10n-check-rules-fr

Les scripts sont aussi disponibles au format rpm à l'adresse suivante :

Profitez vous-même des traductions

Insérez simplement l'une des lignes suivantes dans le fichier /etc/apt/sources.lists : deb http://gluck.debian.org/~grisu/ddts/aptable fr/potato main deb http://gluck.debian.org/~grisu/ddts/aptable fr/woody main deb http://gluck.debian.org/~grisu/ddts/aptable fr/sid main

Après un « apt-get update », tous les outils (dselect, gnome-apt, deity,...) utiliseront les descriptions déjà traduites. Comment traduire les pages de manuel ?

Pas de méthode particulière. Il faut ouvrir le document dans un éditeur de texte, et tout traduire. Le plus difficile, c'est de vérifier que la page reste à jour. Et je n'ai aucune idée de comment faire... Comment traduire les fichiers info ?

Aucune idée. Input welcome... Comment traduire la documentation ?

Il faut faire attention à bien traduire le document source. Par exemple, si la source est en XML, il vaut mieux ne pas traduire la conversion en HTML. Sinon, pas de méthode particulière, à part la classique ouverture dans un éditeur. Conclusion, avenir

Voilà le premier jet de ce HOWTO traduire pour Debian. Si vous avez le moindre commentaire à faire, n'hésitez pas.

C'est tout, j'espère que Woody sera l'avènement de l'internationalisation effective de Debian... Vieux débats classés... Pourquoi « paquet » et pas « paquetage » ?

On trouve partout « paquetage » et non « paquet ». Pourquoi Debian se singularise-t-elle ?

Le débat a été tranché en 1997, c'est-à-dire bien avant qu'on ne trouve partout « paquetage ». C'est le résultat d'un consensus établi sur la liste et le terme a donc été introduit dans le lexique de Debian. Depuis, il fait référence pour toutes les traductions de Debian.

Il est donc inutile de relancer un n-ième débat sur le sujet. Lire en particulier « Peut-on changer une traduction établie dans le lexique ? ». Pourquoi ne peut-on pas mettre d'image dans le format debian-doc ?

Le format debian-doc sgml est volontairement minimaliste pour permettre une plus large diffusion de la documentation. Il permet entre autre de fournir des sorties variées, aussi bien du PostScript que du texte. Dans ces conditions, le format de sortie le plus élémentaire impose évidemment ses bornes aux autres formats.

Si vous désirez une sortie plus complète, tournez-vous vers la DTD docbook du sgml.

Si vous désirez faire changer les choses, n'hésitez surtout pas à vous retrousser les manches et corriger les choses vous-même : la communauté entière vous remerciera... Peut-on changer une traduction établie dans le lexique ?

Les termes du lexique de Debian sont arrêtés et servent de référence. Il est théoriquement possible de modifier une traduction d'un de ces termes mais il va falloir dans ce cas apporter des arguments extrêmement solides.

En effet, changer un terme de référence impose obligatoirement de réviser TOUS les documents qui ont été traduits et qui y font référence. C'est une tache énorme qui ne sera pas faite sans de solides raisons.

Évitez aussi de lancer des polémiques sur le sujet et gardez vos forces pour la traduction : Debian seule sera perdante sinon... Règles typographiques de base Règles typographique de la langue française La ponctuation

La langue française impose des règles typographiques très strictes qu'il faut essayer de respecter. La typographie est l'ensemble des règles de mise en page d'un document que ce soit la distance entre les mots, leur césure, leur disposition ou bien l'usage de la ponctuation.

Bien entendu, on ne peut pas toujours respecter toutes les règles en usage pour la bonne raison que ces règles de mise en page ne sont applicables que pour un format qui permet de fixer la mise en page une fois pour toute. Ces formats sont les suivants : le dvi, le PostScript et le pdf. À noter que ces trois formats sont à peu près équivalents et que l'on passe sans trop de difficultés d'un format à l'autre. L'inconvénient est que ces formats sont des formats binaires et qu'ils nécessitent donc des outils spécifiques pour leur lecture (respectivement xdvi et gv). L'avantage est que le lecteur ne peut modifier le fichier source et que l'on est sûr que la mise en page et l'information ne vont pas être changées.

Il existe beaucoup d'autres formats utilisés qui est des formats textes, avec ou sans des balises. Ces formats sont lisibles directement avec un éditeur de texte ou bien avec des outils dédiés qui mettent en page (comme un navigateur pour le HTML). On peut résumer ces formats au texte pur (caractères ASCII ou iso-latin 1 ou 15) et au HTML. L'inconvénient de ces formats est qu'il n'y a pas de mise en page facile à respecter pour deux raisons : la première est que la mise en page dépend du navigateur utilisé, de la fonte utilisée et de la façon dont la machine interprète le tout. Comme il n'y a pas vraiment de standard de rendu, le résultat varie beaucoup d'un environnement à l'autre. Deuxièmement, certains formats comme le texte sont extrêmement limités dans leur capacité de mise en page, ce qui impose évidemment de ne pas pouvoir respecter toutes les règles de typographie.

Un environnement bien fait devrait bien entendu gérer cela automatiquement. Ce n'est pas encore le cas chez nous. J'y travaille et j'ai espoir que cela se fasse avant le XXII-ième siècle. En attendant, il faut faire avec et compenser nous-même les faiblesses du système. Pour information, voici ce qui devrait être appliqué en ce qui concerne la mise en page des signes de ponctuation. J'ai synthétisé tout cela dans un document que vous pourrez trouver très bientôt à :

Voici un résumé très rapide. On différencie deux types de ponctuation : la basse et la haute. Elles sont définies par rapport à la ligne de base, c'est-à-dire la ligne virtuelle sur laquelle s'appuient les lettres pour s'aligner. La ponctuation basse est composée des signes suivants : le point, la virgule et les points de suspension. La ponctuation haute est composées du reste : le point-virgule, les deux-points, le point d'interrogation, d'exclamation, les guillemets et les parenthèses.

L'unité de l'espace de base en typographie est le cadratin. Pour ceux qui connaisse, elle est égale à « 1 em » sous TeX. Cette espace est variable et dépend de l'environnement (fontes, graisses, etc.). Voici ce qu'impose la typographie française : ----------------------------------------------------------- | | | | | Signe | Espace (intervalle) | Espace (préconisée) | | | | | |---------------------------------------------------------- | | ; (avant) insécable et fixe aux environs de 10/100 | | entre 10/100 et 24/100 | |---------------------------------------------------------- | | : (avant) insécable et fixe aux environs de 24/100 | | entre 10/100 et 24/100 | |---------------------------------------------------------- | | ! (avant) insécable et fixe aux environs de 24/100 | | entre 10/100 et 24/100 | |---------------------------------------------------------- | | ? (avant) insécable et fixe aux environs de 24/100 | | entre 10/100 et 24/100 | |---------------------------------------------------------- | | « (après) insécable et fixe aux environs de 24/100 | | entre 10/100 et 24/100 | |---------------------------------------------------------- | | » (avant) insécable et fixe aux environs de 24/100 | | entre 10/100 et 24/100 | -----------------------------------------------------------

Notons que l'espace fine en typographie vaut 25/100 de cadratin. Pour plus de détails, allez lire le document placé en lien au-dessus.

On se rend bien compte que cela est ingérable pour nous au coup par coup. Je vais donc modifier debiandoc en conséquence. En attendant, on peut limiter beaucoup certains dégâts malheureux.

On ne peut transcrire aisément la finesse de la taille de l'espace préconisée mais on peut toujours au moins en mettre une. Et de plus la forcer à être insécable. C'est le rôle de la balise sgml (reconnue par debiandoc et le wml) &nbsp; (no breaking space). Il vous faut donc écrire : «&nbsp;toto&nbsp;» pour « toto » toto&nbsp;; pour toto ; toto&nbsp;: pour toto : toto&nbsp;? pour toto ? toto&nbsp;! pour toto ! toto...&nbsp; pour toto...

On est tous d'accord pour dire que c'est lourd mais c'est un pis-aller...  en attendant une correction plus globale et automatisée.

Voici un pointeur chez nos amis de FreeBSD :

Règles basiques Accentuation

On accentue normalement les éléments qui doivent l'être. On rappelle à ce sujet qu'une lettre capitale est une lettre comme les autres et doit être accentuée. Pas besoin d'utiliser les artifices des premières version de HTM (&eacute; pour « é ») même si, techniquement, cela est parfaitement supporté. Le problème est que cela rend la relecture très difficile. Il y a suffisamment de balises indispensables pour ne pas en ajouter d'autres.

Pour ceux qui aurait la malchance de travailler sous Microsoft Windows ®, voici quelques combinaisons qui devraient vous aider : « Alt+0171 » Alt+0187 À Alt+0192 Ç Alt+0199 É Alt+0201 Guillemets

Les guillemets français sont le « pour le guillemet ouvrant et le » pour le fermant. Tout autre type de guillemet est a priori à proscrire. Les notations américaines du genre "" ou bien `' sont donc à traduire.

On trouve exceptionnellement '' `` en français. À utiliser plutôt dans l'imbrication de citations, par soucis de clarté. Mots étrangers

Les mots étrangers cités dans votre traduction sont à mettre en évidence. En typographie, on utilise généralement l'italique pour cela. Ici, il vous faudra utiliser les balises <em> </em>. Voici une liste non-exhaustive de termes à mettre en italique : a priori a fortiori confer id. ou idem i.e. ou id est loc. cit. ou loco citato (passage cité)

Attention, le sigle cf., lui, ne doit pas se mettre en italique. Les titres

Les anglophones ont l'habitude d'utiliser des majuscules sur tous les mots d'un titres : « Debian GNU/Linux: Guide to Installation and Usage ». En français, seul le premier mot comportera une majuscule : « Debian GNU/Linux : guide d'installation et d'utilisation ». Les majuscules

Partie copiée-collée d'un courriel de Norbert Bottlaender-Prie

On emploie [la majuscule] aussi : au début d'une phrase :

Après un deux-points, lorsqu'il annonce une citation fictive ou réelle en style direct (mais non quand il précède une explication ou une énumération) :

[exemples] Il ne répondait pas à la question que se posait chacun d'entre nous : À quoi cela sert-il ? Le père demanda : « Pourquoi as-tu agi ainsi ? »

Quelquefois même sans les deux-points :

[exemple] C'est aux cris de Vive l'empereur ! que la foule accueillit le souverain.

au départ d'un alinéa (même s'il n'est pas début de phrase)

Commençant directement par le texte :

[exemple] Nous étudierons successivement : L'illusion de la sécurité collective ; La diplomatie des coups de force ; Le déclenchement de la guerre.

Commençant par un numéro ou une lettre de classification, suivi d'un point :

[exemple] Le Code pénal français distingue trois catégories d'infractions : 1. Les crimes ; 2. Les délits ; 3. Les contraventions.

Par contre,la minuscule est de règle après un « - » ou tiret :

[exemple] La Grande-Bretagne comprend : - l'Angleterre ; - l'Écosse ; - le pays de Galles.

Elle [la minuscule] s'impose également après le 1°, 2°, 3° etc., à l'intérieur d'un paragraphe de lignes pleines :

[exemple] « La communauté se dissout : 1° par la mort naturelle ; 2° par la mort civile ; 3° par le divorce ; 4° par la séparation de corps ; 5° par la séparation de biens. » (C. civ., art. 1441)

Extrait des Règles typographiques en usage à l'Imprimerie Nationale, p. 38-40. Les énumérations :

Partie copiée-collée d'un courriel d'Alain Reinhard.

Il faut considérer l'ordre des caractères typo, l'ordre des parties logiques du texte, la ponctu et, si ma mémoire est bonne, la syntaxe aussi.

Considérons ici seulement la ponctuation qui est le problème posé.

Premier cas de figure : la phrase est brisée entre l'introduction et l'énumération

Il faut alors une capitale à chaque partie et on doit utiliser en tête de ligne des signes de ponctu comportant un point, du genre 1. IV. ou C. Il faut terminer chaque énumération par un point-virgule et cela même s'il se trouve n'importe quel autre signe typographique dans l'énumération. La dernière énumération est marquée d'un point. S'il y a une sous-énumération imbriquée dans une énumération, il faut alors une minuscule au début et une virgule à la fin de chaque partie, avec le point-virgule marquant la fin de l'énumération reporté à la fin de la dernière sous-énumération. Dans ce cas je pense aussi que la proposition qui introduit l'énumération doit se terminer par un deux-points.

Voici des exemples : A. Ceci est une partie d'énumération ; B. Ceci est une deuxième. Remarquez bien la ponctuation ; C. Ceci introduit une sous-énumération : . pas de majuscule ici, . virgule à la fin, . sauf ici, c'est le point-virgule ; D. Ceci met le point final de l'énumération.

Deuxième cas de figure : la phrase est continue entre l'introduction et l'énumération

Il faut alors une minuscule initiale à chaque partie et on utilise en tête de ligne des signes de ponctuation ne comportant pas de point cette fois, du genre - i) ou 1°. Dans ce cas je pense que la proposition qui introduit l'énumération n'a pas besoin de signe de ponctuation. Pour cette explication de traducteur à traducteur, - j'aurais souhaité faire plus simple, - expliquer plus concrètement, - voire, concocter un document ps : a) plus complet, b) plus élégant, c) mais peut-être trop lourd finalement.

Un mot quand même pour ajouter que nos amis anglophones ne prennent pas souvent soin d'être constant dans le choix de la catégorie grammaticale du mot débutant chaque partie d'une énumération. Si on choisit un verbe pour la première partie d'une énumération, on commencera toutes les autres parties de la même énumération par un verbe. Etc. Debian GNU/Linux versus Debian GNU-Linux

La question du jour  ;-)

Après de longues discussions sur la liste et un vote, le débat a été tranché en faveur de la conservation de la notation traditionnelle, à savoir la barre de division « / ».

Le résultat du vote se trouve à l'adresse suivante :

Prière d'attendre quelques mois avant de relancer un débat là-dessus :-) Debian est une femme...

Bien que l'on doive bien sûr parler de Debian GNU/Linux, et non faire précéder Debian d'un quelconque article défini ou non, on accordera les participes passés ainsi que les adjectifs qualifiant Debian au féminin faisant ainsi par défaut de Debian une entité féminine. Expressions rationnelles versus régulières

C'est aussi l'objet de débat sans fin. Les deux ont des arguments pour et contre. Lire et rechercher les fils concernant ce genre de débat dans les archives de la liste (). Cherchez par exemple dans le mois de décembre 2001 le fil intitulé « regexp ».

Il a été convenu (sans vote) de s'en tenir à la tradition française en la matière et de conserver la formulation « expression rationnelle ». C'est de nouveau un clin d'oeil envers René... Référence

Lexique des règles typographique en usage à l'Imprimerie Nationale ISBN 2-11-081075-0 Quelques liens utiles :

Les outils d'aide L'éditeur de textes

Tous les textes et fichiers à manipuler sont des fichiers ASCII ou encodés en iso-latin (1 ou 15). Un éditeur de textes est donc largement suffisant. Les éditeurs sous Debian GNU/Linux sont très nombreux donc vous n'avez que l'embarras du choix. Toutefois, pour des raisons pratiques, certains sont plus performants que d'autres pour ce genre de travail car ils permettent, outre une coloration lexicale des éléments de balise (bien pratique pour la relecture) de passer aussi certaines commandes UNIX directement depuis l'éditeur (pratique pour les diff et patch par exemple). Les deux plus puissants sont Vim et (X)Emacs.

Une introduction rapide et simple à Emacs :

Comment se servir de sgml depuis Emacs : Les dictionnaires Sur Internet

Français - Anglais :

Français - Anglais & Anglais - Français :

Français :

Jargon :

Dictionnaire du LDP :

Trésor de la langue française :

La FAQ du forum fr.lettres.langue.française :

(si vous trouvez un autre hébergeur que www.chez.com, signalez-le moi : leur publicité est vraiment fatigante au possible. Je changerai l'adresse.) En ligne de commande :; Français :

Les programmes ispell et aspell sont fournis avec votre distribution de Debian GNU/Linux. Très facile à installer et à mettre en français pour les relectures afin d'éliminer toutes les fautes d'orthographe. Le dictionnaire de René Cougnenc (dico) sera disponible sur Woody. Une version pour Potato est disponible sur . Il vous donnera en plus l'ensemble des codes postaux du territoire français métropolitain :-)

Tous ces programmes s'interfacent très bien directement sous (X)Emacs, donc il n'est même pas nécessaire de sortir de votre éditeur pour corriger. Notez bien la présence du mode flyspell sous (X)Emacs pour corriger à la volée lors de l'écriture du texte.

Français - anglais :

Il s'agit de babytrans (programme non disponible sur Debian GNU/Linux et dont la licence est pour le moment douteuse). Il est disponible sur pour Potato et Woody. C'est un excellent programme de traduction de mots très pratique qui réagit au copier UNIX de la souris. Très bon outil. doc-debian-fr-3.1.3.1/doc/index.xsl0000644000175000017500000000426410531166560016210 0ustar jeromejerome Index du paquet doc-debian-fr

Index du paquet doc-debian-fr

Le paquet doc-debian-fr contient de nombreuses documentations sur Debian :

Le projet Debian


Utilisation


Développement




Frédéric Bothamy jeudi 23 novembre 2006, 01:37:59 (UTC+0100)

Traducteur :
Auteur :
Version :



Note :
doc-debian-fr-3.1.3.1/doc/debian-guide_fr-1.0.sgml0000600000175000017500000120302407605113047020521 0ustar jeromejerome Guide d'introduction à Debian GNU-Linux John Goerzen et Ossama Othman Traduction française de Patrice Karatchentzeff p.karatchentzeff@free.fr Traduction du document du 2 octobre 2000 Ceci est la version française du guide d'introduction à la distribution Debian GNU-Linux. Copyright © 1998, 1999, 2000 Software in the Public Interest, Inc

Il est autorisé de faire et de distribuer des copies modifiées du présent document sous les conditions de reproduction déclarées dans la « GNU General Public License » ainsi que dans tous les autres paragraphes où les conditions particulières de copyright s'appliquent, et que le résultat dérivé du précédent manuel dans son intégralité soit redistribué dans les mêmes conditions.

Il est autorisé de faire et de distribuer des copies traduites de ce manuel dans d'autres langues dans les conditions des versions modifiées. La « GNU General Public License » peut être incluse en version traduite approuvée par la Free Software foundation à la place de la version anglaise du document.

Vous pouvez comme vous le souhaîter distribuer des versions exactes ou modifiées du présent document en respectant les termes de la « GNU General Public License », à l'exception des sections clairement marquées avec un copyright séparé. Remerciements

De nombreuses personnes ont contribué à ce manuel. Nous aimerions toutes les remercier et nous allons essayer ici.

En espérant n'oublier personne parmi les nombreux collaborateurs à ce manuel, nous remercions : Havoc Pennington, Ardo van Rangelooij, Larry Greenfield, Thalia Hooker, Day Irmiter, James Treacy, Graig Sawyer, Oliver Elphick, Ivan E. Moore, Eric Fischer, Mike Touloumtzis et le Projet de documentation de Linux pour leur travail sur ce qu'est devenu le Guide d'introduction à Debian GNU-Linux.

Nous remercions Richard Stallman de la Free Software Foundation pour ses conseils et pour l'édition.

Nous disons un gros merci à Bruce Perens, Sven Rudolph, Igor Grobman, James Treacy, Adam Di Carlo, Tapio Lehtonen et Stéphane Bortzmeyer pour leurs travaux sur ce qui allait devenir une collection de documents d'installation.

Enfin, nous souhaitons vivement remercier les centaines de développeur Debian et que les milliers d'auteurs de logiciels libres qui nous ont donnés matière à penser et à écrire. Préface

« La liberté est la plus radicale de toutes les idées. »

Cette citation de Nathaniel Branden décrit bien, à nos yeux, le mouvement du logiciel libre. En l'espace de quelques décennies, à peine, l'informatique a transformé la vie de tout un pan de l'humanité. Par notre engagement dans le mouvement du logiciel libre, nous accentuons ce changement en offrant au plus grand nombre d'individus et de communautés la possibilité d'accéder pleinement aux ressources logicielles qui, dès lors, ne sont plus la chasse gardée de certains éditeurs et de leurs développeurs. Composants essentiels de cet objectif, ce livre et ce cédérom contiennent un précieux lot de logiciels libres, plus d'un millier de paquets, dont le plus populaire des serveurs web. Vous pouvez utiliser ces logiciels pour n'importe quoi, du dessin à la gestion de bases de données SQL.

La révolution de Logiciel Libre a pris l'industrie par surprise. Linux, conçu à partir de zéro il y a moins de dix ans, est devenu le noyau favori des auteurs de logiciels libres. Les idées et les expériences accumulées depuis ont propulsé Linux et les outils GNU de la Free Sofware Foundation aux avant-postes partout dans le monde. Des systèmes libres, comme celui de Debian GNU-Linux, rassemblent des milliers d'applications. Et qu'on ne s'y trompe pas, leur stabilité et leur puissance dépassent celles de bien des systèmes vedettes de l'industrie traditionnelle.

De nos jours, le système GNU-Linux joue un rôle dominant dans les serveurs Internet, parmi les fournisseurs d'accès, dans les universités, parmi les passionnés et dans le monde de la recherche informatique. Le système Debian GNU-Linux a mis la puissance des logiciels libres au service de tous, des ordinateurs portables aux engins spatiaux.

De très nombreuses entreprises dans le monde ont connu les satisfactions et les avantages qui découlent de l'utilisation de logiciels libres. Cette puissance et cette stabilité impressionnantes de même que la possibilité de communiquer directement avec l'auteur des programmes que vous utilisez, la capacité de les modifier à volonté, si, bien sûr, vous avez appris à le faire, et le support technique convivial que vous pouvez obtenir en ligne, en rien comparable, se combinent pour transformer l'usage au quotidien d'un ordinateur en une expérience pleine de découvertes et, surprise ! d'émotions.

Entrer dans l'univers du logiciel libre, c'est sûrement la meilleure chose que vous ayez faite avec votre ordinateur; le faire à partir d'une Debian GNU-Linux, c'est d'autant mieux : elle est puissante, robuste, très bien documentée et, en prime, ludique !

Bienvenue à la révolution !

- John Goerzen. Introduction

Nous sommes heureux d'avoir la chance de vous présenter Debian. Avant d'entamer la discussion sur GNU-Linux, nous aimerions d'abord parler un peu de ce qu'est exactement Debian - ce qu'elle fait et qu'elle sont ses buts dans le monde vaste du Logiciel Libre. Qu'est-ce que Debian ?

Debian est un système d'exploitation (OS pour Operating System) libre pour votre ordinateur. Un système d'exploitation est un rassemblement de programmes élémentaires et d'utilitaires qui font fonctionner votre ordinateur. Au coeur du système se trouve le noyau. Le noyau est le programme le plus fondamental de votre ordinateur. Il s'occupe de toutes les tâches élémentaires et permet de lancer les autres programmes. Debian utilise le noyau Linux, un ensemble de logiciels entièrement libres initié par Linus Torvalds et supportant des milliers de logiciels dans le monde. Une part importante des outils de base qui forment le système d'exploitation vient du projet GNU (http://www.gnu.org/) et ces outils sont aussi libres.

Une autre facette d'un système d'exploitation est la partie logiciels applicatifs: ce sont les programmes qui vous aident dans votre travail, de l'édition de documents en passant par les jeux jusqu'à l'écriture d'autres programmes. Debian rassemble plus de 1500 paquets (ce sont des logiciels pré-empaquetés dans un format pratique pour l'installation sur votre machine) tous libres.

Le système Debian ressemble un peu à une pyramide. À la base se trouve le noyau Linux. Juste au-dessus se trouve les outils de base, la plupart en provenance du mouvement GNU. Ensuite, on trouve les logiciels applicatifs que vous utilisez sur votre ordinateur; la plupart d'entre eux sont aussi d'origine GNU. Les développeurs Debian agissent comme des architectes et des coordinateurs: ils organisent avec soin le système en ajustant l'ensemble dans un système d'exploitation cohérent et stable: Debian GNU-Linux.

La philosophie d'un système GNU-Linux est de répartir ses fonctionnalités en un ensemble de petites tâches élémentaires. De cette façon, il est aisé d'ajouter une nouvelle fonctionnalité en combinant les petits bouts de programmes de nouvelle façon. Debian est un jeu de construction: vous pouvez construire toutes sortes de choses avec.

Lorsque vous utilisez votre système d'exploitation, vous désirez réduire la quantité de travail pour effectuer une tâche donnée. Debian vous fournit quantité d'outils pour vous aider mais seulement si vous connaissez ce que font ces outils. Perdre une heure à faire fonctionner quelque chose pour l'abandonner ensuite n'est pas très productif. Ce guide a pour but de vous apprendre ces outils de base qui sont le coeur de Debian: quels outils utilisés dans certains cas et comment les combiner. Qui est l'auteur de Debian ?

Debian est un projet de développement à travers Internet basé sur le volontariat. Il y a plusieurs centaines de volontaires travaillant dessus. La plupart sont responsables d'un petit nombre de paquets de logiciel et connaissent très bien les logiciels qu'ils empaquètent.

Ces volontaires travaillent de concert en respectant un ensemble de directives dans la façon d'assembler un paquet. Ces directives sont développées en coopération sur Internet lors de discussions dans des listes de diffusion. Un système d'exploitation multi-tâches et multi-utilisateurs.

Comme nous l'avons précédemment mentionné dans la section 3.1, l'architecture de Debian GNU-Linux vient directement de celle d'Unix. À la différence des systèmes d'exploitation comme le DOS, Windows et MacOS, on trouve habituellement le système GNU-Linux sur de grands serveurs et des systèmes multi-utilisateurs.

Ceci veut donc dire que Debian possède des avantages que les précédents systèmes n'ont pas. Il autorise un nombre important de personnes à utiliser le système en même temps, tant que chaque utilisateur possède son propre terminal. Un terminal est un simple écran et clavier qui sont connectés à l'ordinateur à travers le réseau, par l'intermédiaire d'un modem, ou directement. Votre clavier et l'écran forment alors un terminal qui est directement rattaché à l'ordinateur. Ce terminal spécial est souvent appelé console Pour autoriser de nombreux utilisateurs à travailler simultanément, Debian doit gérer de nombreux programmes et applications en même temps. Cette faculté s'appelle le multi-tâches.

Une grande partie de la puissance (et de la complexité) des systèmes GNU-Linux proviennent de ces deux fonctionnalités. Par exemple, le système doit avoir une solution pour empêcher un utilisateur de détruire accidentellement les fichiers d'un autre utilisateur. Le système d'exploitation doit aussi coordonner les nombreux programmes tournant en même temps et s'assurer qu'ils n'utilisent pas la même ressource, comme le disque dur, ensemble.

Si vous gardez à l'esprit la raison pour laquelle Debian a été créée, de nombreux de ses aspects vont alors avoir plus de sens. Vous apprendrez à tirer parti de la puissance de ces fonctionnalités. Qu'est-ce qu'un logiciel libre ?

Lorsque les développeurs et les utilisateurs de Debian parlent de logiciels libres, ils pensent à liberté plutôt qu'à gratuité. NDT: En anglais, le free de free software veut aussi bien dire libre que gratuit d'où une confusion souvent ignorée du profane entre logiciel libre et gratuit. Debian est libre dans le sens où vous êtes libre de la modifier et de la redistribuer, et vous aurez toujours accès au code source pour le faire. Les « Directives du Logiciel Libre de Debian » (http://www.debian.org/social_contract#guidelines) décrivent avec plus de détails ce que Debian appelle exactement libre. La Free Software Foundation , (http://www.fsf.org), à l'origine du projet GNU, est aussi une excellente source d'information. Vous pouvez trouver plus de détails sur le libre sur le site web de Debian (http://www.debian.org). Un des travaux les plus connus en la matière est un essai de Richard Stallman « Why Software should be freePourquoi les logiciels devraient être libres ? ? » (http://www.fsf.org/philosophy/shoudbefree.html). Jetez-y donc un coup d'oeil pour connaître les raisons pour lesquelles nous supportons les logiciels libres comme nous le faisons. Récemment, des gens ont commencé à appeler les logiciels libres des logiciels Open Source (à code ouvert); ces deux termes sont interchangeables.

Il se peut que vous vous demandiez pourquoi certaines personnes prennent sur leur temps libre et passent des heures à écrire des logiciels et les empaqueter soigneusement juste pour les donner. Les réponses à cette question sont aussi variées que les contributeurs.

Beaucoup croient au partage de l'information et à la liberté de coopérer avec quelqu'un d'autre et ils pensent que le logiciel libre encourage cette pratique. Une longue tradition de mise en avant de ces valeurs, parfois appelée l'Éthique du Hacker Notez bien que le terme « hacker » ne doit pas être confondu avec celui de « cracker ». Pour faire simple, un hacker est un être bienveillant tandis qu'un cracker est malveillant. Les films et les autres formes de média utilisent la plupart du temps à tord le terme hacker au lieu de celui de cracker, a commencé dans les années cinquante. Le Projet Debian GNU-Linux a été fondé sur les bases de l'éthique de liberté des logiciels libres, sur le partage et la coopération.

D'autres désirent apprendre davantage sur les ordinateurs. De plus en plus de gens recherchent des solutions pour éviter les prix sans cesse croissants des logiciels propriétaires. C'est une communauté grandissante d'utilisateurs qui ne cesse d'apprécier tous les logiciels libres qu'elle a reçu d'autres personnes.

De nombreuses personnes dans les universités créent des logiciels libre pour favoriser le résultat de leur recherche dans des domaines non exploités. Certaines entreprises aident à maintenir certains logiciels libres et ont ainsi leur mot à dire dans la direction du développement - il n'y a pas de solutions plus rapide pour obtenir une nouvelle fonctionnalité que de l'implémenter vous-même ou d'embaucher un consultant pour le faire. Les entreprises sont aussi intéressées par la plus grande souplesse et la possibilité de choisir entre plusieurs vendeurs pour le support.

Quelques autres personnes voient les logiciels libres comme un bien social qui démocratise l'accès à l'information et prévient d'une centralisation excessive de l'infrastructure de l'information mondial. Bien sûr, beaucoup d'entre nous trouve cela tout simplement sympa.

Debian est tant rattachée au logiciel libre que nous avons pensé qu'il serait bien de tout formaliser dans un document. Notre Contrat Social (http://www.debian.org/social_contract) nous promet que Debian sera toujours composée à 100% de logiciels libres. Lorsque vous installez un paquet de la distribution main de Debian, vous pouvez être certain qu'il respecte nos Directives du Logiciel Libre.

Bien que Debian croit aux logiciels libres, il y a des cas où certaines personnes désirent ajouter des logiciels propriétaires sur leurs machines. Dans la mesure du possible, Debian le supporte; bien que les logiciels propriétaires ne sont pas inclus dans la partie main de la distribution Debian, on peut parfois les trouver sur le site ftp dans le répertoire non free. Et il y a un nombre grossissant de paquets dont le but unique est d'installer des logiciels propriétaires que nous ne sommes pas autorisés nous-mêmes à distribuer !

Il est important de bien distinguer les logiciels commerciaux de ceux propriétaires. Les logiciels propriétaires ne sont pas des logiciels libres; les logiciels commerciaux sont des logiciels vendus contre de l'argent. Debian autorise les logiciels commerciaux, mais pas les propriétaires, à faire partie de la distribution main. Rappelez-vous bien que l'expression logiciel libre ne se rapporte pas au prix; il est parfaitement possible de vendre un logiciel libre. Pour un peu plus de clarification sur la terminologie employée, voir http://www.fsf.org/philosophy/categories.html. Au sujet de ce livre

Ce livre a été conçu pour les lecteurs fraîchement arrivés à Debian GNU-Linux. Il n'est pas nécessaire d'avoir des connaissances sur le système GNU-Linux ou tout autre système de type Unix mais il est nécessaire d'avoir quelques connaissances de base sur les ordinateurs et leurs composants. Il vous faut connaître les différentes parties d'un ordinateur et ce que l'on peut faire avec.

De façon générale, ce tutoriel essaie de vous aider à comprendre ce qui se passe à l'intérieur d'un système Debian. L'idée est de vous rendre apte à résoudre de nouveaux problèmes et de tirer le meilleur parti de votre ordinateur. Ainsi, vous rencontrerez plein de théories et de faits amusants dans les différents aspects des « How ToLittéralement: Comment faire... » de ce manuel.

Nous aimerions recevoir vos commentaires sur ce livre ! Vous pouvez joindre les auteurs debian-guide_fr-1.0_chap1.sgmlà debian-guide@complete.org. Nous sommes tout particulièrement intéressés par le fait de savoir comment ce livre a pu vous aider et comment le rendre meilleur. Si vous avez des commentaires ou bien que vous pensez que ce livre est la meilleure chose depuis l'apparition du pain brioché, alors, s'il vous plaît, envoyez-nous un courriel.

N'envoyez pas s'il vous plaît de questions techniques aux auteurs sur Debian car il y a plein de forum pour cela. Allez au chapitre 17 pour obtenir de l'information ou de l'aide. N'envoyez des courriels qu'au sujet du livre à proprement parlé à l'adresse ci-dessus. Comment lire ce livre

La meilleure façon d'apprendre n'importe quel programme informatique est de l'utiliser. La plupart des gens pensent que se contenter de lire un livre sans utiliser le programme n'est pas bénéfique. La meilleur voie pour apprendre Unix et GNU-Linux est encore de les utiliser. Utilisez GNU-Linux pour tout ce que vous pouvez. Sentez vous libre d'expérimenter !

Debian n'est pas aussi intuitive que certains autres systèmes d'exploitation. Il vous sera certainement nécessaire de lire au moins quelques chapitres de ce livre. La puissance et la complexité de GNU-Linux le rendent difficile au premier abord mais bien plus rentable par la suite.

Pour apprendre, nous vous suggérons de lire un petit peu, et de jouer ensuite un petit peu. Continuez de bidouiller jusqu'à ce que vous soyez à l'aise avec les concepts, et alors seulement poursuivez la lecture du livre. Vous trouverez une variété importante de sujets traités parmi lesquels certains vous intéresseront. Après quelque temps, vous serez assez confiant pour utiliser des commandes sans savoir exactement ce qu'elles font. Ce sera une bonne chose.

Si jamais vous vous trompez en tapant une commande ou que ne savez pas comment sortir d'un programme, appuyez sur CTRL-c (la touche Ctrl et la lettre minuscule c doivent être pressées simultanément). Cela stoppe la plupart du temps le programme. Conventions typographiques

Avant d'aller plus en avant, il est important de se familiariser avec les conventions typographiques utilisées dans ce livre.

Quand vous aurez à presser simultanément plusieurs touches, une notation comme CTRL-a sera utilisée. Cela signifie « pressez la touche Ctrl et pressez la touche de la lettre minuscule a ». Certains claviers ont à la fois la touche Alt et Meta; la plupart des ordinateurs n'ont que la touche Alt mais celle-ci va simuler le comportement de la touche Meta. Donc, si vous n'avez pas de touche Meta, utilisez la touche Alt à la place.

Les touches comme Alt et Meta sont appelées des modificateur parce qu'elle change le mécanisme des touches standard comme la lettre A. Parfois, il est nécessaire d'avoir recours à plusieurs modificateurs simultanément. Par exemple, Meta-Ctrl-a signifie d'appuyer simultanément sur les touches Meta, Ctrl et a minuscule.

Quelques touches ont une notation spéciale. Par exemple, Entrée (RET, la touche avec une flèche descendante et allant à gauche), Suppr (Suppr ou quelque fois le retour arrière (la touche avec une flèche vers la gauche)), Échap (Échappement ou Esc). Ces touches portent généralement un nom bien explicite.

Les espaces utilisés dans les expressions signifient d'appuyer sur les touches séquentiellement. Par exemple, CTRL-a x RET signifie d'appuyer simultanément sur Ctrl et a, puis sur la lettre x et enfin sur la touche Entrée.

Dans certaines sections, le texte en caractère gras servira à marquer le texte de l'utilisateur, celui en italique des commentaires sur un point donné de la partie et tout autre type de texte servira au renvoi de la commande. Pour certaines commandes très courtes, vous pourrez rencontrer un autre format, en surimpression avec un espacement fixe. Bien débuter

« Une journée de plusieurs centaines de kilomètres doit commencer par un petit pas » - Lao-Tseu

Maintenant que vous avez vu les idées et la philosophie se cachant derrière Linux et Debian, il est temps de l'installer sur votre matériel ! Nous allons commencer par parler des préparatifs à l'installation de Debian, notamment en partitionnant le disque et finir par comment démarrer l'installation de votre système. Matériel supporté

Debian n'impose pas un matériel requis, si ce n'est celui supporté par le noyau Linux et les outils GNU.

Plutôt que de tenter de décrire toutes les différentes configurations matérielles qui sont supportées sur la plateforme PC, cette section contient des informations générales et des pointeurs où trouver de l'information supplémentaire.

Il y a deux excellents endroits pour vérifier des informations détaillées. La liste du matériel supporté par Debian (http://www.debian.org/releases/slink/i386/ch-hardware-req.en.html) et le HOWTO du Projet de Documentation Linux Compatibility-HOWTO (http://metalba.unc.edu/LDP/HOWTO/Hardware-HOWTO.html). Pour des informations sur le support des cartes vidéos, vous pouvez aussi jeter un coup d'oeil à XFree86 (http://www.xfree86.org/) sur leur site web. Espace disque et de mémoire

Vous devez avoir au minimum 4 Mo de mémoire et 35 Mo d'espace disponible sur votre disque. Si vous désirez installer un nombre raisonnable de logiciels, avec en particulier le système X Window, et quelques programmes de développement ainsi que des bibliothèques, vous aurez certainement besoin d'au moins 300 Mo. Pour une installation complète, il vous faudra 800 Mo. Pour installer tous les paquets de Debian, il vous faudra probablement environ 2 Go. Actuellement, tout installer n'a pas de sens car certains paquets procurent le même service. Avant de commencer

Avant de commencer, assurez-vous bien de sauvegarder toutes vos données présentes sur le système. La procédure d'installation peut détruire toutes les données d'un disque dur ! Les programmes utilisés lors de l'installation sont assez sûrs et nombreux ont des années d'existence et d'exploitation; mais un faux mouvement de votre part peut vous coûter cher. Même après avoir sauvegardé vos données, réfléchissez bien lors de vos réponses et de vos actions. Deux minutes de réflexion peuvent vous épargner des heures de travail non nécessaire.

Debian s'efforce au mieux de partager la place avec un ou plusieurs autres systèmes d'exploitation. Si vous prévoyez cette option, assurez-vous d'avoir le cédérom original ou les disquettes pour pouvoir réinstaller les autres systèmes d'exploitation. Si vous repartitionnez votre disque de boot, il se peut que vous ayez à réinstaller le système d'amorçageboot loader en anglais. C'est le responsable de la procédure de choix du système d'exploitation au démarrage. ou le système dans son intégralité. Les informations nécessaires

Si votre ordinateur est connecté à un réseau vingt-quatre heures sur vingt-quatre (i-e par une connexion Ethernet ou similaire et non par une connexion ppp), vous devez demander à votre administrateur les informations suivantes:

Votre nom d'hôte (« hostname »); Votre nom de domaine (« domain name »); L'adresse IP de votre ordinateur; L'adresse IP de votre réseau; Le masque réseau utilisé par votre réseau; L'adresse de votre réseau de diffusion en usage sur votre réseau (« broadcast »); L'adresse IP de la passerelle de routage par défaut (« gateway »), si votre réseau en possède une; Le système de votre réseau que vous devrez utiliser comme serveur DNS; La façon dont vous vous connectez au réseau via ethernet; Vérifiez si votre interface Ethernet est de type PCMCIA, et dans l'affirmative, relevez le type du contrôleur.

Si votre seule connexion réseau est celle du téléphone via ppp, ou tout autre type équivalent de connexion, il n'est pas nécessaire de s'occuper du paramètrage réseau avant la fin d'installation. Voir la partie 13.1 concernant le paramètrage d'une connexion ppp sous Debian. Partitionner son disque dur

Avant d'installer la Debian sur votre ordinateur, il est généralement de bon ton de planifier à l'avance l'organisation de votre disque dur. Une partie de ce travail consiste à partitionner le disque. Travaux préliminaires

Le partitionnement d'un disque consiste simplement au fait de le diviser en parties. Chaque partie sera indépendante des autres. C'est un peu comme ajouter des murs à l'intérieur d'une maison: après, décorer une pièce n'affecte pas l'aspect des autres pièces.

Si vous avez déjà un système d'exploitation sur votre disque (Windows 95, Windows NT, DOS, etc.) et que vous désirez installer Debian GNU-Linux au même endroit, il sera probablement nécessaire de repartitionner le disque. De manière générale, transformer une partition contenant déjà un système de fichier détruit toutes les informations le contenant. Ainsi, vous devez absolument faire une sauvegarde de toutes vos données avant tout repartitionnement. Pour reprendre l'analogie avec la maison, vous devrez probablement retirer tous les ornements d'un mur avant de le déplacer ou sinon, vous risqueriez des les endommager. Heureusement, il existe une possibilité pour certains utilisateurs; voir partie 4.3.6 pour plus d'informations.

Dans le cas le plus simple, le système GNU-Linux demande au moins une partition pour fonctionner. Vous pouvez avoir une seule partition contenant tout le système d'exploitation et vos fichiers personnels. De nombreuses personnes optent pour un partitionnement plus important pour le système GNU-Linux. Il y a deux raisons de subdiviser son système avec un nombre plus important de petites partitions. La première est pour une raison de sécurité. Si quelque chose arrive et corrompt le système de fichiers, seule une partition est généralement affectée. Ainsi, il n'est simplement nécessaire que de remplacer la portion incriminée (à l'aide des sauvegardes que vous avez pris soin d'effectuer consciencieusement). Au minimum, vous allez devoir créer ce que l'on appelle généralement une partition root ou partition racine. Elle contient les composants essentiels du système. Si une autre partition est corrompue, vous pouvez toujours amorcer votre système pour essayer de le réparer. Cela peut vous épargner les ennuis d'une réinstallation complète du système à partir de zéro.

La seconde raison est généralement plus critique dans un environnement commercial, mais elle dépend énormément de la finalité du système. Supposons que quelque chose échappe à tout contrôle et qu'elle se mette à dévorer l'espace disque disponible. Si le programme en question a des privilège de super-utilisateur (root), le système lui réservant un pourcentage du disque non disponible pour les utilisateurs, vous pouvez tout à coup vous retrouver sans ressource disque. Ce n'est vraiment pas une bonne idée étant donné que le système en a besoin tout le temps (au moins au travers de la zone d'échangeplus communément appelée le swap.) pour de nombreux usages. Par exemple, des courriels non sollicités, comme le spam, peuvent rapidement saturer une partition. En utilisant de nombreuses partitions, vous pouvez vous protéger de ce genre de problème. Pour garder l'exemple du courrier électronique, placer le répertoire /var/spool/mail dans sa propre partition n'empêchera pas le système de continuer à fonctionner, même en cas de saturation par spam.

Une autre raison apparaît lorsque vous avez des disques IDE de grande capacité et que vous n'utilisez ni le mode LBA ni un pilote de surcharge.Voir le manuel de votre disque pour une description de ces fonctionnalités. Dans ce cas, il est nécessaire de placer la partition racine à l'intérieur des 1024 premiers cylindres de votre disque dur, ce qui représente généralement environ 524 méga-octets. Voir la partie 4.3.3 pour obtenir plus d'informations à ce sujet.

La plupart des gens pensent qu'une partition d'échange est aussi une nécessité absolue alors que ce n'est pas exact. Le swap est une zone de stockage du système d'exploitation qui l'utilise comme une mémoire virtuelle en complément de la mémoire vive. La placer dans une partition séparée offre des performances accrues. Il est aussi possible de forcer Linux à utiliser un simple fichier comme zone d'échange mais ce n'est pas recommandé.

Le seul réel inconvénient à utiliser des partitions multiples est qu'il est généralement difficile d'appréhender à l'avance ses besoins. Si vous sous-dimensionnez vos partitions, soit vous aurez à réinstaller le système, soit vous aurez à jongler en déplaçant quantité de choses pour faire de la place dans la partie sous-taillée. D'un autre côté, si la partition est surdimensionnée, vous perdrez de la place qui pourrait être utilisée pour autre chose... Planifier l'usage du système

Les besoins en place sur un disque et son schéma de partitionnement sont fortement dépendants du type d'installation que vous avez décidé de créer.

Pour vous faciliter la vie, Debian offre un certain nombre de profils par défaut dont certains sont énumérés un peu plus loin. Les profils sont de simples jeux de paquets pré-sélectionnés en vue d'une tâche particulière sur votre système. L'installation est facilitée car tous les paquets requis dans le profil voulu sont automatiquement marqués à installer. Chaque profil fournit la taille globale du système après installation. Même si vous n'utilisez pas ces profils, cette aparté est important pour planifier car il vous permet de vous donner une idée de la taille de votre ou vos partitions suivant vos besoins. La liste suivante donne quelques profils ainsi que la taille associée: Server_std

Ceci est une petite configuration de serveur utile pour de très petites machines qui ne conviendraient plus à un usage courant pour un utilisateur. Elle possède par défaut un serveur FTP, un serveur web, DNS, NIS et POP. Cela occupe environ 50 Mo. Bien sûr, ceci correspond simplement à la taille des logiciels installés ; toutes les données que vous aurez à traiter sont à rajouter. Dialup

Ceci est typique d'une configuration classique de bureau avec un système X Window, des applications graphiques, du son, de l'édition, etc. La taille de l'ensemble des paquets occupe près de 500 Mo. Work_std

Cette configuration convient aux petites machines ne pouvant supporter X Window et ses applications graphiques. C'est aussi parfait pour un ordinateur portable ou mobile. Cela occupe environ 140 Mo. Il est possible aussi d'avoir une configuration sous X avec moins de 100 Mo. Devel_comp

Ceci est un environnement de travail rassemblant tous les paquets de développement populaires comme PERL, C et C++. Cela demande environ 475 Mo. En rajoutant X et quelques autres paquets utiles, vous devriez tourner autour de 800 Mo pour ce type d'installation. Garder en mémoire que ces tailles n'incluent pas toutes les données généralement présentes sur un disque, comme les fichiers des utilisateurs, les courriels et les données. Il est toujours préférable d'être généreux avec la taille de vos propres données et fichiers. De plus, le répertoire Debian /var contient quantités d'informations du système. Les fichiers de gestionnaire d'installation des paquets peut facilement occuper 20 Mo de disque. En général, vous devriez allouer au moins 50 Mo pour le répertoire /var car les journaux de bordplus communément appelés les fichiers de logdu système sont aussi stockés là. Les limitations des disques PC

Les BIOS des PC ajoutent de nouvelles contraintes au partitionnement de disque. Il y a une limite au nombre de partitions primaires et logique qu'un disque peut contenir. En plus, il y a des limites à la taille de l'endroit où le BIOS va chercher ses informations d'amorçage. On peut trouver plein d'informations à ce sujet dans le mini-HOWTO Partition (http://metalab.unc.edu/LDP/HOWTO/mini/Partition.html). Cette partie va inclure une bref résumé pour vous aider à affronter la plupart des situations.

Les partitions primaires sont les partitions originelles des disques durs de PC. On ne pouvait en créer plus de quatre. Pour s'affranchir de cette limitation, les partitions étendues ou logiques ont été inventées. En configurant une de vos partitions primaires en étendue, vous pouvez subdiviser la zone de cette partition en partitions logiques. Le nombre de partitions logiques que vous pouvez créer est beaucoup moins limité que le nombre de partitions primaires. Dans tous les cas, vous ne pouvez créer qu'une seule partition étendue par disque.

Linux limite le nombre de partitions par disque à quinze partitions pour les disques SCSI (trois partitions primaires utilisables et douze partitions logiques) et soixante trois partitions pour les disques IDE (trois partitions primaires et soixante partitions logiques).

La dernière chose qu'il est nécessaire de connaître au sujet du BIOS du PC est que votre partition racine - c'est-à-dire la partition contenant l'image du noyau - doit être incluse dans les 1024 premiers cylindres de votre disque. Puisque généralement votre partition racine est aussi votre partition d'amorçage, il faut vous assurer que votre partition racine se trouve bien à l'intérieur des 1024 premiers cylindres.

Si vous avez un disque de grande capacité, il se peut que vous utilisiez des techniques de translation de cylindres à l'intérieur de votre BIOS comme la translation LBA (On peut se référer pour plus d'informations au sujet des disques de grande capacité dans le Large Disk mini-HOWTO (http://metalab.unc.edu/LDP/HOWTO/mini/Large-Disk.html)). Si vous utilisez ce schéma de translation de cylindres, votre partition d'amorçage doit se trouver à l'intérieur de la représentation translatée des 1024 cylindres. Nom de périphériques sous Linux

Les noms des disques et partitions sous Linux peuvent être différents que ceux utilisés par d'autres systèmes d'exploitation. Vous devez connaître ces noms que Linux utilise au moment de la création et du montage des partitions. On trouve un schéma élémentaire dans la table suivante.

---------------------------------------------------------- | Périphériques | Nom sous Linux | |----------------------------------------------------------| | Premier lecteur de disquette | /dev/fd0 | | Second lecteur de disquette | /dev/fd1 | | Première partition sur /dev/hda | /dev/hda1 | | (typiquement C: dans d'autres OS)| | | Cinquième partition sur /dev/hdc | /dev/hdc5 | | Seconde partition sur /dev/sdb | /dev/sdb2 | | Disque IDE sur la première nappe | /dev/hda | | IDE en maître ou cédérom | | | Disque IDE sur la première nappe | /dev/hdb | | IDE en esclave ou cédérom | | | Disque IDE sur la seconde nappe | /dev/hdc | | IDE en maître ou cédérom | | | Disque IDE sur la seconde nappe | /dev/hdd | | IDE en esclave ou cédérom | | | Premier disque SCSI | /dev/sda | | Second disque SCSI et les autres | /dev/sbb et ainsi de | | | suite | | Premier port série (COM1 dans | /dev/ttyS0 | | d'autres OS) | | | Second, troisième, etc. port | /dev/ttyS1, /dev/ttyS2| | série | etc. | | Unités de sauvegarde SCSI (à | /dev/st0, /dev/st1, | | rembobinage automatique) | etc. | | Unités de sauvegarde SCSI (à | /dev/nst0, /dev/nst1, | | rembobinage non automatique) | etc. | | Cédéroms SCSI | /dev/scd0, /dev/scd1, | ----------------------------------------------------------

Les partitions de chaque disque sont représentées en ajoutant un chiffre au numéro de disque. Par exemple, les noms hda1 et hda2 représentent les première et seconde partitions du premier disque IDE de votre système. Linux représente les partitions primaires avec le nom du périphérique plus les nombres 1 à 4. Par exemple, la première partition primaire du premier disque IDE est /dev/hda1. Les partitions logiques sont numérotées à partir de 5 donc la première partition logique est /dev/hda5. Garder bien en mémoire que la partition étendue - c'est-à-dire la partition primaire contenant les partitions logiques - n'est pas utilisable en tant que tel. Ceci s'applique aussi bien aux disques SCSI qu'aux disques IDE.

Imaginons que vous ayez un système avec deux disques SCSI, un à l'adresse 2 et l'autre à l'adresse 4. Le premier disque, à l'adresse 2, est appelé sda tandis que le second est appelé sdb. Si le disque sda a trois partitions, elles seront appelées sda1, sda2 et sda3. On applique le même raisonnement pour les partitions du disque sdb. Remarquez que si vous possédez deux adaptateurs pour bus SCSI (contrôleurs), l'ordre des périphériques peut porter à confusion. La meilleure solution dans ce cas est encore de regarder les messages de boot, en supposant que vous connaissez le modèle de vos périphériques. Schéma de partitionnement recommandé

Comme décrit auparavant, il est recommandé d'avoir une petite partition racine séparée et une grosse pour /usr s'il y a suffisamment de place. Pour la plupart des utilisateurs, ce partitionnement est très largement suffisant. Ceci est spécialement recommandé si vous avez un petit disque car la création de nombreuses partitions peut vous faire perdre de la place.

Dans certains cas, il se peut que vous ayez besoin d'une partition /usr/local séparée si vous planifier l'installation de nombreux programmes non-inclus dans Debian. Si votre machine est un serveur de courriel, vous aurez besoin d'une partition séparée pour /var/spool/mail. Mettre /tmp sur sa propre partition de 20 à 32 Mo est aussi une bonne idée. Si vous préparez un serveur avec un grand nombre de comptes d'utilisateurs, c'est généralement une bonne idée de préparer une grande partition séparée contenant /home à des fins de sauvegarde des comptes des utilisateurs. De façon générale, le partitionnement varie énormément d'un ordinateur à l'autre et dépend essentiellement de son usage.

Pour des systèmes très complexes, vous devez aller jeter un coup d'oeil au Multi Disks HOWTO (http://metalab.unc.edu/LDP/HOWTO/Multi-Disk-HOWTO.html). Il contient de nombreuses informations techniques pour les gens désirant configurer des serveurs.

La taille de la partition de swap doit aussi être étudiée. Il y a beaucoup de points de vue à ce sujet. Une règle approximative qui ne fonctionne pas trop mal est d'avoir autant de swap que de mémoire vive, quoiqu'il ne soit pas nécessaire de dépasser 64 Mo pour la plupart des utilisateurs. Elle ne doit pas non plus être plus petite que 16 Mo non plus. Bien sûr, il y a des tas d'exceptions. Si vous essayez de résoudre simultanément 10 000 équations avec une machine dotée de 256 Mo de mémoire vive, vous pouvez avoir besoin d'un giga-octet (si ce n'est plus...) de swap.

Par exemple, considérons une machine dotée de 32 Mo de mémoire vive et d'un disque IDE de 1,7 Go sur /dev/hda. Il y a une partition de 500 Mo pour un autre système d'exploitation sur /dev/hda1. Une partition de swap de 32 Mo est utilisée en /dev/hda3 et le reste, environ 1,2 Go, sur /dev/hda2 est la partition Linux. Partitionnement avant installation

Il existe deux moments différents pendant lesquels partitionner: avant ou après l'installation de Debian. Si votre ordinateur est entièrement consacré à Debian, vous pouvez partitionner pendant l'installation comme décrit dans la partie 5.5. Si vous avez une machine équipée de plus d'un système d'exploitation, vous devez généralement laisser l'autre système créer ses propres partitions.

Les paragraphes suivant contiennent des informations sur la manière de partitionner votre premier système d'exploitation avant l'installation de Debian. Remarquez que vous allez avoir besoin de savoir comment relier les noms des périphériques de votre système d'exploitation à ceux des partitions Linux.

Partitionner à partir de DOS ou Windows

Si vous manipuler des partitions FAT ou NTFS existantes, il est recommandé d'utiliser soit les outils natifs de Windows ou DOS, soit le schéma plus loin. Sinon, il n'est pas nécessaire de partitionner à partir de DOS ou Windows: les outils de partitionnement de Linux font généralement un travail de meilleure qualité.

Réduire une partition existante

Un des cas les plus classiques d'installation est de le faire sur un système contenant déjà le DOS (y compris Windows 3.1), Win32 (comme Windows 95, 98 ou NT) ou OS/2 et d'y ajouter Debian sur le même disque sans détruire l'ancien système. Comme décrit précédemment, réduire la taille d'une partition existante conduit presque immanquablement à la perte des données qu'elle contient, du moins sans prendre de précautions. La méthode que nous allons décrire ici, bien que ne garantissant pas de protéger vos données, marche très bien en pratique. Mais vous devez faire une sauvegarde par précaution.

Avant d'aller plus loin, vous devez savoir comment vous comptez diviser votre disque. La méthode décrite ici découpe seulement la partition initiale en deux morceaux. Un contiendra l'ancien système d'exploitation. L'autre sera utilisé par Debian. Pendant l'installation de Debian, on vous laissera le choix de partitionner la partie Debian à votre convenance, pour le swap ou pour le système de fichiers.

L'idée est de rassembler l'ensemble des données de la partition à son début de façon à ce que l'on ne perde rien lors de la réduction. Il est important de déplacer les données par paquets aussi petits que possible de façon à réduire les chances qu'un fichier soit écrit en fin de partition et réduise ainsi la taille disponible que vous pouvez extraire de cette partition.

La première chose que vous devez faire est une copie de FIPS qui est disponible dans le répertoires tools de votre cédérom Debian. Cette disquette doit être bootable. Sous DOS, une disquette bootable peut être créée en utilisant la commande sys a: sur un support précédemment formaté ou bien format a; /s pour une disquette non formatée. Dézipez l'archive et copiez les fichiers RESTORRB.EXE, FIPS.EXE et ERRORS.TXT sur la disquette bootable. FIPS est fourni avec une très bonne documentation que l'on vous recommande de lire. Vous devez absolument la lire si vous utilisez une compression de disque ou un gestionnaire de disque. Créer la disquette et lisez la documentation avant de poursuivre.

L'étape suivante consiste à déplacer toutes les données au début de la partition. DEFRAG, qui est fourni en standard dans les versions de DOS 6.0 et supérieures, peut très bien effectuer cette tâche. Regardez la documentation de FIPS pour une liste d'outils analogues. Remarquez bien que si vous utilisez Windows 95 ou plus, vous devez lancer DEFRAG de cet environnement car le DOS ne connaît pas le système de fichier VFAT utilisé pour accepter les noms longs dans les versions 95 et ultérieures de Windows.

Après avoir défragmenté le disque (ce qui peut prendre un certain temps sur les disques de grande capacité), rebooter sur la disquette FIPS que vous avez créée. Taper tout simplement a:\ fips et suivez les instructions.

Remarquez au passage qu'il existe de nombreux autres gestionnaires de partitions que celui-ci, au cas où FIPS ne fonctionnerait pas bien pour vous. Les étapes d'installation de Debian

Pour installer Debian la première fois, il vous faudra passer par les différentes étapes suivantes: Booter sur le système d'installation; Configurer le système de base; Installer le système de base; Booter sur le système de base précédemment installé; Installer le reste du système.

Booter sur le système d'installation, pour la première étape, s'effectue généralement avec la disquette de secoursRescue floppy dans la distribution Debian. ou sur le cédérom.

Aussitôt que vous avez booté le système Linux, le programme dbootstrap se lance et vous guide pour effectuer la seconde étape, la configuration du système de base. Cette étape est décrite en détail dans le chapitre suivant.

Le système de base Debian est un ensemble de paquets de base recquis pour faire tourner Debian avec un système minimal et de façon autonome. dbootstrap va vous l'installer à partir du cédérom, comme décrit dans la partie 5. À partir du moment où vous avez installé et configuré le système de base, votre machine est complètement autonome.

La dernière étape consiste à installer le reste du système Debian. Ceci va inclure les applications et les documents que vous utilisez vraiment sur votre ordinateur, comme le système X Window, des éditeurs, des interpréteurs de commandes (plus connus sous leur vocable anglaise shell) et des environnements de développements. Ceci se fait à partir du cédérom. À partir de ce point, vous aurez à utiliser les outils standard de gestion de paquets sous Debian comme dselect. Cette étape est décrite dans la partie 5.20. Choisir son support d'installation

Il faut choisir dans un premier temps le support à partir duquel vous installerez le système. Ensuite, il faut choisir la méthode d'installation du système de base.

Pour booter sur la procédure d'installation, vous avez les choix suivants: un cédérom bootable, des disquettes ou un système de chargement au boot différent de celui fourni sous Linux.

Booter avec les cédéroms est bien entendu la manière la plus facile d'installer Debian. Mais toutes les machines ne supportent pas cette méthode et il se peut que vous ayez besoin d'utiliser les disquettes. Booter à partir de disquettes est supporté pour la plupart des plateformes. La façon de le faire est décrit à la partie 4.4.2. Installation à partir du cédérom

Si votre machine supporte de booter sur un cédérom, vous n'avez pas besoin de disquette. Mettez le cédérom dans son lecteur, éteignez votre ordinateur et rallumez-le. Vous devriez voir un écran d'accueil avec un curseur de boot en bas. Vous pouvez passez alors directement à la partie 4.5.

Si votre ordinateur ne « voit » pas vos cédéroms Debian, la solution la plus simple est de se fabriquer deux disquettes de boot (description dans la partie suivante) et de les utiliser pour lancer Debian. Mais ne vous inquiétez pas: Debian en aura alors fini avec les deux disquettes et elle trouvera le cédérom sans problème. Installation à partir de disquettes

Ce n'est pas difficile de booter à partir des disquettes. En effet, votre cédérom contient toutes les informations pour créer les disquettes nécessaires. Il vous sera demandé d'avoir deux disquettes. Nommez la première Disquette d'installation-secours Debian 2.1 et la seconde Disquette de modules-pilotes Debian 2.1.

Créer des disquettes à partir des images de disquettes

Les images des disquettes sont des fichiers contenant l'ensemble complet des éléments de la disquette de boot sous forme binaire. Les images de disquette, comme resc1440.bin, ne peuvent être copiées directement sur la disquette. Un programme spécial est utilisé pour recopier les images des fichiers au format binaire.

La première étape consiste à obtenir une invite DOS. Dans Windows 95, et supérieur, vous pouvez l'obtenir en double-cliquant sur l'icône MS-DOS ou en allant dans Démarrer -> Programme -> MS-DOS. Ensuite, insérer le cédérom Debian GNU-Linux dans son lecteur. Déplacez-vous alors dessus. Dans la plupart des cas, il s'agit de D:

C:\WINDOWS>D:

Maintenant, déplacez-vous dans le répertoire contenant les images des disquettes:

D:\> CD \DISTS\SLINK\MAIN\DISKS-I386\2.1.8-1999-02-22

Si vous obtenez une erreur, vérifiez bien ce que vous avez tapé. Si l'erreur persite, déplacez-vous manuellement dans \DISTS\SLINK\MAIN\DISKS-I386 et taper alors DIR et allez alors dans le répertoire précité. Remarquez que les commandes ci-dessus, et peut-être celles données un peu plus loin, peuvent tenir sur une seule ligne sur votre écran même si elles tiennent sur plusieurs lignes ici.

Maintenant, vous êtes prêt à créer la première des deux disquettes. Lancer le programme rawrite2 pour les écrire:

D:\DISTS\SLINK\MAIN\DISKS-I386\2.1.8-1999-02-22>rawrite2 RaWrite 2.0 - Write disk file ta raw floppy diskette Pour écrire un fichier du disque dur vers une disquette au format binaire.

Rawrite2 lance ainsi ses messages de démarrage. Ensuite, il demande le nom du fichier et le lecteur de disquette:

Enter disk image source file nameEntrer le nom du fichier image cible: resc1440.bin Enter target diskette driveEntrer le nom du lecteur de disquette: a:

Rawrite2 vous demande maintenant de bien vouloir insérer une disquette dans le lecteur de disquette. Faîtes-le et appuyez sur Entrée

Please insert a formatted diskette into drive A: and press -ENTER-Veuillez insérer une disquette formatée dans le lecteur A et appuyez sur Entrée:

À ce moment, rawrite2 va créer la première des deux disquettes. Il vous faut répéter le processus pour la seconde disquette:

D:\DISTS\SLINK\MAIN\DISKS-I386\2.1.8-1999-02-22>rawrite2 RaWrite 2.0 - Write disk file ta raw floppy diskette Enter disk image source file name: drv1440.bin Enter target diskette drive: a: Please insert a formatted diskette into drive A: and press -ENTER- :

À partir de maintenant, les disquettes sont prêtes: vous pouvez les utiliser pour booter.

Booter sur Debian

Vous êtes maintenant prêt à booter sur Debian. Éteignez votre système d'exploitation en cours et placez la disquette d'installation-secours dans le lecteur de disquette. Rallumez votre ordinateur. Vous devriez avoir un écran de bienvenue et un curseur de prompteur en bas. Booter sur la procédure d'installation

Vous devriez avoir à ce stade un curseur de boot. Presser simplement sur Entrée à cet endroit.

Après avoir appuyé sur la touche Entrée, vous devriez voir le message Loading... et ensuite Uncompressing Linux.... et une quantité d'informations partout sur l'écran, voire sur plusieurs, au sujet du matériel de votre système. Généralement, vous pouvez ignorer ces messages. Linux recherche un grand nombre de périphériques variés et vous indique ce qu'il trouve et ce qu'il ne trouve pas. Ne vous inquiétez pas de tous ces messages à ce moment là. Attendez simplement jusqu'à ce que vous aperceviez l'écran de choix en couleur. Si vous avez des problèmes, voir le chapitre 17. Installation pas à pas

dbootstrap est le nom du programme qui est lancé après avoir booté sur la procédure d'installation. Il est responsable de la configuration initiale du système et de l'installation du système de base.

Le travail principal de dbootstrap et celui de la configuration de base du système sont de configurer certains éléments basiques de votre système. Par exemple, cela inclut votre adresse IP, votre nom de domaine et quelques autres paramètres de configuration réseau, en cas de besoin. Cela comprend aussi la configuration des modules du noyau qui sont les pilotes chargés par le noyau. Ces modules comprennent les pilotes de sauvegarde externe, les pilotes réseau, le support multilingues et plein d'autres périphériques. Configurer ces choses fondamentales est fait prioritairement car elles sont souvent nécessaires au bon fonctionnement ultérieur de la machine lors des étapes de configurations suivantes.

dbootstrap est une application simple orientée caractères. Elle est très facile à utiliser. Généralement, elle vous guide à travers chaque étape du processus d'installation de façon linéaire. Vous pouvez aussi revenir en arrière et répéter une étape si vous vous êtes trompé. La navigation à l'intérieur de dbootstrap s'effectue à l'aide des flèches du clavier, des touches Entrée et Tab. Sélection d'un écran monochrome ou couleur

Une fois que le système a terminé de booter, dbootstrap est invoqué. La première chose que dbootstrap vous demande concerne votre écran. Vous devez voir une fenêtre de dialogue Select Color or Monochrome display (Sélectionner un écran couleur ou monochrome). Si votre moniteur est capable d'afficher de la couleur, appuyez sur Entrée. L'écran devrait alors passer du noir et blanc en couleur. Déplacez-vous à l'aide des flèches sur le bouton Next (suivant) et pressez alors de nouveau la touche Entrée pour continuer l'installation. Menu principal d'installation de Debian GNU/Linux

Il se peut que vous aperceviez une boîte de dialogue disant The installation program is determining the current state of your system and the next installation step should be performed (Le programme d'installation est en train de déterminer l'état actuel de votre système et l'étape suivante d'installation ne devrait pas tarder). C'est une phase pendant laquelle le programme d'installation cherche à détecter automatiquement ce que vous aurez probablement besoin de faire ensuite. Dans certains cas, il se peut que vous n'aperceviez même pas cette boîte de dialogue.

Pendant toute la procédure d'installation, vous aurez affaire au menu principal, intitulé Debian GNU-Linux Installation Main Menu (Menu principal d'installation de Debian GNU-Linux). Les choix situés en haut du menu changent au fur et à mesure pour indiquer votre progression dans l'installation du système. Phil Hughes écrivait dans le Linux Journal (http://www.linuxjournal.com) que vous pouviez apprendre à un poulet à installer une Debian ! Il soulignait ainsi le fait que le menu de la procédure d'installation consistait essentiellement à appuyer sur la touche Entrée. Le premier choix du menu d'installation est l'action suivante que vous aurez à effectuer si le système ne détecte pas que vous l'avez déjà fait. Si vous sélectionnez Next (suivant) ici, l'étape suivante dans l'installation du système est sélectionnée. Configurer le clavier

Assurez-vous que le bouton Next est mis en surbrillance et appuyez sur Entrée pour entrer dans le menu de configuration du clavier.

Déplacez le curseur lumineux vers le clavier sélectionné et appuyer sur Entrée. Utilisez les flèches pour vous déplacer. Dans de nombreux cas, vous n'aurez qu'à sélectionner U.S. layoutNDT: surtout pas pour nous francophones car vous risqueriez de vous arracher les cheveux... Prenez bien soin de sélectionner un clavier conforme à vos origines (française, suisse, belge ou canadienne) si tel est le cas.. Dernière chance de sauvegarder vos données !

Ne vous a-t-on pas déjà dit de sauvegarder vos disques ? Voici la première occasion de les détruire et la dernière chance de sauvegarder vos vieux systèmes. Si vous n'avez encore sauvegardé vos disques, sortez la disquette ou le cédérom de son lecteur, éteignez le système puis faîtes vos sauvegardes. Partitionner un disque dur

Quelque soit le choix proposé par le menu de sélection Next, vous pouvez utiliser les flèches « haut » et « bas » pour sélectionner Partition a Hard Disk (Partitionner un disque dur). Allez-y et à partir de là, appuyez sur Entrée.

Le menu de Partition a Hard Disk vous présente une liste de type de disques que vous pouvez partitionner et lance une application de partitionnement appelée cfdisk. Vous devez créer au moins une partition Linux native (de type 83) et vous aurez probablement besoin d'une partition Linux swap (de type 82) comme expliqué plus loin dans cette partie.

Vous devez créer maintenant les partitions dont vous aurez besoin pour installer Debian. Par exemple, on supposera que vous partionnerez un disque dur vierge.

La partition de boot doit se trouver à l'intérieur des 1024 premiers cylindres de votre disque dur (voir paragraphe 4.3.3). En gardant cela à l'esprit, utilisez la flèche droite pour mettre en surbrillance le menu New (nouveau) et pressez alors sur Entrée. On vous demandera alors de créer soit une partition primaire soit une partition logique. Pour vous assurer que la partition contenant l'information de boot soit bien dans les 1024 premiers cylindres, créez en premier votre partition primaire. La partition primaire sera votre partition Linux native.

Mettez en surbrillance le menu principal et appuyez sur la touche Entrée. Vous devez ensuite entrer la largeur de votre future partition. Si vous ne savez pas quelle taille lui donner, allez voir la partie 4.3.2. Ne pas oublier de laisser une place suffisante pour la partition de swap (voire la partie 4.3.5). Entrez la taille de la partition que vous désirez et presser sur Entrée. Ensuite, il vous sera demandé si vous voulez la placer au début de l'espace disponible ou à la fin. Placez la au début pour être sûr d'être à l'intérieur des 1024 premiers cylindres. Mettez en surbrillance Beginning et tapez sur Entrée. À ce moment, vous devriez être retourné à l'écran principal. Remarquez bien que la partition que vous venez de créer est maintenant affichée. Par défaut, c'est une partition Linux native. Cette partition doit maintenant être rendue amorçable. Assurez-vous que le menu Bootable est en surbrillance et appuyez sur la touche Entrée. On doit maintenant voir apparaître la champ Boot dans cette partition dans la colonne Flags . IMPRESSION D'ÉCRAN DE CFDISK

Avec la place restante, créez une nouvelle partition primaire. En utilisant la flèche de direction du clavier, mettez en surbrillance le champ free space (espace disponible) dans la liste des partitions. Mettez en surbrillance maintenant le champ New et faîtes de même que lorsque vous avez fabriqué la première partiton primaire. Remarquez qu'elle est aussi affichée comme une partition Linux native. Puisque vous allez la dédier au swap, il va falloir la signaler comme telle. Assurez-vous de bien l'avoir mis en surbrillance et ensuite appuyez sur la flèche gauche du clavier jusqu'à ce que le menu Type soit mis en surbrillance. Pressez alors sur la touche Entrée. On vous présente alors une liste de types de partitions supportées. Le type Linux swap devrait déjà être sélectionné. Si tel n'était pas le cas, entrez le numéro dans la liste correspondant au swap (82) et pressez sur Entrée. Votre partition de swap doit maintenant se présenter sous forme de Linux swap dans la colonne FS Type de l'écran principal.

Votre écran cfdisk devrait ressembler à celui de la figure 5.1. Les chiffres peuvent différer mais les colonnes Flags et FS Type doivent être identiques.

Jusqu'à maintenant, rien sur votre disque n'a été modifié. Si vous êtes content de votre partionnement, appuyez sur la flèche gauche jusqu'à write et appuyez alors sur la touche Entrée. Votre disque dur est maintenant partitionné. Quittez l'application cfdisk en sélectionnant le menu Quit. Une fois quitté cfdsik, vous devez vous retrouvez dans dbootstrap, l'application d'installation de Debian. Initialiser et activer une partition de swap

Cela doit être le choix suivant après avoir créé une partition de disque (initialize and Activate a Swap Partition). Vous avez le choix d'initialiser et d'activer une nouvelle partition de swap, d'activer une partition déjà initialisée ou bien de faire sans partition de swap.

Une partition de swap est chaudement recommandée mais vous pouvez faire sans si vous insistez et que votre système a plus de 4 Mo de mémoire vive. Si vous désirez le faire, sélectionnez le choix Do Without a Swap Partition (Faire sans partition de swap) du menu et allez directement à la partie suivante.

Il est toujours possible de réinitialiser une partition de swap. Ainsi, sélectionnez Initialize and Activate a Swap Partition (Activer et initialiser une partition de swap) si vous n'êtes pas sûr de ce que vous faîtes. Dans un premier temps, le menu va vous proposer une boîte de dialogue dans laquelle vous pourrez lire Please select the partition to activate as a swap device (veuillez sélectionner la partition à activer comme swap). Le choix par défaut devrait être la partition de swap que vous venez de paramétrer; si tel est le cas, appuyez simplement sur la touche Entrée.

Ensuite, on vous propose d'activer l'option de recherche des blocs non lisibles, causés par des défauts sur la surface des plateaux des disques sur l'intégralité de la partition. Ceci est très utile si vous avez des disques MFM, RLL ou de vieux SCSI. Dans tous les cas, cela ne peut pas faire de mal (bien que cela demande pas mal de temps). La plupart des disques modernes fonctionnant correctement n'ont pas besoin de cette étape car ils possèdent leur propre mécanisme interne pour s'affranchir des blocs défectueux.

Finalement, vous obtenez un message de confirmation car l'initialisation va détruire toutes les données présentes antérieurement sur la partition. Si tout est correct, sélectionnez Yes. L'écran s'allumera lorsque le programme d'initialisation tournera. Initialiser une partition Linux

À cet endroit, le choix suivant devrait s'intituler Initialize a Linux Partition (Initialiser une partition Linux). Si ce n'est pas le cas, soit vous n'avez pas achevé correctement le processus de partitionnement, soit vous n'avez pas rempli un des menus concernant la partition de swap.

Vous pouvez initialiser une partition Linux, ou bien vous pouvez en monter francisation de mount qui est passé dans le langage courant. On trouve parfois mounter qui est assez laid il faut bien l'avouer :-) une précédemment initialisée. Remarquez bien que dbootstrap ne fera pas de mise à jour d'un vieux système sans le détruire. Si vous êtes en train de mettre à jour, Debian peut très bien le faire tout seul et il n'est pas nécessaire d'utiliser dbootstrap. Les releases notes de la Debian 2.1 contiennent les instructions de mise à jourhttp://www.debian.org/releases/slink/i386/releases-notes/ch-upgrading.en.html.

Si vous utilisez de vieilles partitions non vides, c'est-à-dire que vous voulez juste nettoyer ce qu'il y a dessus, il suffit de les initialiser (ce qui écrase tous les fichiers). De plus, vous devez initialiser toutes les partitions que vous avez créées lors de l'étape de partitionnement. La seule raison pour laquelle vous pourriez omettre d'initialiser une partition à cette étape serait de monter une partition que vous auriez déjà faîte à l'aide des disquettes d'installation.

Sélectionnez le menu Next pour initialiser et monter la partition de disque « / ». La première partition que vous montez ou que vous initialisez sera montée comme « / » (prononcer rootse prononce « route »... (racine)). On vous proposera, à l'instar de l'initialisation du swap de vérifier les blocs défectueux. Cela ne mange pas de pain de le faire mais cela peut prendre dix minutes ou plus si vous possédez des disques de grande capacité.

Une fois la partition / de montée, le menu suivant devrait être Install Operating system and modules (Installer le système d'exploitation et ses modules) à moins que vous n'ayez pas terminé une des étapes précédentes. Vous pouvez utiliser les flèches de déplacement pour sélectionner les menus d'initialisation ou de montage de partitions de disques si vous avez d'autres partitions à fabriquer. Si vous avez créé des partitions séparées pour /var, /usr ou d'autres systèmes de fichiers, c'est le moment de les initialiser et de les monter. Monter une partition précédemment initialisée.

Un pendant à l'étape Initialise a Partition (Initialiser une partition) est celle de Mount a Previously-Initialised Partition (Monter une partition précédemment initialisée). Utilisez la si vous recommencez une installation qui a été interrompue ou bien si vous montez des partitions déjà initialisées. Installation du système d'exploitation et ses modules

Cela doit être l'étape suivante après avoir monté la partition racine, sauf si vous avez déjà effectué cette tâche précédemment avec dbootstrap. Vous devrez confirmer dans un premier temps que le périphérique que vous avez monté sur la partition racine est bien le bon. Par la suite, il vous sera proposé un ensemble de périphériques à partir desquels vous pourrez installer le noyau et les modules; ce sera généralement soit un cédérom soit le premier lecteur de disquette.

Si vous faîtes l'installation à partir de disquettes, vous aurez à travailler avec la disquette de secours (Rescue Floppy) qui est déjà probablement dans le lecteur et ensuite avec la disquette de pilotes (Drivers Floppy). Configuration du support PCMCIA

Il y a une autre étape avant la configuration des modules de pilotes de périphériques appelée « Configuration du support PCMCIA » (Configure PCMCIA Support). Elle est utilisé pour activer le support PCMCIA.

Si vous avez une extension PCMCIA mais que vous ne l'utilisez pas pour installer votre système Debian (c'est-à-dire installation avec une carte ethernet PCMCIA), il n'est pas nécessaire de configurer le support PCMCIA ici. Il est très facile de le configurer et de l'activer plus tard, à la fin de l'installation. Dans tous les cas, si vous devez installer quand même une extension PCMCIA pour le réseau, vous devez la choisir ici et son support sera configuré antérieurement à celui du réseau.

Si vous avez besoin de PCMCIA, sélectionnez l'autre choix en dessous de « Configuration des modules de pilotes de périphériques » (Configure Device Driver Modules). On vous demandera alors le nom du contrôleur PCMCIA de votre système. Dans la plupart des cas, ce sera i82365. Quelques fois, vous pourrez aussi rencontrer tcic. Votre vendeur-fournisseur d'ordinateur portable doit vous procurer l'information. Vous pouvez généralement laisser les autres champs d'options vides. Attention, certains matériels ont des besoins particuliers; le PCMCIA-HOWTO (http://metalab.unc.edu/LDP/HOWTO/PCMCIA-HOWTO.html) contient plein d'informations au cas où les options par défaut ne conviendraient pas.

Dans certains cas exceptionnels, il se peut que vous ayez à modifier le fichier /etc/pcmcia/config.opts. Vous devez ouvrir votre seconde console virtuelle (Alt-F2) et éditer le fichier dedans pour reconfigurer votre extension PCMCIA. Vous pouvez aussi forcer un rechargement des modules par l'intermédiaire de insmod et rmmode.

Une fois que votre interface PCMCIA est correctement configurée et installée, il vous faut passer à la configuration des pilotes de périphériques comme décrit dans le paragraphe suivant. Configuration des modules de pilotes de périphériques

Sélectionnez le menu Configure Device Driver Modules (configuration des modules de pilotes de périphériques) et passez en revue les périphériques présents sur votre système. Configurez les pilotes de ces périphériques et ces derniers seront chargés lors des amorçages de votre système.

Il n'est pas nécessaire de tout configurer à cette étape; ce qui est crucial est d'avoir configuré les périphériques requis pour l'installation d'un système de base.

Une fois le système installé, vous pouvez reconfigurer les modules à +tout moment grâce au programme modconf. Configuration du réseau

Vous aurez à configurer le réseau même si vous n'en avez pas. Dans ce cas, vous n'aurez qu'à répondre aux deux premières questions - Choose the hostname (Choisir le nom de domaine) et Is your systeme connected to a network ? (Est-ce que votre système est connecté à un réseau?).

Si vous êtes connecté à un réseau, les informations de la partie 4.2.1 vous seront nécessaires. Si votre connexion principale au réseau utilise ppp, il ne vous faut PAS configurer le réseau ici.

dbootstrap va vous poser un certain nombre de questions au sujet de votre réseau. Vous les obtiendrez à partir du paragraphe 4.2.1. Le système va au final faire un résumé des informations réseau et vous demander une confirmation. Ensuite, vous devrez spécifier le périphérique réseau que votre connexion réseau principale utilise. Généralement, il s'agit de eth0 (le premier périphérique Ethernet). Sur un ordinateur portable, on rencontre plus souvent comme périphérique réseau principal une interface pcmcia.

Voici quelques détails techniques pratiques: le programme s'assure que l'adresse réseau IP est bien la résultante d'un AND de votre adresse IP et de celle de votre masque réseau. Il s'assure aussi que votre adresse de réseau de diffusion est bien la résultante d'un OR de votre adresse IP avec l'inverse des bits de l'adresse du masque réseau. Il s'assure aussi que votre passerelle de routage est identique à votre serveur DNS. Vous pouvez les changer une fois le système installé, si nécessaire, en éditant le fichier /etc/init.d/network (sur un système Debian, les daemons sont lancés par scripts dans le répertoire /etc/init.d). Installation du système de base.

Lors la phase Install the Base System (Installation du système de base), on vous proposera une liste de périphériques à partir desquels installer votre système de base. Vous devrez sélectionner ici le périphérique cédérom.

Il apparaîtra alors un champ pour spécifier le chemin vers le fichier base2_1.tgz. Si vous avez une version officielle du support Debian, la valeur par défaut devrait être correcte. Sinon, entrez le chemin où le système de base peut être trouvé, relativement au point de montage du support. Comme lors de l'étape Install Operating System Kernel and Modules, vous pouvez soit laisser dbootstrap trouver seul le fichier ou taper le chemin dans le champ. Configuration du système de base

À ce moment, vous avez chargé tous les fichiers qui font un système Debian minimal mais vous devez faire quelques ajustements de configuration avant que le système ne se lance.

On vous demandera de sélectionner la zone horaire (time zone). Il y a de nombreuses façons de spécifier votre zone horaire; nous vous suggérons d'aller dans le tableau Directories et de sélectionner votre pays (ou continent). Cela change les zones horaires disponibles donc allez-y et sélectionnez votre localité (c'est-à-dire, pays, province, état ou ville) dans le tableau Timezones.

Ensuite, on vous demandera si votre horloge système est réglée sur l'heure GMT ou sur une heure locale. Sélectionnez GMT (c'est-à-dire, répondez Yes) si vous ne désirez faire tourner que Linux sur votre ordinateur; sélectionnez l'heure local (local time) (c'est-à-dire, No) si vous utilisez un système autre que Debian. Les systèmes Unix en général (et Linux en particulier) utilisent l'heure GMT comme horloge système en interne et la convertissent en heure locale pour les utilisateurs. Cela permet de garder des traces des sauvegardes journalières au fil des ans et autorise aussi un utilisateur à se loguer à partir d'une autre zone horaire pour utiliser individuellement son heure locale sur son terminal. Faire que Linux soit bootable directement à partir du disque dur

Si vous choisissez de booter directement sur Linux à partir du disque dur, on vous demandera d'installer un secteur d'enregistrement principal (master boot record ou encore MBR). Si vous utilisez un gestionnaire d'amorce (boot manager) (et c'est probablement le cas si vous ne savez pas ce que c'est) et que vous n'avez pas d'autres systèmes d'exploitation sur votre machine, répondez Yes à cette questionMake Linux Bootable Directly from the Hard Disk. Remarquez bien que dans ce cas, il ne vous sera plus possible de booter le DOS normalement sur votre machine par exemple. Faîtes donc bien attention. Si vous répondez Yes, la question suivante concernera l'endroit chercher Linux pour booter au démarrage. Cela doit se régler dans la partition bootable - celle qui doit être chargée à partir du disque dur.

Remarquez bien que booter différents systèmes d'exploitation sur une seule machine relève un peu de la cuisine. Ce livre ne documente pas l'ensemble des nombreux gestionnaires d'amorçage, qui varient beaucoup selon l'architecture et même selon les sous architectures. Vous devrez lire la documentation de votre gestionnaire d'amorçage pour avoir plus d'informations. Dans tous les cas, gardez bien à l'esprit qu'en travaillant sur les gestionnaires d'amorçage, il ne faut jamais être trop prudent...

Le gestionnaire d'amorçage standard pour les architectures i386 est appelé LILO. C'est un programme complexe qui offre plein de fonctionnalités, avec entre autre, un support du lancement de DOS, NT et OS/2. Pour obtenir plus d'informations à ce sujet, vous pouvez lire la documentation dans /usr/doc/lilo après que votre système ait été configuré. Fabriquer une disquette de boot

Vous devrez faire une disquette de boot (Boot floppy) même si vous avez prévu de booter directement à partir du disque. La raison est qu'il est toujours possible d'avoir un défaut d'installation à partir de dbootstrap mais jamais à partir d'une disquette. Sélectionnez Make a Boot Floppy (Fabriquer une disquette de boot) à partir du menu principal et insérer une disquette vierge directement. Assurez-vous que la disquette n'est pas protégée en écriture car le logiciel va la formater et écrire dessus. Écrivez dessus Boot personnalisé et protégez la en écriture une fois qu'elle a été fabriquée. Le moment de vérité

Le premier boot de votre système de son propre chef est ce que les ingénieurs en électronique appellent le test de la fumée. Si vous avez une disquette dans son lecteur, retirez-la. Puis sélectionnez le menu Reboot the system (Rebooter le système).

Si vous bootez directement sur Debian et que le système ne se lance pas, utilisez soit votre support original d'installation (par exemple, les disquettes de secours), soit votre disquette de boot personnalisé si vous en avez créé une, et relancez votre système. Si vous n'utilisez pas la disquette de boot personnalisé, il vous sera probablement nécessaire d'ajouter des arguments lors du boot. Si vous bootez via la disquette de secours ou tout autre support similaire, il vous sera nécessaire de spécifier rescue root=rootfsrootfs est votre partition racine, comme /dev/hda1.

Debian devrait alors booter, et vous devriez voir les mêmes messages que lorsque vous avez booté la première fois le système, avec ensuite quelques nouveaux messages. Ajouter un mot de passe root

Le compte root est aussi appelé le compte super-utilisateur; c'est un utilisateur qui permet d'outrepasser tous les systèmes de protection sur votre système. Le compte root ne devrait être utilisé que pour des tâches d'administration et pour une durée aussi courte que possible.

Chaque mot de passe créé devrait contenir six à huit caractères, mélangeant minuscules et majuscules ainsi que des caractères de ponctuation. Faîtes très attention en choisissant le mot de passe de root car ce compte est vraiment très sensible. Évitez tous mots contenus dans un dictionnaire ou bien tout renseignement personnel qui peut être deviné.

Si quelqu'un vous demande un jour le mot de passe de root, soyez très prudent. Vous ne devriez jamais avoir à le donner, à moins de ne pas être le seul à administrer la machine. Créer un compte utilisateur ordinaire

Le système va alors vous demander de créer un compte utilisateur ordinaire (Create an Ordinary User). Ce compte pourrait être votre compte principal personnel. Vous ne devez pas utiliser le compte root pour une utilisation ordinaire quotidienne ou comme compte personnel.

Pourquoi donc ? Il est beaucoup plus difficile d'endommager le système en étant un simple utilisateur qu'en root ; le système de fichiers est bien protégé. Une autre raison est que vous pouvez à votre insu faire tourner un troyenprogramme planqué sous un autre pour ouvrir des brèches de sécurité dans votre système - c'est-à-dire un programme qui pourra utiliser les avantages du super-utilisateur pour compromettre la sécurité du système dans votre dos... Tout bon livre d'administration Unix traite ce sujet en détail. Il est nécessaire d'en lire un si ce sujet est nouveau pour vous.

Nommez le compte utilisateur à votre convenance. Si votre nom est John Smith, vous pouvez utiliser « smith », « john », « jsmith » ou « js ». Support des mots de passe cachés.

Ensuite, on vous demandera si vous voulez activer les mots de passe cachés (shadow Passwordterme tellement usité qu'il vaut mieux le connaître...). C'est un système d'authentification qui sécurise un peu plus votre système Linux. Nous vous recommandons ainsi de l'activer. La reconfiguration du shadow password peut être faite ultérieurement avec le programme shadowconfig. Retirer le support PCMCIA

Si vous n'utilisez pas d'interface PCMCIA, vous pouvez choisir de la retirer maintenant. Cela permettra de faire un démarrage plus propre; cela permet de remplacer votre noyau plus facilement (l'interface PCMCIA requiert un grand nombre de dépendances entre les pilotes PCMCIA, les modules du noyau et le noyau proprement dit). De façon général, vous n'avez pas besoin du support PCMCIA si vous n'utilisez pas de portable... Sélection et installation de profil

Le système va maintenant vous demander si vous désirez utiliser les configurations prédéterminées offertes par Debian. Il est toujours possible d'installer paquet par paquet ce que l'on veut installer sur une nouvelle machine. C'est la tâche de dselect dont la description se trouve plus loin. Mais cela peut être une longue tâche avec les milliers de paquets disponibles dans Debian !

Ainsi, vous avez la possibilité de choisir à la place des tâches ou des profils. Une tâche est la finalité du travail que vous allez effectuer avec la machine, comme la programmation en PERL, le traitement HTML ou bien la mise en page de document en chinois. Vous pouvez choisir de nombreuses tâches. Un profil est une catégorie de machines, comme serveur de réseau ou station de travail personnelle. À la différence des tâches, vous ne pouvez choisir qu'un profil à la fois.

Pour résumé, si vous êtes pressé, choisissez un profil. Si vous avez plus de temps, choisissez le profil personnalisé (Custom Profile) et sélectionnez un ensemble de tâches. Si vous avez beaucoup de temps et que vous désirez être minutieux avec le contrôle de ce qui sera ou non installé, sortez de cette étape et lancez-vous dans la toute puissance de dselect.

Ensuite, vous allez entrer dans dselect. Si vous avez sélectionné des tâches ou des profils, n'oubliez pas de sauter l'étape Select (Sélectionner) de dselect car les sélections ont déjà été effectuées.

Un petit avertissement en ce qui concerne la taille des tâches telle qu'elles sont présentées: la taille présentée pour chaque tâche est la somme des tailles de ses paquets. Si vous choisissez deux tâches qui se partagent certains paquets, le véritable espace disque requis sera inférieur à la somme des tailles de deux tâches.

Une fois que vous avez ajouté tous les logins (root et personnel(s)), vous vous retrouvez dans le programme dselect. dselect vous permet de sélectionner les paquets à installer sur votre système. Si vous avez un cédérom ou un disque dur contenant les paquets additionnels de Debian que vous désirez installer sur votre système, ou bien si vous êtes connecté à Internet, cela vous facilitera la vie. Sinon, vous pouvez quitter dselect et le relancer plus tard après avoir ramener les paquets Debian sur votre système. Vous devez être super-utilisateur (root) quand vous voulez vous servir de dselect. Pour en savoir plus dselect, voir section suivante. Installation de paquets avec dselect

Il est maintenant temps d'installer les paquets de logiciels de votre choix sur votre système Debian. Ceci est effectué via l'outil de gestion des paquets de Debian, dselect. Introduction

Cette partie documente dselect pour les utilisateurs débutants. Elle n'a pas pour but de tout expliquer alors n'hésitez pas à vous servir des écrans d'aide pour en savoir plus.

dselect est utilisé pour sélectionner quel paquet vous désirez installer (il y a à l'heure actuelle près de 2250 paquets dans la Debian 2.1). Cela serait fait pour vous durant l'installation. C'est un outil très puissant et quelque fois un peu complexe. Ainsi, posséder quelques connaissances sur lui avant de l'utiliser est fortement recommandé. Une utilisation incongrue de dselect peut gravement endommager votre système.

dselect va vous accompagner durant le processus d'installation décrit ci-après: Choix de la méthode d'accès à utiliser Mise à jour de la liste des paquets disponibles, si possible Sélection des paquets que vous voulez sur votre système Installation et mis à jour des paquets désirés Configuration des paquets non configurés Enlèvement des paquets non désirés

À chaque fois qu'une étape est achevée avec succès, dselect vous emmène automatiquement à la suivante. Effectuez chaque étape dans l'ordre sans en omettre une.

Nous parlons ici et là dans ce document de lancer un autre shell. Linux a six sessions de contrôle ou shell disponibles en même temps. Vous pouvez circuler entre eux en pressant la combinaison Alt-F1 jusqu'à Alt-F6. Il vous suffit alors de vous loguer dans un nouveau shell. La console utilisée lors de l'installation est la première, c'est-à-dire tty1 alors presser Alt-F1 si vous désirez y retourner. Une fois que dselect est lancé

Une fois dans dselect, vous devriez avoir l'écran suivant:

Debian Linux 'dselect' package handling frontend. 0. [A]ccess Choose the access method to use. 1. [U]pdate Update list of available packages, if possible. 2. [S]elect Request which packages you want on your system. 3. [I]nstall Install and upgrade wanted packages. 4. [C]onfig Configure any packages that are unconfigured 5. [R]emove Remove unwanted software 6. [Q]uit Quit dselect

Détaillons un peu ces six étapes:

Access (Accès)

COPIE D'ÉCRAN DE dselect

L'écran d'accès est visible sur la figure 5.2.

C'est le lieu où l'on dit à dselect où sont les paquets. Ignorez l'ordre d'apparition à l'intérieur du menu. Il est très important de sélectionner la bonne méthode pour l'installation. Il se peut que vous les ayez dans un ordre différent, ou bien que vous en ayez plus ou moins ; ne vous inquiétez pas. Dans la suite, on décrit les différentes méthodes.

multi_cd

Grande et puissante, cette méthode complexe est celle recommandée pour installer une version récente de Debian à partir d'un jeu de cédéroms de binaires. Chacun de ces cédéroms devraient contenir des informations sur ses paquets ainsi que sur les paquets des cédéroms précédents (dans le fichier Package.cd). Lorsque vous utilisez cette méthode pour la première fois, assurez-vous que le cédérom n'est pas monté. Placez ensuite le dernier cédérom de binaires du jeu (les sources ne sont pas nécessaires) dans le lecteur et répondez aux questions qui vous sont posés: CD-ROM drive locationemplacement du lecteur de CD-ROM Confirmation that your are using a multi-cd setConfirmation de l'utilisation de l'option multi-cd The location of the Debian distribution on the disk(s)Emplacement de la distribution Debian sur le(s) disque(s) [ possibly ] the location(s) of the Packages file(s)[ peut-être ] l'(es) emplacement(s) des paquets.

Une fois que vous avez mis à jour la liste des paquets disponibles et que vous avez sélectionné les paquets à installer, la méthode multi_cd diverge d'une procédure normale. Il vous sera demandé de lancer une installation pour chaque cédérom que vous possédez, tour à tour. Malheureusement, en raison d'une limitation de dselect, il n'est pas possible de changer de cédérom à chaque étape ; la façon dont se déroule le travail pour chaque cédérom est le suivant:

Insérez le cédérom dans votre lecteur. Sélectionnez Install à partir du menu principal de dselect. Attendez jusqu'à ce que dpkg en ait fini avec l'installation à partir du cédérom. (Cela peut indiquer une installation effectuée avec succès, ou de possibles erreurs. Ne vous en occupez pas pour le moment). Appuyez sur Entrée pour retourner à l'écran principal du menu dselect. Répétez le tout avec le cédérom suivant.

Il se peut qu'il soit nécessaire d'effectuer l'étape d'installation plus d'une fois pour respecter l'ordre d'installation des paquets. Certains paquets installés auparavant peuvent demander l'installation d'autres paquets pour se configurer proprement.

Lancer une étape de Configure est recommandée pour aider à débloquer les paquets qui le seraient à cette étape. multi_nfs, multi_mount

Ceci est proche de la méthode de multi_cd: elles apportent quelques raffinements supplémentaires sur le thème de la copie en changeant de support - par exemple, installation à partir de multi_cd exporté via NFS sur le lecteur de cédérom d'une autre machine. apt

Une des meilleures options pour installer à partir d'un miroir local des archives Debian ou à partir du réseau. Cette méthode utilise le système apt pour effectuer l'analyse complète des dépendances et de l'ordre. Il est donc recommandé d'installer les paquets dans le meilleur des ordres possibles.

La configuration de cette méthode est traitée plus loin. Vous pouvez choisir autant de sources différentes d'emplacements de paquets, en les mélangeant avec des fichiers: URLs (pour les disques locaux ou les disques montés par NFS) et http: ou ftp pour les accès sur Internet. Attention, les options http et ftp ne supportent pas l'authentification locale via un proxy.

Si vous avez un serveur de proxy soit pour le http soit pour le ftp (ou pour les deux), assurez-vous que les variables d'environnement http_proxy et ftp_proxy soient bien positionnés. Positionnez-les à partir du shell avant de lancer dselect en utilisant les commandes suivantes:

# export http_proxy=http://gateway:3128/ # dselect

Update (mise à jour)

dselect va lire les fichiers Packages ou Packages.gz à partir du miroir et créer une base de données sur votre système de tous les fichiers disponibles. Cela peut prendre un peu de temps, tant pour le téléchargement que pour l'exécution du traitement.

Select (Sélection)

Asseyez-vous sur votre chapeau: c'est ici que tout se passe. Le but de l'exercice est de sélectionner seulement le paquet que l'on désire installer.

Appuyez sur Entrée. Si vous avez une machine lente, faîtes très attention car l'écran va s'effacer et peut rester vierge pendant environ 15 secondes. Alors, n'essayez pas de taper sur des touches pendant ce temps-là.

La première chose qui apparaît à l'écran est la première page de l'aide. Vous pouvez obtenir l'aide à tout moment dans l'écrans Select en tapant sur « ? ». Vous pouvez dérouler l'aide par l'intermédiaire du «.».

Avant de plonger plus en avant, notons bien ceci: Pour sortir de l'écran de sélection (Select) après avoir tout sélectionné, il suffit de presser sur Entrée. Cela retourne à l'écran principal s'il n'y a pas de problème de sélection. Sinon, on vous demandera de régler le problème. Lorsque vous êtes content avec tous les écrans proposés, appuyez sur Entrée pour sortir. Les problèmes sont quelque chose de normal et sont même attendus. Si vous sélectionnez un paquet A qui demande un paquet B pour fonctionner, dselect vous avertira du problème et tentera de vous proposer la meilleure des solutions. Si le paquet A est en conflit avec le paquet B (c'est-à-dire qu'ils sont mutuellement exclusifs), on vous demandera de trancher et d'en choisir un.

Regardez les deux premières lignes de l'écran de dselect. Cette en-tête est un rappel de certains raccourcis claviers dressés dans le tableau suivant:

------------------------------------------------------ | Touches | Description | ------------------------------------------------------ | + | Sélectionne le paquet à installer | | = | Laisse le paquet en suspend | | - | Retire le paquet | | _ | Retire le paquet, ainsi que ses fichiers | | | de configuration | | i, I | Affichage cyclique des informations | | o, O | Affichage cyclique des options de tri | | v, V | Passage en mode verbeux/sobre | ------------------------------------------------------

Le tableau suivant affiche les états que dselect utilise pour marquer l'état de chaque paquet et son comportement.

----------------------------------------------------------- | Drapeau | État | Valeurs possibles | |----------------------------------------------------------- | E | Erreur | Espace, R, I | | I | État d'installation | Espace, *,-,U,C,I | | O | Marqueur désuet | *, -, =, _, n | | M | Marqueur | *, -, =, _, n | -----------------------------------------------------------

Plutôt que de tout décrire ici, je vous renvoie aux écrans d'aide qui sont bien expliqués. Un exemple quand même:

Vous entrez dans dselect et trouver une ligne du genre:

EIOM Pri Section Package Description ** Opt misc loadlin a loader (running under DOS) for LINUX

Ceci dit que loadlin a été sélectionné lorsque vous avez lancé dselect la dernière fois, et qu'il est toujours sélectionné mais non installé. Pourquoi donc ? Sûrement parce que le paquet loadlin n'est pas disponible physiquement. Il doit être absent de votre miroir.

L'information que dselect utilise pour obtenir tous les bons paquets installés se cache à l'intérieur des paquets eux-mêmes. Rien en ce bas monde n'est parfait, et il peut arriver que les dépendances d'un paquet soient erronées, ce qui veut simplement dire que dselect ne sera pas en mesure de résoudre la situation. Une solution est possible via l'utilisateur pour redonner le contrôle: cela prend la forme des commandes Q et X qui sont disponibles dans l'écran de sélection. Q

surcharge. Force dselect à ignorer les dépendances et à faire ce que vous lui imposez. Les résultats, bien sûr, sont sous votre entière responsabilité. X

Utilisez X si vous êtes complètement perdu. Cela remet les choses telles qu'elles étaient auparavant et sort. Les raccourcis de l'écran de sélection de dselect qui vous aide à ne pas être perdu sont R, U et D. R

Détruit toutes les sélections faîtes durant ce niveau. N'affecte pas les sélections faîtes aux niveaux précédents. U

Si dselect a proposé des changements, et que vous les avez modifiés, U revient aux sélections de dselect. R

Enlève les sélections de dselect en ne laissant que les vôtres.

Un exemple suit. Le paquet boot-floppies (pas un exemple de débutant, je sais, mais il a été choisi car il possède de nombreuses dépendances) dépend des paquets suivants: - libc6-pi - slang1-picn - sysutils - makedev - newt0.25 - newt0.25-dev - popt - zlibig - zlibig-dev - recode

Le développeur maintenant le paquet boot-floppies pense que les paquets suivants devraient aussi être installés. Ils ne sont pas, en tout cas, indispensables: - lynx - debiandoc-sgml - unzip

Lorsque vous sélectionnez boot-floppies, dselect vous envoie dans l'écran de résolution des conflits. Vous remarquerez que les paquets requis ont été sélectionnés.

Pressez alors sur la touche R pour remettre les choses à leur point de départ. EIOM Pri Section Package Description __ Opt admin boot-floppie Scripts to create the Debian __ Opt devel newt0.25-dev Developer's toolkit for newt __ Opt devel slang1-dev The S-Lang programming library __ Opt devel slang1-pic The S-Lang programming library

Si vous décidez maintenant que vous ne voulez plus du paquet boot-floppies, appuyez simplement sur Entrée.

Pressez alors sur la touche D remet les choses à la même place que lorsque vous les aviez sélectionnés la première fois: EIOM Pri Section Package Description _* Opt admin boot-floppie Scripts to create the Debian __ Opt devel newt0.25-dev Developer's toolkit for newt __ Opt devel slang1-dev The S-Lang programming library __ Opt devel slang1-pic The S-Lang programming library

Pressez alors sur la touche U revient les sélections initiales de dselect: EIOM Pri Section Package Description _* Opt admin boot-floppie Scripts to create the Debian _* Opt devel newt0.25-dev Developer's toolkit for newt _* Opt devel slang1-dev The S-Lang programming library _* Opt devel slang1-pic The S-Lang programming library

Je vous suggère de laisser les paramètres par défaut pour le moment: vous aurez amplement l'occasion de les modifier plus tard.

Quoique vous décidiez, appuyez sur la touche Entrée pour valider et retourner à l'écran principal. Si l'action résultante conduit toujours à des problèmes à résoudre, vous serez à nouveau renvoyé à un nouvel écran de résolution de conflit.

Les touches R, U et D sont très utiles dans les situations « qu'est-ce qui se passe si ? ». Vous pouvez expérimenter à volonté et ensuite revenir à la situation initiale. Ne les regardez pas comme une vitrine où il y aurait marqué « à ne briser qu'en cas de danger ».

Après avoir fait vos sélections dans l'écran de sélection, appuyez sur I pour obtenir une grande fenêtre, appuyez sur t pour aller au début et utilisez les touches Page Up et Page DownÉcran haut et bas sur les claviers français: ce sont les touches de droite du pavé situé au-dessus des flèches de déplacement. pour vous déplacer rapidement parmi les sélections. Vous pouvez ainsi vérifier le résultat de votre travail et détecter d'éventuelles erreurs. Certaines personnes ont déselectionné des groupes entiers de paquets par erreur et ne s'en sont rendu compte que trop tard. dselect est un outil très puissant: ne le sous-utilisez pas...

Vous devriez avoir la situation suivante: ----------------------------------------------------- | Package category | Status | ----------------------------------------------------- | Recquired | all selected | | Important | all selected | | Standard | mostly selected | | Optional | mostly deselected | | Extra | mostly deselected | -----------------------------------------------------

Heureux ? Appuyez sur la touche Entrée pour sortir du processus de sélection. Vous pouvez y revenir et à nouveau sélectionnez si vous le désirez.

Install (Installation)

dselect travaille sur la totalité des paquets et installe ceux sélectionnés. Il vous pose des questions pour appliquer vos décisions. Il est souvent pratique de passer sur un autre shell pour comparer une ancienne configuration avec une nouvelle. Si l'ancien fichier est conf.modules, le nouveau sera conf.modules.dpkg-dist.

Le défilement à l'écran se passe parfois très rapidement sur les machines puissantes. Vous pouvez toujours le stopper et le redémarrer à l'aide des combinaisons respectives de touches Ctrl-s et Ctrl-q. À la fin de la tâche, vous aurez une liste des paquets non installés.

Il peut arriver qu'un paquet ne soit pas installé car il dépend d'un autre qui est décrit comme à installer mais qui ne l'est pas encore. La solution consiste à relancer Install une nouvelle fois. Il a été reporté des cas où il a été nécessaire de le relancer quatre fois avant que tout ne se mette en place correctement. Cela varie beaucoup suivant votre méthode d'acquisition.

Configure (Configuration)

La plupart des paquets sont configurés à l'étape précédente mais toute chose restée en suspens peut être achevée ici.

Remove (Suppression)

Suppression des paquets installés que l'on désire retirer.

Quit (Quitter)

Je suggère de lancer /etc/cron.daily/find à ce moment car vous avez de nombreux nouveaux fichiers sur votre système. Ensuite, vous pourrez utiliser locate pour obtenir l'emplacement de n'importe quel fichier. Quelques remarques pour conclure

Lorsque le processus d'installation lance dselect pour vous, vous devez être impatient de lancer Debian aussitôt que possible. Hé bien, préparez-vous à prendre une heure - ou plus - pour apprendre à vous en servir et à l'utiliser judicieusement. Lorsque vous entrez pour la première fois dans l'écran de sélection, n'en faîtes aucune - appuyez simplement sur la touche Entrée - et observez les problèmes de dépendances. Essayez de les résoudre. Si vous vous retrouvez une nouvelle fois dans l'écran principal, lancer Select une nouvelle fois.

Vous pouvez vous faire une idée de la taille d'un paquet en appuyant deux fois sur i et en regardant le champ Size (Taille). Ceci est la taille du paquet avec compression donc la décompression du paquet risque d'être nettement plus importante (voir le champ Installed-Size (Taille après installation) qui est en kilo-octets, pour la déterminer).

Installer un nouveau système Debian est une chose complexe mais dselect peut vous aidez à rendre la chose la plus aisée possible. Prenez donc bien le temps d'apprendre à vous en servir. Lisez les écrans d'aide et expérimentez les touches i, I, o et O. Utilisez la touche R. Ce sera tout pour ici mais cela devrait être suffisant pour vous en servir avec efficacité. Glossaire

Les termes suivants sont largement utilisés dans ce livre et de façon générale lorsque l'on parle de Debian.

Paquet

C'est un fichier contenant tout le nécessaire à l'installation, à la désinstallation et à l'utilisation d'un programme particulier. Le logiciel qui gère les paquets est dpkg. dselect est une interface à dpkg. Les utilisateurs expérimentés utilisent souvent dpkg pour installer ou retirer un paquet.

Nom de paquet

Tous les noms de paquets sont de la forme xxxxxxxxxxx.deb. Voici un exemple de noms de paquets simples: - efax_08a-1.deb - lrzsz_0.12b-1.deb - mgetty_0.99.2-6.deb - minicom_1.75-1.deb - term_2.3.5-5.deb - uucp_1.06.1-2.deb - uutraf_1.1-1.deb - xringd_1.10-2.deb - xtel_3.1-2.deb Se loguer

Votre système est maintenant installé ! Vous pouvez vous congratuler du bon travail effectué ! Il est temps maintenant de lancer le système pour l'utiliser. Dans ce chapitre, nous allons vous faire découvrir les lignes de commande Debian, quelques principes de sécurité et comment sortir du système. Dans les chapitres suivants, nous détaillerons plus ces sujets et nous vous ferons découvrir l'interface graphique de Debian, X11. Les premiers pas

Après avoir quitter dselect, le login suivi du prompteur se présentent à vous. Vous pouvez maintenant vous loguerJ'ai délibérément francisé le terme anglais to log in tellement ce terme est devenu un standard en français en utilisant le login et le mot de passe que vous avez choisi. Votre système est maintenant prêt à être utilisé. Examinons ce que veut dire se loguer et comment cette procédure fonctionne.

Pour utiliser Debian, vous devez vous identifier personnellement au système. Cela lui permettra de savoir qui vous êtes, quels sont vos droits et quelles sont vos préférences.

Pour en arriver là, vous avez un nom d'utilisateur ou un loginEncore une fois, le terme anglais est tellement usité qu'il vaut mieux l'apprendre et l'utiliser. Si vous avez installé Debian vous-même, il vous a été demandé de fournir un tel nom durant l'installation. Si vous vous connectez à un système administré par quelqu'un d'autre, vous aurez à lui demander de vous fournir un compte sur le système ainsi que son nom.

Vous avez aussi un mot de passe et ainsi personne ne peut prétendre s'identifier à votre place. Si vous n'avez pas de mot de passe, tout le monde peut se connecter à votre place sur votre ordinateur depuis Internet et faire des tas de mauvaises choses. Si vous vous préoccupez un tant soit peu de sécurité, vous devez avoir un mot de passe.

De nombreuses personnes préfèrent croire que les autres ne feront rien de méchant sur leur compte. Il est raisonnable de croire que votre environnement de travail n'encourage pas la paranoïa. C'est une attitude parfaitement raisonnable. Cela dépend de vos priorités personnelles et de votre environnement. Il est certain qu'un système familial n'a pas les mêmes besoins en sécurité qu'une installation militaire. Debian vous permet aussi bien d'être sécurisé qu'insécurisé. Cela reste à votre convenance.

Lorsque vous démarrez Debian, vous apercevez un prompteur (prompt): c'est l'ordinateur qui se met en attente d'informations. Dans ce cas, le prompteur est login:.

Vous devez taper votre nom d'utilisateur et, lorsque l'on vous le demande, votre mot de passe. Le mot de passe n'apparaît pas à l'écran lors de sa frappe. Appuyez sur la touche Entrée après avoir entré le nom d'utilisateur et après le mot de passe. Si vous trompez lors de la frappe de votre nom d'utilisateur ou lors de celle du mot de passe, vous aurez à recommencer.

Si vous effectuez l'opération correctement, vous verrez un message rapide et ensuite un $ suivi d'un prompteur. Le $ est écrit par un programme spécial appelé le shellou interpréteur de commandes en français mais le terme shell est aussi utilisé que log ou login. Il est appelé le prompteur du shell. C'est l'endroit où vous envoyez les commandes au système.

Essayez d'entrer la commande whoami maintenant. Il y a un curseur à la droite du prompteur du shell. Votre curseur est un petit tiret ou rectangle qui indique où l'on va taper. Il doit se déplacer au cours de la frappe. Finissez toujours une commande shell par la touche Entrée.

whoamilittéralement Qui suis-je vous renvoie votre nom d'utilisateur. Vous obtenez ensuite un nouveau prompteur de shell.

Dans le reste du livre, lorsque nous parlons d'entrer une commande, vous aurez à la taper après le prompteur du shell puis la valider avec la touche Entrée.

Lorsque vous avez fini de travailler, il se peut que vous désiriez quitter votre système. Pour sortir du shell, entrez la commande exit. Gardez bien à l'esprit que si vous restez logué, quelqu'un peut venir et utiliser votre compte. Par chance, vous pouvez faire confiance en vos collègues de travail ou aux personnes de chez vous; mais si vous ne pouvez accorder votre confiance dans votre entourage, vous devrez être certain de vous être délogué avant votre départ. Historique des commandes et édition de la ligne de commande

Tout ce que vous tapez après le prompteur du shell et avant de valider par Entrée est appelé une ligne de commande. C'est une ligne de texte qui demande à l'ordinateur de faire quelque chose. Le shell par défaut de Debian offre de nombreuses fonctionnalités pour rendre plus aisée l'entrée de la ligne de commande.

Vous pouvez revenir aux commandes précédentes pour les lancer à nouveau ou vous pouvez les modifier avec facilité et ensuite les relancer. Essayez ceci: entrez n'importe quelle commande, comme whoami. Ensuite, appuyez sur la flèche de direction verticale vers le haut. La commande whoami va réapparaître après le prompteur. Vous pouvez alors appuyer sur Entrée pour lancer une seconde fois la commande whoami.

Si vous avez entré de nombreuses commandes, vous pouvez appuyer sur la flèche plusieurs fois pour naviguer au travers des différentes commandes. Cette fonctionnalité est très pratique si vous répétez la même chose plusieurs fois de suite, ou si vous tapez mal une commande et que vous la rappeliez pour la corriger. Vous pouvez aussi utiliser la flèche verticale vers le bas pour circuler dans l'autre sens, vers les commandes les plus récentes. Lorsqu'il n'y a plus de commande à afficher, l'ordinateur envoie alors un signal sonore.

Vous pouvez aussi vous déplacer sur la ligne de commande pour effectuer des transformations. La façon la plus simple est d'utiliser les flèches de déplacements horizontaux gauche et droite. Essayez de taper whoami à la place de whoami. Utilisez alors la flèche de déplacement horizontal vers la gauche pour revenir en arrière vers le s. Vous pouvez effacer le s à l'aide de la touche backspacetouche située au-dessus de la touche Entrée et comportant une flèche horizontal en direction arrière du défilement normal de l'écran, d'où son nom (back arrière et space espace) ou Suppr.

Il y a bien d'autres fonctionnalités avancées mais il n'est pas nécessaire de les mémoriser maintenant. Essayez Ctrl-a pour vous retrouver directement au début de la ligne de commande. Ctrl-k (le k est pour kill, tuer en anglais) détruira tous les caractères situés à droite jusqu'à la fin de la ligne; essayez-la à partir du milieu d'une ligne de commande. Ctrl-y renvoie la dernière chose que vous avez détruite en l'insérant à la position courante du curseur (y est pour yank en anglais). Ctrl-e déplace le curseur jusqu'à la fin de la ligne de commande.

Allez de l'avant et jouez avec l'édition de la ligne de commandes pour commencer à la maîtriser. Expérimentez. Travailler en tant que Root

Puisque Debian est un système multi-utilisateurs, il est nécessaire d'en désigner un de particulier ou un programme pour être capable de tout faire sur le système. Le noyau n'autorise pas l'utilisateur normal à changer des fichiers importants du système. Cela signifie que les choses restent dans l'état où elles sont, à l'abris des accidents, des virus et même des tours de magie. À la différence de certains autres systèmes d'exploitation, Debian est à l'abris de ce genre de tracas. Il n'est pas nécessaire d'utiliser un programme d'anti-virus.

Parfois, il est quand même nécessaire de changer des fichiers importants. Par exemple, vous pouvez avoir envie d'installer un nouveau logiciel ou bien de configurer votre connexion réseau. Pour le faire, il vous faut des pouvoirs plus étendus que ceux d'un utilisateur normal. Vous devez devenir l'utilisateur root (parfois appelé aussi le super-utilisateur).

Pour devenir root, il vous suffit de vous loguer avec le nom d'utilisateur root et le mot de passe de root. Ceci a été fait durant l'installation: voir la section 5.15 pour plus de détails.

Dans de nombreux sites, seul l'administrateur système possède le mot de passe de root et seul l'administrateur système peut faire les tâches dévolues à root. Si vous utilisez votre propre ordinateur personnel, vous êtes l'administrateur système, bien-sûr. Si vous n'avez pas les privilèges du super-utilisateur, il vous sera nécessaire de passer la main à votre administrateur système pour les tâches qui requièrent les privilèges de root.

Parfois, vous aurez accès au mot de passe de root, souvent dans des organisations ou sur des serveurs d'écoles, car l'administrateur système vous fait confiance dans sa juste utilisation. Dans ce cas, il vous sera possible d'aider l'administrateur et de personnaliser le système pour vos besoins. Mais vous devrez toujours agir de façon responsable, en respectant tout le temps les autres utilisateurs.

Si vous possédez le mot de passe de root, essayez de vous loguer en tant que root maintenant. Entrer la commande whoami pour vérifier votre identité. Et ensuite, déloguez-vous immédiatement. Lorsque vous êtes root, le noyau ne vous protège pas de vous-même car root a les permissions de tout faire sur tout le système. N'expérimentez pas en tant que root. En fait, ne faîtes rien sous root qui ne soit absolument nécessaire. Ce n'est pas tant un problème de sécurité qu'un problème de stabilité. Votre système s'en portera d'autant mieux qu'il est protégé de vos erreurs.

Il se peut que vous trouviez la commande su plus pratique pour se loguer en tant que root. su vous permet de prendre l'identité d'un autre utilisateur, généralement root à moins qu'elle ne soit suivie du nom de quelqu'un d'autre (Vous pouvez essayer de vous en souvenir en disant que su signifie Super User bien que certains disent que c'est pour Set UserID (positionne l'ID de l'utilisateur)).

Voici quelque chose à essayer. Loguez-vous en tant que simple utilisateur, c'est-à-dire, en n'étant pas root. Après, votre session devrait ressembler à quelque chose comme cela:

$ whoami Vérifie votre nom d'utilisateur username Renvoie votre nom d'utilisateur $ su Demande au système les droits super-utilisateurs Password: Taper votre mot de passe root ici machine:~# whoami root Vous êtes maintenant root machine:~# exit Sort de votre shell root $ exit Sort de votre shell "normal"

Lorsque vous faîtes des tâches d'administration système, vous devriez les faire autant que possible en tant que simple utilisateur. Ensuite, utilisez su pour la partie qui requiert les privilèges de root. Pour le faire, taper su useruser est l'utilisateur que vous voulez devenir. Vous devrez connaître le mot de passe de l'utilisateur en question, bien-sûr, à moins que vous ne soyez root à ce moment là ou bien que l'utilisateur n'ait pas de mot de passe. Consoles virtuelles

Le noyau Linux supporte les consoles virtuelles. Ceci permet de faire de votre simple écran et clavier un système de type terminaux multiples connectés au même système. Heureusement, l'utilisation des consoles virtuelles est triviale sous Debian: il y a des touches dédiées pour aller d'une console à l'autre rapidement. Pour l'essayer, loguez dans votre système puis pressez sur Alt-F2 (appuyez simultanément sur la touche Alt et sur F2 qui est la touche de fonction numéro deux).

Vous devriez vous retrouver avec une demande de login. Ne paniquez pas. Vous êtes maintenant sur la console virtuelle (VC pour virtual console en anglais) numéro deux ! Loguez-vous et faîtes quelque chose - quelques commandes whoami ou n'importe quoi d'autre - pour vous assurez qu'il s'agit bien d'un nouveau shell. Maintenant vous pouvez retourner à la console numéro un en pressant Alt-F1. Ou bien vous pouvez aussi aller sur la console numéro trois avec Alt-F3.

Debian est fourni avec six consoles actives par défaut, qui sont accessibles avec la combinaison de la touche Alt et des touches de fonctions F1 jusqu'à F6. (Techniquement, il y a plus de six consoles actives mais seules six sont accessibles pour vous loguer. Les autres sont réservées pour le système X Window ou d'autres tâches.)

Si vous utilisez le système X Window, il se lance généralement sur la première console virtuelle non utilisable - probablement la sept. Dès-lors, pour passer de la console virtuelle sous X à une des six autres consoles, vous devez ajouter la touche Ctrl à la séquence de touches. Ainsi, il faut faire Ctrl-Alt-F1 pour aller à la console virtuelle numéro un. Mais vous pouvez aller d'une console texte vers une console X en n'utilisant que la touche Alt. Si vous ne quitter jamais X, vous n'avez pas à vous inquiéter à ce sujet, X passera automatiquement sur sa console virtuelle au démarrage.

Une fois que vous les aurez maîtrisées, les consoles virtuelles deviendront certainement un outil indispensable pour faire plusieurs choses en même temps (Le système X Window offre la même fonctionnalité, au détail près qu'il s'agit de fenêtres multiples plutôt que de consoles). Vous pouvez lancer différents programmes dans chaque console virtuelle ou vous loguer en root dans une et en vous-même dans une autre. Ou bien chacun dans la famille n'utilise que sa console virtuelle. Ceci est particulièrement pratique si vous utilisez X car dans ce cas, vous pouvez lancer plusieurs sessions X en même temps dans différentes consoles. Arrêter le système

N'éteignez pas simplement l'ordinateur ! Vous risquez de perdre des données de valeurs !

Si vous êtes le seul utilisateur de la machine, vous pouvez avoir envie de l'éteindre une fois votre travail terminé.

Pour éviter de fatiguer certains composants, il est recommandé de n'éteindre sa machine qu'une fois par jour, lorsque tout le travail est terminé. L'allumage et l'arrêt des ordinateurs sont les deux causes principales d'usure et de fatigue des composants internes de l'ordinateur. Allumer et fermer votre ordinateur une fois par jour est certainement le meilleur compromis entre votre facture d'électricité et la durée de vie de votre machine.

C'est une mauvaise chose que d'éteindre l'ordinateur en appuyant simplement sur le bouton d'alimentation du courant lorsque vous avez fini de travailler. C'est aussi une mauvaise idée que de rebooter la machine (avec le bouton Reset) sans avoir pris auparavant quelques précautions. Le noyau Linux, pour augmenter ses performances, utilise un cache disque. Cela signifie qu'il garde temporairement en mémoire certaines informations stockées sur le disque. Puisque la mémoire est des milliers de fois plus rapide qu'un disque dur, certaines opérations sur les fichiers sont ainsi beaucoup plus rapides. Périodiquement, ces informations en mémoire sont retranscrites sur le disque. Cette opération est appelée syncing. En vue d'éteindre ou de rebooter votre machine, il est nécessaire de lui dire de tout nettoyer en mémoire et de le placer sur l'unité de stockage permanent.

Pour rebooter, tapez simplement reboot ou appuyez sur Alt-Ctrl-Suppr.

Pour éteindre l'ordinateur il vous faut vous loguer en tant que root. Vous n'avez alors qu'à taper la commande shutdown -h now. Le système va alors dérouler la procédure d'extinction, y compris la commande sync qui nettoie le cache disque comme décrit précédemment. Lorsque vous apercevez System halted, il est possible d'éteindre sans danger l'ordinateur. Si vous avez un BIOS qui supporte l'APM (Advanced Power Management) et un noyau aussi, l'ordinateur peut se couper tout seul et ainsi vous épargner des problèmes. APM est très commun pour les ordinateurs portables et on le trouve aussi parfois dans certaines cartes mères d'ordinateurs de bureau. Les bases

Il est maintenant temps d'explorer le système plus en détail. Vous avez vu comment se loguer et éteindre le système. Dans ce chapitre, nous allons explorer la ligne de commandes sous Linux, comment Linux gère fichiers et répertoires et quelques règles de base pour vous identifier des autres. La ligne de commandes et les pages de man

Nous avons déjà discuté de la ligne de commandes - qui sont, rappelons-le, les commandes que vous tapez après le prompteur du shell. Cette partie décrit la structure de lignes de commandes beaucoup plus compliquées.

Une ligne de commandes minimale contient juste le nom d'une commande, comme whoami. Mais bien d'autres choses sont possibles. Par exemple, vous pouvez taper man whoami. Cette commande appelle l'aide en ligne de la commande whoami (Vous devrez vous déplacer à l'aide de la touche espace page par page et taper sur q pour sortir). Une commande plus compliquée est man -k PostScript. Cette ligne de commandes se compose de trois parties. Elle commence par le nom de commande man. Ensuite, on trouve une option ou indicateur, -k, suivi d'un argument, PostScript. Certains disent que tout sauf le nom de la commande est paramètre de la commande. Ainsi, les options et les arguments sont tous deux des paramètres.

Les options changent le comportement d'une commande, en activant une fonctionnalité particulière. Généralement, on trouve un « - » les précédant. Les utilitaires GNU ont aussi une « forme longue » pour les options; la forme longue de -k est --apropos. Vous pouvez entrer man -h ou man --help pour obtenir la liste complète des options de la commande man. Chaque commande a sa propre liste d'options, bien qu'elle partage généralement les options --help et --version. Certaines commandes, comme tar, ne demande pas de « - » devant leurs options pour des raisons historiques.

Tout ce qui n'est pas une option et qui n'est pas le nom d'une commande est un argument (et dans le cas présent, PostScript). Les arguments ont des tas de finalités ; dans la plupart des cas, ce sont les noms de fichiers dont la commande doit s'occuper. Dans ce cas, PostScript est le mot que l'on fait chercher à la commande man. Dans le cas de man whoami, l'argument est le nom de la commande dont vous recherchez des informations.

Voici un résumé de la ligne de commande man -k PostScript

man

Le nom de la commande demande à l'ordinateur d'aller chercher les pages du manuel. Ceci est une documentation des commandes. Par exemple, man whoami ira vous chercher la documentation de la commande whoami. -k

L'option, change le comportement de la commande man. Normalement, man s'attend à un nom de commande, tel whoami, comme argument et va chercher la documentation de cette commande. Mais avec l'option -k ou --apropos, il s'attend à ce que l'option soit un mot-clé. Il sort alors la liste de toutes les pages de manuel le comportant. PostScript

est l'argument; en raison de la présence de l'option -k, c'est le mot-clé à rechercher.

Allez-y et tapez la commande man -k PostScript et vous verrez apparaître une liste de pages de manuel de votre système qui ont un rapport avec le postscript. Si vous n'avez pas installé de nombreux logiciels, il se peut que vous voyiez apparaître à la place : PostScript: nothing appropriate (PostScript: rien de trouvé). Description de la ligne de commande

Remarque: vous pouvez sauter cette partie si vous voulez avancer rapidement.

Il existe une façon concise et traditionnelle de décrire la syntaxe d'une commande. La syntaxe veut dire la façon correcte de combiner les options variées ainsi que les arguments. Par exemple, si vous tapez man man pour obtenir la page de manuel de man, vous apercevrez un certain nombre de descriptions de syntaxe débutant par le nom de commande man. Une d'entre elle devrait ressembler à ceci:

man -k [-M path] keyword ...

Tout ce qui se trouve entre crochet ([ ]) est optionnel. Dans ce cas, il n'est pas nécessaire d'utiliser l'option -M mais si vous le faîtes, il est alors nécessaire d'utiliser un argument de type pathC'est-à-dire le chemin d'accès en bon français.. Vous devez utiliser l'option -k et l'argument keyword (mot-clé). Les ... signifient qu'il peut y avoir encore beaucoup de choses à la suite, notamment plusieurs mots clés.

Regardons d'un peu plus près les descriptions complexes de la page de manuel de man: man [-c|-w|-tZT device] [-adhu7V] [-m system[,...]] [-L locale] [-p string] [-M path] [=P pager] [-r prompt] [-S list] [-e extension] [[section] page ...] ...

Il n'est pas nécessaire d'aller plus en avant (et ne vous inquiétez pas quant à sa signification), mais attirez votre attention sur l'organisation de la description.

Premièrement, ce rassemblement en grappe d'options veut généralement dire que vous pouvez en utiliser une ou plusieurs dans différentes combinaisons. Ainsi, -adhu7V veut tout simplement dire que vous pouvez aussi n'utiliser que -h. Bien sûr, vous pouvez utiliser toutes les combinaisons. Cette description ne rend pas forcément les choses très claires. Par exemple, -h est incompatible avec les autres options mais vous pouvez faire man -du. Malheureusement, cette description de format ne rend pas cette approche très claire.

Ensuite, le symbole | signifie « ou ». Ainsi, vous pouvez utiliser l'option -c, l'option -w ou l'option -tZT, suivi d'un argument device.

Enfin, remarquez bien que vous devez respecter les crochets car ils indiquent les unités optionnelles. Ainsi, si vous avez une section, vous devez aussi avoir une page parce que page n'est pas optionnelle à l'intérieur du groupe [[section] page].

Il n'est pas nécessaire de mémoriser tout cela. Il suffit juste de revenir à cette partie pour lire la documentation. Fichiers et répertoires

Les fichiers sont une facilité pour stocker et organiser l'information, analogue aux documents papier. Ils sont organisés en répertoires qui sont appelés dossiers sur certains autres systèmes. Regardons d'un peu plus près l'organisation des fichiers sur un système Debian:

/

Un simple / représente la répertoire racine. Tous les autres fichiers et répertoires sont contenus dans le répertoire racine. Si vous venez du monde DOS ou Windows, / est similaire à ce que le C: signifie pour le DOS qui est la racine du système de fichiers. Une différence importante entre DOS et Linux est que DOS garde toujours C: (pour le premier disque dur), A: (premier lecteur de disquettes) et D: (soit le lecteur de cédérom soit le second disque dur) alors que Linux organise tous ses fichiers autour de la même racine /. /home/janeq

C'est le répertoire personnel de l'utilisateur janeq. En lisant de gauche à droite, pour aller dans ce répertoire, on commence dans le répertoire racine, puis dans le répertoire home et enfin dans celui de janeq. /etc/X11/XF86Config

C'est le fichier de configuration du système X Window. Il réside dans le sous-répertoire X11 du répertoire /etc. /etc est lui-même un sous-répertoire du répertoire racine /.

Choses importantes à retenir

Les noms de fichiers sont sensibles à la casse utilisée. Cela veut dire que MONFICHIER et MonFichier sont différents. Le répertoire racine (root en anglais) se réfère uniquement à /. Ne confondez pas avec le root de l'utilisateur root, l'utilisateur du système avec les « supers pouvoirs ». Chaque répertoire a un nom, qui peut contenir n'importe quels lettres ou symboles à l'exception de /. Le répertoire racine est une exception; son nom est / (prononcé « slash » ou « répertoire racine » ou « répertoire root ») et il ne peut être renommé. Bien que vous puissiez utiliser n'importe quels lettres ou symboles pour un nom de fichier, en pratique c'est une assez mauvaise idée. Il est souhaîtable d'éviter les caractères qui ont souvent une signification particulière dans les lignes de commandes comme { } ( ) [ ] ' ` " \ / > < | ; ! # & ^ * % Évitez d'ajouter des espaces dans les noms de fichiers. Si vous désirez séparer les mots dans un nom, les meilleurs choix sont la période, l'hyphénation ou le tiret souligné « _ ». Vous pouvez aussi mettre en majuscule le début de chaque mot comme dans CommeCeci. Chaque fichier et répertoire sont désignés par un nom de fichier pleinement qualifié, un nom de fichier absolu ou un chemin qui donne la séquence des répertoires que l'on doit traverser pour atteindre le fichier. Les trois termes sont synonymes. Tous les noms de fichiers absolus commencent par le répertoire racine / et il y a un / devant chaque répertoire ou fichier du nom de fichier. Le premier / est le nom du répertoire mais les autres sont de simples séparateurs pour distinguer les parties du nom de fichier. Les noms utilisés portent parfois à confusion. Prenons l'exemple suivant: /usr/share/keytables/us.map.gz C'est un nom de fichier pleinement qualifié. Pourtant, certaines personnes le désignent comme un chemin. D'autres personnes s'en servent pour désigner le fichier us.map.gz comme un seul nom de fichier. Il y a aussi une autre utilisation du mot cheminpath en anglais. À connaître aussi absolument.. Mais le contexte est toujours suffisamment clair pour faire la distinction. Les répertoires sont rangés sous forme d'arbre. Tous les noms de fichiers absolus commencent avec le répertoire racine. Le répertoire racine possède un certain nombre de branches, comme /etc et /usr. Ces sous-répertoires se subdivisent eux-mêmes en branches en de nombreux sous-répertoires, comme /etc/init.d et /usr/local. L'ensemble est appelé l'arbre des répertoires. Vous pouvez faire l'analogie avec un nom de fichier absolu et la route partante de la base de l'arbre (/) à la fin d'une branche (le fichier). Vous entendrez aussi parler certaines personnes de l'arbre des répertoires comme d'un arbre familial. Certains répertoires ont des « parents » et un chemin montre l'arbre généalogique complet. Il existe aussi des chemins relatifs qui commencent ailleurs que dans le répertoire racine. On y reviendra plus tard. Aucun répertoire ne correspond à un périphérique physique comme votre disque dur. Ceci diffère profondément du DOS et de Windows pour qui tout chemin commence par un nom de périphérique comme C:\. L'arbre des répertoires est une abstraction du périphérique matériel et vous pouvez donc l'utiliser sans savoir ce qu'il y a dessous. Tous vos fichiers peuvent être contenus dans un disque - ou vous pouvez très bien avoir vingt disques, certains connectés sur des ordinateurs différents répartis n'importe où sur le réseau. Vous ne pouvez deviner en jetant juste un coup d'oeil sur l'arbre des répertoires sur quel(s) périphérique(s) matériel(s) se trouvent vos fichiers.

Ne vous inquiétez si tout ceci n'est pas complètement clair pour vous: il y a de nombreux exemple à venir. Utilisation des fichiers: un tutoriel

Pour utiliser votre système, vous devrez connaître comment créer, déplacer, renommer et détruire fichiers et répertoires. Cette partie a pour but de montrer comment le faire avec les commandes standard de Debian.

La meilleure méthode d'apprentissage est encore d'essayer. Tant que vous n'êtes pas root (et vous n'avez pas maintenant à créer d'importants fichiers personnels), vous ne pouvez faire de catastrophe irrémédiable. Lancez-vous - tapez chacune de ces commandes après le prompteur et appuyer ensuite sur la touche entrée:

pwd

Le répertoire en cours est toujours considéré comme le répertoire courant de travail pour le shell que vous utilisez. Vous pouvez toujours le visualiser à l'aide de la commande pwd qui signifie Print Working Directory (affiche le répertoire de travail). pwd affiche donc le nom du répertoire dans lequel vous travaillez - et probablement /home/votrenom.

ls

ls signifie list (affiche) comme pour list files (affiche les fichiers). Lorsque vous tapez la commande ls, le système renvoie une liste de tous les fichiers de votre répertoire courant. Si vous venez d'installer Debian, votre répertoire de travail est certainement vide et ls ne renvoie rien en sortie car il n'y a pas de fichier à afficher.

cd /

cd signifie change directory (change de répertoire). Dans ce cas, on lui a demandé de changer pour le répertoire racine.

pwd

Ceci pour vérifier que vous êtes bien dans le répertoire racine.

ls Pour jeter un coup d'oeil au contenu de /.

cd

Taper cd sans argument sélectionne votre répertoire personnel - /home/votrenom - comme répertoire courant. Essayez pwd pour vérifier.

Avant de continuer, il vous faut savoir qu'il y a vraiment deux sortes de fichiers. Certains d'entre eux commencent par /, le répertoire racine, comme /etc/profile. Ils sont appelés noms de fichiers absolus car ils se réfèrent au même fichier quelque soit le répertoire courant. L'autre sorte de fichiers sont les fichiers relatifs.

Seuls deux répertoires ne sont utilisés qu'avec des noms de fichiers relatifs: « . » et « .. ». Le répertoire . se réfère au répertoire courant et .. au répertoire parent. Ce sont des raccourcis. Ils existent dans tous les répertoires. Même le répertoire racine à un répertoire parent - c'est son propre parent !

Ainsi, tous les fichiers comprenant . ou .. sont relatifs car leur expression dépend du répertoire courant. Si je suis dans /usr/bin et que je tape ../etc, je me réfère à /usr/etc. Si je suis dans /var et que je tape ../etc, je me réfère à /etc. Remarquez bien que le nom de fichier sans le répertoire racine possède implicitement à son commencement ./ . Ainsi, vous pouvez taper indifféremment /local/bin ou bien ./local/bin, ce qui signifie exactement la même chose.

Un dernier petit truc: le tilda ~ est équivalent à votre répertoire personnel. Ainsi, taper cd ~ revient au même que taper cd sans argument. Vous pouvez donc taper cd ~/divers/monsousrepertoire à la place de cd /home/votrenom/divers/monsousrepertoire. De façon analogue, ~myuser est l'équivalent du répertoire personnel de l'utilisateur myuser qui est probablement quelque chose comme /home/myuser; ainsi, ~myuser/docs/debian.ps est équivalent à /home/myuser/doc/debian.ps.

Il y a encore quelques commandes à essayer maintenant que vous maîtrisez les chemins relatifs. Tapez cd pour revenir dans votre répertoire personnel.

mkdir divers

Cela fabrique dans votre répertoire personnel un répertoire nommé divers. Vous allez utiliser ce répertoire pour essayer quelques autres commandes. Vous pouvez essayer ls pour vérifier que votre nouveau répertoire existe bien.

cd divers

Ceci change le répertoire vers divers.

mkdir monsousrepertoire

Ceci crée un sous-répertoire de divers.

cp /etc/profile .

cp est un raccourci pour copy (copier). /etc/profile est juste un fichier quelconque de votre système. Ne vous souciez pas de ce qu'il fait pour le moment. Nous l'avons recopié dans . (rappelez-vous que . signifie simplement « le répertoire dans lequel je me trouve maintenant » c'est-à-dire le répertoire courant de travail). Donc, ceci crée une copie de /etc/profile et la place dans votre répertoire divers. Essayez de taper ls pour vérifier qu'il y a bien un fichier appelé profile dans votre répertoire courant de travail au même niveau que le répertoire monsousrepertoire.

more profile

Ceci vous permet de visualiser le contenu du fichier profile. more est utilisé pour visualiser le contenu des fichiers textes. Il est appelé more car il ne montre qu'une page d'écran du fichier à la fois et il faut appuyer sur la barre d'espace pour visualiser la suite. more sortira de lui-même lorsqu'il aura atteint la fin du fichier ou lorsque vous aurez taper sur q (quit pour quitter).

more /etc/profile

va s'assurer que la copie est bien conforme à l'original.

mv profile monsousrepertoire

mv signifie move (déplacer). Vous avez déplacé le fichier profile du répertoire courant dans le sous-répertoire monsousrepertoire que vous avez créé précédemment.

ls

vérifie qu'il n'existe plus de fichier profile dans le répertoire courant.

ls monsousrepertoire

s'assure que profile a bien été déplacé dans le répertoire monsousrepertoire.

cd monsousrepertoire

Ceci change de répertoire vers le répertoire monsousrepertoire.

mv profile myprofile

Remarquez bien que contrairement à de nombreux autres systèmes, il n'y a pas de différence entre renommer un fichier et le déplacer. Ainsi, on ne trouve pas de commande rename (renomme). Signalons aussi que le second argument peut aussi bien être un répertoire pour déplacer le fichier dedans qu'un nom de fichier pour le renommage. cp fonctionne de la même façon.

Comme d'habitude, vous pouvez taper ls pour regarder le résultat.

mv myprofile ..

De la même façon que . signifie « le répertoire où je suis maintenant », .. signifie « le parent du répertoire courant ». Et dans le cas présent, le répertoire divers créé précédemment. Utilisez ls pour vérifier où se trouve myprofile maintenant.

cd ..

Change de répertoire vers le répertoire parent, c'est-à-dire ici divers où vous venez de déplacer myprofile.

rm myprofile

rm signifie remove (effacer) donc cela efface le fichier myprofile. Faîtes très attention ! Détruire un fichier sur un système GNU-Linux est définitif car il n'y a pas de fonction inverse. Si vous effacez un fichier, c'est fini à jamais... Prenez bien vos précautions.... On répète: détruire un fichier sur un système GNU-Linux est définitif car il n'y a pas de fonction inverse. Si vous effacez un fichier, c'est fini à jamais... Prenez bien vos précautionsRelisez-le encore une fois: détruire un fichier sur un système GNU-Linux est définitif car il n'y a pas de fonction inverse. Si vous effacez un fichier, c'est fini à jamais... Prenez bien vos précautions........

rmdir monsousrepertoire

rmdir est la même chose que rm mais pour les répertoires. Remarquez que rmdir ne fonctionne qu'avec des répertoires vides. Si le répertoire contient des fichiers, vous devez les détruire en premier ou bien utiliser rm -r à la place de rmdir.

cd ..

Ceci vous permet de sortir du répertoire courant et de vous déplacer dans le répertoire parent. Maintenant vous pouvez taper la séquence suivante:

rmdir divers

Ceci détruira les derniers restes de notre essai.

Nous savons maintenant comment créer, copier, déplacer, renommer et détruire fichiers et répertoires. Nous avons aussi appris quelques raccourcis comme taper simplement cd pour revenir dans son répertoire personnel et comment . et .. désignent respectivement le répertoire courant et le répertoire parent. Vous devez aussi retenir les concepts de répertoire racine, ou /, et de l'alias ~ pour votre répertoire personnel. Fichiers cachés et ls -a

Lorsque vous tapez ls les fichiers commençant par un . ne sont pas affichés. Traditionnellement, ces fichiers contiennent des informations de configurations, de préférences et toutes sortes de choses du même acabit. Ils vous sont cachés dans votre travail quotidien. Des exemples simples de fichiers cachés sont ~/.emacs, ~/.newsrc, ~/.bashrc, ~/.xsession et ~/.fvwmrc. Ils sont respectivement utilisés par Emacs, le lecteur de niouses, le shell Bash, le système X-Window et le gestionnaire de fenêtres fvwm. Il est conventionnel d'ajouter un rc final aux fichiers cachés mais certains programmes ne le font pas. Il y a aussi des répertoires cachés, comme ~/.gimp ou ~/.netscape qui rassemblent les préférences pour The Gimp et Netscape.

Parfois, un fichier créera automatiquement un fichier caché ; par exemple, Netscape vous permets d'éditer dans une fenêtre graphique vos préférences et de sauvegarder vos choix. D'autres fois, vous devrez les créer vous-même à l'aide d'un éditeur de texte. C'est la façon traditionnelle de faire mais vous avez à apprendre le format particulier de chaque fichier, ce qui est un inconvénient au début mais vous donne par la suite beaucoup de puissance. Processus

Nous avons déjà souligné le fait que GNU-Linux est un système multi-tâches. Il peut traiter plusieurs choses simultanément. Chacune de ces tâches est appelé processus (process en anglais). La meilleure façon de comprendre ce qui précède est de taper top après le prompteur du shell. Vous obtiendrez une liste des processus triés suivant le temps que votre ordinateur met à les traiter. Leur ordre change continuellement devant vos yeux. En haut de l'écran, vous devez apercevoir quelques informations sur le système: combien il y a d'utilisateurs connectés, combien il y a de processus, combien de mémoire vous avez et combien vous en utilisez réellement.

Dans la colonne à l'extrème gauche, vous apercevrez les utilisateurs propriétaires de chaque processus. À l'extrème droite, vous trouverez la liste des commandes évoquées. Vous avez certainement remarqué que top lui-même, lancé par vous, est presqu'en haut de la liste (car à chaque fois que top vérifie l'usage du microprocesseur (CPU), il l'active lui-même et utilise le CPU pour faire la vérification).

Remarquez que toutes les commandes se terminant pas « d » - comme kflushd ou inetd - sont des daemons.

Les daemonsDaemons en anglais se traduit par démons mais j'ai préféré garder le terme anglo-saxon car ce n'est pas un nom mais un acronyme. signifient à l'origine Disk And Extensions MOnitor (surveillance des disques et des extensions). Un daemon est un processus non interactif ce qui veut dire qu'il est lancé par le système et que l'utilisateur n'a pas à s'en occuper. Les daemons servent à fournir des services comme la connexion Internet, l'impression ou le courrier électronique.

Maintenant, appuyez sur u et entrez votre nom d'utilisateur. La commande u sert à afficher les seules processus appartenant à un utilisateur; cela permet d'ignorer tous les daemons et tous les processus appartenant à d'autres utilisateurs. Vous devez voir bash, le nom de votre shell. Vous aurez toujours le nom de votre shell.

La colonne numéro deux vous renvoie le PID pour Process IDentication (identificateur de processus). On assigne à chaque signal un unique PID. Vous pouvez utiliser les PID pour contrôler individuellement les processus (on approfondira le sujet ultérieurement). Un truc utile est la commande ? qui vous renvoie une liste des commandes disponibles sous top.

Il se peut que vous vous posiez la question de la différence entre un processus et un programme. En pratique, on utilise indifféremment l'un pour l'autre. Techniquement parlant, un programme est le jeu d'instruction écrit par un programmeur et gardé sur le disque. Le processus est l'instanciation en mémoire de ce programme sous Linux. Mais il n'est pas primordial de faire une réelle différence.

Beaucoup de vos interventions avec un ordinateur vont consister à contrôler les processus. Vous allez devoir les faire partir, les arrêter et les observer. Votre outil privilégié pour cela est le shell. Le shell

Le shell, ou interpréteur de commandes, vous permet d'interagir avec votre ordinateur. Il est appelé shell (coquillage) car il vous fournit un environnement de travail, comme une sorte de petite maison électronique pour vos travaux informatiques (pensez à l'abri de l'ermite).

La fonction la plus simple du shell est de lancer les autres programmes. Vous tapez le nom du programme que vous voulez lancer, avec à la suite les arguments que vous voulez et le shell demandera au système de lancer le programme pour vous.

Bien sûr, les systèmes graphiques avec fenêtres fournissent le même type de services. Techniquement, Windows 95 fournit un shell graphique et le système X Window fournit un autre type de shell graphique. Mais le terme shell est communément employé en sous-entendant shell pour lignes de commandes.

Cela va sans le dire mais les hackers travaillant sur un shell ne se contentent pas de lancer simplement des commandes. Votre shell regorge d'astuces cachées et de fonctionnalités puissantes si vous désirez vous en servir.

Il y a de très nombreux shells différents disponibles. La plupart d'entre eux sont basés soit sur le Bourne Shell soit sur le C shell, deux des plus vieux shells. Le nom originel du Bourne Shell est sh et celui du C shell, csh. Les différentes variantes du Bourne Shell sont le Bourne Again Shell du projet GNU (bash, le shell par défaut de Debian), le Korn Shell (ksh) et le Z shell (zsh). Il y a aussi ash, une implémentation traditionnelle du Bourne shell. La plus connue des variantes du C shell est tcsh (le t est un tribu payé aux systèmes d'exploitation TENEX and TOPS-20 qui ont inspiré quelques parties de tcsh en sus de csh).

bash est certainement le meilleur choix pour un nouvel utilisateur. C'est le shell par défaut et il comprend des tas de fonctionnalités que vous allez apprécier. Mais chaque shell possède ses avantages. Si vous voulez expérimenter, installez les différents paquets de shell et changez votre shell avec la commande chsh. Tapez simplement chsh, fournissez votre mot de passe et lorsque demandé, choisissez votre nouveau shell. Lorsque vous vous reloguerez de nouveau, vous utiliserez le nouveau shell. Gérer les processus avec bash

Debian est un système multi-tâches donc vous avez besoin d'un moyen de faire plus d'une chose à la fois. Les environnements graphiques, comme X, fournissent un élément naturel pour le faire: ils autorisent plusieurs fenêtres simultanément. Naturellement, bash, et tous les autres shells, fournissent des facilités similaires.

Récemment, vous avez utilisé top pour jeter un coup d'oeil sur tous les processus de votre système. Votre shell vous propose des façons aisées de suivre les commandes que vous avez lancées à partir de ce shell. Chaque ligne de commande lance un job (aussi appelé un groupe de processus) qui sera suivi par le shell. Un job peut être simplement un processus ou bien un ensemble de processus tubés (plus sur les tubes un peu plus tard).

Entrer une ligne de commande lance un job. Essayez de taper man cp et la page de manuel de cp va apparaître à l'écran. Le shell va tourner en arrière-plan et revenir en avant-plan une fois la lecture de la page terminée (ou vous pouvez taper sur q pour éviter d'avoir à dérouler toute la page pour sortir).

Mais admettons que vous désiriez faire quelque chose d'autre pendant la lecture du manuel. Pas de problème. Appuyez sur Ctrl-z pour suspendre la lecture du manuel (mis en arrière-plan du job courant) et ainsi remettre en avant-plan le shell. Lorsque vous suspendez un job, bash vous donne immédiatement quelques informations à son sujet et ensuite il renvoie un prompteur. Vous devriez apercevoir quelque chose comme cela à l'écran:

NAME cp - copy files SYNOPSIS cp [options] source --More-- [1]+ Stopped man cp $

Observez bien les deux dernières lignes. Les deux dernières comportent l'information sur le job et vous avez le prompteur du shell.

bash assigne à chaque ligne de commande un numéro de job donné par le shell. Cela vous permet de vous référer facilement à un processus. Dans ce cas, man cp porte le numéro 1, indiqué par [1]. Le signe + veut dire que c'est le dernier job à avoir été mis en arrière-plan. bash vous renvoie aussi l'état courant du job - Stopped - ainsi que la ligne de commande.

Il y a de nombreuses choses à faire avec les jobs. Avec man cp toujours suspendu, essayez la commande suivante:

man ls

Cela crée un nouveau job.

Ctrl-z

Cela le suspend; vous devriez voir les informations du job.

man mv

Lance un nouveau job.

Ctrl-z

Le suspend aussi.

jobs

Demande au bash d'afficher l'état de tous les jobs en cours. Le résultats devraient ressembler à :

{$} jobs [1] Stopped man cp [2]- Stopped man ls [3]+ Stopped man mv {$}

Remarquez bien que les - et + qualifient respectivement l'avant-dernier et le dernier job en arrière-plan.

fg

Cela place le dernier job en arrière-plan (man mv, celui avec le +) de nouveau en avant-plan. Si vous pressez la barre d'espace, la page de manuel va se dérouler.

Ctrl-z

Suspend à nouveau man mv.

fg %1

Vous pouvez vous référer à n'importe quel job en utilisant % suivi de son numéro. Si vous utilisez fg sans lui spécifier de job, c'est le dernier actif qui sera réveillé.

Ctrl-z

Suspend à nouveau man cp.

kill %1

Détruit le job numéro 1. bash fait un rapport d'information du job qui devrait ressembler à:

$ kill %1 [1] - Terminated man cp $

bash se contente de demander au job de se terminer et parfois ce dernier ne veut pas. Dans ce cas, vous devez ajouter l'option -KILL. De nombreuses personnes utilisent le signal -9 plutôt que le nom du signal. Dans tous les cas, c'est techniquement moins portable que d'utiliser le nom du signal pour arrêter la demande de destruction et commencer la destruction. Par exemple:

$ kill -KILL %1 [1]- Killed man mv $

L'option -KILL force une destruction inconditionnelle du job.

En des termes plus techniques, kill se contente d'envoyer un signal. Par défaut, il envoie un signal de terminaison (TERM ou signal 15) mais vous pouvez très bien spécifier un signal et l'option -KILL (signal 9) est le signal qui force la terminaison. La commande kill n'est pas forcément appropriée pour l'envoi de signaux ; par exemple, envoyer le signal TSTP (terminal stop) suspend le processus et permet de le récupérer plus tard.

top

Cela nous renvoie à l'écran la sortie de top. Envoyez la commande u dans top pour ne visualiser que vos processus. Regardez dans la colonne de droite les commandes man ls et man mv. man cp n'est plus là puisque vous l'avez tuée. top vous montre les processus vous appartenant ; remarquez bien que le PID à gauche de l'écran ne correspond pas au numéro de job.

Il se peut que vous ne voyez pas vos processus car trop bas pour apparaître à l'écran. Si vous utilisez X (voir chapitre 11), vous pouvez redimensionner votre xterm pour résoudre le problème.

Même ces simples jobs sont en réalité des processus multiples, incluant le processus man et le visualiseur more qui vous permet de faire défiler les pages une par une. Vous devez apercevoir les processus more dans top.

Vous vous demandez peut-être comment nettoyer les deux jobs restant. Vous pouvez soit les tuer (avec la commande kill) ou bien les remettre en avant-plan (avec fg) puis les quitter. Rappelez-vous que la commande jobs vous renvoie la liste des jobs en cours et leur état.

Une touche finale: la documentation de bash est plutôt bonne mais il vaut mieux aller la chercher dans le système d'aide info que dans les pages de manuel. Pour la lire, tapez info bash. Voir la partie 16.2 pour les instructions pour se servir de la commande info. bash contient aussi une très bonne documentation en ligne accessible via la commande help. help renvoie une liste de sujets disponibles. On peut accéder directement à l'information en tapant help sujet en question. Essayez help cd par exemple. Cela vous fournira des détails sur les arguments -L et -P reconnus par cd. Quelques fonctionnalités de bash

Cette partie mentionne rapidement quelques fonctionnalités couramment utilisées sous bash. Pour une discussion plus complète, reportez-vous au chapitre 8. Le complètement par tabulation

Le shell bash est capable de deviner quel fichier ou commande vous êtes en train de taper et les compléter automatiquement pour vous. Il suffit simplement de taper le début de la commande ou du fichier et d'appuyer sur la touche de tabulation. Si bash trouve un complètement unique, il finira le mot et ajoutera un espace à la fin. S'il trouve de multiples complètementsOn trouve parfois complétion qui n'est qu'un barbarisme engendré à partir du terme anglais completion., il propose l'ensemble de ses choix possibles en émettant un signal sonore. Vous pouvez alors entrer le nombre de lettres suffisantes pour le rendre unique et appuyez sur la touche de tabulation à nouveau. S'il n'existe pas de complètement, bash émet simplement un signal sonore. Protéger votre identité

Les systèmes de type Unix sont multi-utilisateurs et vous avez donc votre propre identité comme utilisateur sur le système. Tapez finger votrenomdutilisateur pour voir les informations qui sont publiquement disponibles. Pour changer le nom et le shell affichés ici, vous pouvez utiliser la commande chfn et chsh. Seul root peut vous changer votre login et votre répertoire d'attache. Vous devez avoir vu No plan. Un plan est une simple information que vous voulez rendre publique. Pour créer un plan, vous placer toute l'information que vous voulez montrer aux autres dans un fichier appelé .plan. Pour le faire, vous devrez vous servir d'un éditeur de texte (voir chapitre 10.2). Ensuite, utilisez à nouveau finger pour observer le résultat. Les autres peuvent utiliser finger sur vous pour voir votre plan ou vérifier si vous avez reçu ou lu votre courrier électronique.

Remarquez bien que l'information de finger est disponible à travers tout l'Internet par défaut. Si vous ne le voulez pas, lisez la documentation de inetd et le fichier /etc/services. Éventuellement, la page de manuel peut décrire la mise en oeuvre mais il n'est pas évident que cela puisse réellement vous aider. Utiliser le shell

En lisant les chapitres précédents, vous avez déjà interagit avec le shell. Le shell est le programme qui reçoit vos commandes et qui les exécute. Dans ce chapitre, nous allons explorer le shell plus en avant, avec une mention spéciale pour le personnaliser afin de lui faire faire le travail que vous voulez qu'il fasse. Les variables d'environnement

Chaque processus a un environnement associé. Un environnement est ensembles de variables d'environnement. Une variable est une valeur modifiable avec un nom déterminé. Par exemple, le nom EMAIL peut se référer à la valeur joe@nowwhere.com. Sa valeur peut changer ; EMAIL peut aussi se référer à jane@somewhere.com.

Puisque le shell n'est qu'un processus parmi d'autres, il possède aussi son environnement. Vous pouvez visualiser votre environnement en entrant la commande printenv. La figure suivante donne un exemple de résultat de sortie de cette commande. Sur votre système, la sortie sera différente bien que similaire.

PAGER=less HOSTNAME=icon MAILCHECK=60 PS1=$ USER=username MACHTYPE=i486-pc-linux-gnu EDITOR=emacs DISPLAY=:0.0 LOGNAME=username SHELL=/bin/bash OSTYPE=linux-gnu HISTSIZE=150 TERM=xterm-debian TEXEDIT=jed PATH=/usr/sbin:/usr/sbin/:/usr/local/bin/: /usr/bin/:/bin/:/usr/bin/X11/:/usr/games _=/usr/bin/printenv

Les variables d'environnement sont une façon de configurer le système. Par exemple, la variable EDITOR vous permet de sélectionner votre éditeur préféré pour poster des news, écrire du courrier électronique et ainsi de suite.

Régler ses variables d'environnement est quelque chose de triviale. En pratique, commençons par personnaliser votre prompteur de shell ainsi que votre visualiseur de texte avec les variables d'environnement. Tout d'abord, commençons par un peu d'informations basiques.

man less

Cette commande vous permet d'accéder au manuel en ligne de la commande less. Pour éviter de dérouler tout le texte d'un seul coup à l'écran, man invoque un pageur qui vous déroule le texte page par page, à chaque fois que vous appuyez sur la touche espace. Par défaut, le pageur utilisé est more.

Continuons et regardons un peu la page de manuel de less, qui est un pageur très puissant. Affichez la page suivante en appuyant sur espace et q pour quitter. more quitte aussi automatiquement la page en arrivant à la fin.

export PAGER=less

Après avoir lu les avantages de less, il se peut que vous vouliez l'utiliser pour lire les pages de manuel. Pour ce faire, vous devez positionner la variable d'environnement PAGER.

La commande pour ajuster une variable d'environnement dans bash a toujours le format suivant:

export NOM=valeur

export signifie déplacer la variable du shell dans votre environnement. Cela veut dire que les programmes autres que le shell (par exemple, un visualiseur de textes) seront capables d'y accéder.

echo $PAGER

C'est la façon la plus aisée d'accéder au contenu de la variable. $PAGER demande en fait au shell d'insérer la valeur de PAGER avant d'invoquer la commande. echo renvoie simplement l'argument: dans ce cas, cela renvoie simplement la valeur du contenu de PAGER, c'est-à-dire less.

man more

renvoie maintenant la page de manuel de more. Mais maintenant, man utilise less comme pageur.

less a beaucoup plus de fonctionnalités que more. Par exemple, vous pouvez paginer en arrière à l'aide de la touche b. Vous pouvez aussi vous déplacer en avant et en arrière à l'aide des flèches de direction. less ne sort pas lorsque vous avez atteint le bas du fichier de la page de manuel: il attend que vous appuyez sur la touche q.

Vous pouvez essayer quelques spécificités de la commande less, comme b, pour vérifier qu'elles ne fonctionnent pas avec more.

unset PAGER

Si vous ne désirez pas spécifier un pageur, vous pouvez appliquer la commande unset à la variable. man utilisera alors more par défaut, comme il le faisait avant que vous ne changiez la variable.

echo $PAGER

Comme la variable PAGER a été détruite, echo ne renverra rien.

PS1=bonjour:

Pour s'amuser, tentons de modifier le prompteur. $ devrait maintenant être modifié. Voici les étapes en détails:

$ echo $PS1 $ $PS1=bonjour: bonjour:echo Mon prompteur est $PS1 Mon prompteur est bonjour: bonjour:

export n'est pas nécessaire car vous ne modifier que le comportement de votre propre shell. Il n'y a pas de raison d'exporter dans l'environnement de tous les programmes pour faire le test. Techniquement parlant, PS1 est plutôt une variable de shell qu'une variable d'environnement.

Si vous le voulez, vous pouvez exporter la variable de shell, la transformant ainsi en variable d'environnement. Si vous agissez de la sorte, les programmes lancés à partir du shell pourront la voir. Où les commandes résident: la variable PATH

Lorsque vous tapez une commande dans votre shell, ce dernier doit trouver le programme correspondant sur votre disque avant de l'exécuter. Si le shell devait examiner l'ensemble du disque dur, cela serait extrêmement lent. À la place, il se contente d'aller chercher dans un ensemble de répertoires contenu dans la variable d'environnement PATH. Cette liste de répertoires est le chemin d'accès du shell. Lorsque vous entrez une commande, le shell va chercher dans chacun des répertoires de ce chemin pour trouver la commande que vous lui avez demandé de lancer.

Il se peut que vous ayez à changer la variable PATH si vous installez vous-même des programmes à des endroits non conventionnels. La valeur du PATH est une liste de répertoires séparés par des « : ».

/usr/local/bin:/usr/bin/:/bin:/usr/bin/X11:/usr/games

Cette valeur est définie dans le fichier /etc/profile et applicable à tous les utilisateurs. Il est très facile de modifier cette valeur, comme d'ailleurs l'ensemble des variables d'environnement. Si vous tapez la commande ls, le shell va d'abord la chercher dans /usr/local/bin; ls ne s'y trouve pas donc il va continuer et la chercher dans /usr/bin/ ; comme cela échoue encore, il vérifie /bin. Il la trouve enfin et stoppe sa recherche pour exécuter le programme /bin/ls. Si la commande /usr/bin/X11/ls existe (ce n'est pas le cas mais c'est pour l'exemple), elle serait tout simplement ignorée.

Vous pouvez voir quel ls le shell va utiliser grâce à la commande type. type ls va vous renvoyer /bin/ls. Essayez-la vous-même.

$ type type type is a shell builtintype est une fonction interne du shell

type n'est pas vraiment un programme: c'est une fonctionnalité du shell mais vous pouvez l'utiliser comme un programme extérieur.

Il y a de nombreuses commandes de la même sorte. Tapez man builtins pour visualiser la page les décrivant. De façon générale, il n'est pas nécessaire de savoir si une commande est une fonctionnalité interne ou bien un programme extérieur. Mais il faut garder à l'esprit qu'une fonctionnalité interne ne sera pas visible via un ps ou un top car il ne s'agit pas d'un processus séparé: c'est une partie intégrante du shell. Fichiers de configuration

De nombreuses applications sous Linux vous permettent de modifier leur comportement à certains moment en transformant les fichiers contenant leurs informations de configuration. Ces fichiers de configuration peuvent contenir des informations de lancement, des réglages de configuration ou bien des ajustements pour la sortie. En général, un nom de fichier de configuration est basé sur le nom de l'application qu'il est sensé modifier. Cette convention de nom permet de déterminer rapidement à quelle application appartient quel fichier de configuration pour les réglages. Configuration système contre configuration personnelle

Il est important de se rappeler qu'il y a deux façons différentes de configurer sur un système Debian. La configuration système affecte tous les utilisateurs. Ces configurations se trouve dans le répertoire /etc et donc il est généralement nécessaire d'être root pour modifier ces fichiers. Vous pouvez avoir besoin de configurer la façon dont se connecte le système à Internet par exemple, ou bien configurer les butineurs HTML pour leur faire afficher la page de la société en se lançant. Si vous désirez effectuer le changement pour tous les utilisateurs à la fois, vous devez faire les transformations dans /etc. Des fichiers de configuration simples de /etc sont /etc/X11/XF86Config, /etc/lynx.cfg et /etc/ppp/options. En fait, presque tous les fichiers de /etc sont des fichiers de configuration.

La configuration personnelle n'affecte qu'un simple utilisateur. Les fichiers cachés sont utilisés à cette fin. Par exemple, le fichier ~/.newrc contient une liste d'articles sur USENET (groupes de discussions) que vous avez lus et à quels groupes vous avez souscrit. Cela permet à des lecteurs de news comme trn ou GNUS de n'afficher que les articles non lus dans les groupes qui vous intéressent. Cette information est bien-sûr propre à chaque utilisateur du système et ainsi chacun possède son propre .newrc dans son répertoire de travail personnel. Aliases

Si vous utilisez la même commande de nombreuses fois, il se peut que vous vous fatiguiez à la taper. bash vous permet d'écrire un raccourci - on dit alias - de votre commande.

Admettons que vous désiriez toujours utiliser les options --almost-all et --color=auto de ls. Faîtes un alias:

alias myls='ls --almost-all --color=auto'

Maintenant, il vous suffit de taper myls à la place de la commande complète. Pour voir ce qu'est réellement myls, il suffit de taper type myls. Pour voir la liste complète des aliases que vous avez défini, taper simplement alias tout seul comme commande. Contrôler les entrées et les sorties

Au fur et à mesure de vos expériences avec Linux, vous allez comprendre combien manipuler les entrées et sorties des applications est un concept très puissant. Cette partie décrit quelques points de ce que peut vous apportez la redirection des entrées-sorties. stdin, stdout, tubes et redirection

Chaque processus a au moins trois connexions avec le monde extérieur. L'entrée standard est une des sources des données du processus. La sortie standard est un des endroits où le processus envoie ses données et l'erreur standard est l'endroit où le processus envoie ses messages d'erreurs (on les abrège généralement par stdin, stdout et stderr).

Les mots « source » et « endroit » sont intentionnellement vagues. Ces lieux d'entrées-sorties standards peuvent changer avec les utilisateurs. Cela peut être l'écran, le clavier, un fichier et même une connexion réseau. Vous pouvez spécifier les endroits à utiliser.

Lorsque vous lancez un programme à partir du shell, l'entrée standard est généralement le clavier et la sortie standard, ainsi que les erreurs, s'affichent sur votre écran. Vous pouvez bien sûr demander à votre shell de modifier ce comportement.

Par exemple, la commande echo envoie son entrée standard sur sa sortie standard, normalement à l'écran. Mais vous pouvez décider de l'envoyer plutôt dans un fichier à l'aide de l'opérateur de redirection de sortie, > . Par exemple, pour écrire le mot « Bonjour » dans le fichier monfichier, utilisez la commande suivante:

echo Bonjour > monfichier

Utilisez ensuite cat ou bien votre pageur (more ou less) pour visualiser le contenu du fichier monfichier.

$ echo Bonjour > monfichier $ cat monfichier Bonjour $

Vous pouvez changer l'entrée standard d'une commande avec l'opérateur de redirection d'entrée, < . Par exemple, cat < monfichier. En pratique, ce n'est pas commode. Pour simplifier, cat accepte un fichier pour argument. Ainsi, vous pouvez vous contenter de taper cat monfichier et l'effet sera identique.

Si l'on approfondit un peu, la commande cat < monfichier signifie que le shell ouvre le fichier monfichier et envoie son contenu dans l'entrée standard de cat. cat monfichier, sans l'opérateur de redirection, signifie que la commande cat reçoit un argument unique (monfichier), l'ouvre d'elle-même et ensuite l'affiche à l'écran.

Il y a bien-sûr une raison pour cette double fonctionnalité. Par exemple, il est possible de connecter la sortie standard d'une commande sur l'entrée standard d'une autre commande. Cela s'appelle un tube (pipeline en anglais). Cela utilise l'opérateur tubeCela dépend de votre clavier: cela peut apparaître comme une barre verticale ou une barre verticale en deux parties mais cela doit toujours se trouver au-dessus du contre slash (NDT: pour les claviers qwerty uniquement... tapez Alt Gr 6 pour les azerty), | .

Peut-être désirez-vous voir la GNU General Public License à l'envers ? Pour le faire, utilisez la commande tac (c'est un cat mais inversé). Essayez:

tac /usr/doc/copyright/GPL

Malheureusement, cela défile beaucoup trop rapidement pour être lisible. Donc vous ne voulez avoir que quelques paragraphes: la solution est un tube:

tac /usr/doc/copyright/GPL | less

Cela prend donc la sortie standard de tac, qui est la GPL lue à l'envers, et l'envoie dans l'entrée standard de less.

Vous pouvez enchaîner ainsi autant de commandes que vous le désirez. S'il vous prend une envie inexpliquable de transformer tous les G en Q, il vous suffit d'utiliser la commande tr G Q comme ceci:

tac /usr/doc/copyright/GPL | tr G Q | less

Vous pouvez obtenir le même résultat en utilisant des fichiers temporaires et des redirections, par exemple:

tac /usr/doc/copyright/GPL > tmpfile tr G Q < tmpfile > tmpfile2 less < tmpfile2 rm tmpfile tmpfile2

Il est clair qu'un tube est bien plus pratique. Expansion de nom de fichier

Vous désirez souvent utiliser une commande sur tout un groupe de fichiers. Des caractères spéciaux (wildcards) sont utilisés pour créer des termes génériques d'expansion de nom de fichiers. Une série de lettres et des caractères spéciaux permettent ainsi de lister des fichiers. Par exemple, le motif /etc/* remplace la liste de tousActuellement, les fichiers commençant par un point ne sont pas inclus dans l'expansion de * les fichiers de /etc.

* est un motif qui remplace n'importe quelle série de caractères et ainsi l'expression /etc/* fournira la liste de tous les fichiers commençant par /etc/.

Cette liste de fichiers est très utile comme un jeu d'arguments pour une commande. Par exemple, le répertoire /etc contient une série de sous-répertoires appelés rc0.d, rc1.d, etc... Normalement, pour visualiser le contenu de ces répertoires, vous devriez taper les commandes suivantes:

ls /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d ls /etc/rc4.d /etc/rc5.d /etc/rc6.d /ect/rcS.d

C'est particulièrement lourd et pénible. À la place, il suffit d'utiliser le caractère spécial « ? » comme suit:

ls /etc/rc?.d

/etc/rc?.d renvoie alors une liste de nom de fichiers, commençant par rc, suivant d'un caractère et se terminant pas .d.

Les caractères spéciaux disponibles sont les suivants:

*

Correspond à n'importe quel groupe de 0 ou plus de caractères. ?

Correspond à un caractère quelconque mais unique. [...]

Si vous entourez des caractères de crochets, le résultat est une correspondance avec ces caractères. Par exemple, [abc] correspond soit à un a, soit à un b ou soit à un c. Si vous ajouter un ^ après le premier crochet, on retourne le sens. Ainsi, [^abc] correspond à tous les caractères qui ne sont pas un a, un b ou un c. Vous pouvez aussi inclure un intervalle comme [a-j] qui correspond à tout entre a et j. La correspondance est sensible à la casse des caractères donc si vous voulez inclure toutes les lettres, vous devz utilisez [a-zA-Z].

Les motifs d'expansion sont très simples, à partir du moment où vous les voyez dans des exemples concrets:

*.txt

Cela vous fournit la liste de tous les fichiers finissant pas .txt puisque * correspond à tout. *.[hc]

Cela vous fournit une liste de fichier se terminant soit par .h soit par .c. a??

Cela vous fournit la liste de tous les fichiers de trois lettres commençant par un a. [^a]??

Cela vous fournit la liste de tous les fichiers de trois lettres ne commençant pas par la lettre a. a*

Cela vous fournit l'ensemble des fichiers commençant par a sans tenir compte de leur nombre de lettres. Un peu plus sur les fichiers

Dans la partie 7.2, nous avons montré comment déplacer et renommer des fichiers avec mv, comment les copier avec cp, comment les détruire avec rm, comment détruire des répertoires avec rmdir et comment en créer avec mkdir. Ce chapitre va couvrir des aspects un peu plus avancés du traitement de fichiers. Permissions

Les systèmes Unix et GNU sont paramétrables pour pouvoir autoriser de nombreuses personnes à utiliser la même machine tout en conservant secrets certains fichiers ou en empêchant certaines personnes de modifier certains fichiers. Vous pouvez le vérifier par vous-même. Loguez-vous en tant que vous-même, c'est-à-dire PAS en root.

whoami

Ceci pour vérifier que vous n'êtes pas root. Ensuite, entrer la commande suivante:

rm /etc/resolv.conf

L'ordinateur devrait vous répondre Permission denied Permission refusée. /etc/resol.conf est un des fichiers essentiels de configuration du système. Vous n'êtes pas autorisé à le modifier ou l'effacer si vous n'êtes pas root. Cela préserve le système d'une maladresse accidentelle. Si l'ordinateur est dans un organisme public, comme dans un bureau ou une école, cela le préserve des utilisateurs travaillant dessus.

Maintenant, tapez ls -l /etc/resolv.conf.

Cela devrait vous renvoyer quelque chose comme cela:

-rw-r--r-- 1 root root 119 Feb 23 1997 /etc/resolv.conf

L'option -l de ls lui demande d'ajouter des informations additionnelles. Les informations sur la partie droite sont faciles à interpréter. La taille du fichier fait 119 octets. La date de dernière modification est le 23 février 1997 et le nom du fichier est /etc/resolv.conf. Sur la partie gauche de l'écran, les choses sont un tout petit peu plus compliquées.

Tout d'abord, une brève explication technique: -rw-r--r-- est le mode du fichier, le 1 correspond au nombre de liens physiques vers ce fichier (ou le nombre de fichiers dans le répertoire) et les deux root sont les propriétaires respectifs du fichier et du groupe auquel appartient le fichier.

Tout ceci est du charabia. Étudions les choses plus calmement. Les droits de propriété d'un fichier

Tous les fichiers ont deux propriétaires: un utilisateur et un groupe. Le cas précédent peut porter à confusion car il y a un groupe nommé root et en même temps un utilisateur nommé root. Les groupes sont juste un rassemblement d'utilisateurs à qui on donne collectivement le droit d'accéder à une partie du système. Un bon exemple est le groupe games. Vous pouvez créer un groupe games sur votre ordinateur et le paramétrer de façon à ce que seuls les gens appartenant à ce groupe aient l'autorisation de jouer sur la machine.

Il y a des exemples plus pratiques: considérons le cas de la configuration d'une machine pour une école. Il y a certains fichiers dont vous voulez restreindre l'accès aux professeurs seulement, et pas aux élèves. Vous créez donc un groupe dans lequel vous rassemblez tous les professeurs. Ensuite, vous pouvez indiquer au système que certains fichiers appartiennent au groupe professeurs et que personne d'autre n'y a accès.

Explorons les groupes du système. En premier lieu, vous pouvez utiliser la commande groups du shell. Cela vous fournit une liste de groupes auxquels vous appartenez:

$ groups system-wide configuration!permissions!file ownershipusername dialout: cdrom floppy audio

Vous semblez donc n'appartenir qu'à un groupe, qui est identique à votre nom d'utilisateur. Dans tous les cas, root peut vous ajouter dans d'autres groupes. L'exemple suivant montre une personne membre de cinq groupes:

less /etc/group

Ce fichier contient la liste des groupes disponibles sur votre système. Remarquez bien le groupe root (le seul membre de ce groupe est l'utilisateur root) et le groupe qui correspond à votre nom d'utilisateur. Il y a aussi des groupes comme dialout (les utilisateurs autorisés à lancer le modem) et floppy (les utilisateurs qui ont accès au lecteur de disquette). Il est probable que votre système ne soit pas configuré pour avoir l'usage de ces groupes. Il est préférable que seul root ait accès au lecteur de disquettes ou au modem pour le moment. Pour les détails en ce qui concernent ce fichier, reportez-vous au man group.

ls -l /home

Cette commande vous montre que tous les répertoires utilisateurs sont la propriété de leur utilisateur et de leur groupe personnel.

Si vous venez d'installer Debian, vous êtes peut-être le seul utilisateur. Vous pouvez ajouter d'autres utilisateur à l'aide de la commande adduser. Mode

En plus d'être la propriété d'un seul utilisateur et d'un seul groupe, chaque fichier et répertoire possède aussi un mode qui détermine qui a le droit de lire, d'écrire et d'exécuter un fichier (et de le lancer s'il s'agit d'un programme). Il y a d'autre petites fonctionnalités apportées par le mode mais ce sont des réglages avancées et nous les laisserons de côté pour le moment.

Un mode ressemble à cette sortie de ls: -rw-r--r--. À partir de maintenant, nous allons découvrir neuf ensembles: celui qui contrôle les permissions de lecture, d'écriture et d'exécution pour le propriétaire du fichier, pour le groupe auquel se rattache le fichier et pour les autres personnes (others) (tous ceux du système, quelque fois appelé le monde).

Dans la ligne mode, le premier « élément » donne le type de fichier. Le - signifie que c'est un fichier normal (regular file). Si nous avions eu d, cela aurait été un répertoired pour directory en anglais. Il y a aussi quelques autres possibilités mais qui sont trop complexes pour le cadre de cette partie. Pour plus détails, allez voir la partie 15.2.2.

Les neuf éléments restant sont utilisés pour définir le mode du fichier. Les neuf bits basics (read, write et execute pour l'utilisateur, le groupe et les autres) sont définis en trois blocs de rxw.

Si toutes les permissions sont activées et qu'il s'agit d'un fichier normal, le mode va ressembler à ceci: -rxwrxwrxw

Si c'était un répertoire avec toutes les permissions désactivées pour le monde et activées pour tous les utilisateurs et le groupe, cela ressemblerait à: drxwrxw---

Le tableau suivant indique la signification des permission de lecture, écriture et exécution pour les fichiers et les répertoires:

--------------------------------------------------------------- | Code | Nom | Ce que cela permet | Ce que cela permet | | | | aux fichiers | aux répertoires | --------------------------------------------------------------- | r | lecture | Examen du contenu | Liste le contenu | | | | du fichier | du répertoire | --------------------------------------------------------------- | | | Modification |Ajout ou destruction| | w | écriture| du fichier | de fichiers dans le| | | | | répertoire | --------------------------------------------------------------- | x |exécution| lancer en tant que |Accéder aux fichiers| | | | commande | du répertoire | ---------------------------------------------------------------

Les modes du répertoire peuvent porter un peu à confusion donc voici une série d'exemples des effets de combinaisons diverses.

r--

L'utilisateur, le groupe et les autres avec ces permissions peuvent afficher le contenu du répertoire mais ne peuvent rien faire d'autre. Les fichiers contenus dans ce répertoire ne peuvent être lus, modifiés ou manipulés de quelle que façon que ce soit. La seule action autorisée consiste à lire le répertoire en lui-même ce qui revient à afficher ce qu'il contient et donc la liste des fichiers.

rw-

La permission d'écriture n'a pas d'effet en l'absence de celle d'exécution donc ce mode se comporte exactement comme le mode précédent.

r-x

Ce mode permet aux fichiers présents dans le répertoire d'être visibles et permet aussi d'accéder à ces fichiers. Dans tous les cas, les fichiers ne peuvent être créés ou détruits. Accéder signifie que vous pouvez voir, changer et exécuter les fichiers suivant leurs permissions respectives.

--x

Les fichiers de ce répertoire sont accessibles mais le contenu du répertoire ne l'est pas. Il vous faut donc connaître à l'avance le nom du fichier que vous recherchez (à moins d'avoir des talents de devin). Les fichiers ne peuvent être ni créés ni détruits.

rwx

Vous pouvez faire tout ce que vous voulez avec les fichiers de ce répertoire tant que vous respectez leurs permissions respectives.

Les permissions d'écriture d'un répertoire détermine si vous pouvez détruire des fichiers dans ce répertoire. Un fichier en lecture seule pourra être effacé si vous avez les permissions d'écriture dans le répertoire le contenant. Vous ne pouvez détruire un fichier d'un répertoire en lecture seule même si vous avez les droits d'écriture sur le fichier.

Cela signifie que si vous êtes le propriétaire d'un répertoire, vous pouvez toujours détruire un de ses fichiers, y compris si ce fichier appartient à root.

La permission d'exécution d'un répertoire détermine la possibilité d'avoir accès aux fichiers - si bien sûr leurs permissions respectives l'autorisent. Si vous avez le droit d'exécution d'un répertoire, les droits d'exécution de ses fichiers devraient suivre. Sinon, les permissions des fichiers ne servent à rien: vous y avez accès dans tous les cas. Les permissions en pratique

Cette partie contient une série d'exemples pour montrer comment utiliser les permissions. Pour changer les permissions, on utilise la commande chmod.

cd ; touch monfichier

Il y a une série de nouveaux trucs ici. En premier, vous pouvez utiliser ; pour mettre deux commandes sur la même ligne. Vous pouvez entrer la commande précédente comme suit:

$ cd $ touch monfichier

ce qui revient au même que

$ cd; touch monfichier

Les deux méthodes conduisent au même résultat.

Rappelez-vous que cd employé seul vous renvoie dans votre répertoire personnel. touch est normalement utilisé pour modifier la date de création d'un fichier à la date courante. Mais cela a une autre fonctionnalité intéressante. Si le fichier n'existe pas, touch le crée. Ainsi, vous êtes en train de créer un fichier pour pouvoir faire des expérimentations dessus. Utilisez ls -l pour observer que le fichier a bien été créé et remarquez son mode de permission:

$ ls -l -rw-r--r-- 1 user user 0 Nov 18 22:04 monfichier

Bien-sûr, la date et le nom du groupe et de l'utilisateur seront différents chez vous. La taille du fichier est 0 car touch a créé un fichier vide. -rw-r--r-- est le mode de permission par défaut sous Debian.

chmod u+x monfichier

Cette commande ajoute (+) des permissions d'exécution (x) pour l'utilisateur (u) à qui appartient le fichier. Utilisez ls -l pour en voir les effets.

chmod go-r monfichier

Maintenant, vous ôtez (-) les permissions de lecture (r) au groupe (g) à qui appartient le fichier et à tous les autres (o). À nouveau, utilisez ls -l pour voir les modifications.

chmod ugo=rx monfichier

Ici, vous positionnez (=) les permissions de lecture et d'exécution pour l'utilisateur, le groupe et les autres. Cela positionne les permissions exactement comme vous l'avez spécifié et enlève les autres permissions. Ainsi, seules les permissions rx seront activées, et toutes les permissions w seront retirées. À partir de maintenant, personne ne peut modifier le fichier.

chmod a-x monfichier

est un raccourcia est pour all (tous) en anglais. pour ugo. Ainsi, seules les permissions d'exécution vont être retirées.

rm monfichier Avec cette commande, nous allons tenter de détruire le fichier mais sans les droits d'écriture. rm va alors s'assurer de votre certitude en affichant le message suivantrm: détruire le fichier protégé en écriture `monfichier'?:

rm: remove 'monfichier', overriding mode 0444 ?

Vous devrez répondre en tapant y et ensuite en appuyant sur Entrée. Ceci est une fonctionnalité de rm et non une conséquence des permissions. L'autorisation de détruire un fichier vient des droits sur le répertoire et vous avez les droits sur ce répertoire. Dans ce cas, rm essaie d'être le plus convivial possible en se figurant que si vous ne vouliez pas changer les permissions (et a fortiori enlever les droits d'écriture), vous ne vouliez pas plus le détruire et ainsi il vous demande de faire le choix.

Qu'est-ce donc cette affaire 0444 dans la question de rm ? Les modes de permission sont en fait un nombre de 12 bits comme celui-ci: 000100100100. 0444 est représentation octal (i-e en base 8) qui est la base conventionnelle pour écrire un mode. Ainsi, vous pouvez écrire chmod 444 monfichier à la place de chmod ugo=r monfichier. Présentation des fichiers et de leurs emplacements

Maintenant que vous êtes capable de naviguer au gré des répertoires, allons faire un tour auprès des fichiers et des répertoires que vous avez créés en installant Debian. Si vous êtes curieux, faîtes un cd dans chacun d'entre eux et tapez ls pour voir leur contenu. Si le résultat ne tient pas dans l'écran, essayez ls | less où | est le caractère tube que l'on trouve généralement au même emplacement que la touche retour arrièreNDT: du moins chez nos voisins anglo-saxons. Les francophones, avec des claviers azerty, le trouverons à la touche 6 en faisant Alt Gr - 6..

/

Comme on l'a déjà mentionné, il s'agit du répertoire racine qui contient tous les autres répertoires. /root

Attention, ne confondez pas / avec /root ! /root est le répertoire personnel de l'utilisateur root (super-utilisateur). C'est un répertoire appelé /root mais ce n'est pas le répertoire racine (NDT: root directory en anglais d'où la confusion chez nos voisins anglophones). /home

C'est l'endroit où l'on place le répertoire personnel de tous les utilisateurs normaux - c'est-à-dire tous sauf le root. Chaque répertoire personnel est appelé du nom de l'utilisateur; par exemple /home/jane. Si vous utilisez un système de taille conséquente, comme pour une école ou une entreprise, votre administrateur système a peut-être créé des répertoires supplémentaires pour contenir les répertoires personnels: /home1 et /home2 par exemple. Dans d'autres systèmes, on peut apercevoir un niveau supplémentaire de sous-répertoire : /home/eleves/nomdutilisateur, /home/equipe/nomdutilisateur, etc...

Votre répertoire personnel est l'endroit où vous placez vos travaux personnels, votre courrier électronique et tous les autres documents, ainsi que vos fichiers de configurations personnelles. C'est votre « chez vous » dans le système...

/bin

Ce répertoire contient les « binaires » et les fichiers exécutables indispensables au fonctionnement du système. Des exemples sont le shell (bash) et les commandes relatives aux fichiers comme cp. /sbin

Ce répertoire contient les « binaires systèmes ». Ce sont les utilitaires que l'utilisateur root ou l'administrateur système auront à utiliser. Vous n'aurez probablement jamais à y avoir accès dans votre travail quotidien. /usr

Ce répertoire contient beaucoup de fichiers susceptibles de vous intéresser. Il a de nombreux sous-répertoires. /usr/bin et /usr/sbin sont très proches de /bin et /sbin à l'exception près que les fichiers y figurant ne sont pas considérés comme « vitaux pour le système ».

Bien que non essentiel au bon fonctionnement de l'ordinateur, /usr contient bien des applications très utiles pour travailler. Ainsi, dans /usr, vous trouverez les répertoires /usr/man, /usr/doc et /usr/info. Ils contiennent respectivement les pages de manuel, la documentation et les pages info. Et n'oubliez pas non plus /usr/games ! /usr/local

Le système Debian n'installe rien dans ce répertoire. Vous devrez l'utiliser pour installer des logiciels que vous compilerez vous même ou tout logiciel non contenu dans un paquet Debian. Vous pouvez aussi l'installer dans votre répertoire personnel si vous êtes le seul à l'utiliser. /etc

Ce répertoire contient l'ensemble des fichiers de configuration du système. Lorsque vous désirez changer quelque chose au système qui impacte tous les utilisateurs de votre ordinateur - comme votre connexion Internet ou bien un changement de carte vidéo - vous aurez probablement à vous loguer en root et à modifier un fichier dans /etc. /tmp

Vous trouverez ici les fichiers temporaires de votre système, la plupart d'entre eux créés par le système. Ce répertoire est généralement nettoyé régulièrement ou à chaque boot du système. Vous pouvez créer des fichiers ici mais gardez à l'esprit qu'ils peuvent être détruits automatiquement. /var

Ce répertoire contient les fichiers « variables » que le système change automatiquement. Par exemple, les courriels entrants sont stockés ici. Le système garde une trace de ses actions ici. Il y a un grand nombre d'autres fichiers engendrés automatiquement ici. Vous pouvez prêter attention au contenu du répertoire de /var/log où vous pourrez trouver des messages d'erreurs qui peuvent vous aider à comprendre ce qui ne va pas dans votre système en cas de défaillance.

Il y a évidemment bien d'autres répertoires dans votre système, bien trop d'ailleurs pour que l'on puisse tous les décrire ici.

Pour changer quelque chose, vous aurez certainement à vous contenter de votre répertoire personnel et de /etc. Sur un système Debian, il y a rarement une occasion de changer quelque chose d'autre car tout est automatiquement installé pour vous.

/etc est utilisé pour configurer le système comme un tout. Vous n'utiliserez votre propre répertoire personnel que pour configurer votre propre environnement et stocker vos propres données. L'idée de base est de vous confiner dans /home/votrenom pour le travail quotidien et ainsi, vous ne pourrez rien casser ailleurs. À l'occasion, vous vous loguerez en tant que root pour paramétrer quelque chose mais seulement si c'est absolument nécessaire. Bien-sûr, si vous utilisez Debian à l'école ou bien en entreprise et que quelqu'un d'autre est l'administrateur système, vous n'aurez pas accès au compte root et vous ne pourrez changer des choses que dans votre compte personnel (ou dans les comptes où vous avez accès). Ceci limite ce que vous pouvez faire avec le système. La compression de fichier avec gzip

Il est souvent bien pratique de réduire la taille d'un fichier - disons, pour le télécharger plus rapidement, ou bien pour gagner de la place sur votre disque dur. Le programme affecté à cette tâche est gzip (GNU zip). Voici comment il fonctionne:

$ cd; cp /etc/profile ./monfichier

Cela vous renvoie dans votre répertoire personnel et copie un fichier arbitrairement choisi (/etc/profile) dans votre répertoire courant en le renommant monfichier.

$ ls -l

Affiche le contenu du répertoire courant. Remarquez bien la taille de monfichier.

$ gzip monfichier

Ceci comprime monfichier.

$ ls -l

Observez le résultat de cette commande: monfichier s'appelle maintenant monfichier.gz. Il est aussi beaucoup plus petit.

$ gunzip monfichier.gz; ls -l

Ceci décomprime le fichier. Remarquez bien que monfichier est retourné dans son état d'origine. Et remarquez aussi que pour décomprimer, il faut utiliser gunzip et non gzip.

$ rm monfichier

Utilisez cette commande pour effacer le fichier puisqu'on ne l'avait créé juste que pour expérimenter. Rechercher des fichiers

Il y a deux utilitaires pour rechercher un fichier: find et locate. find recherche vraiment les fichiers dans leur état présent. locate recherche dans un index engendré automatiquement par le système chaque matin à 6h42 (c'est un cron dont on trouvera une explication un peu plus loin dans le livre). locate ne sera jamais capable de trouver un fichier créé après la génération de l'index. Bien-sûr, puisque locate recherche dans un index, il est beaucoup plus rapide - un peu comme rechercher dans l'index d'un livre plutôt qu'effeuiller chaque page.

Pour comparer les deux façons de faire une recherche, on va supposer que l'on ne se rappelle plus où est le fichier de configuration XF86Config du serveur X.

$ locate XF86Config

Cela devrait être très rapide. Vous allez obtenir une liste de noms de fichier contenant XF86Config, quelque chose comme:

/etc/X11/XF86Config /usr/X11R6/lib/X11/XF86Config /usr/X11R6/lib/X11/XF86Config.eg /usr/X11R6/man/man5/XF86Config.5x.gz

Maintenant, essayez la commande find:

$ find / -name XF86Config

Vous allez entendre une activité intense du disque dur, et cela va prendre un temps assez long. Le résultat devrait ressembler à:

/ect/X11/XF86Config /usr/X11R6:lib/X11/XF86Config find: /var/spool/cron/atjobs: Permission denied find: /var/spool/cron/atspool: Permission denied find: /var/lib/xdm/authdir: Permission denied

Remarquez que find n'a trouvé que les fichiers appelés exactement XF86Config et non pas ceux contenant cette chaîne de caractères. find a aussi essayé de rechercher dans tous les répertoires du système - y compris ceux dont vous n'avez pas les droits d'accès. C'est la raison pour laquelle vous avez les messages Permission denied (Permission non accordée).

Leur syntaxe aussi est différente. Avec find, vous devez choisir à partir de quel répertoire effectuer la recherche alors que locate choisit automatiquement le répertoire racine. Et vous devez spécifiez votre recherche en utilisant l'option -name. Vous pouvez aussi rechercher des fichiers avec des tas d'autres critères, comme les dates de modification ou les propriétaires. Pour utiliser find dans une recherche de fichiers dont le nom contient XF86Config, il vous faut utiliser un motif de recherche:

$ find / -name '*XF86Config*'

Comme la plupart des outils en lignes de commandes, find accepte des motifs comme arguments.

De façon générale, find est un outil beaucoup plus puissant et locate est un outil très rapide pour des recherches journalières. L'intégralité des recherches possible prendrait un temps fou à expliquer. Pour plus de détails, tapez info find qui vous conduira au travers des méandres des subtilités de find et locate. Déterminer le contenu d'un fichier

Debian vous offre un utilitaire capable de deviner le contenu d'un fichier à votre place. Bien que cela ne soit pas à 100% sûr, vous pouvez utiliser cette commande pour explorer votre système.

$ file /bin/cp

Vous devriez avoir quelque chose comme ceci:

/bin/cp: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), stripped

Si l'on retire les parties techniques, on peut dire que c'est un fichier exécutable pour machine Intel.

$ file /etc/init.d/boot

La commande précédente vous donne la réponse suivante:

/etc/init.d/boot: Bourne shell script text

ce qui veut dire que c'est un fichier texte contenant un script écrit en Bourne shell. Utiliser un gestionnaire de fichier

Plutôt que manipuler les fichiers à la main, vous pouvez utilisez un gestionnaire de fichiers. Si vous manipulez de nombreux fichiers à la fois, un gestionnaire de fichiers peut rendre votre travail plus efficace. Il y a des gestionnaires de fichiers orienté texte, comme GNU Midnight Commander (mc) et un grand nombre de gestionnaires de fichiers pour X Window (par exemple gmc qui est la version X Window de GNU Midnigt Commander).

Décrire chacun d'entre est hors du propos de ce livre mais vous pouvez les essayer si la ligne de commande ne vous sied pas. Travailler avec des fichiers textes

Les fichiers textes sont prédominants sur un système GNU-Linux. Ils se trouvent absolument partout, des fichiers de documentations aux fichiers de configuration. Par chance, il est très facile de les manipuler. Lire des fichiers textes

Un fichier texte est simplement un fichier qui ne contient que des caractères interprêtables par un être humain. Il n'y a rien à dire de spécial de plus à son sujet. L'autre type de fichier est le fichier binaire qui est destiné à être interprêté par l'ordinateur.

Vous pouvez visualiser n'importe quel type de fichiers avec le pagineur less si vous l'avez installé (installez-le si vous ne l'avez pas, c'est très simple). Tapez less /etc/profile pour lire un exemple de fichier texte. Remarquez bien que vous pouvez lire des caractères mêmes si leur signification reste obscure. Tapez less /bin/ls pour visualiser un fichier binaire. Comme vous pouvez vous en apercevoir, le programme ls n'est pas lisible par un être humain.

Parfois, vous trouverez des fichiers finissant par .gz . Ces fichiers sont lisibles avec zless. Vous pouvez l'utiliser comme ceci:

zless /usr/doc/ae/changelog.Debian.gz

zless est idéal pour lire la documentation qui est la plupart du temps comprimée au format .gz .

La différence entre les deux sortes de fichiers est purement en rapport avec ce qu'ils contiennent à la différence de certains autres systèmes (comme le DOS ou MacOS) qui les traitent de façon différente.

Les fichiers textes peuvent contenir des scripts shell, de la documentation, des notices de copyrights ou tout autre texte lisible par un être humain.

Incidemment, ceci illustre la différence entre le code source et les binaires exécutables. /bin/ls est un fichier binaire exécutable que vous pouvez télécharger sur votre Debian mais vous pouvez aussi télécharger un fichier texte qui explique à l'ordinateur comment créer /bin/ls. Le fichier texte est alors le code source. Comparer la nature de /bin/ls et /etc/profile illustre combien le code source est important pour quelqu'un qui veut comprendre ou modifier une partie d'un logiciel. Les logiciels libres vous fournissent, à vous ou bien à vos consultants, tout le code source de chaque application. Les éditeurs de textes

Un éditeur de textes est le programme utilisé pour créer ou changer le contenu d'un fichier texte. La plupart des systèmes d'exploitation possède leur éditeur de textes: DOS a edit, Windows a Notepad et MacOS a SimplyText.

Debian fournit une grande quantité d'éditeurs de textes. vi et Emacs en sont les deux grands classiques et ce sont probablement les plus puissants et les plus utilisés. vi et Emacs sont tous les deux complexes et requièrent un certain apprentissage, mais ils peuvent éditer du texte avec une efficacité extraordinaire. Emacs tourne à la fois en mode console et sous X Window; vi tourne normalement seulement en mode console mais la variante vim possède une option -g qui lui permet de tourner sous X.

Il existe des éditeurs de textes plus simples comme nedit, ae, jed et xcoral. nedit et xcoral fournissent une interface basée sur le système X Window très conviviale et facile à utiliser. Il existe aussi de multiples variantes de vi. Vous pouvez aussi trouver une variante de Emacs appelée XEmacs.

Ce livre n'aborde pas l'utilisation d'un éditeur en détail, bien que nous allons rapidement faire une introduction à ae qui est petit, rapide et peut être trouvé sur les disquettes de secours de Debian. Il est donc recommandé de savoir s'en servir au cas où... Lorsque vous désirerez faire de l'édition de texte de façon plus sérieuse, voyez du côté de vim ou de GNU Emacs. Emacs fournit un excellente présentation interactifmais en anglais... de ses capacités; pour le lire, lancer Emacs avec la commande emacs et taper F1 t. Emacs est un très bon choix pour les nouveaux utilisateurs intéressés par un éditeur tout usage ou pour la programmation. Utiliser ae

Vous pouvez lancer ae en lui donnant le nom d'un fichier à éditer, comme cela:

$ ae fichier.txt

Cela va vous faire entrer dans l'écran d'édition. La partie supérieure vous propose une aide sommaire; la partie inférieure montre le nom du fichier que vous éditez. Se déplacer dans cet éditeur est simple: il suffit d'utiliser les flèche de déplacement. Vous pouvez sauver le fichier en tapant C-x C-s et ensuite sortir en tapant C-x C-c. Lorsque vous serez à l'aise, vous pourrez supprimer l'aide en tapant C-x C-h. C'est tout ! Gardez à l'esprit que cet éditeur ne vous permet que de l'édition très basique. Pour programmer, ou bien pour des travaux d'édition plus avancés, vous chercherez un autre éditeur de textes comme il a été dit précédemment. Le système X Window

Le but de ce chapitre est de décrire l'interface graphique utilisateur du système X Window. Cela suppose que vous avez réussi à configurer X comme décrit dans le manuel d'installation (même si le manuel d'installation n'est pas encore écrit; vous aurez besoin d'utiliser le XFree86 HOWTO, le contenu de /usr/doc/X11 et ce chapitre). Une fois X installé, vous pouvez entrer dans l'environnement X soit en tapant startx soit via xdm: cela dépend de vos choix pendant la configuration. Introduction à X

Une GUI (Graphical User Interface, une interface graphique utilisateur) fait partie des systèmes Windows et de MacOS. Il est pratiquement impossible d'écrire une application pour ces systèmes sans utiliser ces GUI et les systèmes ne peuvent être utilisés à l'aide de lignes de commandes. GNU-Linux est plus modulaire car il est composé de petits composants indépendants que l'on peut ou non utiliser suivant ses besoins ou ses préférences. Un des ces composants est le système X Window, que l'on appelle simplement X.

Ce composant est aussi appelé parfois X11. Remarquez bien que l'appellation « X Windows » est incorrecte.

X en lui-même est une manière pour les programmes de discuter avec la souris et la carte vidéo sans savoir quel type de matériel il y a au bout. En fait, c'est une abstraction du matériel graphique. Les applications des utilisateurs parlent au serveur X dans le langage du serveur X, le serveur X le traduisant alors dans le langage de votre matériel. Cela signifie que votre programme n'a qu'à être écrit une fois et qu'ensuite il tournera sur tous les ordinateurs.

Dans le jargon de X, le programme qui parle au matériel est connu sous le vocable serveur X. Les applications qui demandent au serveur X d'afficher une fenêtre sur l'écran sont appelés clients X. Le serveur X inclut un pilote pour la carte vidéo et donc vous devez avoir un serveur X qui reconnaît votre carte vidéo.

Le serveur X ne fournit aucune fonctionnalité que l'on peut attendre d'une GUI, comme redimensionner une fenêtre ou bien les réarranger. Un client X spécial, appelé le gestionnaire de fenêtres, dessine les bords des fenêtres et les barres de titre, redimensionne et réarrange les fenêtres et fournit des facilités pour lancer d'autres clients X via un menu. Des gestionnaires de fenêtres spécifiques peuvent avoir d'autres fonctionnalités.

Les gestionnaires de fenêtres présents dans un système Debian sont fvwm, fvwm2, icewm, afterstep, olvwm, wmaker, twm et enlightenment. Vous devrez probablement tous les essayer avant de ne garder que votre favori.

Ni le serveur X, ni le gestionnaire de fenêtres ne fournissent de gestionnaire de fichiers, c'est-à-dire qu'il n'existe pas de fenêtres contenant les icônes de vos fichiers et répertoires. Vous pouvez lancer un gestionnaire de fichiers en tant qu'application séparée, et il y en a de nombreux de disponibles. Le projet de bureau GNOME se développe autour d'un gestionnaire de fichiers basé sur des icônes et sur d'autres fonctionnalités basées sur des GUI. Allez voir la page GNOMEhttp://www.gnome.org/ pour obtenir les dernières nouvelles.

La dernière fonctionnalité de X est sa transparence au réseau: cela signifie que les clients X ne s'occupent pas de savoir s'ils discutent avec un serveur X tournant sur la même machine qu'eux ou sur un serveur X fonctionnant quelque part sur le réseau. De façon pratique, cela veut dire que vous pouvez faire tourner à distance votre programme sur une autre machine très puissante et sortir l'affichage sur votre machine. Lancer l'environnement X

Il y a deux façons de lancer X. La première est de le lancer manuellement aussitôt que vous en avez besoin. Pour ce faire, Loguez-vous dans une console et tapez startx. Cela lance X et vous met automatiquement sur sa console virtuelle.

La seconde façon (et recommandée) de lancer X est d'utiliser xdm (X display manager, le gestionnaire d'affichage graphique). Basiquement, xdm vous propose un joli prompteur graphique de login sur la console virtuelle de X (probablement la 7) et vous pouvez vous loguer à partir de là.

Par défaut, n'importe quelle méthode lancera aussi une xterm qui est une petite fenêtre contenant un prompteur de shell. À partir de ce prompteur, vous pouvez taper n'importe quelles commandes comme vous le faisiez sur une console texte. Vous pouvez ainsi refaire tous les exemples du livre en utilisant l'xterm. La seule différence entre une xterm et la console texte est qu'il n'est pas nécessaire de se loguer dans l'xterm puisque vous l'êtes déjà sous X.

Il y a d'autre part beaucoup de choses que vous ne pouvez faire que sous X et dont on va parler dans ce chapitre.

Attention: la fenêtre par défaut de l'xterm a une toute petite fonte. Si vous avez un tout petit moniteur ou une définition élevée ou bien encore de mauvais yeux, il se peut que vous vouliez changer cet état de fait. Pour ce faire, effectuez les étapes suivantes:

Déplacez le curseur de la souris au centre de la fenêtre xterm. Appuyez sur la touche Control et le bouton droit de la souris simultanément. Vous devriez voir apparaître un menu de fontes. Pointez sur la fonte que vous voulez et relâchez le bouton de la souris. Les opérations élémentaires sous X

Il y a certaines opérations très communes sous X avec lesquelles il va falloir vous familiariser. Cette partie décrit quelques opérations élémentaires que vous pouvez trouver très pratiques. La souris

La souris sous X fonctionne presque de la même façon que sous les autres systèmes d'exploitation à l'exception du fait qu'elle possède trois boutons. Si votre souris n'en possède que deux, vous pouvez simuler le troisième bouton du milieu en appuyant sur les deux boutons simultanément. Ce n'est pas très pratique; donc investir dans une souris trois boutons bon marché n'est pas une mauvaise idée. Il y en a de disponible chez tous les détaillants informatiques.

Les boutons sont numérotés de gauche à droite, en supposant que vous placiez votre souris dans votre main droite. Le premier bouton est alors sur la gauche, le deuxième au milieu et le troisième sur la droite. Vous pouvez rencontrer soit la numérotation soit les positions dans la documentation.

X possède une fonctionnalité interne simple de copier-coller. Pour sélectionner le texte à copier, vous devez à cliquer puis à déplacer la souris avec le bouton gauche. Cela devrait sélectionner le texte à copier, en supposant bien sûr que l'application en question supporte le copier-coller. Pour restituer le texte, vous n'avez qu'à cliquer avec le bouton du milieu dans une autre application X. Par exemple, vous recevez un courriel contenant une URL. Vous pouvez la sélectionner avec le bouton gauche et ensuite cliquer dans le champ ad hoc de votre butineur avec le bouton du milieu pour la recopier. Les clients X

Les programmes communiquant avec le serveur X sont appelés des clients X. La plupart de ces programmes lui demandent d'afficher une fenêtre à l'écran.

Vous pouvez lancer un client X de la même façon que vous lancez un autre programme Debian. Tapez simplement le nom du programme en ligne de commandes. Essayez de taper xterm dans la fenêtre xterm déjà existante et vous aurez une nouvelle fenêtre xterm qui apparaîtra à l'écran.

Vous devez vous apercevoir que la première xterm est bloquée car le shell attend que la seconde xterm se finisse. Pour éviter ce problème, vous devez lancer le client X en arrière-plan, en utilisant le & après le nom de la commande, comme ceci: xterm &. Si vous oubliez, vous pouvez lancer un processus déjà existant en arrière-plan: commencez par le suspendre avec Ctrl-z et ensuite placez-le en arrière-plan avec la commande bg.

Si vous utilisez régulièrement un programme, votre gestionnaire de fenêtres doit vous fournir un moyen plus pratique de le lancer via un menu graphique. Problèmes

Parfois, lorsque vous lancez un client X à partir d'un menu graphique, vous n'arrivez pas à voir les messages d'erreurs en cas d'échec. Vous pouvez les trouver dans le fichier ~/.xsession-errors. Quitter l'environnement X

Pour sortir de X, il est nécessaire d'utiliser un menu. Malheureusement pour les débutants, cela change avec chaque gestionnaire de fenêtres et pour la plupart d'entre eux, cela peut être fait de nombreuses façons différentes. S'il existe un menu évident, rechercher une entrée du style Exit (quitter) ou bien Close the Window Manager (Fermer le gestionnaire de fenêtres). Si vous n'apercevez aucun menu, essayez de cliquer avec chacun des boutons sur l'arrière-plan de l'écran. Si tout cela a échoué, vous pouvez toujours tuer le serveur X en pressant sur la combinaison Ctrl-Alt-Backspace. Bien entendu, tuer le serveur vous fait perdre toutes les données non sauvegardées des applications encore ouvertes. Personnaliser le lancement de X

Lorsque vous lancez X, Debian exécute quelques scripts shell qui lancent votre gestionnaire de fenêtres et d'autres clients X. Par défaut, il y a un gestionnaire de fenêtres, un xconsole et une xterm.

Pour personnaliser votre lancement de X, le fichier /etc/X11/config doit contenir la ligne allow-user-xsession. Si ce n'est pas le cas, loguez-vous en root et ajoutez la maintenant. Ensuite reloguez en tant que vous-même et continuez cette présentation.

Vous pouvez voir ce que fait Debian au lancement de X dans le fichier /etc/X11/Xsession. Remarquez bien que vous pouvez changer le comportement de /ect/X11/Xsession en modifiant le fichier /ect/X11/config qui spécifie les caractéristiques du système par défaut.

Pour lancer les clients de votre choix au démarrage de X, vous devez créer un fichier script exécutable appelé .xsession dans votre répertoire personnel.

$ touch ~/.xession

pour le créer et

$ chmod u+x ~/.xsession

pour le rendre exécutable.

Une fois que .xession est créé, il est nécessaire de le modifier pour pouvoir faire quelque chose d'utile avec votre éditeur de textes favori. Vous pouvez faire ce que vous voulez dans ce script. Dans tous les cas, lorsque les processus du script s'arrêteront, la session X aussi s'arrêtera.

De façon pratique, cela signifie que vous devez toujours terminer vos scripts avec un appel à exec. Quelque soit le programme que vous appelez avec exec, il remplacera le processus en cours par ce programme et ainsi les commandes suivantes après la ligne exec seront ignorées. Le programme que vous appellerez via exec deviendra le nouveau propriétaire du processus de script, ce qui signifie que X s'arrêtera lorsque le nouveau programme s'arrêtera.

Mettez par exemple à la fin de votre .xsession une ligne avec exec fvwm. Cela signifie que le gestionnaire de fenêtres fvwm sera lancé au démarrage de X. Lorsque vous quitterez votre gestionnaire de fenêtres fvwm, vous quitterez aussi la session X et tous les autres clients seront fermés. Il n'est pas absolument nécessaire de lancer un gestionnaire de fenêtres ici; vous pouvez y écrire exec xterm et dans ce cas, tapez exit dans cette xterm particulière fermera toute la session X.

Si vous désirez lancer d'autres clients avant votre exec, il sera nécessaire de les lancer en arrière-plan. Sinon, .xsession s'arrêtera jusqu'à ce que chaque client existant disparaisse, et ainsi de suite, ligne après ligne. Voyez la partie précédente pour envoyer un processus en arrière-plan (basiquement, vous devez ajouter un & à la fin de la ligne, comme pour xterm&).

Vous pouvez tirer parti de ceci. Si vous désirez lancer des commandes à la fin de votre session X, vous pouvez lancer votre gestionnaire de fenêtres, ou quoi que ce soit d'autre équivalent, dans votre .xsession et attendre qu'il finisse. Pour ce faire, n'utilisez pas exec ni les &. Entrez simplement fvwm. Ensuite, placez les commandes de votre choix après fvwm.

Quelques exemples de fichiers .xession devraient vous aider. Dans les exemples, remplacez fvwm par le gestionnaire de fenêtres de votre choix.

Le plus simple des .xsession est celui qui ne fait que lancer un gestionnaire de fenêtres:

exec fvwm

Cela lance fvwm et la session X s'achève lorsque l'on quitte fvwm. Si vous faîtes la même chose mais sans le exec, rien ne semblera différent à première vue. Mais en arrière-plan, .xsession sera en attente des réactions de fvwm et .xsession ne s'arrêtera qu'à la fin de fvwm. Utilisez exec est plus léger car fvwm remplace alors .xsession plutôt que d'attendre qu'il s'arrête. Vous pouvez le vérifier à l'aide des commandes ps ou top.

Un fichier .xsession plus complet lance quelques clients X avant de lancer le gestionnaire de fenêtres. Par exemple, vous pouvez avoir envie d'avoir des xterm et un xclock après le démarrage de X. Pas de problème: entrez simplement xterm& xterm& xclock& exec fvwm. Deux xterms se lanceront au démarrage en arrière-plan, ainsi qu'un xclock et ensuite le gestionnaire de fenêtres sera lancé. Lorsque vous quittez le gestionnaire de fenêtres, vous quitterez aussi X.

Vous pouvez essayer sans la mise en arrière-plan pour voir ce qui se passe. Entrez la commande: xterm xclock exec fvwm. xterm se lance, et attend que vous en sortiez. Ensuite, xclock se lance. Vous devez quitter xclock pour lancer fvwm. Les commandes sont lancées séquentiellement car le script attend que chacune d'entre elles se finisse avant passer à la suivante.

Vous pouvez utiliser le caractère séquentiel de cette exécution à votre avantage. Peut-être avez-vous envie de garder chaque jour une trace de l'heure de votre arrêt de travail :

xterm& xclock& fvwm date >> ~/heures-de-sortie

Cela va mettre en arrière-plan xterm et xclock et lancer fvwm et attendre qu'il finisse. À la sortie de fvwm, cela exécutera la dernière ligne, qui extrait la date courante et l'envoie dans le fichier ~/heures-de-sortie.

Pour finir, vous pouvez avoir un programme autre qu'un gestionnaire de fenêtres pour déterminer la sortie du serveur X:

xclock& fvwm& exec xterm

Ce script va envoyer xclocket fvwm en arrière-plan et se remplacer par xterm. Lorsque vous quittez cette xterm, votre session X s'arrête.

La meilleure façon d'apprendre comment fonctionne .xession est encore de l'essayer. N'oubliez pas de le rendre rendre exécutable: l'oublier est une erreur très classique. Les systèmes de fichiers

Un système Debian utilise un système de fichiers pour stocker et gérer vos données. Ce chapitre est une introduction au système de fichiers, décrivant comment ajouter et retirer des systèmes de fichiers et comment sauvegarder votre système. Concepts

C'est probablement une bonne idée de faire un peu de théorie avant de discuter de l'utilisation des disques. En particulier, vous devez comprendre le concept de système de fichiers. Cela peut être un peu déroutant à cause des significations diverses d'un système de fichiers.

Le système de fichiers concerne l'arborescence entière des répertoires qui débute par le répertoire racine « / » comme décrit dans les chapitres précédents.

Un système de fichiers signifie généralement n'importe quelle organisation de fichiers et répertoires sur un périphérique physique particulier. « Organisation » signifie la structure hiérarchique des répertoires et toute les informations sur les fichiers que l'on veut garder: leur taille, leurs permissions, etc... Ainsi, vous pourriez avoir un système de fichiers sur votre disque dur et un autre sur chacune de vos disquettes.

On utilise aussi le terme « système de fichiers » pour désigner le type particulier de système de fichiers. Par exemple, MS-DOS et Windows 3.1 organisent les fichiers d'une certaine façon: les noms de fichiers ne peuvent dépasser huit caractères par exemple et il n'existe aucune information de permission sur les fichiers. Linux appelle ça le système de fichier msdos. Linux a aussi son propre système de fichiers appelé ext2 (version 2 du système de fichiers ext). Vous utiliserez la plupart du temps le système de fichiers ext2 à moins d'accéder à des fichiers issus d'autres systèmes d'exploitation, ou bien d'avoir des besoins particuliers.

Tout périphérique physique que vous désirez utiliser pour garder des fichiers doit avoir au moins un système de fichiers. Cela signifie un système de fichiers au second sens du terme, c'est-à-dire une hiérarchie de fichiers et de répertoires avec l'information qui va avec. On parle là du troisième sens. Si vous avez plus d'un système de fichiers sur un périphérique unique, chaque système de fichiers peut avoir un type différent. Par exemple, vous pouvez avoir en même temps une partition DOS et une partition Linux sur votre disque dur. mount et /etc/fstab

Cette partie décrit comment monter une disquette ou un lecteur ZIP, parle du répertoire /dev et discute comment l'arbre des répertoires peut se distribuer sur de nombreux périphériques physiques ou des partitions. Monter un système de fichiers

Dans un système GNU-Linux, il n'y a pas forcément de correspondance entre les répertoires et les périphériques physiques comme cela existe sous Windows pour lequel chaque périphérique a son propre arbre de répertoires commençant par une lettre (comme C:\).

Au lieu de ça, chaque périphérique physique, un disque dur ou bien une disquette, peut contenir un ou plusieurs systèmes de fichiers. Pour rendre un système de fichiers accessible, on lui donne un répertoire particulier dans l'autre système de fichiers. Pour éviter des problèmes de circularité le système de fichiers racine (qui contient le répertoire racine « / ») n'est contenu dans aucun autre système de fichiers. Vous y avez accès automatiquement après avoir lancé Debian.

Un répertoire dans un système de fichiers qui contient un autre système de fichiers est appelé point de montage. Un point de montage est un répertoire dans un premier système de fichier (sur un périphérique, comme votre disque dur par exemple), qui « contient » un second système de fichiers, lequel peut être placé ailleurs, sur un lecteur de disquette par exemple. Pour accéder à un système de fichiers, vous devez le monter sur un point de montage.

Ainsi, par exemple, vous pouvez monter un cédérom au point de montage /cdrom. Cela signifie que si vous allez jeter un coup d'oeil dans le répertoire cdrom, vous y verrez le contenu du cédérom. Le répertoire /cdrom lui-même est en fait sur votre disque dur. Pour des tas de raisons pratiques, le contenu du cédérom devient une partie du système de fichiers racine et lorsque vous tapez des commandes ou bien que vous utilisez des programmes, l'emplacement réel des fichiers n'importe pas. Vous auriez pu avoir créé un répertoire appelé /cdrom et mis quelques fichiers à l'intérieur et tout ce serait passé de la même façon. Lorsque vous avez monté un système de fichiers, il n'est plus nécessaire de prêter la moindre attention à son emplacement physique.

Toutefois, avant de monter un système de fichiers ou d'en créer un nouveau sur un disque qui n'en contient pas, il est nécessaire de se référer aux périphériques eux-mêmes. Chaque périphérique a son nom et ces noms se trouvent dans le répertoire /dev. Si vous tapez ls /dev maintenant, vous apercevrez une longue liste de l'ensemble des périphériques possibles (dont la liste est fournie chapitre 4). Une liste plus détaillée peut être trouvée sur votre système dans le fichier /usr/src/linux/Documentation/devices.txt.

Vouloir monter un système de fichiers, c'est dire à Linux d'associer un système de fichiers sur tel périphérique avec tel point de montage particulier. Dans la procédure, il faudra aussi indiquer quel type de système de fichiers on veut. Exemple: monter un cédérom

Comme exemple élémentaire, nous allons monter un cédérom comme celui que vous avez utilisé pour installer Debian. Vous avez besoin d'être root pour faire cela donc faîtes attention: chaque fois que vous êtes root, vous avez le pouvoir de manipuler tout le système et pas simplement vos seuls fichiers. Ces commandes supposent d'autre part que vous avez un cédérom dans le lecteur: vous devez donc le mettre maintenant. Ensuite, commencez avec la commande suivante:

su

Si vous ne l'avez pas déjà fait, vous devez soit vous loguer en tant que root soit obtenir les privilèges du super-utilisateur via la commande su. Si vous utilisez su, ajoutez le mot de passe de root quand on vous le demande.

ls /cdrom

Utilisez cette commande pour voir ce que contient le répertoire /cdrom avant de commencer. Si vous n'avez pas de répertoire /cdrom, il vous faudra le créer en utilisant mkdir /cdrom.

mount

Taper simplement mount sans argument donne la liste des systèmes de fichiers actuellement montés.

mount -t iso9660 CD-device /cdrom

Avec cette commande, vous devez mettre le nom de votre cédérom à la place de CD-device. Si vous n'êtes pas sûr, mettez /dev/cdrom car la procédure d'installation devrait avoir créé ce lien symbolique sur le système. Si cela échoue, essayez les différents périphériques IDE: /dev/hdc, etc... Vous devez voir un message du typemount: le périphérique bloc /dev/hdc est protégé en écriture, montage en lecture seule: mount: block device /dev/hdc is write protected, mounting read-only

L'option -t spécifie le type de système de fichiers, dans ce cas iso9660. L'argument suivant est le nom du périphérique à monter et le dernier argument est le point de montage. Il y a de nombreux autres arguments possibles pour mount; allez voir la page de manuel pour plus de détails.

Une fois le cédérom monté, vous remarquerez que le plateau du cédérom ne s'ouvre pas:: vous devez le démonter avant de pouvoir le démonter.

ls /cdrom

confirme maintenant que /cdrom contient bien ce qu'il y a dans votre cédérom.

mount

Affiche à nouveau la liste des systèmes de fichiers ; remarquez que votre lecteur est maintenant monté.

umount /cdrom

Ceci démonte le cédérom. Il est maintenant à nouveau possible de sortir le cédérom de son lecteur. Attention, la commande est umount sans n même s'il s'agit de démonterunmount en anglais, d'où la remarque le système de fichiers.

exit

N'oubliez pas de vous déloguer du compte root. Déloguez-vous immédiatement, juste pour être sûr. /etc/fstab: automatiser la procédure de montage.

Le fichier /etc/fstab (qui veut dire file system table, table des systèmes de fichiers) contient les descriptions des fichiers que vous montez souvent. Ces systèmes de fichiers peuvent être montés avec des commandes réduites, comme mount /cdrom. Vous pouvez aussi faire qu'ils soient montés automatiquement au démarrage.

Jetons un coup d'oeil à ce fichier en tapant more /etc/fstab. Il devrait y avoir deux ou plusieurs entrées configurées automatiquement lors de la procédure d'installation. Cela devrait probablement ressembler à quelque chose comme cela:

# /etc/fstab: static file system information # # < file system > < mount point > < type > < options > # < dump > < pass > /dev/hda1 / ext2 defaults 0 1 /dev/hda3 none swap sw 0 0 proc /proc proc defaults 0 0 /dev/hda5 /tmp ext2 defaults 0 2 /dev/hda6 /home ext2 defaults 0 2 /dev/hda7 /usr ext2 defaults 0 2 /dev/hdc /cdrom iso9660 ro, noauto 0 0 /dev/fd0 /floppy auto noauto,sync 0 0

La première colonne affiche les périphériques présents sur le système. La seconde colonne est le point de montage, la colonne suivante étant le type de système de fichiers. Remarquez que la partition de swap (/dev/hda3 dans l'exemple) n'a pas de point de montage et donc il y a un none dans la colonne correspondante.

Les trois dernières colonnes méritent une explication plus approfondie.

La cinquième colonne est utilisée par l'utilitaire dump pour décider quand sauvegarder le système de fichiers. Dans la plupart des cas, vous pouvez mettre 0 ici.

La sixième colonne est utilisée par fsck pour décider dans quel ordre vérifier les systèmes de fichiers au démarrage. Le système de fichiers racine ou principal doit avoir le 1 dans son champ, les systèmes de fichiers n'ayant besoin d'aucune vérification (comme la partition de swap) doivent avoir un 0 et tous les autres doivent avoir un 2. Il est vrai que la partition de swap ne possède pas vraiment un système de fichiers, au sens où elle ne contient pas des fichiers et des répertoires mais elle est utilisée par le noyau Linux comme mémoire secondaire. Quoiqu'il en soit, pour des raisons historiques, la partition de swap est toujours contenu dans le fichier incluant les systèmes de fichiers.

La quatrième colonne contient une ou plusieurs options à utiliser lors du montage du système de fichiers. Vous pouvez vérifier la page de manuel de mount pour un résumé. Allez voir aussi le chapitre 7.1. Supports extractibles (disquettes, lecteur Zip, etc.)

Ajoutez les lignes suivantes dans votre fichier /etc/fstab:

/dev/sda1 /mnt/zip ext2 noauto,user 0 0 /dev/sda4 /mnt/dos msdos no,user 0 0

À partir de maintenant, vous êtes capable de monter une cartouche Zip formatée en DOS avec la commande mount /mnt/dos et vous pouvez monter une cartouche Zip formatée pour Linux avec la commande mount /mnt/zip.

Si vous avez des disques durs SCSI sur votre système, vous devez changer sda en sdb ou sdc dans l'exemple ci-dessus. Les outils de sauvegarde

Les sauvegardes sont quelque chose de fondamental dans tous les systèmes d'exploitation. Debian GNU-Linux fournit différents utilitaires que vous pourrez utiliser à votre convenance. De plus, bien que la plupart de ces utilitaires aient été créés originellement pour des sauvegardes sur bandes, vous pourrez les utiliser pour plein d'autres choses. Par exemple, tar est utilisé pour distribuer des programmes sur Internet. Voici une liste des utilitaires que vous pourrez trouver sur le système:

Taper est un programme basé sur des menus, très convivial et qui peut sauvegarder sur de nombreux supports. Sa limitation est qu'il n'est pas capable de faire des sauvegardes supérieures à 4 Go.

dump a été créé spécialement pour les bandes: sa force principale réside dans son interface pour la restauration de fichiers, les sauvegardes de systèmes de fichiers de bas niveau et la sauvegarde incrémentale. Sa limitation réside dans le fait qu'il n'est pas capable de sauvegarder via NFS ou d'autres systèmes de fichiers différents de ext2 et quelques petits défauts de conception.

GNU tar (raccourci de Tape ARchiver, archiveur d'enregistrements) est une implémentation de ce qui est probablement la façon la plus utilisée de sauvegarder quelque chose sous Linux aujourd'hui. Cela fournit un bon outil multi-usage et peut s'accomoder de l'ensemble des supports utilisés. De plus, de nombreux systèmes sont capables de lire un fichier tar ce qui le rend très portable. Les défauts de tar sont qu'il contient un pauvre outil de sauvegarde incrémentale en comparaison de dump et aucun écran de sélection de restauration automatique. tar

Parce que tar est vraiment très utilisé, et pas seulement pour des tâches de sauvegardes, nous allons en parler un peu ici. Pour plus de détails, lisez la page de manuel de tar, les instructions pour lire une page de manuel sont dans la partie 7.1.

tar est un archiveur. Cela veut dire que tar est capable de rassembler plusieurs fichiers et les combiner en un seul grand fichier pour les écrire sur un périphérique de sauvegarde comme une bande. Une fois que vous avez ce grand fichier, vous voulez souvent le comprimer: l'option -z est alors très bien. Ainsi, tar est une façon pratique de distribuer des programmes et des données sur Internet et vous vous rendrez compte qu'il est beaucoup utilisé à cette fin.

Voici une ligne de commande tar simple:

tar -zcvf monfichier.tar.gz /usr/local/bin

Regardons un peu comment se décompose la commande tar: tar

Nom de la commande -

Options de la commande tar z

demande à tar d'utiliser gzip pour comprimer automatiquement . Si vous utilisez cette option, il est bon d'ajouter l'extension .gz à votre fichier tar. c

demande à tar de créer une nouvelle archive v

active le mode verbeux: tar vous explique ce qu'il fait pendant qu'il crée l'archive. f

ceci indique que la chaîne suivante de la ligne de commande est le nom du fichier à créer ou le périphérique à utiliser. Si j'utilisais /dev/st0 ici, par exemple, cela enverrait l'écriture de la sauvegarde sur le lecteur de bandes. monfichier.tar.gz

C'est le nom du fichier à créer. /usr/local/bin

C'est le nom du fichier ou du répertoire à placer dans l'archive. Il est aussi possible de spécifier différents emplacements ici.

Vous trouverez de nombreux fichiers tar.gz (ou plus simplement .tgz) sur Internet. Vous pouvez les désarchiver avec la commande suivante:

tar -zxvf nomdufichier.tar.gz Réseau

Un des très grands avantages de GNU-Linux sur les autres systèmes réside dans son support réseau. Peu de systèmes peuvent rivaliser avec les fonctionnalités présentes au sein d'un système GNU-Linux. Dans ce chapitre, nous allons vous expliquer comment configurer vos périphériques réseau. PPP

Cette partie est une aide pour une installation rapide de PPP sur Debian. Si vous désirez aller plus loin, tournez-vous vers l'excellent PPP-HOWTO du Projet de Documentation Linux. Si vous êtes curieux ou si vous avez des besoins particuliers,le HOWTO examine ces questions en détail. Introduction

Si vous vous connectez à Internet via une ligne de téléphone, vous voudrez certainement utiliser PPP (Point-to-Point Protocol, protocole de liaison point-à-point). C'est la méthode standard de connexion auprès des FAI (Fournisseurs d'Accès à Internet). En plus d'utiliser PPP pour vous connecter chez votre FAI, vous pourrez autoriser les connexions de l'extérieur - ce qui vous permettra de vous connecter sur une machine à distance. Préparation

Configurer une liaison PPP sur un système Debian GNU-Linux est élémentaire une fois que vous possédez toutes les informations dont vous allez avoir besoin. Debian rend les choses très faciles avec ses outils simples de configuration.

Avant de vous lancer, assurez-vous de bien avoir toutes les informations de votre FAI. Cela peut inclure: Nom d'utilisateur ou login Mot de passe Votre adresse IP (Internet Protocol) fixe si nécessaire (cela doit ressembler à quelque chose comme 209.81.8.242). Cette information n'est pas nécessaire pour la plupart des FAI. Le masque réseau (cela doit ressembler à quelque chose comme 255.255.255.248). Cette information n'est pas nécessaire pour la plupart des FAI. Les adresses IP des serveurs DNS de votre FAI Toute procédure de login particulière requis chez votre FAI

Ensuite, il va falloir examiner votre configuration matérielle: la façon dont votre modem fonctionner avec GNU-Linux et sur quel port série il est connecté.

Voici une règle simple pour déterminer si votre modem va fonctionner: si c'est un « winmodem » ou bien un modem intégré, cela ne fonctionnera pas. Ces modems sont bon marché car ils ont très peu de fonctionnalités et ils demandent à l'ordinateur de compenser leur incapacité. Malheureusement, cela signifie qu'ils sont complexes à programmer et les fabricants ne donnent généralement pas leurs spécifications aux développeurs.

Si vous avez un modem avec son propre circuit embarqué ou bien un modem extérieur, vous ne devriez pas avoir de problème.

Sur les systèmes GNU-Linux, les ports séries sont référencés comme /dev/ttyS0, /dev/ttys1 et ainsi de suite. Votre modem est certainement connecté soit au port 0 soit au port 1, l'équivalent du COM1 et COM2 sous Windows. Si vous ne savez pas où est connecté votre modem, lancez le programme wvdialconf pour essayer de le détecter (voir plus bas). Sinon, vous pouvez toujours essayer les deux et regardez lequel fonctionne...

Si vous désirez discuter avec votre modem ou vous connecter à votre FAI sans utiliser PPP, vous pouvez utiliser le programme minicom. Il se peut que vous ayez besoin d'installer le paquet minicom pour disposer du programme. La voie facile: wvdial

La façon la plus facile d'obtenir une liaison PPP fonctionnelle est d'utiliser le programme wvdial. Il fait des propositions raisonnables et tente de paramétrer les choses pour vous. Si cela fonctionne, vous êtes verni. Sinon, vous aurez à faire les choses à la main.

Assurez-vous d'avoir bien installé les paquets suivants:

ppp ppp-pam wvdial

Lorsque vous installez wvdial, on vous donne l'occasion de le configurer. Sinon, pour configurer wvdial, procédez comme suit en vous loguant en root à l'aide de la commande su:

touch /etc/wvdial.conf

touch va créer le fichier suivant s'il n'existe pas: le programme de configuration requiert un fichier déjà existant.

wvdialconf /etc/wvdial.conf

Cela signifie que vous êtes en train de créer le fichier de configuration /etc/wvdial.conf.

Répondez aux questions qui apparaissent à l'écran. wvdialconf va aussi rechercher votre modem et vous indiquer sur quel port série il se trouve. Inscrivez le résultat quelque part pour vous en souvenir un peu plus tard. Ethernet

Une autre façon très populaire de se connecter à Internet est de passer via un LAN (Local Area Network, réseau local) qui utilise Ethernet.Cela vous donne un réseau local à haut débit en plus de la connexion à Internet. Heureusement, vous avez déjà dû configurer le réseau pendant l'installation et dès lors, il n'y rien d'autre à faire. Si jamais vous désirez modifier votre configuration, voici les fichiers intéressants:

/etc/init.d/network

Pour votre adresse IP, le masque réseau et la route par défaut. /etc/hostname

Pour enregistrer votre nom d'hôte. /etc/hosts

Pour enregistrer aussi votre nom d'hôte et votre adresse IP. Installer et désinstaller des logiciels

Ce chapitre décrit les façons d'installer et de désinstaller des paquets de logiciels. Il y a plusieurs façons de le faire. Ici, nous n'allons parler de l'installation et de la désinstallation de logiciels pré-empaquetés comme les paquets Debian. L'installation à partir de sources restera à votre charge. À quoi sert un utilitaire de maintenance de paquet

Une application ou un programme utilitaire rassemblent généralement plusieurs fichiers. Cela peut inclure des bibliothèques, des fichiers de données comme des scénarios de jeux ou des icônes, des fichiers de configurations, des pages de manuels et la documentation. Lorsque vous installez un programme, vous voulez être sûr d'avoir tous les fichiers dont vous avez besoin à la bonne place.

Vous devez aussi être capable de désinstaller un programme. Lorsque vous désinstallez, vous devez être sûr que tous les fichiers associés sont détruits. Et de plus, si les fichiers sont partagés par d'autres programmes dans le système, vous voulez être sûr de les conserver.

Enfin, vous devez être capable de faire la mise à jour d'un programme. Lorsque vous effectuez une mise à jour, vous désirez détruire les fichiers obsolètes et ajouter les nouveaux, sans ne rien casser au système existant.

Le système de gestion des paquets de Debian offre une solution à ces problèmes. Il vous autorise à installer, désinstaller et mettre à jours les paquets de logiciels, qui ne sont qu'un petit ensemble contenant les fichiers du programme et les informations qui aident l'ordinateur à gérer le paquet correctement. Les paquets Debian ont un nom se terminant par .deb et ils sont disponibles sur le site FTP ou bien sur votre cédérom officiel de Debian. dpkg

La manière la plus simple d'installer un simple paquet que vous venez de télécharger est d'utiliser la commande dpkg -i (qui est un raccourci pour dpkg --install). Admettons que vous ayez téléchargé le paquet icewm_0.8.12-1.deb et que vous désirez l'installer. Loguez-vous d'abord en tant que root et tapez ensuite dpkg -i icewm_0.8.12-1.deb et icewm, version 0.8.12, sera installé. Si vous avez déjà une ancienne version, dpkg se chargera de la mise à jour plutôt que d'installer deux versions en même temps.

Si vous désirez désinstaller un paquet, vous avez deux options. La première est la plus intuitive: dpkg -r icewm. Cela retirera le paquet icewm (-r est un raccourci pour --remove (désinstaller)). Remarquez bien qu'il est juste nécessaire de donner le nom icewm pour la désinstallation tandis que l'installation requiert l'extension .deb.

--remove va laisser les fichiers de configuration du paquet dans votre système. Un fichier de configuration est défini comme tout fichier que vous avez pu éditer pour personnaliser le programme du système ou vos préférences. Ainsi, si vous décidez de réinstaller un peu plus tard le programme, vous n'aurez pas à le re-personnaliser.

Mais si vous désirez réellement nettoyer les fichiers de configuration, dpkg propose une option --purge. dpkg --purge icewm nettoiera tous les derniers fichiers associés au paquet icewm. dselect

dselect est une très bonne interface à dpkg. dselect offre une interface à base de menus à dpkg et est capable de sélectionner automatiquement tous les fichiers appropriés à partir d'un cédérom ou bien d'un site FTP. Pour plus de détails sur dselect, reportez-vous à la partie 4.20. Compiler un logiciel

De nombreux programmes sont fournis sous forme de sources, la plupart du temps au format tar.gz. Premièrement, vous devez détarer le fichier tar.gz; pour plus de détails sur comment faire cette opération, reportez-vous à la partie 12.3.1. Avant de compiler un paquet, vous aurez besoin d'installer gcc, libc6-dev et autres assimilés « -dev ». Vous les trouverez pour la plupart d'entre eux dans la section devel de dselect.

Lorsque vous aurez installé les paquets appropriés, allez via cd dans le répertoire que tar a créé pour vous. À partir de ce moment-là, vous aurez à lire les instructions d'installation. La plupart des programmes fournissent un fichier INSTALL ou README qui vous indique comment procéder. Pour en savoir plus...

À présent, vous possédez de bonnes bases pour construire votre système GNU-Linux. Dans ce chapitre, nous allons aborder quelques notions très utiles des fonctionnalités avancées de GNU-Linux. Les expressions rationnelles

Une expression rationnelle est une description d'un ensemble de caractères. On utilise cette description pour éplucher un fichier à la recherche d'un texte correspondant à cette expression rationnelle. Les expressions rationnelles sont analogues aux motifs de recherche du shell (voir partie 8.6) mais elles sont plus compliquées et beaucoup plus puissantes. elles sont à la fois plus compliquées et plus puissantes.

Une expression rationnelle est formée de texte et de méta-caractères. Un méta-caractère est simplement un caractère avec une signification particulière. Les méta-caractères comprennent les signes suivants: . * [] - \ ^ $

Si une expression rationnelle ne comprend que du texte (pas de méta-caractère), cela correspond exactement au texte. Par exemple, l'expression rationnelle mon expression rationnelle correspond exactement au texte mon expression rationnelle et à rien d'autre. Les expressions rationnelles prennent habituellement en compte la casse.

Vous pouvez utiliser la commande egrep pour extraire les lignes d'un fichier qui contiennent une expression rationnelle. Sa syntaxe est la suivante:

egrep 'regexp' nomdefichier1 ...

Les guillemets simples ne sont pas obligatoires mais cela ne mange pas de pain de les ajouter.

Par exemple, pour trouver toutes les lignes contenant le mot GNU dans la GPL, vous tapez:

egrep 'GNU' /usr/doc/copyright/GPL

egrep va vous égrener les lignes correspondantes sur la sortie standard. Si vous voulez toutes les lignes contenant freedom (liberté) suivi d'un ensemble quelconque de caractères et suivi du mot GNU, vous pouvez taper:

egrep 'freedom.*GNU' /usr/doc/copyright/GPL

Le . signifie « n'importe quel caractère » et le * signifie « zéro ou plus de la chose précédente » soit dans ce cas « zéro ou plus de n'importe quel caractère ». Ainsi, .* correspond bien à n'importe quel texte. egrep effectue un traitement ligne par ligne donc freedomet GNU doivent se trouver sur la même ligne.

Voici un récapitulatif des méta-caractères dans expressions rationnelles:

.

Correspond à un seul caractère, à l'exception du caractère newline (retour chariot) *

Correspond à zéro ou plus d'occurences de ce qui précède. Ainsi, l'expression a* correspond à zéro ou plus de a minuscule et .* correspond à zéro ou plus de caractères quelconques. [caractères]

Les crochets doivent contenir un ou plusieurs caractères. L'expression complète correspond exactement à l'ensemble des caractères. Ainsi, [abc] correspond à un a, un b et un c. Cela ne correspond pas à une chaîne vide et cela ne correspond pas non plus à un caractère autre que ces trois-là. ^

Impose la correspondance en début de ligne. L'expression ^The ne correspond à The que si elle apparaît en début de ligne: il ne peut y avoir d'espace, ou de texte, avant le The. Si vous désirez autoriser des espaces, vous pouvez autoriser 0 ou plus d'espaces avec ^ *The. $

Impose la correspondance en fin de ligne. fin$ requiert que le texte fin soit placé en fin de ligne sans espace ni texte à la fin. [^caractères]

C'est la négation de la liste des caractères entre crochets. [^abc] correspond à tout caractère simple, à l'exception de a, b ou c. [caractères-caractères]

Vous pouvez inclure un intervalle dans une liste de caractères entre crochets. Pour faire la correspondance avec toutes les lettres minuscules, utilisez [a-z]. Vous pouvez multiplier les intervalles: ainsi, pour avoir les trois premières lettres de l'alphabet et les trois dernières, essayez [a-cx-z]. Pour avoir toutes les lettres dans toutes les casses, essayez [a-zA-Z]. Vous pouvez mélanger les intervalles avec des caractères simples ou bien le méta-caractère ^: [^a-zBZ] signifie « tout sauf une lettre minuscule, un B ou ou un Z ». ()

Vous pouvez utiliser les parenthèses pour regrouper les expressions rationnelles, comme dans des expressions mathématiques. ||

signifie « ou ». Vous pouvez vous en servir pour fournir une série d'expressions alternatives. On met généralement ces expressions entre parenthèses comme ceci: c(ad|ab|at) correspond à cad, cab ou cat. Sans les parenthèses, cela aurait correspondu à cad ou bien ab ou bien at. \

Protège tout caractère spécial. Si vous désirez trouver un *, vous devez taper \*. Le \ signifie d'ignorer le sens usuel de *.

Voici une série d'exemples concrets pour vous aider.

c.pe correspond à cope, cape, caper c\.pe correspond à c.pe, c.per sto*p correspond à stp, stop, stoop car.*n correspond à carton, cartoon, carmen xyz.* correspond à xyz et tout ce qui s'ensuit. Certains outils, comme egrep, ne font la correspondance que jusqu'à la fin de la ligne. ^The correspond à The en début de ligne atime$ correspond à atime en fin de ligne ^Only correspond à Only en début de ligne - pas d'espace, de caractère, rien. Seul Only est accepté. b[aou]rn correspond à barn, born, burn ver[D-F] correspond à verD, verE, verF ver[^0-9] correspond à Ver suivi de tout sauf d'un chiffre. the[ir][re] correspond à thier, therr, there, theie [A-Za-z][A-Za-z]* correspond à tous les mots composés seulement de lettres et d'au moins une lettre. Cela ne peut pas contenir des chiffres ou des espaces. Notions avancées sur les fichiers

Maintenant que vous avez compris les bases sur les fichiers, il est temps d'apprendre plus de choses à leur sujet. La véritable nature des fichiers: les liens physiques et les i-noeuds

Chaque fichier de votre système est représenté par un i-noeud (en anglais, inode pour Information Node, prononcez « aïe-node », noeud d'information). un i-noeud contient toutes les informations du fichier. Cependant, l'i-noeud n'est pas directement visible. De plus, chaque i-noeud est lié au système de fichiers par un ou plusieurs liens physiques. Les liens physiques contiennent le nom du fichier et le numéro d'i-noeud. L'i-noeud contient le fichier en lui-même, c'est-à-dire, l'emplacement où l'information est stockée sur le disque, les permissions d'accès, le type de fichier et ainsi de suite. Le système peut trouver n'importe quelle i-noeud s'il a son numéro.

Un simple fichier peut avoir plus d'un lien physique. Cela signifie que tous ces fichiers multiples correspondent au même fichier (c'est-à-dire qu'ils sont associés au même numéro d'i-noeud). Cependant, vous ne pouvez faire de lien physique entre des systèmes de fichiers: tous les liens physiques à un fichier particulier (i-noeud) doivent être dans le même système de fichiers. C'est parce que chaque système de fichiers possède sa propre table d'i-noeuds et que l'on ne peut dupliquer des numéros d'i-noeud sur différents systèmes de fichiers.

Parce que tous les liens physiques à une certaine i-noeud se réfèrent au même fichier, vous pouvez modifier le fichier en l'appelant par un nom et voir ensuite les modifications en l'appelant par un des autres noms. Essayez ceci:

cd; echo "Bonjour" > premierlien

Vous allez dans votre répertoire personnel et vous créez un premier fichier appelé premierlien contenant le mot « Bonjour ». Ce que vous venez de faire est juste de rediriger la sortie de echo (echo renvoie juste ce que vous lui donnez) en la plaçant dans premierlien. Allez voir le chapitre sur le shell pour de plus amples explications.

cat premierlien

Pour vérifier le contenu de premierlien.

ln premierlien secondlien

Crée un lien physique: secondlien pointe maintenant sur le même i-noeud que premierlien.

cat secondlien

Pour confirmer que secondlien est bien identique à premierlien.

ls -l

Remarquez bien que le nombre de liens physiques affiché pour premierlien et secondlien est 2.

echo "change" >> secondlien C'est une nouvelle redirection du shell (ne vous souciez pas des détails). Vous avez ajouté le mot « change » à secondlien. Confirmez-le avec cat secondlien.

cat premierlien

premierlien a aussi le mot « change » ! C'est parce que premierlien et secondlien se réfèrent au même fichier. Peu importe comment vous l'appelez lorsque vous le modifiez.

chmod a+rwx premierlien

Cela modifie les permissions de premierlien. Entrez la commande ls -l pour vérifier que les permissions de secondlien ont aussi été modifiées. Cela signifie que les informations de permission résident dans l'i-noeud, et non dans le lien.

rm premierlien

Cela détruit le lien. C'est une astuce de rm. Cela détruit en réalité le lien et non le fichier. Maintenant, tapez ls -l et remarquez que secondlien est toujours là. Notez bien aussi que le nombre de liens est passé de 2 à 1.

rm secondlien

Cela détruit le second lien. Quand il ne reste plus de lien rattaché à un fichier, Linux détruit le fichier lui-même c'est-à-dire son i-noeud.

Tous les fichiers fonctionnent ainsi, et même les fichiers spéciaux comme les périphériques (comme /dev/hda).

Un répertoire n'est qu'une liste de nom de fichiers et de numéros d'i-noeuds, c'est-à-dire une liste de liens physiques. Lorsque vous créez un lien physique, vous ajouter seulement une association numéro-nom à un répertoire. Lorsque vous détruisez un fichier, vous détruisez juste un lien physique d'un répertoire. Types de fichiers

Nous avons dissimulé jusqu'à présent le fait que le noyau Linux considère presque tout comme un fichier. Cela inclut les répertoires et les périphériques. Ce sont juste des genres de fichiers un peu spéciaux.

Comme vous devez vous le rappelez, le premier caractère dans ls -l renvoie le type du fichier. Pour un fichier ordinaire, cela ne renvoie que - tout simplement. Les autres possibilités sont les suivantes:

d : répertoire l : lien symbolique b : périphérique bloc c : périphérique caractère p : tube nommé s : socket

Liens symboliques

Les liens symboliques (aussi appelés symlink ou liens logiciels) sont l'autre type de lien avec les liens physiques. Un lien symbolique est un fichier spécial qui « pointe vers » un lien physique de n'importe quel système de fichiers monté. Lorsque vous tentez de lire le contenu d'un lien symbolique, cela vous renvoie le contenu du fichier pointé plutôt que le contenu du lien en lui-même. Puisque les répertoires, les périphériques et autres liens symboliques sont des fichiers, vous pouvez pointer un lien symbolique sur chacun de ces objets.

Pour résumé, un lien physique est un nom de fichier et son numéro d'i-noeud. Un fichier est réellement un i-noeud: un emplacement sur un disque, le type du fichier, les modes de permission, etc... Un lien symbolique est un i-noeud qui contient le nom du lien physique. Un lien symbolique appareille deux noms de fichiers ensemble tandis qu'un lien physique appareille un nom de fichier avec un numéro d'i-noeud.

Tous les liens physiques d'un même fichier ont le même état. Cela veut dire qu'il n'y en a pas un de privilégié. Si vous effectuez une opération sur l'un, c'est comme la faire sur n'importe lequel d'entre eux. C'est parce que le lien physique réfère au même i-noeud. Les opérations sur les liens symboliques, pour leurs parts, affectent parfois le propre i-noeud du lien (celui contenant le nom du lien physique) et parfois affectent le lien physique sur lequel ils pointent.

Il y a un certain nombre de différences importantes entre les liens symboliques et les liens physiques.

Les liens symboliques peuvent traverser des systèmes de fichiers. C'est parce qu'ils contiennent les noms complets des fichier, en partant d'un répertoire racine et que les noms complets de fichiers sont uniques. Puisque les liens physiques pointent vers un numéro d'i-noeud et que les numéros d'i-noeuds sont uniques qu'à l'intérieur d'un système de fichiers, ils deviendraient impossible de les qualifier avec certitude si l'on ne connaissait pas le système de fichiers.

Vous pouvez faire des liens symboliques vers des répertoires mais cela n'est pas possible pour les liens physiques. Chaque répertoire a des liens physiques - son référencement dans son répertoire parent, son entrée . et l'entrée .. dans chacun de ses sous-répertoires - mais pour pouvoir ordonner le système de fichiers, aucun autre lien physique n'est autorisé. En conséquence de quoi, le nombre de fichiers d'un répertoire est égal au nombre de liens physiques du répertoire moins deux (vous retirez le nom du répertoire et le lien . ).

Pour comparer un lien physique et un lien symbolique: vous pouvez uniquement faire un lien physique sur un fichier existant car il doit exister un numéro d'i-noeud sur lequel se référer. Par contre, vous pouvez faire un lien symbolique sur n'importe quel fichier, qu'il existe +réellement ou pas.

Détruire un lien symbolique détruit seulement le lien. Cela n'a pas d'impact sur le fichier anciennement pointé. Détruire le seul lien physique d'un fichier conduit à détruire le fichier.

Essayez ceci:

cd; ln -s /tmp/moi MonTmp

Vous vous positionnez dans votre répertoire personnel. ls avec l'option -s fabrique un lien symbolique et dans ce cas, ce lien s'appelle MonTmp et pointe sur le fichier /tmp/moi.

ls -l MonTmp

Vous devriez observer une sortie du genre:

lrxwrxwrxw 1 havoc havoc 7 Dec 6 12:50 MyTmp -> /tmp/me

La date ainsi que l'utilisateur et le groupe devrait être différents pour vous. Notez le type du fichier: l. Cela indique un lien symbolique. Regardez aussi les permissions. Les liens symboliques ont toujours ces permissions. Si vous tentez de changer les permissions d'un fichier symbolique via chmod, vous allez réellement changer les permissions du fichier sur lequel il pointe.

chmod 700 MonTmp

Vous devriez obtenir un No such file or directory (pas trouvé de fichier ou de répertoire portant ce nom) car le fichier /tmp/moi n'existe pas. Remarquez que cela n'a pas empêché la création du lien symbolique.

mkdir /tmp/moi

Cela crée le répertoire /tmp/moi.

chmod 700 MonTmp

devrait maintenant fonctionner sans problème.

touch MonTmp/monfichier

Pour créer un fichier dans MonTmp.

ls /tmp/moi

Le fichier a vraiment été créé dans /tmp/moi.

rm MonTmp

Détruit le lien symbolique. Remarquez que cela ne retire que le lien et non ce vers quoi il pointe. Ensuite, vous devez utiliser rm et non pas rmdir:

rm /tmp/moi/monfichier; rmdir /tmp/moi

Cela nettoie tout ce qu'il reste.

Fichiers périphériques

Les fichiers périphériques se réfèrent à un périphérique physique ou virtuel de votre système, comme votre disque dur, votre carte vidéo, votre écran et votre clavier. Un exemple de périphérique virtuel est la console, représentée par /dev/console.

Il y a deux sortes de périphériques: bloc et caractère. On peut avoir accès aux périphériques caractères caractère par caractère. Rappelez-vous que la plus petite unité de données qui peut être écrite ou bien être lue à partir du périphérique est un caractère (octet).

On peut accéder aux périphériques bloc avec des unités plus grandes appelées blocs, qui contiennent un certain nombre de caractères. Votre disque dur est un périphérique bloc.

Vous pouvez lire ou écrire dans des fichiers périphériques comme vous le feriez avec n'importe quelle autre sorte de fichiers, quoique le fichier puisse contenir alors un étrange baragouin incompréhensible à nous autres humains. Écrire n'importe quoi dans ces fichiers n'est pas une bonne idée. Parfois si. Par exemple, vous pouvez envoyer un fichier PostScript dans le périphérique de l'imprimante /dev/lp0 ou bien envoyer des commandes de modem au fichier périphérique idoine à partir du bon port série.

Il existe un fichier particulier appelé /dev/null. Il détruit tout ce qu'il reçoit. Si vous ne voulez pas quelque chose, envoyez-le dans /dev/null. C'est essentiellement un puits sans fond. Si vous tentez de lire /dev/null/, vous obtiendrez un end-of-file (EOF, caractère de fin de fichier) immédiatement. /dev/zero est similaire, à l'exception du fait que sa lecture vous renverra le caractère \0 (pas le même que le chiffre 0).

Tubes nommés (FIFO)

Un tube nommé est un fichier qui agit comme un tube. Vous entrez quelque chose dans le fichier et cela ressort. Ceci est appelé une FIFO (First-In-First-Out, premier entré, premier sorti) car la première chose que vous entrez est aussi la première chose que l'on sort.

Si vous écrivez dans un tube nommé, le processus d'écriture ne s'arrête pas tant qu'il y a quelque chose à lire dans le tube. Si vous lisez dans un tube nommé, le processus de lecture attend qu'il y ait quelque chose à lire avant de s'arrêter. La taille du tube est toujours zéro. Il ne stocke pas de donnée: il lie simplement deux processus à travers le signe « | » du shell. Dans tous les cas, puisque le tube a un nom, les deux processus n'ont pas à appartenir à la même ligne de commandes ou même à être lancé par le même utilisateur.

Vous pouvez essayer ceci:

cd; mkfifo montube

Activez alors le tube:

echo "bonjour" > montube &

Cela place le processus qui essaie d'écrire « bonjour » dans le tube en arrière-plan. Remarquez bien que le processus ne rend pas la main: il attend que quelqu'un vienne lire dans le tube:

cat montube

À ce moment, le processus echo s'achève car cat a lu le tube et le processus cat a affiché bonjour.

rm montube

Vous pouvez détruire les tubes comme n'importe quel autre fichier.

Les sockets

Les sockets sont similaires aux tubes mais elles ne fonctionnent qu'à travers un réseau. C'est de cette façon que votre ordinateur travaille en réseau. Vous avez peut-être entendu parler de « WinSock », qui sont les sockets de Windows.

Nous n'irons pas plus loin sur ce sujet car vous n'aurez pas l'occasion de vous en servir, à moins de programmer. En tout cas, si vous apercevez un fichier marqué avec un type s sur votre ordinateur, vous saurez de quoi il s'agit. Le système de fichiers proc

Le noyau Linux fournit un système de fichiers particulier qui est monté sous /proc dans les systèmes Debian. C'est ce que l'on appelle un « pseudo-système de fichiers » parce qu'il n'existe pas réellement sur vos périphériques physiques.

Le système de fichiers proc contient des informations sur le système et sur les processus en cours. Certains des « fichiers » de proc sont raisonnablement compréhensibles par un être humain (essayez cat /proc/meminfo et cat /proc/cpuinfo). Les autres fichiers sont un amas incompréhensible de chiffres. Les utilitaires systèmes traduisent les informations contenues dans ces chiffres et vous les présentent de façon plus compréhensible.

Les gens paniquent souvent lorsqu'ils remarquent qu'un fichier en particulier - /proc/kcore - est souvent énorme, C'est, à un cheval près, une copie du contenu de la mémoire de votre ordinateur. Il est utilisé pour déboguer le noyau. Il n'existe nulle part physiquement donc ne vous préoccupez pas de sa taille.

Si vous désirez en savoir plus sur /proc, tapez man 5 proc. Copie à grande échelle

Il est parfois nécessaire de recopier un répertoire dans un autre emplacement. Peut-être avez-vous ajouté un nouveau disque dur et vous désirez faire une copie de /usr/local dessus. Il y a plusieurs façons de procéder:

La première est d'utiliser la commande cp. La commande cp -a demande à cp de préserver le maximum d'informations. Vous pourriez ainsi utiliser la commande suivante:

cp -a /usr/local /destination

Cependant, il existe quelques cas qui ne fonctionnent pascomme les fichiers morcelés et les liens physiques par exemple. Dès-lors, la meilleure façon de procéder lors d'une grande copie est d'enchaîner deux commandes tar consécutives, comme ceci:

tar -cSpf - /usr/local | tar -xvSpf -C /destination

La première commande tar archive le répertoire et l'entube dans le second. La seconde commande déploie l'archive dans l'emplacement spécifié avec l'option -C. Sécurité

Dans la partie 9.1, nous avons parlé des permissions sur les fichiers dans Linux. C'est une façon fondamentale de sécuriser votre système. Si vous faîtes tourner un système multi-utilisateurs ou un serveur, il est primordial d'établir des bonnes permissions. Une bonne règle de base consiste à configurer les fichiers avec les permissions les plus basses autorisant leur bon usage.

Si vous faîtes tourner un serveur en réseau, il y a quelques petites bricoles auxquelles il faut faire attention. Premièrement, vous devez désinstaller ou arrêter les services que vous n'utilisez pas. Un bon point de départ est le fichier /ect/inetd.conf. Vous pouvez probablement désactiver quelques services. Pour la plupart des services réseau, vous pouvez contrôler qui y a accès. Les fichiers /etc/host.allow et /etc/hosts.deny (documentés dans man 5 hosts_access) peuvent contrôler qui a accès à quel service. Vous devez aussi être à jour des rustines (patches) ou des mises-à-jour proposées par Debian. Elles sont disponibles dans votre miroir FTP de Debian.

Les règles suivantes de bon sens doivent aussi s'appliquer:

Ne révélez à personne votre mot de passe. N'envoyez jamais votre mot de passe en clair à travers Internet en utilisant telnet ou ftp. Utilisez des protocoles de cryptage ou évitez de vous loguer à distance. Évitez d'utiliser le compte root le plus possible N'installez pas de logiciels non sûrs et ne les installez par en tant que root Évitez de laisser des accès libre en écriture dans la mesure du possible. /tmp est une exception à cette règle.

Bien que cela soit de peu d'utilité pour quelqu'un qui ne fait pas tourner un serveur, cela vaut la peine de se renseigner sur les questions de sécurité. Le mécanisme de sécurité de Debian vous protège de la plupart des virus. Le développement de logiciels avec Debian

Debian est une plateforme privilégiée pour le développement de logiciels et la programmation. Voici une liste des langages et pseudo-langages supportés: C, C++, Objective-C, Perl, Python, m4, Ada, Pascal, Java, awk, Tcl/Tk, SQL, assembleur, Bourne shell, csh et bien d'autres encore. L'écriture de programmes est hors du propos de ce livre mais voici les programmes de développement parmi les plus populaires que l'on trouve sur Debian:

gcc

Le compilateur C de GNU: un compilateur moderne et optimisé de C. g++

Le compilateur C++ extrait de gcc cpp

Le pré-processeur de C de gcc perl

L'interpréteur Perl. Perl est un super langage multi-usages. gdb

Le débogueur GNU. Il est utilisé pour déboguer de nombreux langages. gprof

Extraction de profile. Ce programme vous aide à optimiser votre programme pour augmenter ses performances. emacs

GNU Emacs est un éditeur et un environnement intégré de travail. as

C'est l'assembleur de GNU. Lire la documentation et obtenir de l'aide Les sources de documentation

Sur un système Debian, vous pouvez trouver la documentation aux emplacements suivants:

Pages de manuel, que l'on peut lire avec la commande man Pages info, que l'on peut lire avec la commande info Les répertoires de /usr/doc/paquetspaquet est le nom du paquet Debianzless est très pratique pour lire les fichiers de /usr/doc. Voir chapitre 10.1 pour plus de détails. Le répertoire /usr/doc/HOWTO contient les HOWTOs du Projet Linux de Documentation, si vous avez installé les paquets les contenant. La plupart des commandes ont une option -h ou --help. Tapez le nom de la commande suivi d'une de ces options pour essayer. Le Projet de Documentation de Debian (http://www.debian.org/~elphick/ddp/) fournit aussi quelques manuels. La page d'assistance de Debian (http://www.debian.org/support/) possède sa FAQ et quelques autres documents. Vous pouvez aussi essayer le site oueb de Linux (http://www/linux.org).

Cette déroutante profusion de sources de documentations existe pour des tas de raisons. Par exemple, info est supposé remplacer le man mais man n'a toujours pas disparu à ce jour. Mais dans tous les cas, il est rassurant de savoir que tant de documentations existent !

Ainsi, où chercher pour obtenir de l'aide ? Voici quelques suggestions:

Utilisez la page info ou l'option --help pour avoir un résumé rapide de la syntaxe et des options de la commande. Utilisez aussi la page de manuel si le programme n'a pas de page info. Utilisez la page info si le programme possède une documentation à ce format. Si cela ne donne rien, allez voir dans /usr/doc/nomdepaquet Utilisez les HOWTOs pour régler une chose particulière ou chercher une information sur un matériel particulier. Par exemple, l'Eternet-HOWTO regorge d'informations sur les cartes Ethernet et le PPP-HOWTO explique en détail comment configurer une liaison ppp. Utilisez les manuels du Projet de Documentation Debian pour les concepts inhérents et spécifiques à Debian. Si tout cela ne donne rien, demandez de l'aide à quelqu'un. Voir la partie 16.4 pour cela.

Comment utiliser les pages de manuel est expliqué à la partie 7.1. C'est très simple: appuyez sur la touche espace pour aller à la page suivante et appuyez sur q pour quitter le manuel. Utiliser info, visualiser les fichiers de /usr/doc et demander de l'aide à quelqu'un font l'objet des parties suivantes du chapitre. Utiliser info

info est le visualiseur de documentation de GNU. Certains programmes fournissent leur documentation au format info et vous pouvez utiliser info pour la lire. Vous pouvez lancer le visualiseur en tapant simplement info ou en lui passant un argument comme ceci:

info emacs

Vous pouvez obtenir aussi des informations sur info lui-même en appelant le tutoriel interne:

info info

Maintenant, vous pouvez vous déplacer à l'aide des touches suivantes:

flèches

Pour déplacer le curseur au sein du document. m RET

Sélectionne le choix d'un menu sous le curseur. u

Pour « remonter » dans le document. n

Pour aller à la page suivante. p

Pour aller à la page précédente. s

Pour rechercher quelque chose. g

Pour aller à une page spécifique. q

Quitter info

Vous remarquerez que la ligne supérieure de l'écran indique les pages next (suivantes), previous (précédentes) et up (supérieures) qui correspondent aux actions des touches n, p et u. HOWTO

En plus de ses livres, le Projet de Documentation Linux a diffusé une série de petits documents décrivant comment configurer des aspects particuliers de GNU-Linux. Par exemple, le SCSI-HOWTO décrit les complications de l'utilisation du SCSI - une façon standard de communiquer avec des périphériques - sous GNU-Linux. De façon générale, les HOWTOs ont plus de détails techniques sur des configurations matérielles et sont souvent plus à jour que ce manuel.

Il y a des paquets Debian pour les HOWTOs. doc-linux-text contient l'ensemble des HOWTOs au format texte et doc-linux-html les contient (surprise!) au format html pour naviguer. Remarquez bien que Debian fournit des traductions de ces HOWTOs si l'anglais n'est pas votre langue maternelle. Debian a des paquets en allemand, français, espagnol, italien, japonais, coréen, polonais, suédois et chinois des HOWTOs. On les trouve généralement dans les paquets doc-linux-languagecodelanguagecode est fr pour le français, es pour l'espagnol, etc... Si vous les avez installés, vous les trouverez dans /usr/doc/HOWTO. Quoi qu'il en soit, vous trouverez toujours les toutes dernières versions sur le réseau sur la page du LDP:

http://metalab.unc.edu/LDP/ Aide personnalisée

L'emplacement correctLes francophones ont leur propre liste avec l'avantage du support de leur langue maternelle: debian-user-french@lists.debian.org pour demander de l'aide sur Debian est la liste de distribution des utilisateurs de Debian à debian-user@list.debian.org (envoyer un courriel à debian-user@list.debian.org). Si vous savez vous servir d'IRC, vous pouvez utiliser le canal #debian sur irc.debian.org. Vous pouvez trouver de l'aide sur GNU-Linux en général dans la hiérarchie USENET comp.os.linux.*. Il est aussi possible d'embaucher des consultants pour fournir un service d'assistance garantie. Le site oueb de Debian ( http://www.debian.org) fournit d'autres informations sur beaucoup de ces ressources.

Une nouvelle fois, ne contactez pas les auteurs (et le traducteur!) de ce livre pour obtenir de l'aide. Nous ne serons de toute façon certainement pas capables de répondre à votre problème spécifique. Si vous vous adressez à debian-user, vous recevrez quantité de messages de qualité, et qui plus est rapidement.

Restez toujours courtois et faîtes l'effort de lire la documentation. Rappelez-vous bien que Debian résulte d'un effort collectif de volontaires et que les personnes vous font une faveur en vous donnant un peu de leur temps pour vous aider. Beaucoup d'entre eux font payer ce même service plusieurs centaines de dollars pendant la journée.

Ce qu'il faut faire pour poser des questions

Lire tout d'abord la documentation de base en premier. Les trucs comme les options des commandes et ce que fait une commande en fait partie. Cela inclut aussi les pages de manuel et la documentation au format info. Vérifier les documents HOWTOs si votre question concerne un réglage comme une connexion ppp ou Ethernet. Essayez d'être sûr que la réponse ne se trouve pas dans ce livre. N'ayez pas peur de demander, après avoir fait l'effort d'essayer de comprendre. N'ayez pas peur de demander des explications conceptuelles, des conseils sur tous les aspects que l'on ne trouve pas dans les documentations. Joignez toute information intéressante. Vous devez toujours mentionner la version de Debian que vous utilisez. Vous pouvez aussi mentionner le numéro de version de tout paquet pertinent. La commande dpkg -l nomdupaquet vous le fournit. Vous pouvez aussi signaler ce que vous avez tenté et ce qu'il est advenu. N'oubliez d'inclure les messages d'erreur complets et exacts, s'il y en a. Ne vous excusez pas d'être un nouveau sur Linux. Il n'y a pas de raison d'être un expert pour pouvoir utiliser GNU-Linux, pas plus qu'il est nécessaire d'être une mécanique pour conduire une automobile. Ne postez pas ou n'envoyez pas de courriel en HTML. Certaines versions de Netscape ou d'Internet Explorer postent par défaut en HTML plutôt qu'en texte. Beaucoup de gens vont carrément alors ignorer ces courriels car de nombreux lecteurs de courriels ont des difficultés à lire ce format. Il y a une préférence quelque part pour désactiver le support HTML. Soyez courtois. Rappelez-vous que Debian est un effort collectif de bénévoles et quiconque vous aide vous donne une partie de son temps libre. Renvoyez votre question à la liste si vous n'avez pas eu de réponse après quelques jours. Il y avait peut-être de nombreux messages et il est passé inaperçu. Ou peut-être que personne ne connaissait la réponse et si personne n'est capable de répondre la fois suivante, il s'agit d'une sacrée colle. Vous pourriez peut-être fournir plus d'informations la fois suivante. Extraire des informations du système

Lorsque vous diagnostiquez un problème ou lorsque vous demandez de l'aide, vous aurez besoin d'extraire des informations de votre système. Voici quelques façons d'y parvenir:

Examinez les fichiers placés dans /var/log Examinez la sortie du message de la commande dmesg Lancez la commande uname -a Problèmes

Dans Debian, comme partout ailleurs, les choses ne fonctionnent pas toujours comme vous vous y attendez ou comme vous voulez qu'elles le fassent. Bien que Debian ait une solide réputation d'être robuste et stable, ses réactions à vos commandes peuvent parfois être inattendues. Ici, nous allons tenter de lever le voile sur des problèmes courants très fréquemment rencontrés. Difficultés classiques

Cette partie a pour but de fournir quelques solutions aux difficultés les plus fréquemment rencontrées à l'usage par les utilisateurs. Travailler avec des noms de fichiers étranges

Vous pourrez parfois accidentellement créer un fichier dont le nom comporte un caractère normalement absent d'un nom de fichier. Les exemples sont l'inclusion d'espace, un trait d'union placé au début du nom ou tout simplement des guillemets. Il se peut que l'accès, la destruction ou le renommage de ces fichiers vous posent des difficultés.

Voici quelques trucs pour vous aider:

Essayez d'entourer le nom de fichier d'apostrophes simples, comme ceci:

less 'Fichier avec espaces.txt' Insérez un ./ avant le nom de fichier:

less './-un étrange fichier.txt' Utilisez des motifs:

less Fichier?avec?espaces.txt Utilisez un contre-slash devant chaque caractère inhabituel

less Fichier\ avec\ espaces.txt Imprimer

Une source d'ennui commune est le système d'impression sous Debian. Traditionnellement, l'impression a toujours été un aspect puissant mais complexe d'Unix. Cependant, Debian la rend plus simple. La façon la plus simple est d'utiliser le paquet magicfilter. magicfilter va vous poser une série de questions au sujet de votre imprimante et la configurer pour vous. Si vous avez des soucis d'impression, essayez magicfilter. Les problème sous X

De nombreuses questions tournent autour de X. Voici quelques trucs si vous avez quelques difficultés à paramétrer le système X Window.

Pour les problèmes de souris, lancez XF86Setup et essayez les options PS/2, Microsoft, MouseSystems et Logitech. La plupart des souris devraient correspondre à l'une d'entre elles. Le périphérique pour les souris est /dev/psaux pour celle PS/2 et un port série comme /dev/ttyS0 pour les souris série. Si vous ne connaissez pas votre chipset vidéo, lancez SuperProbe: cela permet souvent de le déterminer pour vous. Si votre écran ne possède pas beaucoup de couleurs, essayez de sélectionner une autre carte ou indiquez à X quelle quantité de mémoire vidéo vous possédez. Si votre écran reste blanc, ou bien si vous avez un texte illisible en lançant X, vous avez probablement sélectionné un taux de rafraîchissement incorrect. Retournez dans XF86Setup ou xf86config et revérifiez ces réglages. xvidtune peut vous aider à régler l'image si elle est trop à droite ou trop à gauche ou bien si elle est trop haute ou trop basse. xdpyinfo peut vous donner des informations sur une session X en cours. XF86Setup peut vous régler votre profondeur de couleurs par défaut. Vous pouvez sélectionner votre gestionnaire de fenêtres par défaut en modifiant /etc/X11/window-managers. /var/log/xdm-errors peut contenir des informations utiles si vous avez des problèmes en lançant xdm. Problème lors de la procédure de boot

Si vous avez des problèmes durant la phase de boot, comme un blocage du noyau pendant la procédure d'amorçage, ou que le noyau ne reconnaisse pas les périphériques que vous avez ou encore que les lecteurs ne soient reconnus proprement, la première chose à faire est de vérifier les paramètres de boot. On les obtient en pressant sur la touche F1 lors du boot sur la disquette de secours.

La plupart du temps, les problèmes se résolvent en supprimant quelques périphériques et en bootant à nouveau. Les modems internes, les cartes son et les périphériques Plug-n-Play sont souvent problématiques.

Tecras, et quelques autres portables, et certains non portables n'arrivent pas à vider le cache lorsqu'ils passent en A20. Ceci est provoqué par les noyaux bzImage et non par les noyaux zImages. Si votre ordinateur souffre de ce problème, vous verrez un message lors du boot disant saying A200 gating failed. Dans ce cas, il est nécessaire d'utiliser les images de boot « tecra ».

Si vous avez toujours des problèmes, envoyez un rapport de bogue. Envoyez un courriel à submit@bugs.debian.org Vous DEVEZ inclure les lignes suivantes en en-tête de votre courriel:

Package: boot-floppies Version: version

Assurez-vous que la version que vous fournissez est celle que vous avez utilisé avec les disquettes de boot. Si vous ne connaissez pas la version exacte, fournissez la date à laquelle vous avez téléchargé les disquettes, et ajoutez à partir de quelle distribution vous les avez obtenues: « stable » ou « frozen ».

Vous devez aussi inclure les informations suivantes dans votre rapport de bogues:

architecture: i386 model: votre matériel principal et le modèle memory: la quantité de RAM SCSI: les adapteurs, s'il y en a. cd-rom: type de cédérom et son interface (ATAPI) network card: votre carte réseau, si vous en avez une. pcmcia: le détail de vos périphériques PCMCIA

Cela dépend de la nature du bogue mais il peut être pertinent de donner le modèle du disque dur, la capacité du disque et le modèle de carte vidéo.

Dans le rapport de bogue, décrivez le problème et joignez les derniers messages visibles du noyau dans le cas d'un blocage du noyau. Décrivez les étapes qui vous ont amenées dans cet état. Booter le système

Cette partie montre ce qui se passe lors du boot de GNU-Linux.

La façon dont vous amorcez votre système dépend de la façon dont vous l'avez configuré à l'installation. Dans le meilleur des cas, vous n'avez qu'à allumer votre ordinateur. Mais il se peut que vous deviez insérer une disquette.

Linux est appelé par un programme appelé LILO (LInux LOader, littéralement « chargeur de linux »). LILO peut aussi charger un autre système d'exploitation et vous demander sur quel système vous désirez booter.

La première chose qui se passe lorsque vous allumez un PC de type Intel est l'exécution du BIOS. BIOS signifie Basic Input Output System (système d'entrée-sortie simple). C'est un programme résidant perpétuellement sur l'ordinateur et stocké en lecture seule sur un composant. Il effectue quelques tests basiques et ensuite recherche une disquette dans le premier lecteur de disquettes. S'il la trouve, il recherche un secteur d'amorce (boot sector) et lance le code se trouvant dessus s'il existe. S'il y a une disquette sans secteur d'amorce, le BIOS va vous afficher un message du type: Non-system disk ou disk errorDisque non-système et mauvaise disquette. Retirez alors la disquette et appuyez sur une touche pour relancer la procédure de boot.

S'il n'y a pas de disquette dans le lecteur, le BIOS recherche un MBR (Master Boot Record) sur le disque dur. Il lance le code exécutable trouvé dessus qui charge le système d'exploitation. Sur des systèmes GNU-Linux, LILO peut occuper le MBR et charger GNU-Linux.

Ainsi, si vous avez décidé d'installer LILO sur votre disque dur, vous devriez apercevoir LILO au démarrage de votre ordinateur. À partir de ce moment-là, vous pouvez appuyer sur la touche shift pour sélectionner quel système d'exploitation charger et appuyez sur Tab pour afficher la liste des options. Tapez sur une de ces options et appuyez sur la touche Entrée. LILO va charger le système demandé.

Si vous n'appuyez pas sur la touche shift, LILO chargera automatiquement le système par défaut au bout de cinq secondes. Si vous le désirez, vous pouvez changer le système par défaut, le nombre de systèmes et le temps d'attente avant le chargement.

Si vous n'avez pas installé LILO sur votre disque dur, vous avez probablement créé une disquette de boot. La disquette de boot va avoir LILO dessus. Tout ce que vous avez à faire est d'installer la disquette dans son lecteur et rallumer l'ordinateur; le BIOS va la trouver avant de vérifier le MBR du disque. Pour retourner à un système non-linux, sortez la disquette et redémarrez l'ordinateur. Assurez-vous bien de suivre la procédure (voir 6.6) de redémarrage correctement.

LILO charge le noyau linux à partir du disque et ensuite le laisse agir. (le noyau est le programme central du système d'exploitation qui contrôle tous les autres programmes). Le noyau est totalement indépendant du BIOS ou de LILO.

Sur les plateformes non Intel, les choses se passent un peu différemment. Mais après avoir booté, les choses sont identiques - ou quasiment.

Linux examine le matériel sur lequel il va tourner. Il veut savoir quel type de disque dur vous avez, si vous avez ou non un bus souris, un réseau et quelques autres choses du même acabit. Linux ne peut se rappeler ces choses entre chaque boot donc il doit se poser ces questions à chaque démarrage. Heureusement, il ne vous pose pas les questions mais le fait directement au matériel. Lors du boot, le noyau Linux affiche des messages pour indiquer ce qu'il fait.

Le processus de recherche peut poser des problèmes mais s'il devait le faire, vous auriez déjà dû rencontrer ces problèmes lors de la première installation de GNU-Linux. Si vous avez des problèmes, reportez-vous aux instructions d'installation ou bien posez des questions sur les listes de distribution.

Le noyau permet simplement l'existence d'autres programmes donc une fois que tout est ok pour lui, il doit lancer un autre programme pour rendre les choses plus fonctionnelles. Le programme que le noyau lance est init. Après que le noyau ait lancé init, il ne lance jamais plus d'autres programmes. Le noyau devient alors un gestionnaire et un fournisseur de services.

Lorsque init se lance, il lance un certain nombre de scripts (des fichiers contenant des commandes) qui préparent le système à être utilisé. Il y a des routines de maintenance et de nombreux programmes qui font des choses comme fournir un prompteur de login, écouter les connexions réseau et garder une trace des activités de l'ordinateur. La Licence Publique Générale de GNU

This is an unofficial translation of the GNU General Public License into french. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU GPL--only the original English text of the GNU GPL does that. However, we hope that this translation will help french speakers understand the GNU GPL better.

Ceci est une traduction non officielle de la GNU General Public License en français. Elle n'a pas été publiée par la Free Software Foundation, et ne détermine pas les termes de distribution pour les logiciels qui utilisent la GNU GPL--seul le texte anglais original de la GNU GPL en a le droit. Cependant, nous espérons que cette traduction aidera les francophones à mieux comprendre la GPL.

Nous autorisons la FSF à apporter toute modification qu'elle jugera nécessaire pour rendre la traduction plus claire. GNU GENERAL PUBLIC LICENSE

Version 2, juin 1991

Copyright © 1989, 1991, Free Software Foundation Inc. 675 Mass Ave, Cambridge, MA02139, États-Unis.

Il est permis à tout le monde de reproduire et distribuer des copies conformes de ce document de licence, mais aucune modification ne doit y être apportée.

Préambule

Les licences relatives à la plupart des logiciels sont destinées à supprimer votre liberté de les partager et de les modifier. Par contraste, la licence publique générale GNU General Public License veut garantir votre liberté de partager et de modifier les logiciels libres, pour qu'ils soient vraiment libres pour tous leurs utilisateurs. La présente licence publique générale s'applique à la plupart des logiciels de la Free Software Foundation, ainsi qu'à tout autre programme dont les auteurs s'engagent à l'utiliser. (Certains autres logiciels sont couverts par la Licence Publique Générale pour Bibliothèques GNU à la place). Vous pouvez aussi l'appliquer à vos programmes.

Quand nous parlons de logiciels libres, nous parlons de liberté, non de gratuité. Nos licences publiques générales veulent vous garantir : que vous avez toute liberté de distribuer des copies des logiciels libres (et de facturer ce service, si vous le souhaitez) ; que vous recevez les codes sources ou pouvez les obtenir si vous le souhaitez ; que vous pouvez modifier les logiciels ou en utiliser des éléments dans de nouveaux programmes libres ; et que vous savez que vous pouvez le faire.

Pour protéger vos droits, nous devons apporter des restrictions, qui vont interdire à quiconque de vous dénier ces droits, ou de vous demander de vous en désister. Ces restrictions se traduisent par certaines responsabilités pour ce qui vous concerne, si vous distribuez des copies de logiciels, ou si vous les modifiez.

Par exemple, si vous distribuez des copies d'un tel programme, gratuitement ou contre une rémunération, vous devez transférer aux destinataires tous les droits dont vous disposez. Vous devez vous garantir qu'eux-mêmes, par ailleurs, reçoivent ou peuvent recevoir le code source. Et vous devez leur montrer les présentes dispositions, de façon qu'ils connaissent leurs droits.

Nous protégeons vos droits en deux étapes : Nous assurons le droit d'auteur (copyright) du logiciel, et Nous vous proposons cette licence, qui vous donne l'autorisation légale de dupliquer, distribuer et/ou modifier le logiciel.

De même, pour la protection de chacun des auteurs, et pour notre propre protection, nous souhaitons nous assurer que tout le monde comprenne qu'il n'y a aucune garantie portant sur ce logiciel libre. Si le logiciel est modifié par quelqu'un d'autre puis transmis à des tiers, nous souhaitons que les destinataires sachent que ce qu'ils possèdent n'est pas l'original, de façon que tous problèmes introduits par d'autres ne se traduisent pas par une répercussion négative sur la réputation de l'auteur original.

Enfin, tout programme libre est en permanence menacé par des brevets de logiciels. Nous souhaitons éviter le danger que des sous-distributeurs d'un programme libre obtiennent à titre individuel des licences de brevets, avec comme conséquence qu'ils ont un droit de propriété sur le programme. Pour éviter cette situation, nous avons fait tout ce qui est nécessaire pour que tous brevets doivent faire l'objet d'une concession de licence qui en permette l'utilisation libre par quiconque, ou bien qu'il ne soit pas concédé du tout.

Nous présentons ci-dessous les closes et dispositions concernant la duplication, la distribution et la modification.

Conditions d'exploitation portant sur la duplication, la distribution et la modification Le présent contrat de licence s'applique à tout programme ou autre ouvrage contenant un avis, apposé par le détenteur du droit de propriété, disant qu'il peut être distribué au titre des dispositions de la présente Licence Publique Générale. Ci-après, le « Programme » désigne l'un quelconque de ces programmes ou ouvrages, et un « ouvrage fondé sur le programme » désigne soit le programme, soit un ouvrage qui en dérive au titre de la loi sur le droit d'auteur ; plus précisément, il s'agira d'un ouvrage contenant le programme ou une version de ce dernier, soit mot à mot, soit avec des modifications et/ou traduit en une autre langue (ci-après, le terme « modification » englobe, sans aucune limitation, les traductions qui en sont faites). Chaque titulaire de licence sera appelé « concessionnaire ».

Les activités autres que la duplication, la distribution et la modification ne sont pas couvertes par la présente licence ; elles n'entrent pas dans le cadre de cette dernière. L'exécution du programme n'est soumise à aucune restriction, et les résultats du programme ne sont couverts que si son contenu constitue un ouvrage fondé sur le programme (indépendamment du fait qu'il a été réalisé par exécution du programme). La véracité de ce qui précède dépend de ce que fait le programme. Le concessionnaire peut dupliquer et distribuer des copies mot à mot du code source du programme tel qu'il les reçoit, et ce sur un support quelconque, du moment qu'il appose, d'une manière parfaitement visible et appropriée, sur chaque exemplaire, un avis approprié de droits d'auteur (Copyright) et de renonciation à garantie ; qu'il maintient intacts tous les avis qui se rapportent à la présente licence et à l'absence de toute garantie ; et qu'il transmet à tout destinataire du programme un exemplaire de la présente licence en même temps que le programme.

Le concessionnaire peut facturer l'acte physique de transfert d'un exemplaire, et il peut, à sa discrétion, proposer en échange d'une rémunération une protection en garantie. Le concessionnaire peut modifier son ou ses exemplaires du programme ou de toute portion de ce dernier, en formant ainsi un ouvrage fondé sur le programme, et dupliquer et distribuer ces modifications ou cet ouvrage selon les dispositions de la section 1 ci-dessus, du moment que le concessionnaire satisfait aussi à toutes ces conditions : Le concessionnaire doit faire en sorte que les fichiers modifiés portent un avis, parfaitement visible, disant que le concessionnaire a modifié les fichiers, avec la date de tout changement. Le concessionnaire doit faire en sorte que tout ouvrage qu'il distribue ou publie, et qui, en totalité ou en partie, contient le programme ou une partie quelconque de ce dernier ou en dérive, soit concédé en bloc, à titre gracieux, à tous tiers au titre des dispositions de la présente licence. Si le programme modifié lit normalement des instructions interactives lors de son exécution, le concessionnaire doit, quand il commence l'exécution du programme pour une telle utilisation interactive de la manière la plus usuelle, faire en sorte que ce programme imprime ou affiche une annonce, comprenant un avis approprié de droits d'auteur, et un avis selon lequel il n'y a aucune garantie (ou autrement, que le concessionnaire fournit une garantie), et que les utilisateurs peuvent redistribuer le programme au titre de ces dispositions, et disant à l'utilisateur comment visualiser une copie de cette licence (exception : si le programme par lui-même est interactif mais n'imprime normalement pas une telle annonce, l'ouvrage du concessionnaire se fondant sur le programme n'a pas besoin d'imprimer une annonce). Les exigences ci-dessus s'appliquent à l'ouvrage modifié pris en bloc. Si des sections identifiables de cet ouvrage ne dérivent pas du programme et peuvent être considérées raisonnablement comme représentant des ouvrages indépendants et distincts par eux-mêmes, alors la présente licence, et ses dispositions, ne s'appliquent pas à ces sections quand le concessionnaire les distribue sous forme d'ouvrages distincts. Mais quand le concessionnaire distribue ces mêmes sections en tant qu'élément d'un tout qui représente un ouvrage se fondant sur le programme, la distribution de ce tout doit se faire conformément aux dispositions de la présente licence, dont les autorisations, portant sur d'autres concessionnaires, s'étendent à la totalité dont il est question, et ainsi à chacune de ces parties, indépendamment de celui qu'il a écrite.

Ainsi, cette section n'a pas pour but de revendiquer des droits ou de contester vos droits sur un ouvrage entièrement écrit par le concessionnaire ; bien plus, l'intention est d'exercer le droit de surveiller la distribution d'ouvrages dérivée ou collective se fondant sur le programme.

De plus, un simple assemblage d'un autre ouvrage ne se fondant pas sur le programme, avec le programme (ou avec un ouvrage se fondant sur le programme) sur un volume d'un support de stockage ou distribution, ne fait pas entrer l'autre ouvrage dans le cadre de la présente licence. Le concessionnaire peut dupliquer et distribuer le programme (ou un ouvrage se fondant sur ce dernier, au titre de la Section 2), en code objet ou sous une forme exécutable, au titre des dispositions des Sections 1 et 2 ci-dessus, du moment que le concessionnaire effectue aussi l'une des opérations suivantes : Lui joindre le code source complet correspondant, exploitable par une machine, code qui doit être distribué au titre des Sections 1 et 2 ci-dessus sur un support couramment utilisé pour l'échange de logiciels ; ou bien Lui joindre une offre écrite, dont la validité se prolonge pendant au moins 3 ans, de transmettre à un tiers quelconque, pour un montant non supérieur au coût pour le concessionnaire, de réalisation physique de la distribution de la source, un exemplaire complet, exploitable par une machine, du code source correspondant, qui devra être distribué au titre des dispositions des Sections 1 et 2 ci-dessus sur un support couramment utilisé pour l'échange des logiciels ; ou bien Lui joindre les informations que le concessionnaire a reçues, pour proposer une distribution du code source correspondant (cette variante n'est autorisée que pour la distribution non commerciale, et seulement si le concessionnaire a reçu le programme sous forme exécutable ou sous forme d'un code objet, avec une telle offre, conformément à l'alinéa b) ci-dessus).

Le code source d'un ouvrage représente la forme préférée de l'ouvrage pour y effectuer des modifications. Pour un ouvrage exécutable, le code source complet représente la totalité du code source pour tous les modules qu'il contient, plus tous fichiers de définitions d'interface associés, plus les informations en code machine pour commander la compilation et l'installation du programme exécutable. Cependant, à titre d'exceptions spéciales, le code source distribué n'a pas besoin de comprendre quoi que ce soit qui est normalement distribué (sous forme source ou sous forme binaire) avec les composants principaux (compilateur, noyau de système d'exploitation, etc.) du système d'exploitation sur lequel est exécuté le programme exécutable, à moins que le composant, par lui-même, soit joint au programme exécutable.

Si la distribution de l?exécutable ou du code objet est réalisée de telle sorte qu'elle offre d'accéder à une copie à partir d'un lieu désigné, alors le fait d'offrir un accès équivalent à la duplication du code source à partir de ce même lieu s'entend comme distribution du code source, même si des tiers ne sont pas contraints de dupliquer la source en même temps que le code objet. Le concessionnaire ne peut dupliquer, modifier, concéder en sous-licence ou distribuer le programme, sauf si cela est expressément prévu par les dispositions de la présente licence. Toute tentative pour autrement dupliquer, modifier, concéder en sous-licence ou distribuer le programme est répétée nulle, et met automatiquement fin aux droits du concessionnaire au titre de la présente licence. Cependant, les parties qui ont reçu des copies, ou des droits, de la part du concessionnaire au titre de la présente licence, ne verront pas expirer leur contrat de licence, tant que ces parties agissent d'une manière parfaitement conforme. Il n'est pas exigé du concessionnaire qu'il accepte la présente licence, car il ne l'a pas signée. Cependant, rien d'autre n'octroie au concessionnaire l'autorisation de modifier ou de distribuer le programme ou ses ouvrages dérivés. Ces actions sont interdites par la loi si le concessionnaire n'accepte pas la présente licence. En conséquence, par le fait de modifier ou de distribuer le programme (ou un ouvrage quelconque se fondant sur le programme), le concessionnaire indique qu'il accepte la présente licence, et qu'il a la volonté de se conformer à toutes les closes et dispositions concernant la duplication, la distribution ou la modification du programme ou d'ouvrages se fondant sur ce dernier. Chaque fois que le concessionnaire redistribue le programme (ou tout ouvrage se fondant sur le programme), le destinataire reçoit automatiquement une licence de l'émetteur initial de la licence, pour dupliquer, distribuer ou modifier le programme, sous réserve des présentes closes et dispositions. Le concessionnaire ne peut imposer aucune restriction plus poussée sur l'exercice, par le destinataire, des droits octroyés au titre des présentes. Le concessionnaire n'a pas pour responsabilité d'exiger que des tiers se conforment à la présente licence. Si, en conséquence une décision de justice ou une allégation d'infraction au droit des brevets, ou pour toute autre raison (qui n'est pas limitée à des problèmes de propriétés industrielles), des conditions sont imposées au concessionnaire (par autorité de justice, par convention ou autrement), qui entrent en contradiction avec les dispositions de la présente licence, elles n'exemptent pas le concessionnaire de respecter les dispositions de la présente licence. Si le concessionnaire ne peut procéder à la distribution de façon à satisfaire simultanément à ces obligations au titre de la présente licence et à toutes autres obligations pertinentes, alors, en conséquence de ce qui précède, le concessionnaire peut ne pas procéder du tout à la distribution du programme. Par exemple, si une licence de brevet ne permettait pas une redistribution du programme, sans redevances, par tous ceux qui reçoivent des copies directement ou indirectement par l'intermédiaire du concessionnaire, alors le seul moyen par lequel le concessionnaire pourrait satisfaire tant à cette licence de brevet qu'à la présente licence, consisterait à s'abstenir complètement de distribuer le programme.

Si une partie quelconque de cette section est considérée comme nulle ou non exécutoire dans certaines circonstances particulières, le reste de cette section est réputé s'appliquer, et la section dans son ensemble est considérée comme s'appliquant dans les autres circonstances.

La présente section n'a pas pour objet de pousser le concessionnaire à enfreindre tous brevets ou autres revendications à droit de propriété, ou encore à contester la validité de une ou plusieurs quelconques de ces revendications ; la présente section a pour objet unique de protéger l'intégrité du système de distribution des logiciels libres, système qui est mis en oeuvre par les pratiques liées aux licences publiques. De nombreuses personnes ont apporté une forte contribution à la gamme étendue des logiciels distribués par ce système, en comptant sur l'application systématique de ce système ; c'est à l'auteur/donateur de décider s'il a la volonté de distribuer le logiciel par un quelconque autre système, et un concessionnaire ne peut imposer ce choix.

La présente section veut rendre parfaitement claire ce que l'on pense être une conséquence du reste de la présente licence. Si la distribution et/ou l'utilisation du Programme est restreinte dans certains pays, sous l'effet de brevets ou d'interfaces présentant un droit d'auteur, le détenteur du droit d'auteur original, qui soumet le Programme aux dispositions de la présente licence, pourra ajouter une limitation expresse de distribution géographique excluant ces pays, de façon que la distribution ne soit autorisée que dans les pays ou parmi les pays qui ne sont pas ainsi exclus. Dans ce cas, la limitation fait partie intégrante de la présente licence, comme si elle était écrite dans le corps de la présente licence.

La Free Software Foundation peut, de temps à autre, publier des versions révisées et/ou nouvelles du General Public License. Ces nouvelles versions seront analogues, du point de vue de leur esprit, à la présente version, mais pourront en différer dans le détail, pour résoudre de nouveaux problèmes ou de nouvelles situations.

Chaque version reçoit un numéro de version qui lui est propre. Si le programme spécifie un numéro de version de la présente licence, qui s'applique à cette dernier et "à toute autre version ultérieure", le concessionnaire a le choix de respecter les closes et dispositions de cette version, ou une quelconque version ultérieure publiée par la Free Software Foundation. Si le programme ne spécifie pas de numéro de version de la présente licence, le concessionnaire pourra choisir une version quelconque publiée à tout moment par la Free Software Foundation. Si le concessionnaire souhaite incorporer des parties du programme dans d'autres programmes libres dont les conditions de distribution sont différentes, il devrait écrire à l'auteur pour demander son autorisation. Pour un logiciel soumis à droit d'auteur par la Free Software Foundation, il devra écrire à la Free Software Foundation ; nous faisons quelquefois des exceptions à cette règle. Notre décision va être guidée par le double objectif de protéger le statut libre de tous les dérivés de nos logiciels libres, et de favoriser le partage et la réutilisation des logiciels en général.

ABSENCE DE GARANTIE COMME LA LICENCE DU PROGRAMME EST CONCÉDÉE À TITRE GRATUIT, IL N'Y AUCUNE GARANTIE S'APPLIQUANT AU PROGRAMME, DANS LA MESURE AUTORISÉE PAR LA LOI EN VIGUEUR. SAUF MENTION CONTRAIRE ÉCRITE, LES DÉTENTEURS DU DROIT D'AUTEUR ET/OU LES AUTRES PARTIES METTENT LE PROGRAMME À DISPOSITION "EN L'ÉTAT", SANS AUCUNE GARANTIE DE QUELQUE NATURE QUE CE SOIT, EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS LIMITATION, LES GARANTIES IMPLICITES DE COMMERCIALISATION ET DE L'APTITUDE À UN OBJET PARTICULIER. C'EST LE CONCESSIONNAIRE QUI PREND LA TOTALITÉ DU RISQUE QUANT A LA QUALITÉ ET AUX PERFORMANCES DU PROGRAMME. SI LE PROGRAMME SE RÉVÉLAIT DÉFECTUEUX, C'EST LE CONCESSIONNAIRE QUI PRENDRAIT À SA CHARGE LE COÛT DE L'ENSEMBLE DES OPÉRATIONS NÉCESSAIRES D'ENTRETIEN, RÉPARATION OU CORRECTION. EN AUCUN CAS, SAUF SI LA LOI EN VIGUEUR L'EXIGE OU SI UNE CONVENTION ÉCRITE EXISTE À CE SUJET, AUCUN DÉTENTEUR DE DROITS D'AUTEUR, OU AUCUNE PARTIE AYANT LE POUVOIR DE MODIFIER ET/OU DE REDISTRIBUER LE PROGRAMME CONFORMÉMENT AUX AUTORISATIONS CI-DESSUS, N'EST RESPONSABLE VIS-À-VIS DU CONCESSIONNAIRE POUR CE QUI EST DES DOMMAGES, Y COMPRIS TOUS DOMMAGES GÉNÉRAUX, SPÉCIAUX, ACCIDENTELS OU INDIRECTS, RÉSULTANT DE L'UTILISATION OU DU PROGRAMME OU DE L'IMPOSSIBILITÉ D'UTILISER LE PROGRAMME (Y COMPRIS, MAIS SANS LIMITATION, LA PERTE DE DONNÉES, OU LE FAIT QUE DES DONNÉES SONT RENDUES IMPRÉCISES, OU ENCORE LES PERTES ÉPROUVÉES PAR LE CONCESSIONNAIRE OU PAR DES TIERS, OU ENCORE UN MANQUEMENT DU PROGRAMME À FONCTIONNER AVEC TOUS AUTRES PROGRAMMES), MÊME SI CE DÉTENTEUR OU CETTE AUTRE PARTIE A ÉTÉ AVISÉ DE LA POSSIBILITÉ DE TELS DOMMAGES.

FIN DES CONDITIONS D'EXPLOITATION

------------------------------------------------------------------------ Comment appliquer ces dispositions à vos nouveaux programmes?

Si le concessionnaire développe un nouveau programme, et s'il en souhaite l'utilisation la plus large possible dans le public, le meilleur moyen d'y arriver est d'en faire un logiciel libre, que tout le monde pourra redistribuer et modifier au titre des présentes dispositions.

Dans ce but, il convient de rattacher au programme les avis suivants. Le moyen le plus sûr consiste à les rattacher au début de chaque fichier source, pour avertir le plus efficacement possible de l'exclusion de garantie ; et chaque fichier doit comporter au moins la ligne copyright, et un pointeur indiquant où est localisée la totalité de l'avis.

Une ligne pour donner le nom du programme et une idée de ce qu'il fait.

Copyright © 19yy nom de l'auteur

Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier conformément aux dispositions de la Licence Publique Générale GNU, telle que publiée par la Free Software Foundation ; version 2 de la licence, ou encore (à votre choix) toute version ultérieure.

Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER. Pour plus de détail, voir la Licence Publique Générale GNU .

Vous devez avoir reçu un exemplaire de la Licence Publique Générale GNU en même temps que ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation Inc., 675 Mass Ave, Cambridge, MA 02139, États-Unis.

Ajoutez aussi des informations sur le moyen permettant d'entrer en contact avec vous par courrier électronique (e-mail) et courrier normal.

Si le programme est interactif, prévoyez en sortie un court avis, tel que celui qui est présenté ci-dessous, lors du démarrage en mode interactif.

Gnomovision version 69, Copyright © 19 yy nom de l'auteur

Gnomovision est livré absolument SANS AUCUNE GARANTIE ; pour plus de détail, tapez « show w ». Il s'agit d'un logiciel libre, et vous avez le droit de le redistribuer dans certaines conditions ; pour plus de détail, tapez « show c ».

Les instructions hypothétiques « show w » et « show c » doivent présenter les parties appropriées de la Licence Publique Générale. Bien évidemment, les instructions que vous utilisez peuvent porter d'autres noms que « show w » et « show c » ; elles peuvent même correspondre à des clics de souris ou à des éléments d'un menu, selon ce qui convient à votre programme.

Si nécessaire, vous devrez aussi demander à votre employeur (si vous travaillez en tant que programmeur) ou à votre éventuelle école ou université, de signer une "renonciation à droit d'auteur" concernant le programme. En voici un échantillon (il suffit de modifier les noms) :

Yoyodyne, Inc., par la présente, renonce à tout intérêt de droits d'auteur dans le programme « Gnomovision » (qui fait des passages au niveau des compilateurs) écrit par James Hacker.

Signature de Ty Coon, 1er avril 1989

Ty Coon, President of Vice

La présente Licence Publique Générale n'autorise pas le concessionnaire à incorporer son programme dans des programmes propriétaires. Si votre programme est une bibliothèque de sous-programmes, vous pouvez considérer comme plus intéressant d'autoriser une édition de liens des applications propriétaires avec la bibliothèque. Si c'est ce que vous souhaitez, vous devrez utiliser non pas la présente licence, mais la Licence Publique Générale pour Bibliothèques GNU. doc-debian-fr-3.1.3.1/debian/0000755000175000017500000000000010533413533015015 5ustar jeromejeromedoc-debian-fr-3.1.3.1/debian/copyright0000644000175000017500000000122210531172143016742 0ustar jeromejeromeThis package was put together by Christophe Le Bars , from the sources at ftp://ftp.debian.org/debian/doc. It was taken over by Jerome Marant on Tue, 1 May 2001 14:53:06 +0200 and later by Philippe Batailler. It was adopted by Frédéric Bothamy. on Thu, 23 Nov 2006 02:04:51 +0100 Most sources are now at http://cvs.debian.org/ddp/manuals.sgml/?root=debian-doc Copyright: All the documents in this package are released under the GNU GPL license as free, opensource software. On Debian GNU/Linux systems, the complete text of the the GNU General Public License and can be found in /usr/share/common-licenses/GPL. doc-debian-fr-3.1.3.1/debian/changelog0000644000175000017500000001552210533410223016665 0ustar jeromejeromedoc-debian-fr (3.1.3.1) unstable; urgency=low * Make myself the contact for Debian Policy translation problems. -- Frédéric Bothamy Wed, 29 Nov 2006 23:58:27 +0100 doc-debian-fr (3.1.3) unstable; urgency=low * New maintainer * Update Debian policy to 3.7.2.2 * Lintian fixes: - Move debhelper from b-d-i to b-d in control file - Increase DH_COMPAT to 4 - Updated Standards-Version to 3.7.2.2 * Replace DH_COMPAT with debian/compat file * Remove the following translations: - developers-reference.fr.sgml (closes: #168118) - maint-guide.fr.sgml - apt-howto.fr.sgml * Update the general Makefile, debian/control (Recommends for the matching packages), index.xml and index.xsl and debian/rules * Update informations (version, translator, etc.) for all documents (closes: #237917) * The following documents are now GPLed: APT HOWTO, Euro HOWTO information and debian-fr-howto.html * Restore Project History * Remove obsolete markup and debian-l10n-french-faq documents -- Frédéric Bothamy Thu, 23 Nov 2006 01:55:05 +0100 doc-debian-fr (3.1.2) unstable; urgency=low * Updated developers-reference, version 3.3.5 * Updated apt-howto, version 1.8.7 * Now this is really Sarge. -- Philippe Batailler Thu, 14 Oct 2004 18:19:31 +0200 doc-debian-fr (3.1.1) unstable; urgency=low * Updated policy.fr.sgml: version 3.6.2.1 * Updated debian-fr-howto, developpers-reference, debian-manifesto. * debian/control: bumped Standards-Version to 3.6.1.1 -- Philippe Batailler Sat, 4 Sep 2004 17:22:50 +0200 doc-debian-fr (2.2.14) unstable; urgency=low * Updated policy.fr.sgml: version 3.6.0. * Updated developers-reference, apt-howto, debian-euro-support. * Removed too obsolete translation of project-history.sgml. * debian/control: bumped Standards-Version to 3.6.0. -- Philippe Batailler Wed, 6 Aug 2003 11:25:49 +0200 doc-debian-fr (2.2.13) unstable; urgency=low * Updated policy.fr.sgml: version 3.5.9.0. * New Makefile. support content--negotiation with -c option of debiandoc2html * debian/control: bumped Standards-Version to 3.5.9. -- Philippe Batailler Mon, 7 Apr 2003 17:40:25 +0200 doc-debian-fr (2.2.12) unstable; urgency=low * Updated the following documents: + policy.fr.sgml (cvs 1.100/Sat Feb 22). Thanks to Frédéric BOITEUX. -- Philippe Batailler Sat, 22 Feb 2003 19:11:02 +0100 doc-debian-fr (2.2.11) unstable; urgency=low * New maintainer. * Updated the following documents: + policy.fr.sgml. + developers-reference.fr.sgml. (Closes: Bug#168118). * Added the following documents: + apt-howto.fr.sgml. + maint-guide.fr.sgml. + debian-euro-support.fr.sgml. * Removed the following documents: + debian-user-french-faq.sgml. + packaging-manual.fr.sgml. + libc5-libc6-Mini-HOWTO.fr.sgml. + debian_package_intro.sgml. * Makefile now creates index.html. -- Philippe Batailler Thu, 2 Jan 2003 21:53:09 +0100 doc-debian-fr (2.2.10) unstable; urgency=low * New maintainer. -- Jerome Marant Tue, 4 Jun 2002 22:10:54 +0200 doc-debian-fr (2.2.9) unstable; urgency=low * Updated the following documents: + policy.fr.sgml. + debian-l10n-french-faq.sgml. + debian-guide_fr-1.0.sgml. + developers-reference.fr.sgml. -- Jerome Marant Mon, 15 Apr 2002 07:41:32 +0200 doc-debian-fr (2.2.8) unstable; urgency=low * Updated debian-french.sgml. -- Jerome Marant Fri, 5 Apr 2002 22:02:22 +0200 doc-debian-fr (2.2.7) unstable; urgency=low * Updated debian-french.sgml. -- Jerome Marant Sat, 23 Feb 2002 23:03:44 +0100 doc-debian-fr (2.2.6) unstable; urgency=low * Updated developers-reference.fr.sgml. -- Jerome Marant Fri, 28 Dec 2001 16:40:22 +0100 doc-debian-fr (2.2.5) unstable; urgency=low * Updated the following documents: + developers-reference.fr.sgml. + debian-l10n-french-faq.sgml. + debian-french.sgml. * debian/control: fixed spelling mistakes, thanks to Matt Zimmerman. Closes: Bug#124553. -- Jerome Marant Tue, 18 Dec 2001 19:30:09 +0100 doc-debian-fr (2.2.4) unstable; urgency=low * Added new version of debian-french.sgml. * Added fixed version of developers-reference.fr.sgml. -- Jerome Marant Fri, 30 Nov 2001 21:07:39 +0100 doc-debian-fr (2.2.3) unstable; urgency=low * debian/rules: install SGML entities along with SGML files. Thanks to Jean-Michel Kelbert. * Added new version of debian-french.sgml. -- Jerome Marant Fri, 16 Nov 2001 19:40:33 +0100 doc-debian-fr (2.2.2) unstable; urgency=low * New versions of the following documents: + debian-l10n-french-faq.sgml. + debian-french.sgml * Added fixed version of policy.fr.sgml. Closes: Bug#118654. -- Jerome Marant Sat, 10 Nov 2001 12:18:14 +0100 doc-debian-fr (2.2.1) unstable; urgency=low * Updated the following documents: + developers-reference.fr.sgml. + policy.fr.sgml. + debian-user-french-faq.sgml (formerly debian-french-faq.sgml). * Added debian-french.sgml, a document explaining how to configure your environment for using French on a Debian system. * Switched Standards-Version to 3.5.6. * debian/control: renamed Build-Depends to Build-Depends-Indep. -- Jerome Marant Wed, 31 Oct 2001 08:23:46 +0100 doc-debian-fr (2.2) unstable; urgency=low * New maintainer. Closes: Bug#92639. * Synchronized documentation with Debian 2.2. * Switched Standards-Version to 3.5.2. * Made use of /usr/share/doc instead of /usr/doc. Closes: Bug#91417, Bug#42020. -- Jerome Marant Tue, 3 Apr 2001 21:48:05 +0200 doc-debian-fr (1.3) unstable; urgency=low * Added Debian Tutorial Manual in french -- Christophe Le Bars Fri, 16 Oct 1998 01:50:15 +0200 doc-debian-fr (1.2) unstable; urgency=low * Fixed a typo error into doc-debian-fr menu (Bug#17331) * Fixed typo in dselect.beginner.6.fr.txt (Bug#17330) * Added Debian Packaging Manual in french * Added Debian Developer's Reference in french * Added index.html -- Christophe Le Bars Tue, 10 Feb 1998 20:31:12 +0000 doc-debian-fr (1.1) unstable; urgency=low * Changed distribution * Added Debian Manifesto in french * Added Debiandoc-SGML markup manual in french * Added Dselect manual in french -- Christophe Le Bars Sun, 4 Jan 1998 00:47:09 +0100 doc-debian-fr (1.0) experimental; urgency=low * Initial release -- Christophe Le Bars Sun, 23 Feb 1997 20:53:53 +0100 doc-debian-fr-3.1.3.1/debian/dirs0000644000175000017500000000006707605113477015716 0ustar jeromejeromeusr/share/doc/debian usr/share/doc/LANG/fr/debian/html doc-debian-fr-3.1.3.1/debian/control0000644000175000017500000000102010531167313016411 0ustar jeromejeromeSource: doc-debian-fr Section: doc Priority: optional Maintainer: Frédéric Bothamy Standards-Version: 3.7.2.2 Build-Depends-Indep: debiandoc-sgml, xsltproc Build-Depends: debhelper (>> 4.0.0) Package: doc-debian-fr Architecture: all Recommends: developers-reference-fr, maint-guide-fr, apt-howto-fr Description: Debian Manuals, FAQs and other documents in French This package provides Debian Manuals, some mailing lists FAQs as well as several other bits of information about Debian in French. doc-debian-fr-3.1.3.1/debian/doc-base0000644000175000017500000000045407605113477016432 0ustar jeromejeromeDocument: doc-debian-fr Title: Documents sur Debian en français Author: Jerome Marant Abstract: Documents sur Debian en français au format HTML. Section: Debian Format: HTML Index: /usr/share/doc/LANG/fr/debian/html/index.html Files: /usr/share/doc/LANG/fr/debian/html/*.html doc-debian-fr-3.1.3.1/debian/postinst0000644000175000017500000000266310530720215016625 0ustar jeromejerome#! /bin/sh # postinst script for doc-debian-fr # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-deconfigure' `in-favour' # `removing' # # for details, see /usr/share/doc/packaging-manual/ # # quoting from the policy: # Any necessary prompting should almost always be confined to the # post-installation script, and should be protected with a conditional # so that unnecessary prompting doesn't happen if a package's # installation fails and the `postinst' is called with `abort-upgrade', # `abort-remove' or `abort-deconfigure'. case "$1" in configure) if [ -d /usr/doc/LANG/fr -a ! -e /usr/doc/LANG/fr/debian \ -a -d /usr/share/doc/LANG/fr/debian ]; then ln -sf ../../../share/doc/LANG/fr/debian /usr/doc/LANG/fr/debian fi ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 0 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 doc-debian-fr-3.1.3.1/debian/compat0000644000175000017500000000000210531167552016220 0ustar jeromejerome4 doc-debian-fr-3.1.3.1/debian/prerm0000644000175000017500000000204210530720217016060 0ustar jeromejerome#! /bin/sh # prerm script for doc-debian-fr # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see /usr/share/doc/packaging-manual/ case "$1" in remove|upgrade|deconfigure) # install-info --quiet --remove /usr/info/#PACKAGE#.info.gz if [ \( "$1" = "upgrade" -o "$1" = "remove" \) \ -a -L /usr/doc/LANG/fr/debian ]; then rm -f /usr/doc/LANG/fr/debian fi ;; failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 0 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 doc-debian-fr-3.1.3.1/debian/rules0000755000175000017500000000411510531167200016071 0ustar jeromejerome#!/usr/bin/make -f # Sample debian/rules that uses debhelper. # GNU copyright 1997 to 1999 by Joey Hess. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 DESTDIR = $(CURDIR)/debian/doc-debian-fr DOCS = debian-fr-howto\ debian-guide_fr-1.0\ internals\ policy.fr\ project-history.fr\ debian-manifesto.fr\ debian-euro-support.fr configure: configure-stamp configure-stamp: dh_testdir # Add here commands to configure the package. touch configure-stamp build: build-stamp build-stamp: configure-stamp dh_testdir # Add here commands to compile the package. $(MAKE) all #/usr/bin/docbook-to-man debian/prp.sgml > prp.1 touch build-stamp clean: dh_testdir dh_testroot rm -f build-stamp configure-stamp # Add here commands to clean up after the build process. -$(MAKE) clean dh_clean install: build dh_testdir dh_testroot dh_clean -k dh_installdirs # Add here commands to install the package into debian/prp. for doc in $(DOCS); do\ cp -R $$doc.html $(DESTDIR)/usr/share/doc/LANG/fr/debian/html;\ install -m 0644 $$doc.txt $(DESTDIR)/usr/share/doc/LANG/fr/debian;\ install -m 0644 doc/$$doc.sgml $(DESTDIR)/usr/share/doc/LANG/fr/debian;\ done # Copy SGML entities install -m 0644 doc/*.ent $(DESTDIR)/usr/share/doc/LANG/fr/debian # Copy HTML index install -m 0644 index.html $(DESTDIR)/usr/share/doc/LANG/fr/debian/html # Build architecture-independent files here. binary-indep: build install # We have nothing to do by default. # Build architecture-dependent files here. binary-arch: build install dh_testdir dh_testroot # dh_installdebconf dh_installdocs dh_installexamples dh_installmenu # dh_installlogrotate # dh_installemacsen # dh_installpam # dh_installmime # dh_installinit dh_installcron dh_installman dh_installinfo # dh_undocumented dh_installchangelogs dh_link dh_strip dh_compress dh_fixperms # dh_makeshlibs dh_installdeb # dh_perl dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install configure