Blog ENI : Toute la veille numérique !
-25€ dès 75€ sur les livres en ligne, vidéos... avec le code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Installation de Linux et des logiciels

Installer une distribution

Avant de procéder à l’installation d’une distribution Linux sur un ordinateur, il faut répondre à différentes questions et déterminer des paramètres essentiels :

1. Déterminer les caractéristiques d’installation

  • Quelle sera l’utilisation du système : poste de travail d’utilisateur, de développeur, serveur de ressources, d’application, réseau ?

  • Quelle sera la configuration minimale souhaitable (variable suivant l’utilisation envisagée) : taille mémoire, processeur(s), espace disque, carte(s) réseau ?

  • Quelle distribution installer ?

  • Quel média d’installation utiliser : CD/DVD, clé USB, installation via le réseau ?

Il est possible d’installer une distribution Linux dans une machine virtuelle, surtout pour des tests. On peut également configurer une machine virtuelle dans le « cloud ».

2. Paramètres d’installation

Après avoir déterminé les réponses aux questions précédentes, on peut commencer l’installation. Peu d’éléments sont nécessaires à une installation de base, et il sera généralement possible de compléter celle-ci ultérieurement, hormis certains paramètres qui devraient être spécifiés dès l’installation, leur modification pouvant être difficile ultérieurement :

  • Langue

  • Fuseau horaire

  • Nom de machine

  • Domaine DNS

  • Adressage IP de base (adresse IP, passerelle par défaut, serveur...

Les gestionnaires de paquets logiciels

Les distributions Linux proposent des outils de gestion des logiciels, qui permettent d’installer, de mettre à jour ou de désinstaller les composants logiciels d’un système. Ces outils maintiennent une base de données permettant aux administrateurs de connaître et de gérer toutes les applications déployées via ces outils.

Les deux gestionnaires de logiciels les plus utilisés aujourd’hui sont ceux de type Debian et ceux de type Red Hat. Ils s’appuient tous les deux sur le concept de paquet logiciel (package), mais ne disposent pas de structure ni d’outils communs de structure différente, et proposent des outils différents. Les distributions de type Red Hat ou SUSE, utilisent le format RPM (Red Hat Package Manager) tandis que celles de type Debian et Ubuntu utilisent le format DPKG (Debian Package).

1. Notion de paquet logiciel (package)

En environnement Linux, la plupart des composants logiciels sont fournis sous forme de paquets logiciels (packages). Un paquet logiciel est un fichier qui contient les composants du produit à installer, ainsi qu’un ensemble de règles pour son installation, sa mise à jour ou sa désinstallation. Selon son contenu, sa taille peut être plus ou moins importante. Le noyau et tous ses modules sont par exemple fournis sous cette forme.

Les règles concernant un paquet...

Les paquets logiciels Red Hat

Red Hat a défini le format de paquets logiciels RPM (Red Hat Package Manager), utilisé par les distributions de type Red Hat et SUSE.

1. Le gestionnaire RPM

RPM est un ensemble logiciel qui prend en charge la distribution, l’installation, la mise à jour et la suppression des logiciels. Il dispose pour cela de commandes spécifiques s’appuyant sur une base de données locale.

La base de données de gestion des paquets logiciels est située dans /var/lib/rpm. Toutes les informations concernant les logiciels installés, leurs versions, leurs fichiers et droits, et leurs dépendances y sont stockées. Sauf cas particulier, il ne faut JAMAIS modifier cette base directement, mais utiliser pour cela les outils RPM.

Chaque logiciel est fourni sous forme de paquet logiciel au format RPM. Le nom du paquet, suffixé par .rpm, répond à une nomenclature précise.

nom-version-edition.architecture.rpm 

L’édition est un identifiant de version du paquet logiciel RPM propre à l’éditeur qui peut être un simple numéro de construction (nombre de fois que le paquet logiciel a été reconstruit), mais peut aussi contenir d’autres informations comme la version du système cible ou la référence à un commit d’un dépôt de code git.

L’architecture spécifie le type de processeur pris en charge. Un paquet logiciel en architecture noarch ne contient que des éléments indépendants du type de processeur (scripts, programmes en langage interprété, documentation, images, son, vidéo, etc.).

Exemple

Fichier paquet logiciel de php 8.1.14 :

php-8.1.14-1.module_el9+260+8424407f.x86_64.rpm 

Ce fichier contient l’édition 1.module_el9+260+8424407f du paquet logiciel PHP en version 8.1.14. L’architecture est x86_64 (Intel ou AMD 64 bits).

2. Installation, mise à jour et suppression

Pour installer un paquet logiciel RPM, on peut utiliser l’option -i.

rpm -i php-8.1.14-1.module el9+260+8424407f.x86_64.rpm 

Comme il est possible d’utiliser des caractères de substitution (rpm -i *.rpm), vous pouvez afficher le nom du paquet logiciel en cours d’installation avec l’option -v. L’option -h affiche des caractères # pour indiquer la progression...

Le gestionnaire de paquets YUM

Yum (Yellow dog Updater Modified) est un logiciel de gestion de paquets logiciels. Il télécharge les paquets logiciels au sein de dépôts logiciels et gère les dépendances. Il est utilisé par les distributions de type RPM, si les dépôts associés le supportent..

Depuis les versions 8 de Red Hat Enterprise Linux et CentOS, la commande yum est associée à un lien symbolique vers le fichier exécutable de la commande dnf, qui la remplace et est entièrement compatible.

# ls -l /usr/bin/yum 
lrwxrwxrwx. 1 root root 5 15 sept.  2022 /usr/bin/yum -> dnf-3 

Les commandes et exemples suivants utilisent un serveur RHEL en version 9. Le fichier de configuration est /etc/yum.conf (lien symbolique vers /etc/dnf/dnf.conf).

1. Configuration des dépôts

Il est possible de configurer des dépôts logiciels supplémentaires à ceux présents par défaut. C’est par exemple le cas du dépôt EPEL, géré par le projet Fedora qui ajoute de nombreux paquets logiciels 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 de déclaration d’un dépôt est le suivant (une ligne commençant par # est un commentaire) :

[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 

Avec :

  • [epel] : identifiant du dépôt.

  • 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, metalink pointe vers une liste d’URL utilisable par Yum.

  • gpgcheck : demande une vérification de la signature GPG du dépôt si la valeur est égale à 1.

  • enabled : si absent ou à 1, le dépôt est actif.

  • gpgkey : chemin de la clé publique...

Le gestionnaire de paquets DNF

DNF (Dandified Yum), apparu dans la version 18 de la distribution Fedora, est devenu le logiciel d’installation de paquets logiciels par défaut pour les distributions de type Red Hat.

DNF est une réécriture complète du logiciel Yum, sa commande, dnf, reprend l’ensemble des options de la commande yum, avec la même syntaxe.

Exemple

Recherche du paquet logiciel httpd-core :

# dnf search httpd-core 
Mise à jour des référentiels de gestion des abonnements. 
Dernière vérification de l'expiration des métadonnées effectuée 
il y a 0:30:03 le mar. 09 mai 2023 10:04:21. 
============= Nom correspond exactement à : httpd-core ============ 
httpd-core.x86_64 : httpd minimal core 

Les paquets logiciels Debian

Debian a défini le format de paquets logiciels .deb, utilisé par sa propre distribution et ses dérivés (comme Ubuntu).

1. dpkg : la commande de gestion de paquets Debian

La commande dpkg est l’équivalent de la commande rpm pour les paquets logiciels au format Debian utilisant des paquets avec l’extension .deb. La commande dpkg permet ainsi de gérer des paquets logiciels. 

La base de données de dpkg est généralement placée dans /var/lib/dpkg. Les fichiers qui la constituent sont au format texte, mais ne doivent pas être édités directement. Le fichier /var/lib/dpkg/status contient l’intégralité des paquets logiciels connus par dpkg avec leur état.

Exemple

Liste des lignes « package » dans le fichier status :

# grep ^Package: /var/lib/dpkg/status | grep linux 
Package: accountsservice 
Package: acl 
Package: adduser 
Package: adwaita-icon-theme 
Package: aisleriot 
Package: alsa-topology-conf 
Package: alsa-ucm-conf 
Package: alsa-utils 
Package: anacron 
Package: apache2-bin 
Package: apg  
[...] 

2. Installation, mise à jour et suppression de paquets logiciels

Les options -i, ou --install, installent les paquets logiciels des noms de fichiers passés en argument.

Exemple

# dpkg -i monpaquet.deb 

La commande dpkg ne gère pas les dépendances. S’il en manque, la commande le signale. Dans ce cas, il faut les installer avant de déployer le paquet logiciel.

On peut demander l’installation de tous les paquets logiciels d’une arborescence avec l’option -R (Récursif). L’option attend en argument un nom de répertoire : tous les paquets logiciels présents dans le répertoire et ses sous-répertoires seront installés.

Exemple

# dpkg -R folder 

La mise à jour s’effectue comme l’installation, avec l’option -i. Si le paquet logiciel est déjà présent, la commande effectue une mise à jour.

Procédure d’installation ou de mise à jour par dpkg :

  • Extraction des fichiers de contrôle du nouveau paquet.

  • Si une ancienne version est déjà installée, exécution du script présuppression de l’ancien paquet.

  • Lancement...

Le gestionnaire de paquets APT

Le composant logiciel APT (Advanced Packaging Tool) permet de gérer en ligne de commande les paquets logiciels stockés dans des dépôts logiciels, locaux ou distants.

Un dépôt logiciel contient un ensemble de paquets logiciels qui dépendent soit les uns des autres, soit d’autres paquets logiciels en provenance d’autres dépôts. APT gère automatiquement les dépendances des paquets logiciels.

1. Les dépôts de paquets logiciels

a. Configuration

Les dépôts sont spécifiés dans le fichier /etc/apt/sources.list et dans les fichiers présents du répertoire /etc/apt/sources.list.d.

Exemple

Fichier /etc/apt/sources.list d’une distribution Debian 12.0.0 Bookworm :

# cat /etc/apt/sources.list 
deb cdrom:[Debian GNU/Linux 12.0.0 _Bookworm_ - Official amd64 DVD Binary-1 
with firmware 20230610-10:23]/ bookworm main non-free-firmware 
deb http://deb.debian.org/debian/ bookworm main non-free-firmware 
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware 
deb http://security.debian.org/debian-security bookworm-security main 
non-free-firmware 
deb-src http://security.debian.org/debian-security bookworm-security main 
non-free-firmware 
# bookworm-updates, to get updates before a point release is made; 
# see https://www.debian.org/doc/manuals/debian-reference/ 
ch02.en.html#_updates_and_backports 
deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware 
deb-src http://deb.debian.org/debian/ bookworm-updates main non-free-firmware 
# see https://www.debian.org/doc/manuals/debian-reference/
ch02.en.html#_updates_and_backports 
deb http://deb.debian.org/debian/ bullseye-updates main contrib 
deb-src http://deb.debian.org/debian/ bullseye-updates main contrib 

La structure d’une...

Le gestionnaire de paquets aptitude

1. apt ou aptitude ?

Aptitude est un gestionnaire de paquets logiciels Debian avec une interface en mode ligne de commande. Il se substitue à APT (et apt-get), qu’il peut remplacer ou compléter. 

Aptitude bénéficie d’une meilleure gestion des dépendances, en particulier lors de la désinstallation de paquets logiciels. Voici quelques-uns de leurs avantages et inconvénients :

  • apt-get remove supprime le paquet logiciel mais pas ses dépendances, même non utilisées. Il faut ensuite utiliser apt-get autoremove ou autoclean pour purger les dépendances devenues inutiles.

  • APT propose environ vingt commandes (dont apt-get et apt-cache) pour gérer l’ensemble des possibilités. 

  • APT ne propose pas de mode interactif.

  • Aptitude supprime le paquet logiciel et ses dépendances si elles ne sont plus utilisées.

  • Aptitude propose une commande unique pour l’ensemble de ses fonctionnalités.

  • La commande aptitude, sans argument, se lance en mode interactif.

2. Installation d’aptitude

Aptitude s’installe via le paquet logiciel aptitude :

# apt-get install aptitude 

3. Utilisation

La syntaxe de la commande aptitude est très proche de celle la commande apt-get. Voici les principales options :

Options

Effet

update

Mise à jour des dépôts.

install

Installe les paquets...

Le gestionnaire de paquets logiciels Zypper

Zypper est un gestionnaire de paquets logiciels en mode ligne de commande, utilisant la bibliothèque ZYpp (libzypp). Il permet d’installer, mettre à jour et supprimer des paquets logiciels, ainsi que les dépôts correspondants.

Zypper gère les paquets logiciels au format rpm, comme Yum ou DNF. Il est utilisé par SUSE Linux, et sa version libre openSUSE.

La bibliothèque qui gère les dépendances pour Zypper a été réutilisée par Red Hat pour son outil DNF.

Zypper conserve la 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 paquets logiciels 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.

1. Gestion des dépôts

Les fichiers de configuration des dépôts Zypper sont dans le répertoire /etc/zypp/repos.d et portent le suffixe .repo.

Le contenu d’un fichier .repo ressemble à celui d’un dépôt Yum, et utilise aussi des alias.

Exemple

# 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 
keeppackages=0 

L’option removerepo permet de supprimer un dépôt, l’option mr permet de le modifier. 

L’option clean vide les caches locaux.

L’option refresh met à jour tous les dépôts.

Exemple

# zypper clean ; zypper refresh -f 
All repositories have been cleaned up. 
Retrieving...

Gérer les bibliothèques partagées

Une bibliothèque partagée est un fichier qui contient un ensemble de fonctions compilées, accessibles à tout programme faisant appel à elles. Contrairement à une bibliothèque statique, incluse dans l’exécutable, une bibliothèque partagée est chargée indépendamment et ses fonctions sont accessibles dynamiquement par le ou les programmes appelants.

L’ensemble des fonctions proposées par une ou plusieurs bibliothèques partagées forme une API, Application Programming Interface.

Un lien est établi entre le programme et une bibliothèque partagée au cours de la génération de l’exécutable, lors de l’étape de l’édition des liens par l’éditeur de liens ld.

Une autre possibilité pour un programme est d’utiliser la fonction C dlopen qui ouvre une bibliothèque dynamique comme un fichier et 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 peut pas fonctionner.

Les bibliothèques partagées sont appelées des Shared Objects (so), car elles contiennent des modules objets (compilés) sans bloc d’instruction main. Les noms des fichiers correspondants 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.

1. Lieu de stockage

Les bibliothèques partagées sont généralement stockées dans des répertoires appelés lib, en particulier :

  • /lib : bibliothèques système.

  • /lib64 : bibliothèques système en 64 bits.

  • /lib32 : bibliothèques système en 32 bits.

  • /usr/lib : bibliothèques utilisateur et système...