Make install not love

Publié le par Peck

Cet article est maintenant sur http://linux-attitude.fr/post/Make-install-not-love

Niveau
:
Résumé : ./configure ; make ; make install

Si vous voulez installer un logiciel qui n'est pas proposé dans votre système de paquet, il est probable que le site du dit logiciel vous en propose les sources. Et ce pour plusieurs raisons, tout d'abord parce qu'on est dans un monde opensource, si ce n'est libre, et donc le source est à la source de tout. D'autre part c'est bien plus facile pour lui car il n'a pas à compiler pour vous et à vous fournir un binaire pour chaque architecture/distribution... possible. Imaginez par exemple 7 distributions majeures * 13 architectures * 2 versions d'une bibliothèque dont on dépend, c'est à devenir fou !

L'auteur va donc se reposer sur les outils standards de compilation et sur une bonne âme (parfois lui-même) qui se proposerait de faire le paquet et l'inclure dans les distributions.

En attendant que votre distribution le propose, vous devez vous farcir le processus de compilation. Heureusement, il est en général automatisé et plutôt standard.

./configure
C'est la première commande que vous devez taper, en pratique elle va faire 2 choses, tout d'abord vérifier que toutes les dépendances sont présentes, et ensuite configurer et écrire un fichier Makefile qui contiendra les ordres de compilation. A chaque erreur de dépendance, à vous d'installer ce qu'il manque. Comme en général, il s'agit d'une bibliothèque. Sous debian vous la trouverez ainsi :
$ apt-cache search lib toto dev
  • lib : c'est une bibliothèque
  • toto :ce qu'on cherche
  • dev : on cherche la version pour le développement (avec les en-têtes pour permettre la compilation)

Pour la partie configuration, il y a un certain nombre de paramètres à passer à la commande. Les premiers sont standards. Pour en avoir la liste :
$ ./configure --help

Le paramètre le plus utilisé est --prefix= qui spécifie le répertoire dans lequel on veut installer le logiciel. Par défaut c'est /usr/local, ce qui est très bien lorsqu'on est dans une distribution standard.

Cette commande doit être tapée en tant qu'utilisateur normal.

make
C'est la 2e commande. Celle ci ne vous demandera rien, elle effectue juste la compilation. Elle sera plus ou moins longue selon la taille du projet. Elle peut s'arrêter en cas de problème de compilation, et c'est là que commence l'arrachage de cheveux et les mails ininterrompus avec le développeur (vive l'opensource).

Cette commande doit être tapée en tant qu'utilisateur normal.

make install
Cette command est séparée de make, bien que les règles font qu'en général make install effectue le make si besoin. En effet, cette commande doit être tapée en tant que root si des droits spéciaux sont requis pour l'installation du logiciel. En gros c'est le cas si vous installez celui-ci ailleurs que dans votre home.


Et voila, connaître cette procédure fait la différence entre un vrai sysadmin et un débutant. Comme disaient les romains : Non licet omnibus adire Corinthum, il n'est pas donné à tout de monde de savoir faire ./configure && make && make install.


Si vous êtes développeur :
Remarquez que pour mettre tout ceci en place, le développeur n'a pas tout écrit à la main. Il a utilisé les autotools. Il a tapé automake et autoconf mais ce n'est pas tout, il dû écrire un fichier de configuration plus ou moins long. Bien que les autotools aient l'avantage d'une portabilité inégalée, ils sont d'un lourdeur incomparable. Je vous conseille donc plutôt de vous orienter vers d'autre produits comme cmake.

Quelques produits concurents :
  • scons : écrit en python
  • ant : écrit en java
  • imake : utilisé pour Xfree, vieux, à éviter
  • cmake : utilisé pour kde4

Publié dans admin

Pour être informé des derniers articles, inscrivez vous :

Commenter cet article

Alexandre 05/08/2007 23:18

Et c'est quoi l'équivalent de apt-get remove ?

Peck 07/08/2007 18:31

Tu peux tenter make uninstall ou make deinstall mais comme c'est au développeur d'y penser tu peux oublier 9 fois sur 10.Il existe un soft nommé checkinstall qui permet de faire ça (http://asic-linux.com.mx/~izto/checkinstall/) :tu remplace "make install" par "checkinstall make install" qui te fait un paquet pour ta distribution qu'il reste à installer. Ensuite, à toi de voir comment configurer checkinstall pour correspondre à ta distribution.