Installation de Linux et des logiciels
Installer une Ubuntu
1. Support d’installation
Voici comment, étape par étape, installer une distribution Ubuntu. La version LTS 20.04 Focal Fossa sortant en avril 2020, cette installation se base sur la version 19.10 Server (non LTS) disponible lors de l’écriture de la sixième édition de ce livre. Elle est très proche de la version LTS, incluant notamment le nouvel installateur et le gestionnaire de paquetages Snappy. L’installation est effectuée en mode texte, ce qui est la meilleure méthode pour un serveur en entreprise. Pour l’installation en mode graphique, téléchargez la version Desktop. L’installation se fera depuis un support ISO ubuntu-19.10-live-server-amd64.iso. Si vous souhaitez effectuer la même installation, vous pouvez récupérer l’image ISO (ici en version 64 bits) depuis ce lien : http://releases.ubuntu.com/eoan/
Les versions précédentes (depuis la 12.04 à l’écriture de cette édition) restent accessibles depuis le lien http://releases.ubuntu.com/. Gravez cette image comme CD ou clé USB, ou utilisez cette image ISO pour démarrer une machine virtuelle. Pour les besoins de ce livre, Debian a été installé dans une machine virtuelle VirtualBox 6.1, qui est un produit gratuit, disponible sous Linux, Windows et MacOS, et dont il existe une version libre. C’est l’idéal pour tester des dizaines de distributions et de configurations sans écraser le disque dur de son ordinateur. La configuration de la machine virtuelle est la suivante :
-
2 VCPUs (1 VCPU possible)
-
4 Go de RAM (deux sont possibles)
-
20 Go de disque (pour les futurs exemples) (2 Go possibles)
-
Contrôleur graphique VMSVGA
-
Système de pointage Tablette USB
-
Accès NAT et réseau par pont (pour pouvoir se connecter en SSH depuis son réseau personnel).
Le second réseau ponté est facultatif si vous décidez d’associer un port réseau de l’hôte à celui de la machine virtuelle pour l’accès SSH, par exemple le port 2222 sur le port 22. Pour cela, vous irez dans les propriétés réseau de la machine virtuelle, et dans la configuration du premier adaptateur NAT, vous éditerez la redirection de ports dans les options avancées.
Vous pourrez...
Installation de CentOS
1. Support d’installation
Voici maintenant, selon le même modèle, l’installation pas à pas d’une distribution basée sur des packages au format RPM avec un installateur en mode graphique. Moins sobre que Ubuntu, mais plus étendue, l’installation d’une distribution CentOS est identique à l’installation d’une Red Hat en entreprise.
L’installation a été effectuée dans une machine virtuelle VirtualBox paramétrée de la même manière que pour Ubuntu à l’exception du choix de Red Hat (64 bits) dans l’assistant de configuration. Si vous souhaitez installer la même distribution, rendez-vous sur le site https://www.centos.org/download/.
L’installation a été effectuée depuis une image ISO minimale de CentOS 8, téléchargée depuis ce lien : https://mirrors.ircam.fr/pub/CentOS/8/isos/x86_64/CentOS-8.1.1911-x86_64-boot.iso
Utilisez obligatoirement Tablette USB comme système de pointage, l’installateur rencontre des problèmes si on redimensionne l’écran pendant l’installation avec les autres systèmes. De même, utilisez VMVBOX comme adaptateur graphique, sinon vous obtiendrez un plantage au moment de l’installation du gestionnaire de démarrage. Pour les captures, VboxSVGA a été utilisé.
2. Boot sur le support
Configurez votre ordinateur pour qu’il démarre sur le support et bootez dessus.

