Cette page présente la gestion des paquets logiciels à l'usage des utilisateurs peu familiarisés avec le monde Linux.
Les problèmes plus courants sont dûs aux dépendances. Pourtant ils peuvent être évités dès lors que l'on comprend bien le fonctionnement du système de gestion de paquets utilisé sur sa distribution.
Table des matières
Qu'est ce qu'un paquet logiciel ?
Paquets binaires
Les paquets binaires sont en fait des archives contenant les binaires, les documentations et tout ce qui peut composer un logiciel. Ces archives contiennent aussi la liste des autres paquets dont elles dépendent. Ainsi tous les logiciels audio dépendent au moins des paquets contenant ALSA ou JACK, respectivement les drivers et le serveur son.
Les dépendances d'un logiciel
Lorsque vous installez un logiciel sous Linux avec votre gestionnaire de paquet, ce dernier va auto-magiquement installer toutes les briques dont votre logiciel dépend. Ceci peut être :
- d'autres logiciels nécessaires à son fonctionnement,
- des bibliothèques qui seront partagées avec d'autres programmes (bah oui, c'est pas la peine d'installer 15 fois la même chose...),
- la documentation de ce logiciel,
- des données (typiquement, cela peut être des banques de son par exemple),
- des greffons (ou plugins en anglais),
- ...
Les dépôts logiciels
Quelque soit la distribution utilisée, les paquets sont stockés sur des dépôts. Le plus souvent il s'agit des cédéroms que l'on trouve dans les magazines ou que l'on télécharge sur le net. Mais il est aussi possible une fois la connexion internet installée d'ajouter des dépôts FTP supplémentaires qui permettront les mises à jour.
Il existe aussi des dépôts offrant des logiciels non fournis par la distribution, permettant ainsi d'installer encore plus de logiciels. Comme nous le verrons, quel que soit le système de gestion utilisé, il existe un fichier de configuration pour spécifier les dépôts logiciels dans lesquels on veut pouvoir puiser. Il est impératif de ne mettre que des dépôts compatibles avec sa distribution.
Les problèmes de dépendances viennent souvent du mélange de dépôts de contributeurs non affiliés. Il est préférable de se limiter à ceux qui sont officiels dans un premier temps et d'en ajouter d'autres que si l'on est sûr qu'ils sont compatibles avec ceux du dépôt officiel et qu'ils n'entreront pas en conflit entre eux.
Les systèmes de gestion de paquets
Malheureusement chaque distribution a privilégié un système de gestion de paquets particulier plutôt que de préférer un système standard. Toutefois, on retrouve à présent quelques grandes familles de gestions de paquets : les distributions basées sur les .rpm et celles basées sur les .deb. Ces deux derniers gèrent les dépendances, càd un logiciel X ne peut fonctionner sans un autre logiciel Y. Par exemple un logiciel comme GIMP (le fameux logiciel graphique) ne pourra fonctionner sans le serveur graphique qui permet l'affichage. Dans ce cas GIMP dépend du serveur X, et par ailleurs aussi d'un grand nombre de bibliothèques graphiques. Sous Gentoo, distribution privilégiant la compilation des paquets sources par l'utilisateur, les ebuild fonctionnent de la même manière, on ne peut compiler un logiciel sans avoir auparavant compilé les dépendances.
Les .deb sur Debian, Ubuntu et distributions affiliées
On les nomme ainsi car ils utilisent le système Debian APT. Le système Debian APT permet donc de tout gérer et d'éviter les conflits. Il y a plusieurs choses de base à connaître ensuite on est vite grisé par la rapidité et la commodité d'APT.
Le fichier /etc/apt/sources.list
Ce fichier est primordial car il définit les dépôts, dans lesquelles les différents logiciels que nous allons voir après vont puiser. Cela peut-être un cédérom, un site web. Si on le modifie il est impératif de taper "apt-get update" ou clicker "reload" dans Synaptic, afin de réactualiser la liste des paquets.
Dpkg
Avant de voir les GUI, parlons de cette commande. Car elle est la seule qui permet d'installer un .deb depuis le répertoire courant par exemple. Cela arrive dans de petites occasions.
# dpkg -i fichier.deb
Cette commande est une commande bas niveau, avec de nombreuses options. Elle est parfois utile pour forcer la désinstallation puis la réinstallation dans la bonne version de paquets conflictuels. La charge étant à l'utilisateur de savoir ce qu'il fait avant tout chose.
Apt-get
Apt-get est aussi une commande, mais cette fois elle n'est capable d'installer des logiciels que depuis les fameux dépôts.
#apt-get install sweep
Ceci va installer le logiciel Sweep uniquement si celui-ci fait partie de ceux contenus par les sources. À noter que si Sweep dépend d'autres paquets, la commande vous proposera des les installer automatiquement. Génial !
Aptitude
Aptitude est une interface interactive en mode texte pour la gestion des paquets. Cette interface permet de voir la liste des logiciels installés et ceux à installer, etc... Certains prétendent qu'Aptitude est peu ergonomique, à moins de lire le manuel bien sûr ;-) Ceci dit, Aptitude est la méthode de gestion des paquets recommandées officiellement par Debian. Il y a maintenant une interface graphique nommée aptitude-gtk (voir : ce site) : pour utiliser Aptitude en mode graphique, mais elle n'est pas encore présente (écrit le 17 janvier 2011) dans toutes les distributions basées sur Debian.
Adept ou Synaptic
Enfin le nec-plus-ultra est bien sur Adept ou Synaptic, une vraie interface graphique ! Gérer les logiciels de son système devient un jeu d'enfant. On peut faire des recherches et lire les descriptions. C'est généralement à ce moment là qu'on réalise la force des logiciels libres avec un système unique pour les installer depuis internet.
Les rpms sur Redhat/Fedora, SUSE et Mandriva
rpm
rpm est la commande bas niveau du système Redhat (et compatibles). Elle s'apparente à dpkg vu plus haut. Même chose cette commande peut éventuellement utilisée pour forcer l'installation et la désinstallation de certains paquets.
urpmi
urpm est la commande gérant le système de dépendances comme apt-get, mais pour Redhat.
Elle fait partie du système complet et permet d'installer les programmes et leurs dépendances via le Net ou les cédéroms.
Le fichier de configuration contenant les dépôts est /etc/urpmi/urpmi.cfg mais il est possible d'utiliser les commandes urpmi.addmedia et urpmi.removemedia comme nous allons le voir.
Il faut donc d'abord enregistrer les sources (voir site http://easyurpmi.zarb.org/?language=fr ) puis se connecter en tant que super utilisateur (su) pour pouvoir télécharger et installer des programmes.
Ce qui donne en mode console :
urpmi nomduprogramme
Si le programme est répertorié dans la base de donnée, il apparaît avec éventuellement les dépendances associées.
la commande :
urpmi --noclean nomduprogramme
permet de garder un copie disponible dans le répertoire /var/cache/urpmi/rpms
Quelques urpmi disponibles importants pour la MAO :
urpmi kernel-multimedia-2.6.12-12mm.1mdk(indispensable !)
urpmi ardour(installe Qjack avec !)
urpmi xmms urpmi timidity-init urpmi qsynth urpmi zynaddsubfx urpmi rezound.....
à noter qu'il suffit parfois de taper une partie du nom pour qu'il propose une ou plusieurs variantes (exemple : kernel-multimedia)
Cette commande/fonction urpmi est donc absolument géniale puisqu'elle permet d'installer très facilement de nombreux logiciels MAO (ou autres bien sûr.
Cette commande est également utilisée par des logiciels avec interface graphique (plus connus des utilisateurs) que nous allons voir à présent.
kpackage
C'est un utilitaire avec interface graphique d'installation de paquets du même type qu'Adept ou Synaptic, seule l'interface change.
Emerge et Gentoo
Sous Gentoo l'approche est un peu différente en cela que la distribution sous forme de sources est privilégiée. Les paquets binaires n'existent que pour le système de base. Une fois celui-ci opérationnel, on utilise la commande emerge pour automatiquement télécharger les sources et compiler les logiciels que l'on souhaite installer. Si d'autres logiciels (des dépendances) sont nécessaires, ils seront aussi automatiquement "emergés".
Cf pour le moment les indications de l'article sur la Gentoo.
Installation de binaire cross-distribution
Des solutions apparaissent permettant d'installer un binaire sur plusieurs types de distributions GNU-linux, une sorte de "binaire exécutable universel pour linux" en somme. Certaines de ces solutions sont plus ou moins fonctionnelles, plus ou moins intégrées (intégration dans le menu, ...), plus ou moins ... utiles !
La majorité de ces solutions installent un genre de "système parallèle" à votre système de base. Ce qui peut être gourmand en ressource (RAM, CPU, stockage,...). C'est donc une solution qui peut avoir des avantages (notamment pour les bêta-testeurs, et pour la diffusion rapide d'un nouveau logiciel), mais qui possèdent également des désavantages. À utiliser avec parcimonie donc.
Flatpack
Voir flatpak .
Exemple avec FMIT en ligne de commande sous une Debian ou dérivée.
Installation :
$ sudo apt install flatpak $ flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo $ flatpak install flathub io.github.gillesdegottex.FMIT
Note : flatpak téléchargera et installera plusieurs logiciels et bibliothèques d'exécution (freedesktop et KDE par exemples ici), et prendra certainement un peu de temps pour l'installation d'une première application. Ces logiciels et bibliothèques d'exécution n’interféreront pas avec vos paquets-système.
Utilisation :
$ flatpak run io.github.gillesdegottex.FMIT
À lire concernant flatpack et ses défauts : http://flatkill.org/ ainsi que https://linuxfr.org/users/ted/journaux/flatpak .
Appimage
- Télécharger une AppImage sur votre disque dur (attention, il vous faut avoir confiance dans le site qui vous fourni l'AppImage).
- Rendre ce fichier exécutable ;
- En bureau graphique : ''clic-droit sur l'AppImage -> Propriétés -> Permissions -> Autoriser l'exécution du fichier comme un programme
- Dans un terminal :
chmod a+x logiciel.AppImage
- Exécuter le logiciel en double-cliquant dessus ou en le lançant en terminal :
./logiciel.AppImage
Docker
...à écrire...
Go
...à écrire...
Snapcraft
...à écrire...
Voir https://snapcraft.io/ .
Problèmes courants
- la mise-à-jour d'un paquet fondamental (libc, xorg) entraîne des installations/désinstallations massives.
- Dépendances circulaires : il faut utiliser urpmi ou apt-get pour installer et enlever en une même ligne de commande les paquets conflictuels
apt-get remove paquetA +paquetB
Cette commande va enlever le paquetA et installer le paquetB (noter bien le +) en une seule opération et vous évitera les messages "Untel requiert logiciel version X mais Y va être installé". Cette commande vous sauvera la vie !
Une alternative consiste à utiliser les commandes bas-niveau dpkg ou rpm pour forcer la désinstallation de certains paquets (attention toutefois).
section à compléter
Installer un logiciel "étranger" à une distribution
Dans certains cas on souhaite installer un logiciel qui ne figure pas dans les dépôts. Par exemple un logiciel commercial. Ceux-ci sont généralement disponibles sous forme de binaires compactés en archives zip ou tgz. Il n'est pas rare qu'un installateur maison les accompagnent. Il n'y aura alors pas moyen de voir ce logiciel dans la liste des paquets utilisés car celui-ci contourne son système de gestion. Il existe cependant parfois un paquet RPM car Redhat est la distribution commerciale la plus connue. Sous Debian, il est possible alors d'utiliser la commande alien pour convertir le RPM en DEB (ou même en paquet Slackware). Cela marche dans les autres sens.
Aller plus loin, sources et compilations
Il existe une alternative à l'installation des logiciels dans le cadre des système de gestion de paquets. Il arrive en effet qu'un logiciel soit trop récent pour être intégré dans une distribution. Cela est l'objet de l'article Compiler un logiciel.
Fichiers sources et fichiers binaires
Tout d'abord il convient de revenir sur ce qu'est un logiciel. Sous les OS propriétaires, on est habitué à utiliser des binaires déjà compilés et vendus sous cette forme par des sociétés commerciales. On n'a jamais accès aux fichiers sources qui, voilà, dévoilent les secrets de programmation. Les fichiers sources sont des fichiers textes écrits par les programmeurs, que l'on compile pour générer les binaires exécutables. Sous Linux et avec les Logiciels Libres (càd sous licence GPL et assimilées) toute la dynamique repose sur l'idée de laisser les sources non seulement accessibles, mais modifiables et pouvant être copiées à volonté. Ce sont ensuite des organisations commerciales ou bénévoles qui se chargent de produire des distributions Linux regroupant tous ces logiciels en un tout cohérent et utilisable par les utilisateurs.
Une des conséquences immédiates fut qu'il fallait pouvoir gérer l'installation et la désinstallation des logiciels contenus sur ces distributions, il fallait aussi prévoir les mises-à-jour et d'autres fonctions comme le contrôle des dépendances ou la recompilation automatisée.
Paquets sources
On trouve également des paquets sources, c'est-à-dire contenant uniquement des fichiers sources. A l'aide de certaines commandes il sera alors possible de construire automatiquement un paquet binaire.
Paquets "dev"
Ce sont des paquets complémentaires de développement. Il contiennent des fichiers textes (fichiers headers) et parfois des bibliothèques utilisés pour compiler d'autres paquets. On a besoin d'installer les paquets "dev" uniquement si on souhaite compiler soi-même des binaires comme nous le verrons plus bas.
Recompiler un .deb
Pour cela, il faut ajouter dans le fichier /etc/apt/sources.list des dépôts pour les paquets sources, ex :
deb-src http://ftp.fr.debian.org/debian/ testing main
Ensuite certains commandes permettent de télécharger les sources et de les construire automatiquement.
- apt-build
- dpkg-buildpackage
Recompiler à partir d'un SRPM
Les paquets SRPM correspondent aux paquets ne contenant que les fichiers sources des programmes. Ils sont destinés à être recompilés par l'utilisateur pour produire un fichier RPM qui peut ensuite être installé normalement. Les fichiers SRPM utilisent le répertoire /usr/src/RPMS pour entreposer les sources et c'est là aussi que l'on y trouve les RPMS une fois compilés (répértoire "build").
Divers
[+]