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


29

Je viens donc de poser une question simple qui va probablement me rendre stupide, mais j'apprends

Quand je fais un

./configure --prefix/usr/bin/

Que fait le préfixe? Est-ce simplement installer le package à cet emplacement

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 exécuter une installation apt-get, comment l'installer à un certain emplacement avec un préfixe

J'ai aussi vu

 PREFIX=/tmp/installdir make


 PREFIX=/tmp/installdir make install

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

Merci d'avance!



vérifier la réponse mise à jour
luv.preet

freetds.org/userguide/config.htm , cela vous aidera davantage
luv.preet

Reviewers: Il s'agit d' installer un logiciel . Il a trois votes serrés hors sujet comme "pas sur Ubuntu." Si la fermeture est en quelque sorte ce compatible avec une réelle place politique , je vous suggère de commenter. Sinon, cela sera probablement rouvert même s'il est fermé.
Eliah Kagan du

Réponses:


32

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

Lorsque vous exécutez ./configure, l' --prefixoption vous permet de spécifier où se trouvent ces répertoires . Il est appelé --prefixcar il vous permet de donner le préfixe qui apparaît dans les chemins d'accès à chacun des répertoires où les fichiers du programme ou de la bibliothèque que vous construisez doivent être installés. La plupart des configurescripts prennent en charge --prefix, et l'omettre et simplement exécuter ./configureest généralement équivalent à ./configure --prefix=/usr/local.

Pour y répondre plus complètement, j'ai reproduit deux sections de ma réponse à Comment installer le fichier tar «globalement»? (sous Unix et Linux ), qui répondent spécifiquement à cette question:

Configuration de votre build

Lorsque vous avez du code source qui est 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 exécutables sont généralement copiés dans un répertoire dans $PATHlequel vous devriez envisager de les ajouter $PATH.

Bien que l' installation du logiciel et la construction est souvent aussi simple que l' exécution ./configure, makeparfois make checkou make test, puis make installou sudo make install, vous voulez parfois passer des options au configurescript pour configurer la compilation. En particulier, comme le dit pfnuesel , c'est ainsi que vous configurez le logiciel va être installé. Même si l' make installétape installe réellement le logiciel, les emplacements où tout sera installé sont généralement définis dans l' ./configureétape.

L'option la plus courante pour cela est --prefix. Le préfixe par défaut, lorsque vous ne dites pas configurequoi utiliser, est généralement /usr/local. (Parfois, le code source d'un programme ou d'une bibliothèque prend par défaut un autre préfixe. Heureusement, c'est rare.)

./configureEst donc généralement équivalent à ./configure --prefix=/usr/local. Pour installer le logiciel dans votre répertoire personnel, vous pouvez utiliser ./configure --prefix=/home/galahad(si /home/galahadc'est votre répertoire personnel) ou --prefix="$HOME". Bien sûr, vous devez toujours construire et installer le logiciel avec make. Je dois dire que tous les logiciels distribués sous forme de code source ne sont pas construits de cette façon. Vous devez toujours rechercher de la documentation dans l'archive de code source extraite.

Que --prefixsignifie

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

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

C'est ce que signifie directoryê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 ainsi comme un préfixe dans les 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 à l'échelle du système - qui sont parfois créés lors de l'installation du logiciel qui les utilisera, mais pas toujours - entrent généralement /etc. Cela n'est généralement pas affecté par la spécification d'un préfixe différent. Même si vous installez un grand nombre de logiciels dans /usr/local, il utilisera principalement /etcet votre /usr/local/etcrépertoire sera probablement inexistant, vide ou contiendra très peu de fichiers.

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


2

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

et il indique également quels packages ne pas configurer, pour effectuer 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 rendre une compilation adaptée à votre système. C'est ce que je pense. Corrigez-moi s'il s'agit d'autre chose.

L' --prefix=PREFIXoption installe des fichiers indépendants de l'architecture dans PREFIX. Lorsque vous exécutez une make installcommande, les bibliothèques sont placées dans le PREFIX/librépertoire, les exécutables dans le PREFIX/binrépertoire, etc.

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.