Outils pour utilisateurs

Outils du site


Discussion os:debian:base
La Base

Les branches de Debian

C'est l'une des notions perturbantes lorsque l'on découvre Debian: il existe simultanément plusieurs versions, ou plutôt branches, en cours de validité. Les plus connues sont « stable », « testing » et « unstable » mais il existe aussi « oldstable » et « experimental ». Chaque « stable » porte un numéro de version et un nom de code, la branche « testing » ne reçoit qu'un nom de code (le numéro ne sera officiellement attribué qu'au moment ou elle deviendra la nouvelle « stable »). Chacune (sauf la branche « experimental ») reçoit un nom de code tiré des noms des personnages de la saga Toy Story.

  • La branche stable

C'est la version officielle de Debian. Figée, elle reçoit des mises à jour encore fréquentes (principalement de sécurité) et apporte la certitude d'avoir un système fonctionnel et stable.
A l'heure actuelle, la version stable en cours porte le numéro 8 et le nom de code « Jessie » (la cow-girl).

  • La branche testing

C'est la prochaine version stable. Extraite directement de la branche « unstable » à un instant T, elle reçoit des mises à jour de sécurité, des correctifs des paquets existants ou de nouveaux paquets reconnus comme étant matures.
La branche testing actuelle porte le nom de code « Stretch » (la pieuvre du 3e opus).

  • La branche unstable

En évolution constante, cette branche peut recevoir n'importe quel ajout ou modification à n'importe quel moment. C'est le terrain de jeu favori des développeurs mais aussi la seule branche à suivre de près les évolutions des logiciels. En étant prudent sur les mises à jour que l'on applique ou non, elle est tout à fait utilisable au quotidien si l'on est prêt à être confronté à quelques bugs de temps à autres (mais les développeurs étant extrêmement nombreux et actifs, cela ne dure généralement pas longtemps).
Cette branche se nomme et se nommera toujours « Sid » (le garçon sadique avec les jouets mais aussi “Still In Development”).

  • La branche oldstable

Comme son nom l'indique, il s'agit de la précédente « stable ». Des mises à jour de sécurité sont proposée pendant un an, à moins qu'une nouvelle « stable » apparaisse entre temps (cas peu probable mais possible). Au delà, la version est envoyée aux oubliettes et archivée.
Actuellement, c'est la version 7 nommée « Wheezy » (le manchot-micro au nœud papillon rouge).

  • La branche experimental

Bien qu'elle ne leur soit pas réservée, cette branche est plutôt dédiée aux développeurs. Certains y piochent parfois quelques paquets mais c'est une pratique délicate réservée aux utilisateurs expérimentés.
Cette branche ne porte aucun nom de code.

La rotation des versions

Lorsque la branche testing en cours est jugée suffisamment mature, elle est “gelée”. Pendant cette période, plus aucun ajout n'est possible et les seules évolutions concernent la correction de bugs déclarés. Une fois qu'elle est prête à devenir la nouvelle branche stable, elle reçoit un numéro de version officielle tandis que l'ancienne stable est reléguée au rang de oldstable et qu'une copie de la branche unstable deviens testing et reçoit son nom de code.
Officiellement, il n'y a pas de durée de vie maximale pour une stable de Debian puisqu'elle ne sera remplacée que lorsque la testing sera jugée prête (et théoriquement, ce serait ainsi même si une testing avait besoin de plusieurs décennies pour être jugée prête).
Dans la pratique, l'historique des versions montre que les dernières versions stable ont eu une durée de vie d'environ 2ans.

Quelle branche choisir

  • Si la robustesse est primordiale, le choix est simple: stable
  • Pour une machine multimédia ou s'il est nécessaire d'accéder à certaines versions récentes de logiciels spécifiques, il faudra s'orienter vers la branche unstable mais cela demande du sérieux et de la rigueur dans la maintenance du système (il faut impérativement installer le paquet apt-listbugs qui permet de lister les bugs connus et peser attentivement le pour et le contre à chaque mise à jour)
  • La branche testing n'est à priori une option intéressante que si la stable actuelle est déjà âgée (disons au delà de 16 mois, mais chacun fixera sa limite) puisque dans ce cas, la majorité des bugs restant sont mineurs
  • Les débutants devraient plutôt commencer avec la branche stable, d'autant qu'il est possible d'installer des paquets en provenance de branches plus évolutives ou même directement depuis les sources (c'est très formateur avant de se frotter à une unstable pure)

