49 votes

Que fait exactement l'option --prefix lorsqu'elle est utilisée dans ./configure ?

J'ai donc une question simple qui va probablement me faire passer pour une idiote, mais j'apprends

Lorsque je fais un

./configure --prefix/usr/bin/

Que fait le préfixe ? S'agit-il simplement d'installer le paquet à cet endroit ?

Et une réponse peut-elle être plus élaborée pour une installation compliquée et expliquer en détail les préfixes et les options qui vont avec.

Si je lance un apt-get install, comment puis-je l'installer à un certain endroit avec le préfixe

J'ai également vu

 PREFIX=/tmp/installdir make

 PREFIX=/tmp/installdir make install

Si prefix est appelé dans ./configure pourquoi est-il toujours fait dans ces deux exemples ?

Merci d'avance !

63voto

Eliah Kagan Points 111731

Lorsque vous installez un logiciel avec make install o sudo make install Les fichiers sont placés dans des répertoires différents. Les exécutables qui fournissent des commandes que l'utilisateur est censé exécuter sont généralement placés dans un répertoire bin les bibliothèques sont généralement placées dans un répertoire lib Les pages manuelles sont généralement placées dans un répertoire man et ainsi de suite.

Lorsque vous exécutez ./configure , les --prefix L'option vous permet de spécifier l'endroit où Ceux-ci Les répertoires sont . Il est appelé --prefix parce qu'il vous permet de donner à l préfixe qui apparaît dans les chemins d'accès à chacun des répertoires dans lesquels les fichiers du programme ou de la bibliothèque que vous construisez doivent être installés. La plupart des configure scripts support --prefix et en l'omettant et en exécutant simplement ./configure est généralement équivalent à ./configure --prefix=/usr/local .

Pour répondre plus complètement à cette question, j'ai reproduit deux sections du document suivant ma réponse まで Comment installer le fichier tar "globalement" ? (sur Unix et Linux ), qui traitent spécifiquement de cette question :

Configuration de la construction

Lorsque vous avez un code source qui est compilé en exécutant la commande ./configure et make vous utiliserez généralement make install (ou sudo make install ) pour l'installer. Cette opération permet de copier les fichiers du répertoire de construction dans le répertoire d'installation. Lorsque l'élément que vous installez fournit des commandes des commandes exécutables, ces exécutables sont généralement copiés dans un répertoire qui se trouve dans le répertoire $PATH ou que vous devriez envisager d'ajouter des $PATH .

Bien que la création et l'installation de logiciels soient souvent d'exécuter ./configure , make , parfois make check o make test , et ensuite make install o sudo make install Vous aurez parfois à faire face à des vous voudrez parfois passer des options à la fonction configure script pour configurer la construction. En particulier, comme pfnuesel dit C'est ainsi que l'on peut le logiciel va être installé. Même si le make install l'étape de l'installation du logiciel, les emplacements où tout sera installé sont généralement établis dans la base de données. [ ] ./configure pas.

L'option la plus courante est la suivante --prefix . Le préfixe par défaut, lorsque vous ne dites pas configure de ce qu'il convient d'utiliser, est généralement /usr/local . (Il arrive que le code source d'un programme ou d'une bibliothèque prenne par défaut une autre valeur préétablie). autre préfixe. Heureusement, c'est rare).

Donc ./configure est généralement équivalent à ./configure --prefix=/usr/local . Pour installer un logiciel dans votre répertoire personnel, vous pouvez utiliser la méthode suivante ./configure --prefix=/home/galahad (si /home/galahad i votre répertoire personnel) ou --prefix="$HOME" . Ensuite, il faut bien sûr construire et installer le logiciel avec make . Je dois préciser que tous les logiciels distribués sous forme de code source ne sont pas construits de cette manière. de cette façon. Vous devez toujours chercher la documentation à l'intérieur du extraite du code source.

Ce qu'il faut faire --prefix Moyens

Lorsque vous exécutez ./configure --prefix=_directory_ , que le logiciel doit être installé directory répertoire. Mais cela ne permet que rarement, voire jamais, de placer des fichiers en vrac dans le répertoire directory . Au lieu de cela, il place les fichiers qui servent dans les différents sous-répertoires de directory . Si ces n'existent pas, il les crée.

Les exécutables sont généralement placés dans _directory_/bin bien qu'ils peuvent entrer _directory_/sbin s'ils sont couramment utilisés pour l'administration du système, ou ils peuvent aller (plus rarement, de nos jours) à l'étranger. _directory_/games s'il s'agit de jeux. L _directory_/lib ou un autre nom similaire _directory_/lib32 . Fichiers d'en-tête g _directory_/include . Pages du manuel _directory_/man . Fichiers de données utilisés par le logiciel g _directory_/share .

C'est ce que cela signifie pour directory d'être un préfixe . C'est la répertoire parent qui contient les emplacements dans lesquels les différents fichiers seront insérés. seront installés. Il apparaît donc comme un préfixe im a chemins de la plupart des fichiers et répertoires créés en exécutant make install o sudo make install .

Il existe quelques exceptions à cette règle. Les fichiers de configuration à l'échelle du système qui sont parfois créés lors de l'installation des logiciels qui logiciels qui les utiliseront, mais pas toujours, vont généralement dans des fichiers de configuration. /etc . Il ne s'agit pas d'une n'est pas affecté par la spécification d'un préfixe différent. Même si vous installez beaucoup de logiciels dans /usr/local , il sera toujours mo /etc et votre /usr/local/etc Le répertoire sera probablement inexistant, vide ou contenant très peu de fichiers.

Sur de nombreux systèmes, vous pouvez trouver plus d'informations en exécutant la commande man hier . Si vous utilisez un système GNU/Linux vous serez peut-être intéressé par le programme Hiérarchie des systèmes de fichiers Standard .

2voto

luv.preet Points 5137

Il indique l'emplacement des éléments nécessaires à la configuration du progiciel ou du logiciel en cours.

Par exemple, dans un cas simple, il peut indiquer l'emplacement des bibliothèques ssl :

--with-libssh2=/usr/local  #used in configuring nagios

et il indique également les paquets à ne pas configurer, afin de réaliser des compilations appropriées du programme en fonction de votre système :

--disable-shared  # used in configuring nagios
--disable-link-balancer  # used in configuring Firehol

Il s'agit simplement d'options supplémentaires qui permettent d'adapter la compilation à votre système. C'est ce que je pense. Corrigez-moi si c'est autre chose.

En --prefix=PREFIX L'option installe des fichiers indépendants de l'architecture dans PREFIX . Lorsque vous exécutez un make install les bibliothèques seront placées dans le répertoire PREFIX/lib les exécutables dans le répertoire PREFIX/bin et ainsi de suite.

Si cet argument n'est pas transmis à la fonction configure la valeur par défaut est /usr/local .

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