958 views
<style> #doc>div, #doc>p, #doc>ul { text-align: justify; } </style> <center> Télécharger et installer des logiciels sous Linux === </center> Vous l'aurez sûrement remarqué, la première différence pratique lorsque l'on passe de Windows à Linux concerne l'installation des logiciels. Dans la majorité des cas, celle-ci est largement simplifiée par rapport à Windows, dans le sens où une simple commande permet l'installation complète du logiciel. Mais lorsque vous souhaitez télécharger des programmes ou des librairies un peu plus expérimentaux, ou avoir la dernière version d'un logiciel, il se peut que vous soyez obligé d'ajouter les dépôts du programmeur, voire même de compiler vous-même le programme depuis les sources. Nous allons ici décrire la marche à suivre pour survivre devant les 1001 façons d'installer un logiciel sous Linux. La première partie s'adresse essentiellement à ceux qui possèdent Ubuntu (ou tout autre distribution fondée sur Debian), tandis que les démarches décrites dans les parties suivantes fonctionnent sur n'importe quelle distribution Linux. ## Cas simple : installation depuis les dépôts logiciels ### Principe des dépôts La plupart des distributions linux sont équipées d'un système centralisé pour gérer les logiciels, à la manière des app stores sur les smartphones. Il s'agit d'un ensemble de serveurs, appelés **dépôts**, qui contiennent tous les paquets maintenus par la communauté. Sur les dérivées de Debian (dont Ubuntu), ce gestionnaire de paquets est appelé **APT** (Advanced Package Tool). ### Installer un paquet Si vous connaissez le nom précis du programme que vous souhaitez télécharger, l'installation se fait par la simple commande ``` sudo apt-get install mon_packet ``` Le sudo en début de commande permet de vous mettre temporairement en mode administrateur, ce qui est nécessaire sous Linux pour télécharger des programmes. Vous devrez alors entrer votre mot de passe (qui ne s'affiche pas à l'écran), et appuyer sur *Entrée*. Par exemple, pour télécharger cmatrix (un programme super utile permettant de simuler un écran de type Matrix :p), il suffit de taper : ``` sudo apt-get install cmatrix ``` Une fois le téléchargement fini (lorsque vous êtes de nouveau en mesure de taper des commandes), écrivez *cmatrix* pour exécuter le programme (et *q* pour quitter). ### Rechercher un paquet Si vous avez une idée de ce que pourrait contenir le nom du paquet, il existe une commande pour rechercher son nom précis : ``` sudo apt-cache search mot_clef ``` Vous aurez alors à l'écran la liste des paquets contenant *mot_clef* Si vous ne trouvez toujours pas votre paquet, la meilleur chose à faire est de le rechercher sur google. Un point important est de taper "ubuntu" à la fin de vos premiers mots-clefs pour avoir plus de chance de tomber sur la [documentation Ubuntu](https://doc.ubuntu-fr.org/), qui décrit avec précision la démarche d'installation de la plupart des logiciels. Pour le téléchargement de gros logiciels propriétaires qui possèdent un équivalent libre (à l'instar de java ou flash), je vous conseille de lire directement la documentation avant de faire quoi que ce soit, afin de choisir en toute conscience si vous préférez la version libre ou la version propriétaire et d'éviter tout conflit entre les versions. ### Récupérer les dépôts d'un auteur Les dépôts présents sur une installation fraîche d'Ubuntu sont ceux maintenus par la Fondation Ubuntu (les dépôts *restricted*), et ceux maintenus par la communauté (les dépôts *universe*). La liste des serveurs sur lesquels va rechercher apt-get est située dans le fichier `/etc/apt/sources.list`. Mais certains programmeurs préfèrent avoir leur propre dépôt, qu'il faut alors ajouter à la liste des serveurs pour pouvoir télécharger leurs logiciels. C'est ce qu'on appelle des PPA (Personal Package Archives). Le nom du dépôt à ajouter (et quasiment tout le temps les commandes à taper pour ce faire) se trouvent toujours soit sur la documentation, soit sur le site du programme. Par exemple, pour télécharger Atom (un très bon éditeur de texte sous Linux), une rapide recherche sur Google nous donne ces commandes : ``` sudo add-apt-repository ppa:webupd8team/atom sudo apt-get update sudo apt-get install atom ``` La première commande permet d'ajouter *webupd8team/atom* à la liste des PPA. La deuxième permet de mettre à jour la liste des paquets (pour pouvoir trouver atom lors du prochain apt-get), et je n'ai plus besoin de vous décrire la dernière. Certains paquets demandent de taper quelques commandes avant les trois du haut, permettant d'ajouter une clé d'authentification au serveur, mais ces commandes sont tout le temps décrites sur la documentation liée au programme, il est inutile de les apprendre par cœur (de même pour l'ajout du PPA) ### Télécharger un paquet depuis le site de l'auteur Certains paquets ont une version adaptée à Ubuntu (ou Debian de façon plus générale), mais ne sont pas disponibles dans les dépôts. Si vous trouvez sur le site de l'auteur un fichier *.deb*, l'installation se fera assez facilement. Il suffit en effet de le télécharger, de se placer dans le bon dossier et de taper : ``` sudo dpkg -i mon_paquet.deb ``` Le premier problème qui puisse arriver est qu'il manque des *dépendances*, c'est-à-dire des librairies sur lesquelles est basées le logiciel. Dans ce cas, il affichera une erreur avec les librairies manquantes. Télécharger ces librairies, par une des méthodes décrites précédemment, résout le problème dans la plupart des cas ### Mettre à jour un paquet Le gestionnaire de paquet d'Ubuntu vous propose en général graphiquement de faire les mises à jour dès qu'elles sortent. Mais si ce n'est pas le cas, voici la commande à écrire : ``` sudo apt-get upgrade mon_paquet ``` La commande `sudo apt-get update` ne permet que de mettre à jour la **liste** des paquets, et non pas les paquets eux-mêmes. ### Supprimer un paquet Il existe plusieurs commandes permettant de supprimer des paquets téléchargés depuis les dépôts. ``` sudo apt-get autoremove mon_paquet ``` Cette commande permet de supprimer un paquet ainsi que toutes ses dépendances qui ne servent plus à rien (par exemple les librairies téléchargées avec le paquet qui ne sont pas utilisées par d'autres programmes). Mais les fichiers de configuration du logiciel sont conservés. ``` sudo apt-get purge mon_paquet ``` Cette commande permet de supprimer un paquet ainsi que ses configurations. Les dépendances sont cette fois-ci conservées. Pour supprimer à la fois les dépendances et les fichiers de configuration d'un paquet, vous pouvez utiliser la commande : ``` sudo apt-get autoremove --purge mon_paquet ``` Enfin, si vous souhaitez seulement supprimer le paquet (mais ni les dépendances, ni les config), faites juste un : ``` sudo apt-get remove mon_paquet ``` ## Compilation depuis les sources Si l'installation d'un logiciel est particulièrement simple lorsque celui-ci est disponible dans les dépôts, elle peut s'avérer nettement plus difficile s'il n'y est pas. Il existe toutefois des méthodes générales permettant d'installer un paquet à partir de son code source, et c'est ce que nous allons voir maintenant. Mais avant de commencer, il me semble qu'un petit topos est nécessaire sur la répartition des fichiers sous Linux ### Mais où sont donc mes programmes ? Une chose très troublante lorsque l'on passe de Windows à Linux est la location des programmes. En effet, sous Windows, tous les logiciels étaient situés dans le dossier *Program Files*, tandis que sous Linux, il semble exister pleins de dossier contenant les programmes : */etc*, */usr*, */bin*... Voici une petite description des dossiers les plus importants concernant les logiciels : * /bin : ce dossier contient les exécutables linux les plus importants du système (*ls*, *cp*, *cat*...). Un exécutable est un fichier compilé que l'on peut lancer en mettant un **./** devant (`./mon_programme`). Aucun logiciel que vous installez par vous-même ne devrait se retrouver dans ce dossier * /usr : ce dossier comprend l'ensemble des logiciels liés à l'utilisateur. Il contient plusieurs sous-dossiers importants : * /usr/bin pour les exécutables * /usr/lib pour les librairies que vont utiliser les différents programmes. Il est rare qu'un logiciel ne demande aucune librairie pour fonctionner, et la plupart des installations consistent à mettre des fichiers à la fois dans */usr/bin* et dans */usr/lib* * /usr/share pour les fichiers de données non exécutables. On y trouve par exemple les icônes, les sons, etc. * /usr/local qui contient les même sous-dossiers que */usr*, mais utilisés pour les projets persos (ou tous les programmes qui n'ont pas été installés de manière automatique) * /home/user : si vous faites un `ls -al` dans votre dossier personnel, vous verrez un certains nombre de sous-dossier commençant par un **.** et suivi du nom d'un logiciel. Ce sont tous les dossier de préférence de vos programmes (informations sur l'utilisateur, historiques, plugins, etc.) * /etc : ce dossier contient l'ensemble des fichiers de configuration des logiciels, souvent modifiables avec un simple éditeur de texte. * Pour savoir où se trouve l'exécutable d'un programme, il suffit de le faire précéder par la commande *which*. Par exemple : ``` which ls ``` donnera `/bin/ls` alors que ``` which firefox ``` donnera `/usr/bin/firefox` Vous vous demandez peut-être comment l'ordinateur sait que lorsque l'on tape *ls* ou *firefox*, il doit se référer respectivement à */bin/ls* ou */usr/bin/firefox*. Cela est en fait dû à une variable d'environnement appelée PATH. Une variable d'environnement est une variable du système accessible depuis n'importe quel programme, et PATH en particulier contient l'ensemble des dossiers à explorer lorsque l'on tape une commande. Vous pouvez l'afficher en tapant `echo $PATH` depuis un terminal. Lorsque vous tapez *ls* dans un terminal, celui-ci fait alors une recherche dans tous les dossiers du PATH, et dès qu'il trouve un logiciel nommé "ls", il l'exécute. ### La compilation de programmes depuis un tar.gz Lorsqu'un logiciel n'est pas disponible sur les dépôts, le première chose à faire est d'aller sur le site de l'auteur. Vous trouverez alors souvent une liste de fichiers téléchargeables pour Linux. Par exemple, si vous souhaitez télécharger le langage de programmation Java (ou du moins la version d'Oracle), vous trouverez sur le site : ![](https://markdown.data-ensta.fr/uploads/upload_652edbc9ff9e2afecb7b35f7324f9cf1.png) Les fichiers RPM sont l'équivalent des fichiers DEB (ceux que apt-get télécharge), mais pour RedHat, donc inutile pour nous (sauf si vous êtes sur RedHat ou dérivée, évidemment :p). Les deux autres liens renvoient vers des fichiers au format tar.gz. Le premier correspond à la version 32 bits (noté parfois x86), et le deuxième à la version 64 bits (noté x64). La plupart des PC modernes sont en 64 bits, mais si vous n'êtes pas sûr, tapez la commande `uname -a` dans le terminal ; si vous voyez *x86_64*, vous êtes en 64 bits ; si vous voyez seulement *x86*, vous êtes en 32 bits. **tar.gz** et **tar.bz2** sont les deux grands formats de compression de paquets sous Linux, et vous trouverez quasiment tout le temps les sources dans un de ces formats. Une fois le fichier téléchargé, ouvrez un terminal, placez-vous dans le dossier de téléchargement, et tapez la commande ``` tar xvzf mon_programme.tar.gz ``` pour les *tar.gz*, et ``` tar xvjf mon_programme.tar.gz ``` pour les *tar.bz2*. Le **x** signifie que vous voulez décompresser l'archive, le **v** (comme verbose) que vous voulez voir les étapes de décompression à l'écran, le **f** permet d'indiquer que vous passez un fichier en argument, et le **z** ou **j** indique que le format est respectivement tar.gz ou tar.bz2. Une fois le fichier décompressé, tapez : ``` cd mon_programme ``` pour aller dans le dossier décompressé. Faites ensuite un `ls` pour voir le contenu de l'archive. La première chose à faire est alors de lire le fichier README, qui décrit souvent les étapes d'installation du programme. Si ce n'est pas le cas, cherchez un tutoriel sur le site de l'auteur (ou un autre site). Toutefois, certains cas sont assez généraux pour que l'on puisse les décrire ici. Voici les différentes situations qui peuvent se présenter : **Un fichier Configure et un fichier Makefile se trouvent dans le dossier** Dans ce cas, l'archive contient le code source du programme, le Makefile décrit une procédure pour pouvoir le compiler, et le Configure permet de vérifier les dépendances. Si le README ne vous indique pas de méthode particulière, il y a de fortes chances que les commandes suivantes fonctionnent : ``` ./configure make sudo make install ``` Le `./configure` va afficher chaque dépendance, suivie d'un yes si elle est présente, et d'un no dans le cas contraire. Si cette commande retourne une erreur, regardez les dépendances manquantes et téléchargez-les (`apt-cache search` puis `apt-get install` suffisent dans la plupart des cas). Les erreurs provoquées par `make` sont trop particulières pour être décrites ici. Si vous en avez, tapez le nom de l'erreur avec le nom du programme sur internet ; il est peu probable que vous soyez le seul à avoir eu cette erreur **Il y a seulement un Makefile** Ce cas est quasiment identique au précédent, mais vous n'avez pas besoin de taper la commande `./configure` avant le `make`. Cela augmente le risque d'erreurs dans la compilation, mais vous n'avez pas le choix, c'est la faute du programmeur. **Il y a un dossier bin/ et un dossier lib/** Dans ce cas, le programme est déjà compilé, et si vous avez bien suivi la partie sur la description des dossiers, vous savez que les dossiers présents dans l'archive correspondent aux sous-dossiers de */usr*. Je vous recommande donc de copier le contenu de l'archive dans */usr* : ``` sudo cp -Rv * /usr ``` Vous devez être en sudo car le dossier */usr* est souvent protégé en écriture. **Autres cas** Si vous n'êtes dans aucun des cas ci-dessus, je vous conseille de créer un dossier *Logiciels* dans votre */home* dans lequel mettre les différents programmes qui ne suivent pas la procédure normale d'installation. Cherchez alors le lien binaire (l'exécutable) correspondant au programme, et ajoutez le dossier dans lequel il se trouve à votre PATH (pour pouvoir lancer le logiciel avec une simple commande). Pour cela, tapez dans le terminal : ``` export PATH=/home/user/Logiciels/mon_programme/bin/:$PATH ``` ## Compilation d'un programme depuis le repository GitHub Vous vous êtes lancés dans l'installation de librairies ou programmes expérimentaux, à peine fini de codé par les développeurs, et impossible de trouver un deb ou tar.gz sur Internet ! Dans ce cas, le dernier recours est de taper sur votre moteur de recherche le nom du programme suivi de **git**. Git est un gestionnaire de version qui permet notamment de faire du code à plusieurs, et il est énormément utilisé pour les logiciels libres (c'est Linus Torvalds, l'inventeur de Linux, qui a développé Git !). Si ça vous intéresse, nous avons écrit un [tutoriel](https://markdown.data-ensta.fr/s/introduction-versioning-git) sur son utilisation. Bref, si vous trouvez une page avec le code du programme sur GitHub, comme la suivante, voici ce qu'il faut faire. ![](https://markdown.data-ensta.fr/uploads/upload_2ede818fe8bc32d3a28c6f5f8b1a588a.png) * Copiez-collez le lien http vers le repository (encadré en rouge sur le screenshot) * Ouvrez un terminal et déplacez-vous dans votre dossier de téléchargement * Tapez la commande `git clone http://lien_copié_collé` * Faites un `cd nom_du_programme` * Suivez la partie précédente sur la compilation des *tar.gz* pour compiler le programme * Vous pourrez alors supprimer le dossier avec les sources ! ## Conclusion J'espère que ce document vous aura permis de mieux comprendre l'installation de logiciels sous Linux, et surtout de réussir à installer le vôtre ! Pour la plupart des logiciels de la vie courante, l'installation est vraiment facile et un simple *apt-get* suffit. Mais lorsque vous commencez à utiliser des librairies un peu complexes pour vos programmes, il arrive souvent que l'on ne puisse pas faire autrement que de compiler les sources. Si vous rencontrez des erreurs lors de la compilation, faites le plus de recherches possibles : la première compétence d'un informaticien est de savoir rechercher sur Google ! Mais dans le pire des cas, DaTA est là !