== La Base == {{tag>debian os serveur install stretch scripts grub kernel aptitude moo}} ====== Les branches de Debian ====== C'est l'une des notions perturbantes lorsque l'on découvre [[http://www.debian.org/index.fr.html|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 [[http://www.disney.fr/films/toy-story|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 9 et le nom de code **« Stretch »** (la pieuvre du 3e opus). *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 **« Buster »** (le chien de la famille). *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 8 nommée **« Jessie »** (la cow-girl). *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, [[wp>fr:Debian#Historique_des_versions|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? ===== La première mouture réellement aboutie de mon serveur jouait bien plus de rôles que la version actuelle et en particulier celui de routeur WiFi. C'était environ un an après la sortie de la version 5 de Debian qui comptait à ce moment là un énorme retard sur ce type de techno et la version stable était, à l'époque, loin de pouvoir remplir ce rôle donc j'ai utilisé **« Sid »** environ 2 ans et on comprends vite le choix du nom de code : c'est imprévisible et violent si l'on est pas prudent. LOL J'ai aujourd'hui moins de temps à passer à examiner les mises à jour et je roule maintenant en branche **//stable//** 8-). D'abord **« Jessie »** puis **« Stretch »**: 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. ====== 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 [[http://www.debian.org/distrib/|le site français officiel de Debian]] puis d'utiliser un outil du type [[http://unetbootin.sourceforge.net/|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 [[http://askubuntu.com/questions/54296/difference-between-the-i386-download-and-the-amd64|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, depuis //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 ([[archives:info:os:debian:base#Aptitude|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@muffin:~# 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@muffin:~# Avec //**Stretch**//, j'ai été plus large et j'ai aussi directement installé les "Outils standards" 8-) ===== 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. Mais depuis **//Jessie//**, les questions et les explications qui vont avec l'installation du système de démarrage sont assez claires pour qu'il suffise de se laisser guider. ====== 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@muffin:~# 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@muffin:~# 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@muffin:~# 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. [[https://www.isalo.org/wiki.debian-fr/Sources_de_paquets_:_les_bases|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 **//Stretch//** (et personellement, j'ajoute aussi les dépôts ''contrib'' et ''non-free'') : root@muffin:/# cp /etc/apt/sources.list /etc/apt/sources.list.original root@muffin:~# vi /etc/apt/sources.list # # deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 NETINST 20171209-12:10]/ stretch main #deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 NETINST 20171209-12:10]/ stretch main deb http://ftp.fr.debian.org/debian/ stretch main contrib non-free #deb-src http://ftp.fr.debian.org/debian/ stretch main deb http://security.debian.org/debian-security stretch/updates main contrib non-free #deb-src http://security.debian.org/debian-security stretch/updates main # stretch-updates, previously known as 'volatile' deb http://ftp.fr.debian.org/debian/ stretch-updates main contrib non-free #deb-src http://ftp.fr.debian.org/debian/ stretch-updates main Les puristes qui veulent du 100% [[wpfr>Open_source|Open Source]] devront évidement ne garder que le dépôt ''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 (le paquet ''firmware-realtek'' qui est en ''non-free'')... Et voilà!... Le système est prêt... ====== Minimum vital ====== ===== Aptitude ===== L'outil de mise à jour intégré à //Debian// est ''apt-get'' (ou sans doute plutôt ''apt''), 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@muffin:~# 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@muffin:~# 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@muffin:~# 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@muffin:~# 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@muffin:~# 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@muffin:~# 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@muffin:~# aptitude -h Voici maintenant, à mes yeux, le seul point sur lequel ''apt-get'' bat ''aptitude'' à plate couture : root@muffin:~# apt-get --help | grep -i cow Cet APT a les « Super Cow Powers » root@muffin:~# aptitude --help | grep -i cow Cet aptitude n'a pas de « Super Cow Powers ». Je vous invite à creuser la question en faisant une petite recherche sur la toile LOL. ===== Vim ===== Certains se contenteront de //vi// mais je préfère son petit frère: root@muffin:~# 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@muffin:/# cp /etc/vim/vimrc /etc/vim/vimrc.original root@muffin:~# vi /etc/vim/vimrc Il faut décommenter la ligne ''syntax on'' et ajouter la ligne ''colorscheme'' : .../... syntax on colorscheme desert .../... ==== A partir de Stretch ==== Par défaut, un clic-droit ne colle plus le contenu du presse-papier mais bascule en mode //Visual//. Pour changer ce comportement par défaut, il suffit normalement de créer un fichier ''~/.vimrc'' vide (ou, s'il existe déjà, d'y ajouter une ligne ''set mouse-=a''). ===== 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@muffin:~# 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 [[https://packages.debian.org/search?keywords=fr|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@muffin:~# 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@muffin:~# apt-file update Il ne reste plus qu'à rechercher le paquet nécessaire, dans mon cas: root@muffin:~# 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 //[[archives:info:os:debian:base#Sources de paquets|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: {{ archives:info:os:debian:base_full-upgrade.jpg |}} Pour mettre à jour ces paquets, il faut utiliser cette commande: root@muffin:~# 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 :-x) 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@muffin:~# cp /root/.bashrc /root/.bashrc.original root@muffin:~# vi /root/.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 : {{ archives:info:os:debian:base_bash_n_b_couleurs.jpg |}} ===== 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 [[wpfr>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'' « [[https://www.debian.org/doc/manuals/maint-guide/modify.fr.html#destdir|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 :-D) 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@muffin:~# aptitude update && aptitude upgrade ===== C'est parti ===== root@muffin:~# aptitude install alsa-utils Avec **Jessie**, il fallait aussi installer le paquet ''alsa-base'' mais il n'existe plus et cela fonction sans... 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@muffin:~# alsamixer {{ archives:info:os:debian:base_alsamixer_defaut.jpg |}} 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@muffin:~# speaker-test Si un ignoble crachotement se fait entendre, c'est gagné ! 8-o\\ 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@muffin:~# aplay /chemin/vers/une/source/fichier.wav