En passant de Windows à Linux, je suis incapable de comprendre le processus d'installation de logiciels sous Linux. Sous Windows, lorsque nous exécutons un fichier d'installation, celui-ci vous demande où vous souhaitez installer le programme, le plus probablement dans le dossier des fichiers de programme uniquement. Plus tard, il édite le registre. Ceci s'appelle l'installation sous Windows. Que signifie exactement "installer un logiciel" sous Linux?
Supposons que je télécharge le code source, le configure puis que je construise le binaire avec make
. Maintenant, il s’agit d’un programme binaire, pas encore utilisable. Comment ça va être 'installé'? Par make install
? Et que fait cette commande, exactement?
make
installation
KawaiKx
la source
la source
make install
étapes du point de vue des programmeurs.Réponses:
Make est un programme de workflow à 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 du répertoire courant nommé "Makefile". Cette règle appelle généralement le compilateur pour compiler du code source en fichiers binaires.
Lorsque vous effectuez "make install", le programme make récupère les fichiers binaires de l'étape précédente et les copie dans des emplacements appropriés afin de pouvoir y accéder. Contrairement à Windows, l'installation nécessite simplement la copie de certaines bibliothèques et de certains exécutables et il n'y a aucune exigence de registre en tant que telle. En bref, "make install" copie simplement les fichiers compilés aux emplacements appropriés.
la source
all
dans leMakefile
marqueur et à quoi ressemble le marqueur de fin de cette section, afin que je puisse voir où en est le traitement de la règleall
.make install
fait ce que l'Makefile
auteur veut qu'il fasse. En règle générale, il est trop tard pour modifier le répertoire d'installation, comme il est souvent connu auparavant , lors de la construction. Les fichiers d'aide et les fichiers de configuration peuvent donc être référencés avec les noms de chemin corrects.De nombreux projets utilisent les outils automatiques GNU pour essayer d'améliorer leur portabilité entre 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 légèrement en dehors du chemin habituel, à l'exception de la plupart des programmes nécessitant l'un ou l'autre de ceux déclarés dans des emplacements différents.)
Lorsqu'un projet utilise les outils automatiques, le mantra normal à installer est le suivant:
Le
./configure
vous permet généralement d'utiliser une option de ligne de commande comme--prefix /opt/apache
ou quelque chose de similaire pour spécifier un chemin différent./usr/local/
est un défaut communprefix
. Il est beaucoup plus facile pour un logiciel construit localement de vivre au même endroit et un logiciel fourni par la distribution que de vivre dans les "répertoires principaux":,/usr/
/bin/
etc. (Les emballeurs font très attention à ne jamais toucher les fichiers/usr/local/
- ils savent que c'est exclusivement pour les administrateurs système.)Quoi qu'il en soit, la
./configure --prefix /path/to/new/prefix
fixeront une variable dans laMakefile
qui est disponible lors de la compilation du programme, la modification des pages de manuel afin qu'ils pointent vers les emplacements pour les fichiers, la modification des fichiers de configuration, etc. Ainsimake
construira le logiciel spécifiquement pour l'emplacement d' installation que vous voulez etmake install
l'installera à cet endroit.La plupart des programmes peuvent être exécutés même sans la dernière
make install
étape - ils./program_name
seront souvent démarrés. C’est définitivement une affaire de projet - certaines, commepostfix
,qmail
etc., sont composées de nombreux éléments en mouvement et reposent sur leur collaboration. D'autres, commels
ousu
pourraient être assez autonomes pour s'exécuter correctement à partir du répertoire dans lequel ils ont été construits. (Ce n'est pas souvent utile - mais parfois très utile.)Cependant, tous les projets n'utilisent pas les outils automatiques: ils sont énormes , compliqués et difficiles à maintenir. Les écritures manuscrites
Makefile
sont beaucoup plus simples à écrire, et je pense personnellement que le simple fait de distribuer uneMakefile
variable simple avec des variables de configuration disponibles est beaucoup plus facile pour les développeurs et les utilisateurs. (Bien que le./configure ; make ; make install
mantra soit vraiment facile pour les utilisateurs quand cela fonctionne.)la source
make install
ne fait rien de moins que l’exécution de lainstall
fonction / section dans votreMakefile
la source
make clean
, fondamentalement, il exécute simplement les codes de la section.La chose la plus importante à mentionner en ce qui concerne l’installation de logiciels sur Linux est qu’il est beaucoup plus fiable et facile d’installer des logiciels à partir de votre distribution (c’est le but!). Utilisez uniquement
make install
s'il n'y a pas d'autre moyen (envisagez également des programmes alternatifs).L’erreur commune des utilisateurs Windows est de télécharger des programmes de différents endroits et d’essayer de les installer, en oubliant de consulter leurs packages de distribution, qui pourraient être installés en un seul clic ou en utilisant une commande (dans le gestionnaire de packages).
N'oubliez pas non plus que l'une des principales raisons de l'absence d'infections virales sous Linux est que le logiciel est (ou devrait être) installé à partir de l'emplacement central (de confiance) au lieu de nombreux sites aléatoires.
En outre, bien que les distributions comme Ubuntu contiennent toujours des paquets obsolètes, il existe également des distributions comme Arch Linux toujours à jour (bien qu’elles ne proposent pas littéralement tous les programmes jamais publiés pour Linux, comme Debian / Ubuntu).
En ce qui concerne ce qui se passerait exactement lorsque vous utilisiez le gestionnaire de paquets, il vérifierait les dépendances, téléchargerait les paquets, décompresserait, mettrait tous les fichiers dans leurs répertoires appropriés, selon les directives de FHS et de la distribution, ainsi que certaines autres routines que vous pourriez probablement connaître. depuis la page de manuel du gestionnaire de paquets.
la source