web-dev-qa-db-fra.com

Que fait exactement --prefix lorsqu'il est utilisé dans ./configure?

Donc, je viens d'avoir une question simple qui va probablement me faire paraître stupide, mais j'apprends

Quand je fais un

./configure --prefix/usr/bin/

Que fait le préfixe? Est-ce simplement installer le paquet à cet endroit?

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

Si je devais lancer une installation d’apt-get, comment l’installerais-je à un certain emplacement avec le préfixe

J'ai aussi vu

 PREFIX=/tmp/installdir make


 PREFIX=/tmp/installdir make install

Si le préfixe est appelé dans ./configure, pourquoi est-il toujours créé dans ces deux exemples?

Merci d'avance!

22
user610658

Lorsque vous installez un logiciel avec make install ou Sudo make install, différents fichiers sont placés dans des répertoires différents. Les exécutables qui fournissent les commandes que l'utilisateur est censé exécuter vont généralement dans un répertoire bin, les bibliothèques dans un répertoire lib, les pages de manuel dans un répertoire man, etc.

Lorsque vous exécutez ./configure, , l'option --prefix vous permet de spécifier où ces répertoires sont . Il s'appelle --prefix car il vous permet d'indiquer le 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 créez doivent être installés. La plupart des scripts configure prennent en charge --prefix, et leur omission et la simple exécution de ./configure équivaut généralement à ./configure --prefix=/usr/local.

Pour répondre plus complètement à cette question, j'ai reproduit deux sections de ma réponse à Comment installer le fichier tar "globalement"? (sur nix & Linux =), qui abordent spécifiquement cette question:

Configurer votre build

Lorsque vous avez un code source compilé en exécutant ./configure et make, vous utiliserez généralement make install (ou Sudo make install) pour l’installer. Cela copie les fichiers du répertoire de construction dans l’emplacement d’installation. Lorsque la chose que vous installez fournit des commandes exécutables, ces derniers sont généralement copiés dans un répertoire qui se trouve dans $PATH ou que vous devriez envisager d’ajouter à $PATH.

Bien que la création et l’installation de logiciels soient souvent aussi simples que l’exécution de ./configure, make, parfois de make check ou de make test, puis de make install ou de Sudo make install, vous souhaiterez parfois passer des options au script configure pour configurer le build. En particulier, comme dit pfnuesel , voici comment vous configurez le logiciel va être installé. Même si l'étape make install installe réellement le logiciel, les emplacements où tout sera installé sont généralement définis à l'étape ./configure.

L'option la plus courante pour cela est --prefix. Le préfixe par défaut, lorsque vous ne dites pas quoi utiliser à configure, est généralement /usr/local. (Parfois, le code source d'un programme ou d'une bibliothèque utilise par défaut un autre préfixe. Heureusement, cela 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 ./configure --prefix=/home/galahad (si /home/galahad est votre répertoire personnel) ou --prefix="$HOME". Ensuite, bien sûr, vous devez toujours créer et installer le logiciel avec make. Je dois dire que tous les logiciels distribués sous forme de code source ne sont pas conçus de cette manière. Vous devriez toujours chercher de la documentation dans l'archive de code source extraite.

Que signifie --prefix

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

Les exécutables vont généralement dans directory/bin, bien qu’ils puissent aller dans directory/sbin s’ils sont couramment utilisés pour l’administration système ou bien (plus rarement de nos jours) dans directory/games s’ils sont des jeux. Les bibliothèques vont dans directory/lib ou un autre répertoire du même nom comme directory/lib32. Les fichiers d'en-tête vont dans directory/include. Les pages de manuel vont dans directory/man. Les fichiers de données utilisés par le logiciel vont dans directory/share.

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

Il y a quelques exceptions à cela. Les fichiers de configuration système, qui sont parfois créés lors de l’installation du logiciel qui les utilisera, mais pas toujours, sont généralement enregistrés dans /etc. Ceci n'est généralement pas affecté par la spécification d'un préfixe différent. Même si vous installez beaucoup de logiciels dans /usr/local, il utilisera toujours principalement /etc et votre répertoire /usr/local/etc sera probablement inexistant, vide ou ne contiendra que très peu de fichiers.

Sur de nombreux systèmes, vous pouvez trouver plus d'informations sur la disposition d'un système de fichiers typique en exécutant man hier. Si vous utilisez un système GNU/Linux, vous pouvez être intéressé par le norme de hiérarchie de système de fichiers .

28
Eliah Kagan

Il indique l'emplacement des éléments nécessaires à la configuration du package ou du logiciel actuel.

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

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

il indique également quels paquets ne doivent pas être configurés pour 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

Ce ne sont que des options supplémentaires pour faire une compilation adaptée à votre système. C'est ce que je pense. Corrigez-moi si c'est autre chose.

L'option --prefix=PREFIX installe les fichiers indépendants de l'architecture dans PREFIX. Lorsque vous exécutez une commande make install, les bibliothèques sont 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 passé à la commande configure, la valeur par défaut est /usr/local.

1
luv.preet