Il est facile de passer de stable à testing ou unstable mais pas l'inverse donc en cas de doute, choisir la branche stable.

De quelle branche parle-t-on ici?

Le choix s'est porté sur la branche stable actuelle, « Jessie »: les fonctionnalités abordées ici sont basées sur des paquets très matures qui seront installés sur un système « headless » sans fonctions multimédia. Notez que, sauf évolution majeure de ces paquets pourtant stabilisés depuis longtemps, les informations données ici restent valables pour toutes les branches.

Le protocole UPnP était déjà correct avec la version Squeeze avant même qu'elle devienne stable, quand à la fonction de point d'accès Wifi, même Sid n'est pas (ou en tout cas, n'était pas en 2011) suffisament à jour et il fallait de toute manière utiliser les dernières sources pour obtenir un résultat tout juste correct (globalement, le monde Linux accuse un certain retard en ce qui concerne le Wifi ou les vidéos Flash et cela reste encore à ce jour un point noir).

Installation

La méthode la plus simple consiste à télécharger l'image de type “Net Install” (installation réseau, ce qui implique qu'il faut une connexion internet active avec un serveur DHCP) depuis le site français officiel de Debian puis d'utiliser un outil du type UNetbootin pour transférer l'image sur une clef USB (formatée en FAT32 et pas en NTFS sinon elle ne sera pas “bootable”). Il ne reste plus qu'à “booter” sur cette clef sur le système de destination et à se laisser guider.

La physionomie du site n'étant pas figée (il y a par ailleurs plusieurs pages menant au bon téléchargement), plutôt que de vous dire de cliquer ici ou là, recherchez une image cd CD au format ISO de type netinstall pour architecture AMD64.

J'ai trouvé un échange très intéressant sur le forum Ask Ubuntu mais pour résumer, prendre systématiquement l'image AMD64 à moins d'avoir du matériel ancien limité aux 32bits.

Partitionnement

Après avoir testé différentes possibilités, je suis revenu au plus simple: l'utilisation d'un disque entier pour le système avec une partition principale et une partition Swap.
Pour ce qui est du choix du système de fichiers, on peut être sûr que le choix proposé par défaut par la branche stable de Debian est un choix judicieux avec un bon équilibre entre fiabilité et performance, donc, ici avec Jessie: ext4.

D'autres choix sont évidement possibles mais on ne cherche pas ici à faire une machine de course en recherchant le système de fichier le plus rapide. Pour un serveur, qu'il soit domestique ou pas, il faut privilégier la fiabilité.

Taille du Swap

Que l'on choisisse une partition (ce qui est recommandé étant donné qu'une partition peut profiter d'un système de fichier optimisé pour les opérations de swap) ou un simple fichier d'échange, il faut choisir sa taille… Et c'est un sujet brûlant sur les forums 🙂.

Chacun y va de sa formule basée sur la quantité de RAM (généralement entre RAM*0.5 et RAM*2).

