77 votes

Que fait "make install" ?

En passant de Windows à Linux, je n'arrive pas à comprendre le processus d'installation de logiciels dans Linux. Dans Windows, lorsque nous exécutons un fichier d'installation, il demande où vous souhaitez installer le programme, très probablement dans le dossier des fichiers de programmes uniquement. Ensuite, il modifie le registre. C'est ce qu'on appelle l'installation dans Windows. Que signifie exactement "installer un logiciel" sous Linux ?

Supposons que je télécharge le code source, que je le configure, puis que je construise le binaire en utilisant make . Maintenant, c'est juste un binaire, pas encore un programme utilisable. Comment va-t-il être "installé" ? Par make install ? Et que fait cette commande, exactement ?

67voto

codeadventurer Points 101

Make est un programme de travail à usage général, généralement utilisé pour la compilation. Mais il peut être utilisé pour n'importe quoi.

Lorsque vous faites quelque chose comme "make all", le programme make exécute une règle nommée "all" à partir d'un fichier dans le répertoire courant nommé "Makefile". Cette règle appelle généralement le compilateur pour compiler un code source en binaires.

Lorsque vous faites "make install", le programme make prend les binaires de l'étape précédente et les copie dans des emplacements appropriés afin qu'ils soient accessibles. Contrairement à Windows, l'installation nécessite juste de copier quelques bibliothèques et exécutables et il n'y a aucune exigence de registre en tant que telle. En bref, "make install" ne fait que copier les fichiers compilés dans des emplacements appropriés.

49voto

sarnold Points 3438

make install fait tout ce que le Makefile l'auteur veut qu'il le fasse. En général, à ce stade, il est trop tard pour modifier le répertoire d'installation, car il est souvent connu sous le nom de "répertoire d'installation". plus tôt pendant la construction, afin que les fichiers d'aide et les fichiers de configuration puissent être référencés avec les noms de chemin corrects.

De nombreux projets utilisent le Autotools de GNU pour essayer d'améliorer leur portabilité parmi les différences de matériel et de système d'exploitation. (Différentes variantes d'Unix utilisent des en-têtes légèrement différents pour les déclarations de fonctions qui sortent légèrement du chemin habituel -- sauf que la plupart des programmes ont besoin de l'une ou l'autre de celles déclarées à différents endroits).

Lorsqu'un projet utilise les Autotools, le mantra normal pour l'installer est le suivant :

./configure
make
make install

El ./configure vous permet généralement d'utiliser une option de ligne de commande telle que --prefix /opt/apache ou quelque chose de similaire pour spécifier un nom de chemin différent. /usr/local/ est un défaut courant prefix . Il est beaucoup plus facile pour un logiciel construit localement de vivre à un endroit et pour un logiciel fourni par la distribution de vivre dans les "répertoires principaux" : /usr/ /bin/ et ainsi de suite. (Les emballeurs sont très attention à nunca toucher les fichiers dans /usr/local/ -- ils savent qu'il est exclusivement destiné aux administrateurs système).

Quoi qu'il en soit, le ./configure --prefix /path/to/new/prefix va définir une variable dans le Makefile qui est disponible lors de la compilation du programme, en modifiant les pages du manuel pour qu'elles indiquent les emplacements corrects des fichiers, en modifiant les fichiers de configuration, etc. Ainsi, make construira le logiciel spécifiquement pour l'emplacement d'installation que vous souhaitez et make install l'installera à cet endroit.

La plupart des programmes peuvent être exécutés même sans la version finale make install étape -- juste ./program_name va souvent les mettre en route. C'est définitivement une chose par projet -- certains, comme postfix , qmail etc., sont constitués de nombreuses pièces mobiles différentes qui doivent fonctionner ensemble. D'autres, comme ls ou su peuvent être suffisamment autonomes pour être exécutées depuis le répertoire dans lequel elles ont été construites. (Ce n'est pas souvent utile -- mais parfois très utile.)

Cependant, tous les projets n'utilisent pas les Autotools -- ils sont énorme , compliqué et misérable à entretenir. Écrit à la main Makefile sont beaucoup plus simples à écrire, et je pense personnellement que distribuer un simple Makefile avec des variables de configuration disponibles est beaucoup plus facile pour les développeurs et les utilisateurs. (Bien que le ./configure ; make ; make install Le mantra est vraiment facile pour les utilisateurs lorsque cela fonctionne).

24voto

sascha Points 491

make install ne fait rien d'autre que d'exécuter la install fonction / section dans votre Makefile

10voto

corvinus Points 331

La chose la plus importante à mentionner concernant l'installation de logiciels sous Linux est qu'il est beaucoup plus fiable et facile d'installer des logiciels à partir de votre distribution (c'est son but !). Utilisez uniquement make install s'il n'y a pas d'autre moyen (envisagez également des programmes alternatifs).

L'erreur commune des utilisateurs de Windows est de télécharger des programmes depuis différents endroits et d'essayer de les installer, en oubliant de vérifier leurs paquets de distribution, qui pourraient être installés d'un simple clic ou d'une commande (dans le gestionnaire de paquets).

Rappelez-vous également que l'une des principales raisons de l'absence d'infections virales sous Linux est que les logiciels sont (ou devraient être) installés à partir d'un emplacement central (de confiance) et non à partir de nombreux sites aléatoires.

En outre, si des distributions comme Ubuntu contiennent toujours des paquets périmés, il existe également des distributions comme Arch Linux qui sont toujours à jour (bien qu'elles ne proposent pas littéralement tous les programmes jamais publiés pour Linux, comme Debian/Ubuntu).

Quant à ce qui se passe exactement lorsque vous utilisez le gestionnaire de paquets, il vérifie les dépendances, télécharge les paquets, les décompresse, place tous les fichiers dans leurs répertoires appropriés, selon les directives du FHS et de la distribution, et d'autres routines que vous pouvez probablement trouver dans la page de manuel du gestionnaire de paquets.

0voto

klein.li Points 1

En utilisant le programme bin_PROGRAMS, make install place les fichiers binaires dans /usr/local/bin. Lors de l'installation d'un système linux, tous les fichiers exécutables que le système peut exécuter seront placés dans /usr/bin. Tous les exécutables installés par l'utilisateur seront placés dans /usr/local/bin par la commande 'make install'.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X