Écran d’accueil du support d’installation CentOS
L’écran d’accueil du support d’installation offre de multiples options. La première entrée permet d’installer ou de mettre à jour le système, la seconde de tester le support puis d’installer le système. L’entrée Troubleshooting permet d’accéder à un menu supplémentaire proposant une installation en utilisant un pilote graphique basique compatible avec toutes les cartes graphiques, un démarrage sur une image système de secours fournie avec le support d’installation, ou encore un test de la mémoire.
Ainsi, il est possible de réparer son système même s’il est impossible de démarrer depuis le disque dur. Le boot sur disque...
Red Hat Package Manager
1. Notion de package
Contrairement à d’autres systèmes d’exploitation, il n’est pas courant sur Linux et Unix en général de disposer de logiciels fournis avec un programme l’installation interactif (pas de install.exe). Certains éditeurs proposent des scripts d’installation et bien souvent ceux-ci se contentent de décompresser et de désarchiver quelques fichiers.
Avec Linux, il est très classique de disposer des divers produits, outils, mises à jour, etc. sous forme de packages (paquetages). Un package est un fichier qui contient le produit à installer et des règles. Selon son contenu, sa taille peut être très imposante. Le noyau et tous ses modules sont par exemple fournis sous cette forme. Les règles peuvent être multiples :
-
Gestion des dépendances : le produit ne pourra être installé que si les produits qu’il utilise sont eux-mêmes déjà présents.
-
Pré-installation : des actions sont à prévoir avant de pouvoir installer le produit (changer des droits, créer des répertoires, etc.).
-
Post-installation : des actions sont à prévoir après l’installation du produit (paramétrage d’un fichier de configuration, compilation annexe, etc.).
Sur Les distributions Red Hat, SuSE et leur dérivés (CentOS, Fedora, OpenSUSE...), le format de package par défaut est le RPM (Red Hat Package Manager). Sous Debian et ses dérivés (Ubuntu...) c’est le format DPKG (Debian Package). Outre le format, ce sont surtout les outils qui les différencient.
Le fait de disposer des informations de dépendances permet d’obtenir des outils performants qui peuvent seuls les résoudre en cascade. En installant un package, l’outil pourra installer toutes les dépendances nécessaires. On peut parfois spécifier plusieurs emplacements (dépôts, repositories) pour ces packages, soit locaux (disque dur, CD-Rom, DVD, etc.) soit distants (HTTP, FTP, NFS, etc.).
Il faut privilégier un package prévu pour sa distribution quand il existe. Si ce n’est pas le cas, il est parfois possible d’utiliser un package d’un produit concurrent ou de recompiler le produit soi-même.
Les mises à...
YUM
YUM est aux fichiers rpm ce que APT est aux fichiers dpkg : un logiciel de gestion de packages. Il récupère les packages au sein de dépôts et gère les dépendances à votre place. YUM signifie Yellow dog Updater Modified. Il est principalement utilisé sur les distributions Red Hat (les version Entreprise) et Fedora, mais peut être utilisé sur n’importe quelle distribution de type RPM, si les dépôts associés le supportent.
Note importante : depuis les versions 8 de Red Hat Enterprise Linux 8 et CentOS 8, yum est devenu un alias de la commande dnf, qui la remplace et est entièrement compatible.
$ ls -l /usr/bin/yum
lrwxrwxrwx. 1 root root 5 19 déc. 16:43 /usr/bin/yum -> dnf-3
Les commandes et exemples suivants se basent sur un serveur CentOS en version 8. Le fichier de configuration est /etc/yum.conf.
1. Configuration des dépôts
Red Hat Enterprise Linux 8 et CentOS 8 acceptent des dépôts supplémentaires à ceux déjà présents par défaut. C’est par exemple le cas du dépôt EPEL qui ajoute de nombreux packages absents des distributions.
Les dépôts sont placés soit dans le fichier de configuration principal, soit dans le répertoire /etc/yum.repos.d. Le format est le suivant :
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
#baseurl=https://download.fedoraproject.org/pub/epel/$releasever/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=
epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever
Le dépôt se nomme (nom court) epel et contient :
-
name : le nom long du dépôt, détaillé.
-
baseurl : l’URL du dépôt.
-
Metalink (ou mirrorlist) : plutôt que de fournir une URL précise, mirrorlist pointe vers une liste d’URL. Charge à YUM de trouver le plus rapide.
-
gpgcheck : demande une vérification de la signature GPG du dépôt.
-
enabled : si absent ou à 1, le dépôt est actif.
-
gpgkey : chemin de la clé publique GPG.
-
failovermethod : bientôt déprécié par dnf, indique...
Debian Package
1. dpkg : le gestionnaire de paquets Debian
La commande dpkg est le pendant de rpm pour les distributions Debian et dérivées, dont Ubuntu. Elle fait la même chose, ou presque, que rpm. Les packages Debian portent une extension .deb pour les reconnaître et disposent des mêmes informations et moyens qu’un package rpm. La commande dpkg est chargée de l’installation, la création, la suppression et la gestion des paquets Debian.
La base de données dpkg est généralement placée dans /var/lib/dpkg. Les fichiers qui y sont présents sont au format texte. Cependant n’éditez pas les fichiers à la main. Le fichier /var/lib/dpkg/status contient l’intégralité des packages connus par dpkg avec leur état.
# grep ^Package: /var/lib/dpkg/status | grep linux
Package: binutils-x86-64-linux-gnu
Package: console-setup-linux
Package: libselinux1
Package: linux-base
Package: linux-firmware
Package: linux-generic
Package: linux-headers-5.3.0-26
...
2. Installation, mise à jour et suppression
L’option -i, ou --install, installe les packages passés en argument.
# dpkg -i monpaquet.deb
Notez que comme rpm, dpkg ne gère pas seul les dépendances. S’il manque des dépendances, la commande vous en informera. Dans ce cas, vous devez installer les dépendances de la même manière avant d’installer votre package.
Vous pouvez demander l’installation de tous les packages présents au sein d’une arborescence avec le paramètre -R, pour récursif. Dans ce cas, indiquez comme argument un nom de répertoires : tous les packages présents dans le répertoire et ses sous-répertoires seront installés.
# dpkg -R folder
La mise à jour s’effectue de la même manière que l’installation, avec le -i. Si vous installez un package déjà présent, dpkg en effectue une mise à jour. Ainsi, une installation ou une mise à jour respectent la méthodologie suivante :
-
Extraction des fichiers de contrôle du nouveau paquet.
-
Quand une ancienne version du même paquet est déjà installée, exécution du script pré-suppression de l’ancien paquet.
-
Lancement du script de pré-installation...
Gestionnaire APT
1. Principe
Que ce soit avec rpm ou dpkg le problème est le même : ces deux outils contrôlent les dépendances des packages pour autoriser ou non leur installation, mais ne les gèrent pas. Autrement dit, si une dépendance sur un package est absente, il ne sera pas installé, sauf si la dépendance est résolue :
-
Soit en installant auparavant les packages manquants,
-
Soit en indiquant sur la même ligne le chemin de ces mêmes packages.
De même lors d’une mise à niveau il se pose un problème avec les fichiers de configuration. Que faut-il en faire ?
APT permet de résoudre ces problèmes en gérant les dépendances à votre place. APT signifie Advanced Packaging Tool. Au lieu de spécifier un paquet (local ou distant), il prend en charge des dépôts de packages situés sur un CD, un DVD, dans un répertoire local, sur une source distante sur Internet (FTP, HTTP), etc.
Un dépôt contient un ensemble de packages qui dépendent soit les uns des autres, soit d’autres packages en provenance d’autres dépôts. APT peut gérer plusieurs dépôts, à divers endroits. Il se débrouille seul : lorsque vous installez un package, il installe aussi ses dépendances (s’il les trouve).
2. Les dépôts
a. Configuration
Les dépôts sont indiqués dans le fichier /etc/apt/sources.list et également dans les fichiers présents dans /etc/apt/sources.list.d. Le fichier suivant provient d’une installation Ubuntu Xenial, dont les commentaires et lignes vides ont été ignorés :
# cat /etc/apt/sources.list |egrep -v "^(#|$)"
deb http://fr.archive.ubuntu.com/ubuntu eoan main restricted
deb http://fr.archive.ubuntu.com/ubuntu eoan-updates main restricted
deb http://fr.archive.ubuntu.com/ubuntu eoan universe
deb http://fr.archive.ubuntu.com/ubuntu eoan-updates universe
deb http://fr.archive.ubuntu.com/ubuntu eoan multiverse
deb http://fr.archive.ubuntu.com/ubuntu eoan-updates multiverse
deb http://fr.archive.ubuntu.com/ubuntu eoan-backports main restricted universe multiverse
deb http://fr.archive.ubuntu.com/ubuntu eoan-security main restricted
deb http://fr.archive.ubuntu.com/ubuntu...
Gestionnaire aptitude
1. apt ou aptitude ?
Aptitude est un gestionnaire de packages Debian avec une interface en mode texte. Il se substitue à APT (et apt-get), qu’il peut remplacer. Sur un même système, vous pouvez utiliser l’un ou l’autre, ou les deux en même temps.
Pourquoi aptitude ? De l’avis de nombreux utilisateurs, APT n’est pas parfait. L’argument le plus avancé est sa gestion des dépendances, car si l’un comme l’autre installeront correctement votre package, une différence flagrante est visible lors de la désinstallation.
APT :
-
apt-get remove va supprimer le package mais pas ses dépendances, même non utilisées. Il faudra jouer apt-get autoremove ou autoclean.
-
APT vient avec environ vingt commandes (dont apt-get et apt-cache) pour gérer l’ensemble des possibilités.
-
APT n’a pas de shell interactif.
Aptitude :
-
aptitude va supprimer le package et ses dépendances si elles ne sont plus utilisées.
-
aptitude n’a qu’une seule commande unifiée.
-
la commande aptitude, lancée seule, propose un shell interactif.
Ce ne sont que quelques différences. Les utilisateurs de Debian sont plus enclins à utiliser aptitude, tandis que les utilisateurs Ubuntu utilisent plus souvent APT. C’est une question de choix.
2. Installation
Sous Debian, aptitude est installé...
Zypper
Zypper est une commande (un CLI) faisant appel à la bibliothèque ZYpp (libzypp) et permettant d’installer, mettre à jour et supprimer des logiciels (packages), ainsi que les dépôts correspondants. Les packages sont au format rpm, ce qui fait de Zypper un équivalent à YUM ou DNF. Zypper est utilisé par SUSE Linux, et sa version libre openSUSE.
On peut signaler que la bibiothèque qui gère les dépendances pour Zypper a été réutilisée par Red Hat pour DNF.
L’utilisation de Zypper peut dérouter, mais son approche est probablement la meilleure : elle évite les accidents. En effet, lorsque vous disposez de plusieurs sources (dépôts) de package, Zypper conserve trace des dépôts qui ont servi de source d’installation pour chaque application. Lors d’une mise à jour, cette information (ou plutôt celle du distributeur, vendor), lui permet de mettre à jour les packages qui proviennent du même distributeur, même si une version plus récente est disponible sur un autre dépôt. Dans ce dernier cas, il faudrait autoriser Zypper à changer de source.
Voici un aperçu de l’utilisation de Zypper.
1. Gestion des dépôts
Tout comme APT ou YUM, Zypper utilise des dépôts. Les fichiers de configuration sont dans /etc/zypp/repos.d et portent le suffixe « .repo ».
linux-bkel:/etc/zypp/repos.d # ls -l
total 44
-rw-r--r-- 1 root root 173 Jan 19 21:18 openSUSE-Leap-15.1-1.repo
-rw-r--r-- 1 root root 189 Jan 19 21:18 repo-debug-non-oss.repo
-rw-r--r-- 1 root root 193 Jan 19 21:18 repo-debug-update-non-oss.repo
-rw-r--r-- 1 root root 172 Jan 19 21:18 repo-debug-update.repo
-rw-r--r-- 1 root root 167 Jan 19 21:18 repo-debug.repo
-rw-r--r-- 1 root root 175 Jan 19 21:18 repo-non-oss.repo
-rw-r--r-- 1 root root 169 Jan 19 21:18 repo-oss.repo
...
Voici le contenu du fichier repo-oss.repo. Il ressemble beaucoup à celui d’un dépôt YUM, et utilise aussi des alias.
linux-bkel:/etc/zypp/repos.d # cat repo-oss.repo
[repo-oss]
name=Dépôt principal
enabled=1
autorefresh=1
baseurl=http://download.opensuse.org/distribution/leap/$releasever/repo/oss/
path=/
type=rpm-md ...
Snappy
1. Images logicielles
Lors de l’installation de Ubuntu, une section de l’installateur propose l’ajout de packages Snap. Ceux-ci sont en fait gérés par Snappy, un produit permettant de déployer des logiciels, et un gestionnaire de packages différent de rpm ou dpkg.
Snap est une image de système de fichiers compressée, au format Squashfs, contenant tout le nécessaire (l’application et ses dépendances) pour faire tourner une application. L’image peut être téléchargée localement ou depuis un store, puis instanciée (démarrée). Il s’agit en fait d’un conteneur, comme par exemple ce que fait Docker. Les applications ainsi installées utilisent des mécanismes d’isolation.
Un service appelé snapd tourne en tâche de fond. La commande snap permet de gérer les packages snap : lister, installer, supprimer, mettre à jour, démarrer, arrêter… C’est donc à la fois un gestionnaire de packages comme APT ou YUM, et une application contrôlant l’environnement d’exécution.
Les images sont montées via un périphérique de loopback dans un répertoire au sein de /snap.
L’idée est intéressante, en simplifiant par exemple les dépendances multiples et en se rapprochant de ce qui existe sur d’autres systèmes (comme MacOS) pour isoler des applications. Le modèle, prometteur, peut sembler un peu lourd et gourmand en ressources. En mélangeant Snap et APT, on se retrouve parfois avec des doublons, voire plus. Pourtant, c’est probablement l’avenir, et grace à ce système, on peut par exemple disposer de plusieurs versions d’une même application, ou d’un langage, sans aucun risque de conflit.
Si vous êtes intéressé, vous pouvez vous orienter vers d’autres projets, entièrement libres, comme Zero Install.
2. Utiliser Snap
Pour chercher un package Snap, utilisez find :
$ snap find sudoku
Nom Version Auteur Notes Résumé
sudoku-game 1.0 1bsyl - Sudoku...
Installer depuis les sources
1. Obtenir les sources
Il n’est parfois pas possible d’obtenir un logiciel ou une bibliothèque depuis un package pour sa distribution. Dans ce cas, il reste la solution de compiler et d’installer soi-même le produit depuis les sources.
C’est possible pour une majorité de produits sous Linux, grâce aux avantages des logiciels libres et de la licence GPL telle que définie au premier chapitre, ou d’autres licences libres. Tout logiciel libre est fourni avec ses sources. Il est donc possible de reconstruire soi-même le logiciel en le recompilant.
Une archive source est souvent récupérée sur divers sites Internet comme par exemple SourceForge ou GitHub. C’est une archive bien souvent compressée au format tgz (archive tar compressée avec gzip) ou tar.bz2 (archive tar compressée au format bzip2). Elle contient :
-
le code source sous forme de fichiers .c, .h, .cpp, etc., selon le langage.
-
parfois un fichier Makefile permettant d’automatiser la compilation du produit.
-
souvent un fichier configure permettant de générer le fichier Makefile en fonction de votre installation et de diverses options.
2. Prérequis et dépendances
Pour compiler votre produit vous devez respecter quelques prérequis :
-
présence de l’outil make.
-
présence du ou des compilateurs nécessaires, notamment gcc.
-
présence des dépendances : bibliothèques, interpréteurs, etc.
Ce dernier point est très important. S’il manque une dépendance, vous risquez divers problèmes :
-
vous n’arriverez pas préparer les sources pour la compilation.
-
la compilation générera des erreurs.
-
le produit sera compilé mais avec des possibilités moindres.
-
le binaire résultant ne se lancera pas.
La commande ./configure vous fournira les dépendances manquantes et leur version si c’est possible. Dans ce cas vous pouvez soit les installer depuis les packages de votre distribution, soit les installer depuis les sources.
Quand vous compilez depuis les sources sans passer par votre gestionnaire de packages, vous perdez une partie de la gestion des dépendances. Si vous installez des packages qui dépendent d’une version de l’outil installée depuis les sources il est possible...
Gérer les bibliothèques partagées
1. Principe
Une bibliothèque partagée est un fichier particulier qui contient une liste de fonctions, ou API, accessible à tout programme en ayant besoin sans avoir à les réécrire. À l’opposé de la bibliothèque statique, le programme accède dynamiquement aux fonctions qui sont placées dans un fichier à part. N programmes différents peuvent accéder aux fonctions proposées par la bibliothèque. Les bibliothèques regroupent des fonctions propres à un domaine ou un ensemble de domaines cohérents : traitement d’images, du son, de l’accès à une base de données, etc.
Un ensemble de fonctions proposées par une ou plusieurs bibliothèques partagées forme une API, Application Programming Interface, et sont parfois regroupées au sein d’un framework offrant une solution complète pour un domaine donné.
Un lien est établi entre le programme et une bibliothèque partagée lors de l’étape de l’édition des liens par l’éditeur de liens ld, lui-même appelé par le compilateur gcc avec l’option-l<lib>.
Une autre possibilité pour un programme est d’utiliser la fonction C dlopen qui ouvre une bibliothèque dynamique comme un fichier et qui accède aux fonctions qui y sont contenues avec des pointeurs de fonctions.
Si un programme dépend d’une bibliothèque partagée et que celle-ci est absente, le programme ne pourra plus fonctionner.
Sous Linux (et Unix en général) les bibliothèques partagées sont appelées des Shared Objects (so) dans le sens où il s’agit de fichiers objets sans bloc d’instruction main. Les noms des fichiers associés portent le suffixe .so.
Une bibliothèque peut disposer de plusieurs versions, pouvant être ou non compatibles, et la version peut être précisée lors de l’édition des liens, avec une version par défaut possible.
2. Lieu de stockage
Les bibliothèques partagées sont par convention placées dans des répertoires appelés lib :
-
/lib : bibliothèques système de base, vitales.
-
/lib64 : bibliothèques...