Dans les grandes lignes, voici les éléments intéressants que j'ai relevés : - plus la RAM augmente, plus le besoin de swaper diminue - à partir de 2 ou 4Go de RAM, 1 ou 2Go de swap est généralement suffisant - sur un système pour lequel on a prévu d'utiliser l'hibernation, il faut plus de swap que la RAM totale afin qu'elle puisse intégralement être stockée dans le swap au moment de la mise en hibernation (donc de l'avis général RAM+1 devient un minimum réellement requis).

La cas de l'hibernation étant le seul où il y a vraiment un valeur minimale requise objectivement calculable je m'étais orienté vers 5Go pour 4Go de RAM installée mais l'installateur Debian m'a proposé 6Go et qui suis-je pour aller à l'encontre des recommandations la team Debian ? 🙂

Choix des fonctionnalités installées

Sélectionner uniquement la ligne “SSH Server” pour obtenir un système minimaliste sans rien de superflu.

Une commande intéressante après coup (une fois que le paquet ''aptitude'' est installé) pour voir la liste des paquets qui se cachent derrière l'élément “Outils standards” (et pas de stress, le commutateur -s permet de lancer une simple simulation même si on valide l'installation :

root@hostname:~# aptitude install ~pstandard ~pimportant ~prequired -s
Les NOUVEAUX paquets suivants vont être installés :
  apt-listchanges at bash-completion bc bind9-host bsd-mailx bzip2 dc debian-faq dnsutils doc-debian
  docutils-common{a} docutils-doc{a} exim4 exim4-base exim4-config exim4-daemon-light fontconfig{a} ftp
  geoip-database{a} gnupg-agent{a} gnupg2{a} hicolor-icon-theme{a} host info install-info iso-codes{a}
  libassuan0{a} libatk1.0-0{a} libatk1.0-data{a} libauthen-sasl-perl{a} libbind9-90 libcairo2{a} libclass-isa-perl
  libcurl3-gnutls{a} libdatrie1{a} libdns100 libencode-locale-perl{a} libev4{a} libevent-2.0-5
  libfile-listing-perl{a} libfont-afm-perl{a} libgc1c2 libgdk-pixbuf2.0-0{a} libgdk-pixbuf2.0-common{a}
  libgeoip1{a} libglib2.0-0{a} libglib2.0-data{a} libgpgme11{a} libgraphite2-3{a} libgssglue1 libgssrpc4
  libgtk2.0-0{a} libgtk2.0-bin{a} libgtk2.0-common{a} libharfbuzz0b{a} libhtml-form-perl{a} libhtml-format-perl{a}
  libhtml-parser-perl{a} libhtml-tagset-perl{a} libhtml-tree-perl{a} libhttp-cookies-perl{a} libhttp-daemon-perl{a}
  libhttp-date-perl{a} libhttp-message-perl{a} libhttp-negotiate-perl{a} libintl-perl{a} libio-html-perl{a}
  libio-socket-ssl-perl{a} libisc95 libisccc90{a} libisccfg90{a} libjasper1{a} libkadm5clnt-mit9 libkadm5srv-mit9
  libkdb5-7 libkrad0 libksba8{a} liblcms2-2{a} liblockfile-bin liblockfile1 liblwp-mediatypes-perl{a}
  liblwp-protocol-https-perl{a} liblwres90 libmailtools-perl{a} libnet-http-perl{a} libnet-smtp-ssl-perl{a}
  libnet-ssleay-perl{a} libnfsidmap2 libpango-1.0-0{a} libpangocairo-1.0-0{a} libpangoft2-1.0-0{a}
  libpaper-utils{a} libpaper1{a} libpixman-1-0{a} libpth20{a} librpcsecgss3 librtmp1{a} libsigsegv2{a} libssh2-1{a}
  libswitch-perl libtext-unidecode-perl{a} libthai-data{a} libthai0{a} libtirpc1 libtokyocabinet9 liburi-perl{a}
  libverto-libev1{a} libverto1{a} libwebp5{a} libwebpdemux1{a} libwebpmux1{a} libwgdb0 libwww-perl{a}
  libwww-robotrules-perl{a} libxcb-render0{a} libxcb-shm0{a} libxcomposite1{a} libxcursor1{a} libxdamage1{a}
  libxfixes3{a} libxi6{a} libxinerama1{a} libxml-libxml-perl{a} libxml-namespacesupport-perl{a}
  libxml-parser-perl{a} libxml-sax-base-perl{a} libxml-sax-expat-perl{a} libxml-sax-perl{a} libxrandr2{a}
  libxrender1{a} lsb-release{a} m4 mlocate mutt nfs-common patch pinentry-gtk2{a} procmail python-apt
  python-apt-common{a} python-chardet{a} python-debian{a} python-debianbts{a} python-defusedxml{a}
  python-docutils{a} python-pil{a} python-pkg-resources{a} python-pygments{a} python-reportbug python-roman{a}
  python-six{a} python-soappy{a} python-support python-wstools{a} reportbug rpcbind shared-mime-info{a} telnet
  texinfo time w3m whois xdg-user-dirs{a} xz-utils
0 paquets mis à jour, 165 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 40,5 Mo d'archives. Après dépaquetage, 151 Mo seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
Charger/installer/enlever des paquets.
root@hostname:~#

GRUB

À l'occasion d'une installation qui date déjà un peu, je me suis retrouvé avec un système qui ne pouvais pas booter sans la clef USB utilisée pendant l'installation parce que le système de démarrage « GRUB » avait été installé dessus au lieu du disque-dur. Depuis Wheezhy ou peut-être même Squeeze, l'installateur Debian gère parfaitement les clefs USB.

Jessie va plus loin en posant des questions et en donnant des explications claires sur l'installation du système de démarrage.

On peut choisir d'installer LILO au lieu de GRUB mais il est plus ancien et plus chatouilleux quand à la détection des systèmes d'exploitation.

Quelques vérifications

Kernel et mémoire

Il peut être utile de s'assurer que le kernel est capable de gérer la mémoire de la machine ou que par exemple toutes les barrettes de RAM fonctionnent :

root@hostname:~# free
             total       used       free     shared    buffers     cached
Mem:       3758016    1752380    2005636      28564     342820     712584
-/+ buffers/cache:     696976    3061040
Swap:      6369276          0    6369276

Je n'ai jamais été bon en calcul mental mais là vraiment, toutes ces divisions par 1024 pour avoir une idée précise des valeurs… Donc voyons en Mb :

root@hostname:~# free -m
             total       used       free     shared    buffers     cached
Mem:          3669       1704       1965         27        334        695
-/+ buffers/cache:        673       2996
Swap:         6219          0       6219

Voilà qui est bien plus lisible et on retrouve bien les 4Go de RAM installée et les 6 de swap (enfin des valeurs suffisament proche pour savoir que tout est OK). La commande free -g qui donne les résultats en Gb est vraiment trop approximative pour être exploitable.

Pour la petite histoire, jusqu'à Debian 6 « Squeeze », il fallait installer un kernel de type “BIGMEM” pour gérer plus de 2Go de RAM.
À partir de « Wheezy », il fallait un kernel estampillé PAE.
Avec le kernel AMD64, il n'y a pas de telle limite.

Pour vérifier la version du kernel installé :

root@hostname:~# uname -r
3.16.0-4-amd64

Sources de paquets

Les différents paquets proposés à l’installation sont placés sur des serveurs appelés les « dépôts », et c’est en définissant à quels dépôts votre système aura accès que vous délimiterez la diversité et les versions des programmes disponibles à l’installation sur votre Debian.

Cette liste de dépôts auquel votre système a accès est contenue dans un fichier essentiel à toute Debian : le fichier sources.list (/etc/apt/sources.list), ou dans le répertoire /etc/apt/sources.list.d/ sous formes de plusieurs fichiers. Wiki du forum debian-fr.org

Les anciennes version de l'installateur Debian laissaient dans le fichier /etc/apt/sources.list des traces gênantes du support d'installation (clef USB ou CD) qui empêchaient toute mise à jour ou installation (puisque le système cherchait d'abord à faire son installation à partir du support concerné). Les traces sont toujours là mais de manière inoffensive.

Par ailleurs, pour éviter de télécharger inutilement les listes des sources de paquets disponibles qui ne sont utiles que lorsque l'on souhaite compiler ses propres paquets, il faut aller éditer le fichier /etc/apt/sources.list et ajouter un # devant chaque ligne commençant par deb-src. Voici à quoi il ressemble par défaut avec Jessie :

root@hostname:/# cp /etc/apt/sources.list /etc/apt/sources.list.original
root@hostname:~# vi /etc/apt/sources.list
sources.list
#
 
# deb cdrom:[Debian GNU/Linux 8.0.0 _Jessie_ - Official amd64 NETINST Binary-1 20150425-12:50]/ jessie main
 
#deb cdrom:[Debian GNU/Linux 8.0.0 _Jessie_ - Official amd64 NETINST Binary-1 20150425-12:50]/ jessie main
 
deb http://ftp.fr.debian.org/debian/ jessie main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ jessie main non-free contrib
 
deb http://security.debian.org/ jessie/updates main contrib non-free
#deb-src http://security.debian.org/ jessie/updates main contrib non-free
 
# jessie-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ jessie-updates main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ jessie-updates main contrib non-free

La présence par défaut des dépôts contrib et non-free date de Jessie. Les puristes qui veulent du 100% Open Source devront les supprimer à la main mais c'est réellement un choix militant. Un exemple parmi tant d'autres : il sera impossible d'obtenir les firmware des cartes réseau Realtek…

Et voilà!… Le système est prêt…

Minimum vital

Aptitude

L'outil de mise à jour intégré à Debian est apt-get mais je lui préfère aptitude qui se base dessus mais apporte des fonctions très utile comme la recherche de paquets, l'affichage d'infos pertinente, de version d'un paquet, etc.

Avant un exemple, il faut l'installer :

root@hostname:~# apt-get install aptitude
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Paquets suggérés :
  debtags apt-xapian-index
Les NOUVEAUX paquets suivants seront installés :
  aptitude
0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 1 506 ko dans les archives.
Après cette opération, 4 862 ko d'espace disque supplémentaires seront utilisés.
Réception de : 1 http://ftp.fr.debian.org/debian/ jessie/main aptitude amd64 0.6.11-1+b1 [1 506 kB]
1 506 ko réceptionnés en 3s (491 ko/s)
Sélection du paquet aptitude précédemment désélectionné.
(Lecture de la base de données... 31298 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../aptitude_0.6.11-1+b1_amd64.deb ...
Dépaquetage de aptitude (0.6.11-1+b1) ...
Traitement des actions différées (« triggers ») pour man-db (2.7.0.2-5) ...
Paramétrage de aptitude (0.6.11-1+b1) ...
update-alternatives: utilisation de « /usr/bin/aptitude-curses » pour fournir « /usr/bin/aptitude » (aptitude) en mode automatique

Aptitude versus apt-get

Prenons l'exemple sur un système doté d'une interface graphique est Synaptic. Voici un petit test avec une faute volontaire pour simuler le cas courant où on ne se souviens pas ou on ne connait pas le nom exact d'un paquet :

root@hostname:~# apt-get install synapt
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
E: Impossible de trouver le paquet synapt
root@hostname:~# aptitude install synapt
Impossible de trouver le paquet « synapt ». Cependant, les
paquets suivants comportent « synapt » dans leur nom :
  xserver-xorg-input-synaptics-dbg xserver-xorg-input-synaptics xserver-xorg-input-synaptics-dev
  xorg-driver-synaptics synaptic
Impossible de trouver le paquet « synapt ». Cependant, les
paquets suivants comportent « synapt » dans leur nom :
  xserver-xorg-input-synaptics-dbg xserver-xorg-input-synaptics xserver-xorg-input-synaptics-dev
  xorg-driver-synaptics synaptic
Aucun paquet ne va être installé, mis à jour ou enlevé.
0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 0 o d'archives. Après dépaquetage, 0 o seront utilisés.

Un autre… Le fameux site web, c'est Apache ou Appache ? Bon dans le doute, essayons pache :

root@hostname:~# apt-get install pache
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
E: Impossible de trouver le paquet pache
root@hostname:~# aptitude install pache
Impossible de trouver le paquet « pache » et plus de 40
paquets comportent « pache » dans leur nom.
Impossible de trouver le paquet « pache » et plus de 40
paquets comportent « pache » dans leur nom.
Aucun paquet ne va être installé, mis à jour ou enlevé.
0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 0 o d'archives. Après dépaquetage, 0 o seront utilisés.

Avec apt-get, on est définitivement dans les cordes alors qu'avec aptitude on a une bonne piste (« plus de 40 paquets comportent « pache » dans leur nom ») et le moyen de l'exploiter :

root@hostname:~# aptitude search pache
p   ampache                                             - système de gestion de fichiers audio pour le web
p   ampache-common                                      - système de gestion de fichiers audio pour le web - fichiers co
p   ampache-themes                                      - thèmes pour Ampache
i   apache2                                             - Serveur HTTP Apache
v   apache2-api-20120211                                -
i A apache2-bin                                         - Serveur HTTP Apache (modules et autres fichiers binaires)
i A apache2-data                                        - Serveur HTTP Apache - fichiers communs
p   apache2-dbg                                         - symboles de débogage pour Apache
p   apache2-dev                                         - Apache HTTP Server (development headers)
.../...
p   rhythmbox-ampache                                   - play audio streams from an Ampache server
p   rt4-apache2                                         - Apache 2 specific files for request-tracker4
v   torrus-apache2                                      -

Et aptitude a de nombreuses autres possibilités et il suffit de cette commande pour s'en convaincre :

root@hostname:~# aptitude -h

Voici maintenant, à mes yeux, le seul point sur lequel apt-get bat aptitude à plate couture :

root@hostname:~# apt-get --help | grep -i cow
                      Cet APT a les « Super Cow Powers »
root@hostname:~# aptitude --help | grep -i cow
                 Cet aptitude n'a pas de « Super Cow Powers ».

Je vous invite à creuser la question ou à demander à un ami LOL.

Vim

Certains se contenteront de vi mais je préfère son petit frère:

root@hostname:~# aptitude install vim

Activer ensuite la coloration syntaxique avec le thème “désert” qui utilise des couleurs plus lisibles (il faut rechercher la première ligne et ajouter la seconde):

root@hostname:/# cp /etc/vim/vimrc /etc/vim/vimrc.original
root@hostname:~# vi /etc/vim/vimrc

Il faut décommenter la ligne syntax on et ajouter la ligne colorscheme :

.../...
syntax on
colorscheme desert
.../...

Première mise à jour

Normalement, le système est parfaitement à jour puisque nous sommes passés par une installation depuis internet mais les commandes qui suivent vont permettre de s'assurer que le système fonctionne correctement et accède bien à internet:

root@hostname:~# aptitude update && aptitude upgrade

Paquets recommandés

Parfois, lors d'une mise à jour, aptitude indique une liste de paquets recommandés. Il est évidement fortement conseillé de jeter systématiquement un œil à cette éventuelle liste.

Les paquets suivants seront mis à jour :
  base-files dbus libdbus-1-3 libgnutls-deb0-28 libgnutls-openssl27 libsystemd0 libudev1 linux-image-3.16.0-4-amd64
  perl perl-base perl-modules systemd systemd-sysv task-french task-ssh-server tasksel tasksel-data udev
Les paquets suivants sont RECOMMANDÉS mais ne seront pas installés :
  firmware-linux-free irqbalance libpam-systemd
18 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 45,3 Mo d'archives. Après dépaquetage, 45,1 ko seront utilisés.
Voulez-vous continuer ? [Y/n/?] y

Mais ils ne sont pas indispensables… Donc il faut vérifier le descriptif pour ne pas installer n'importe quoi.

Dans l'exemple ci-dessus, c'est toujours une bonne idée d'installer le paquet firmware-linux-free qui contiens tous les firmwares open source possibles. Le descriptif de irqbalance indique une meilleure gestion des IRQ avec les processeurs multi-cores ce qui est le cas de celui qui équipe mon serveur. Par contre, j'attends d'en savoir plus sur SystemD avant d'installer libpam-systemd.

À la recherche du fichier perdu

Au moment d'une mise à jour, Debian lance parfois des messages un peu déroutants à propos de firmware(s) manquant(s) alors que tout semble fonctionner…

Ici par exemple un problème de firmware de carte réseau sur une ancienne carte-mère (alors que l'accès réseau fonctionnait) :

update-initramfs: Generating /boot/initrd.img-3.2.0-4-686-pae
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168f-2.fw for module r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168f-1.fw for module r8169
.../...

Le problème est donc de trouver quel paquet installer pour obtenir le ou les fichiers manquants et c'est exactement le rôle de apt-file.

root@hostname:~# aptitude install apt-file

Ce paquet à besoin d'une liste à jour des fichiers existants qu'il faut mettre à jour à partir des dépôts actifs avant chaque utilisation :

root@hostname:~# aptitude install apt-file

Il ne reste plus qu'à rechercher le paquet nécessaire, dans mon cas:

root@hostname:~# apt-file search rtl8168f-2.fw
firmware-realtek: /lib/firmware/rtl_nic/rtl8168f-2.fw

Le paquet qui manque ici et qu'il suffit d'installer est donc firmware-realtek.

Dans ce cas précis, si le dépôt “non-free” n'avait pas été ajouté au fichier sources.list avant la mise à jour de la base de données d'apt-file la commande n'aurait renvoyé aucun résultat.

Paquets non mis à jour

La commande aptitude upgrade indique parfois que certains paquets nécessitent une attention particulière pour être mis à jour et ne seront pas modifiés: Pour mettre à jour ces paquets, il faut utiliser cette commande:

root@hostname:~# aptitude full-upgrade

…/…
full-upgrade : mettre à jour les paquets dans leur version la plus récente, en supprimant ou installant autant de paquets que nécessaire. Cette commande est moins conservatrice que safe-upgrade et donc a plus de chance de provoquer des actions inattendues.
…/… man aptitude

la commande aptitude dist-upgrade est rigoureusement identique mais tout simplement plus ancienne

Un peu de couleurs et alias utiles

Par défaut, la console de l'utilisateur root est très austère avec tout ce texte blanc sur fond noir. On peut aller très très loin dans la colorisation du prompt (au point de piquer les yeux 😶) et il n'est pas question de cela ici, par contre la colorisation des résultats des commandes ls est indispensable (et d'ailleurs prévue puisqu'il suffit de décommenter quelques ligne d'un fichier) pour distinguer rapidement les fichiers des dossiers et de repérer les liens symboliques.

Les alias permettent de modifier les options par défaut apliquées avec certaines commandes. C'est particulièrement utile en tant que root pour éviter de commettre des bêtises avec la commande rm :

root@hostname:~# cp /root/.bashrc /root/.bashrc.original
root@hostname:~# vi /root/.bashrc
.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
 
# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022
 
# You may uncomment the following lines if you want `ls' to be colorized:
 export LS_OPTIONS='--color=auto -a'
 eval "`dircolors`"
 alias ls='ls $LS_OPTIONS'
 alias ll='ls $LS_OPTIONS -l'
 alias l='ls $LS_OPTIONS -lA'
 
# Some more alias to avoid making mistakes:
 alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'

notez que la ligne export LS_OPTIONS… est modifiée pour ajouter systématiquement le commutateur -a en plus d'être décommentée

Et voici un petit exemple comparatif en image :

Scripts et variable PATH

L'idée est de choisir où placer tous les petits scripts (ou les gros) que tout administrateur système est amené à écrire… La Filesystem_Hierarchy_Standard (Filesystem Hierarchy Standard) dis ceci :

/usr/local/sbin ⇒ custom script meant for root
/usr/local/bin ⇒ custom script meant for all users including non-root

Et Debian précise que le dossier /usr/local « est réservé à l'usage privé de l'administrateur système ».

Malheureusement quelques paquets ne respectent pas ces conventions et s'installent dans ces répertoires. Donc plutôt que de devoir chercher mes scripts aux milieu de tout un fatras de fichiers, je préfère les isoler à un endroit dont je suis le seul à avoir la maîtrise. Le seul problème que cela pose (en dehors du risque de se faire traiter d'iconoclaste par un psychorigide des conventions 😃) est qu'il faut ajouter le chemin en question à la variable d'environnement PATH afin de pouvoir les lancer sans taper le chemin complet.

On peut modifier cette variable d'environnement pour tous les utilisateurs qui se connectent au système en modifiant le fichier /etc/bash.bashrc ou uniquement pour le root en modifiant le fichier /root/.bashrc. Il suffit d'y ajouter la ligne suivante (dans les deux cas juste sous la première ligne de commentaire par exemple) :

export PATH="$PATH:/mon/chemin/scripts"

Attention : si le chemin n'est pas sur le disque système, les scripts ne seront pas forcément disponibles très tôt pendant le démarrage du système. Ce n'est pas forcément problématique mais c'est à prendre en considération

Il ne lui manque que la voix

Avant de commencer

Contrairement à ce que l'on pourrait penser, il est bien utile de pouvoir émettre des sons sur un serveur « headless » lors de certains événements, ne serait-ce que pour signaler la fin d'une procédure de démarrage.
Comme la reconnaissance du hardware est une faiblesse de Linux, il faut impérativement s'assurer que le système est à jour pour diminuer le risque de problèmes:

root@hostname:~# aptitude update && aptitude upgrade

C'est parti

root@hostname:~# aptitude install alsa-base alsa-utils

Par défaut, le volume de certaines voix audio (ou de toutes), peut être au minimal ou même coupé et on ne risque pas d'entendre quoi que ce soit.

root@hostname:~# alsamixer

Ici, la voix “Headphone” est en mode mute avec un volume à 0, la voix “PCM” est en mode mute avec un volume à 100, la voix “Front” est en mode normal mais son volume est à 0, … Dans un premier temps, le plus simple est de passer sur chaque voix pour mettre le volume au maximum (avec les touches directionnelles du clavier), et, le cas échéant, de désactiver le mode mute (avec la touche [M] une fois la voix concernée sélectionnée. Une fois que c'est fait, la touche [ESCAPE] permet de quitter l'égaliseur et il ne reste qu'à tester:

root@hostname:~# speaker-test

Si un ignoble crachotement se fait entendre, c'est gagné ! 😯
On peut retourner dans l'égaliseur pour faire quelques tests et désactiver les voix inutiles (avec l'ancienne carte mère Jetway comme avec la nouvelle ASRock, les voix utiles sont: “Master”, “PCM” et “Front”).
Un autre petit test (nettement moins désagréable pour les oreilles) consiste à jouer un fichier audio :

root@hostname:~# aplay /chemin/vers/une/source/fichier.wav
os/debian/base.txt · Dernière modification: 2016/11/26 16:43 par Admin