Comment installer des logiciels sous Linux ?
Sous Windows, installer un logiciel nécessite la plupart du temps l’utilisation d’un programme d’installation, exécutable, lequel va initier diverses opérations dans le système d’exploitation pour réaliser l’installation du logiciel. Ces opérations sont de type copie des fichiers du programme, création des clés de registre éventuelles nécessaires à son fonctionnement, création des raccourcis du menu démarrer pour le lancer ou encore configuration des utilitaires de désinstallation du programme. Ce sont ces opérations qui se cachent derrière le fameux suivant – suivant – terminer.
La plupart du temps, le programme d’installation d’un logiciel pour Windows embarque tous les fichiers exécutables, les fichiers de configuration et les librairies nécessaires au fonctionnement du logiciel.
Dans la majorité des distributions Linux, ce n’est pas le cas. Par exemple, les logiciels étant libres pour la plupart, leur différents composants comme les librairies de fonctions peuvent être ré-utilisées librement par d’autres programmes pour leur fournir des capacités supplémentaires. Ceci créé par conséquent des relations de dépendances entre les logiciels. Voici un bref aperçu de la gestion des paquets, de comment installer des logiciels sous Linux, et du changement du paradigme habituellement vu avec Windows.
La mutualisation et l’organisation des fichiers des logiciels dans les distributions Linux
Les logiciels libres partagent souvent entre eux des composants, et certains paquets peuvent même n’être constitués que de librairies de fonctions. Cette propriété rend caduque l’organisation utilisée sous Windows, où chaque programme installe tout ses fichiers dans un dossier qui lui est dédié. Ainsi, dans la majorité des distributions Linux, les différents éléments sont organisés par type de fichiers. Par exemple, tous les fichiers exécutables seront stockés dans les répertoires /bin ou /usr/bin (ou /sbin et /usr/sbin si ils appartiennent au super-utilisateur), les fichiers de configuration globaux seront stockés dans /etc, ou bien toutes les librairies de tous les programmes seront stockées dans les répertoires /lib ou /usr/lib. Ces dernières n’appartiennent pas spécialement à un programme particulier, elles sont à la disposition de qui en a besoin. Elles auront été déposées dans le système de fichiers lors de l’installation du premier programme qui les nécessite. De la sorte, on constate une certaine mutualisation des ressources.
Les dépendances, les paquets et les gestionnaires de paquets
Les logiciels pour les distributions Linux sont fournis par les mainteneurs des distributions sous forme de paquets. Ce sont des sortes d’archives, un peu dans l’esprit d’un fichier .zip. Ils ne sont pas tous identiques d’une distribution à une autre, et même si il y a deux grandes familles (les paquets .deb pour Debian et dérivés, et les .rpm pour les nombreuses distributions héritant de ce système de Red Hat), ce ne sont pas les deux seules. Peu importe leur type, ces paquets contiennent l’ensemble des fichiers propres au logiciel que l’on souhaite installer, ainsi que les procédures d’installation et de configuration.
Le fait que plusieurs logiciels peuvent partager des éléments tels que des librairies implique que lorsque l’on souhaite installer un logiciel ayant besoin pour l’une ou l’autre de ses fonctionnalités de base d’une librairie fournie par un autre paquet, ce dernier doit être installé en même temps, s’il ne l’est pas déjà. C’est le principe des dépendances. Si toutes les dépendances nécessaires à l’installation d’un paquet ne sont pas satisfaites, l’installateur de paquets (tel que dpkg pour les distributions basées sur Debian, ou rpm pour les distributions type Fedora ou OpenSuse Leap) refusera d’installer le paquet car le logiciel ne serait pas fonctionnel ; la cohérence du système ne serait pas satisfaisante.
Gérer manuellement les dépendances d’un paquet est envisageable, et pour prendre exemple de la distribution Debian, sa page recensant les packages logiciels indique les dépendances pour chaque paquet. On pourrait s’amuser à toutes les télécharger manuellement, et les installer avec dpkg. Mais ça ne serait pas drôle longtemps. Heureusement, pour nous aider, il y a les gestionnaires de paquets. Ceux-ci se chargent, quand on leur demande d’installer un logiciel, d’aller le télécharger sur les dépôts de la distribution, ainsi que toutes ses dépendances, et d’invoquer l’installeur de paquets (dpkg par exemple dans la distribution Debian) pour effectuer l’installation du logiciel et de tous ses composants, tout ça, automatiquement. Comme gestionnaires de paquets, on peut citer le fameux apt pour Debian / Ubuntu et affiliées, zypper pour OpenSuse Leap, ou bien encore le célèbre yum ou plus récemment dnf pour Fedora ou CentOS. Ces gestionnaires sont en ligne de commande et sont très simples d’utilisation et remarquablement efficaces. Ils peuvent par ailleurs se charger de mettre à jour l’ensemble des logiciels de la distribution, quand c’est nécessaire.
Comment installer des logiciels sous Linux avec un gestionnaire de paquet : exemples avec apt, pour Debian / Ubuntu et dérivés
Comme évoqué plus haut, dans Debian et ses dérivés apt est le gestionnaire de paquets. Voici quelques exemples de commandes Linux pour des logiciels avec apt.
sudo apt update
Cette commande demande à apt de mettre à jour la liste des paquets dans les dépôts. On l’invoquera de préférence avant chaque session apt, de sorte que celui-ci soit au courant des nouveautés dans les dépôts logiciels.
apt search un_nom_de_logiciel
Cette commande demande à apt de rechercher dans les noms et les descriptions de paquets des dépôts le mot un_nom_de_logiciel. C’est très utile quand on cherche le nom du paquet qui permet l’installation d’un logiciel donné.
sudo apt install un_nom_de_paquet
Cette commande demande à apt de télécharger et d’installer le paquet un_nom_de_paquet, ainsi que toutes ses dépendances. Généralement l’installation d’un logiciel requière plusieurs paquets, apt se charge de tous les installer automatiquement.
sudo apt remove un_nom_de_paquet
Cette commande demande à apt de supprimer le paquet un_nom_de_paquet. Si des fichiers de configuration sont liés à ce paquet, ils seront conservés. Si on souhaite également supprimer ces fichiers de configuration, on remplacera le mot clé remove par le mot clé purge.
sudo apt upgrade
Cette commande demande à apt de mettre à jour tous les paquets installés dans le système qui disposent d’une version plus récente dans les dépôts logiciels. On invoquera donc la commande sudo apt update avant.
Note : la plupart des commandes apt listées ci-dessus réalisent des opérations administratives sur le système, et nécessitent par conséquent d’être exécutées pour le compte du super-utilisateur, c’est pour ça qu’elles sont préfixées du mot clé sudo. Il n’y a dans ces exemples que la recherche dans la liste des paquets qui ne le nécessite pas.
Comment installer des logiciels sous Linux avec un gestionnaire de paquets en mode graphique
Les gestionnaires de paquets graphiques ont les mêmes fonctions que leurs homologues en mode texte, en apportant en plus le confort d’une interface graphique ergonomique. Ils proposent un moteur de recherche dans lequel on formule sa requête, puis on pioche ce que l’on souhaite installer parmi les résultats. Ils peuvent également maintenir la distribution à jour ou bien encore gérer la liste des dépôts logiciels. Certains se présentent même sous forme d’un magasin d’applications, avec de rubriques regroupant les logiciels par thème. En voici deux parmi toute une ribambelle.
Exemple avec logiciels de Gnome (ou Gnome logiciels, ou gnome-software)
Voici un gestionnaire de paquets qui se conforme aux codes qui sont dans l’air du temps, et qui par conséquent se présente sous la forme d’un magasin d’applications typique, tel qu’on peut les rencontrer sous IOS ou Android. Il regroupe les logiciels par thème.
L’installation d’un logiciel est aisée, il suffit de choisir le logiciel et cliquer sur le bouton installer; logiciels de Gnome (ici renommé en Logiciels Ubuntu, mais c’est bien le même gestionnaire de paquets) se charge d’installer automatiquement toutes les dépendances. Il affiche une capture d’écran du logiciel, et dispose également comme tous les magasins d’applications modernes d’un système de commentaires.
En outre, il met à disposition un moteur de recherche pour réaliser ses requêtes.
Les habitués des smartphones n’auront aucune peine à utiliser ce gestionnaire de paquets car ils retrouveront immédiatement l’ergonomie de leur outil de poche.
Il faut noter que logiciels de Gnome ne gère pas les mises à jour des logiciels à proprement parler, cette tâche étant assurée par un autre composant (update-manager dans le cas de Ubuntu 19.04).
Exemple avec Synaptic
Présent depuis longtemps par défaut dans Debian par exemple, Synaptic pourrait être considéré comme une interface graphique des outils apt. Il possède ainsi l’ensemble des fonctionnalités proposées par apt, et sait ainsi réaliser toutes les tâches d’installation et de suppression de paquets. Il gère les mises à jour, ainsi que la configuration des dépôts.
Il peut effectuer des recherches dans le répertoire des paquets.
Il propose également de lister les paquets en fonction de catégories, mais dispose en plus d’un système de filtres permettant par exemple de lister les paquets dits « cassés » (ayant des problèmes de dépendances par exemple).
La réalisation des opération consiste en appliquer la liste des demandes effectuées (installation, suppression, mise à jour..,) en cliquant sur le bouton dédié.
Quelques mots sur les dépôts logiciels
Dans toutes les distributions modernes, le système de base est installé depuis un média d’installation plus ou moins volumineux. Dans tous les cas, ce média dispose au moins du système minimal à installer, mais ne peut pas contenir l’ensemble des paquets de la distribution (qui représentent souvent plusieurs dizaines de giga octets).
Ainsi, pour installer des logiciels supplémentaires, les gestionnaires de paquets vont les télécharger automatiquement depuis des dépôts de paquets, gérés pour la plupart par les mainteneurs de la distribution. Lorsqu’un paquet est mis à jour par son responsable dans la distribution, cette mise à jour est immédiatement disponible pour les gestionnaires de paquets des distributions installées sur les ordinateurs de leurs utilisateurs. Les dépôts disposent également souvent de miroirs, c’est-à-dire des copies synchronisées en plusieurs points du globe, de sorte à être les plus près possibles des utilisateurs.
Installations à partir des sources
Il ne faut pas perdre de vue que la grosse majorité des logiciels dont il est question sont libres, et que donc leur code source est accessible à tout un chacun. Il est donc tout à fait possible de construire (on dit compiler) les fichiers exécutables à partir du code source du logiciel. Cette méthode présente par exemple l’avantage de pouvoir utiliser des versions les plus récentes possibles de logiciels (voire des versions de développement), ou encore de ne compiler que les options qui nous intéressent d’un logiciel et ainsi avoir une version hyper légère et optimisée de celui-ci. Quoi qu’il en soit on parle ici d’une pratique réservée à un public plutôt expert.
Retour au paradigme Windows avec Appimage et compagnie
Depuis quelques temps déjà, une nouvelle façon de distribuer et d’exécuter des logiciels se développe dans l’écosystème des distributions Linux avec des systèmes comme Appimage, snap ou bien encore flatpack. Ces systèmes sont ce qu’on appelle des lots applicatifs. Un logiciel distribué de cette sorte est empaqueté avec toutes les librairies et autres dépendances dont il a besoin pour fonctionner, sans s’intéresser à ce qui est déjà présent dans la distribution ; en ça, cela peut sembler similaire à ce qui se passe pour un logiciel pour Windows.
Dans le cas de Appimage par exemple, un logiciel entier peut être embarqué dans un unique fichier d’archives, et exécuté directement après avoir rendu exécutable ce fichier. On pourrait rapprocher ce concept de celui des logiciels portables pour Windows.
Suivant la technologie de lot applicatif, les interactions avec le système hôte sont plus ou moins présentes et l’environnement d’exécution est plus ou moins étanche. L’intégration avec l’environnement existant est également plus ou moins poussée.
L’avantage de ces solutions peut être de pouvoir mettre à disposition un nouveau logiciel sans avoir attendre qu’il soit intégré et packagé pour une distribution donnée par exemple. Ceci au prix d’une intégration moindre, et d’une lourdeur accrue.
Commentaires
Laisser un commentaire