Cosa fa esattamente --prefix quando usato in ./configure?


29

Quindi ho appena fatto una semplice domanda che probabilmente mi farà sembrare stupido, ma sto imparando

Quando faccio a

./configure --prefix/usr/bin/

Cosa sta facendo il prefisso? Sta solo installando il pacchetto in quella posizione

E una risposta può dare più di una risposta elaborata per un'installazione complicata e spiegare in dettaglio i prefissi e le opzioni che ne derivano.

Se dovessi eseguire un'installazione apt-get come la installerei in una certa posizione con prefisso

Ho anche visto

 PREFIX=/tmp/installdir make


 PREFIX=/tmp/installdir make install

Se viene chiamato il prefisso ./configure perché viene sempre creato in questi due esempi?

Grazie in anticipo!



controlla la risposta aggiornata
luv.preet

freetds.org/userguide/config.htm , questo ti aiuterà di più
luv.preet

Revisori: si tratta dell'installazione del software . Ha tre voti stretti fuori tema come "non su Ubuntu". Se la chiusura di questo è in qualche modo coerente con qualsiasi politica effettiva del sito , suggerisco di commentare. In caso contrario, questo sarà probabilmente riaperto anche se è chiuso.
Eliah Kagan,

Risposte:


32

Quando si installa il software con make installo sudo make install, file diversi vengono collocati in directory diverse. Gli eseguibili che forniscono comandi che l'utente deve eseguire di solito vanno in una bindirectory, le librerie di solito vanno in una libdirectory, le pagine di manuale di solito vanno in una mandirectory e così via.

Quando esegui ./configure, l' --prefixopzione ti consente di specificare dove si trovano quelle directory . Viene chiamato --prefixperché consente di fornire il prefisso visualizzato nei percorsi di ciascuna directory in cui devono essere installati i file del programma o della libreria che si sta creando. La maggior parte degli configurescript supporta --prefix, e ometterlo e solo eseguirlo ./configureequivale in genere a ./configure --prefix=/usr/local.

Per rispondere in modo più completo, ho riprodotto due sezioni della mia risposta a Come installare il file tar "a livello globale"? (su Unix e Linux ), che affrontano specificamente questa domanda:

Configurare la tua build

Quando hai il codice sorgente che viene compilato eseguendo ./configure e make, di solito utilizzerai make install(o sudo make install) per installarlo. Questo copia i file dalla directory di build nel percorso di installazione. Quando la cosa che si sta installando fornisce comandi eseguibili, questi eseguibili vengono in genere copiati in una directory che si trova $PATHo che si dovrebbe considerare di aggiungere $PATH.

Sebbene la creazione e l'installazione di software sia spesso semplice come in esecuzione ./configure, a makevolte make checko make test, e quindi make installo sudo make install, a volte vorrete passare le opzioni allo configurescript per configurare la build. In particolare, come dice pfnuesel , questo è il modo in cui si configura dove verrà installato il software. Anche se il make installpassaggio in realtà installa il software, le posizioni in cui tutto verrà installato sono in genere stabilite nel ./configurepassaggio.

L'opzione più comune per questo è --prefix. Il prefisso predefinito, quando non si dice configurecosa usare, è di solito /usr/local. (Occasionalmente, il codice sorgente di un programma o di una libreria viene impostato automaticamente su un altro prefisso. Fortunatamente questo è raro.)

Quindi di ./configuresolito è equivalente a ./configure --prefix=/usr/local. Per installare il software nella tua home directory, puoi usare ./configure --prefix=/home/galahad(se /home/galahadè la tua home directory) o --prefix="$HOME". Quindi, ovviamente, è comunque necessario compilare e installare il software con make. Devo dire che non tutti i software distribuiti in forma di codice sorgente sono costruiti in questo modo. Dovresti sempre cercare la documentazione all'interno dell'archivio del codice sorgente estratto.

Ciò che --prefixsignifica

Quando esegui , stai indicando che il software deve essere installato nella directory. Ma questo raramente, se mai, inserisce file sciolti . Al contrario, inserisce file che hanno scopi diversi nelle diverse sottodirectory di . Se queste sottodirectory non esistono, le crea../configure --prefix=directorydirectorydirectorydirectory

Gli eseguibili di solito entrano directory/bin, anche se possono entrare directory/sbinse sono comunemente usati per l'amministrazione del sistema o possono entrare (più raramente, in questi giorni) directory/gamesse sono giochi. Le biblioteche entrano in directory/libun'altra directory simile o simile directory/lib32. I file di intestazione entrano directory/include. Le pagine del manuale entrano directory/man. Vengono inseriti i file di dati utilizzati dal software directory/share.

Questo è ciò che significa directoryessere un prefisso . È la directory principale che contiene le posizioni in cui verranno installati file diversi. Appare quindi come prefisso nei percorsi assoluti della maggior parte dei file e delle directory creati eseguendo make install o sudo make install.

Ci sono alcune eccezioni a questo. I file di configurazione a livello di sistema - che a volte vengono creati durante l'installazione del software che li utilizzerà, sebbene non sempre - entrano solitamente /etc. Questo non è in genere influenzato specificando un prefisso diverso. Anche se installi un sacco di software /usr/local, lo userà comunque principalmente /etce la tua /usr/local/etcdirectory sarà probabilmente inesistente, vuota o con pochissimi file.

Su molti sistemi, è possibile trovare ulteriori informazioni sul layout tipico del filesystem eseguendo man hier. Se stai usando un sistema GNU / Linux potresti essere interessato al Filesystem Hierarchy Standard .


2

Indica la posizione delle cose necessarie per configurare il pacchetto o il software corrente.

Come in un semplice caso, può dire la posizione delle librerie ssl:

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

e indica anche quali pacchetti non configurare, per compilare in modo adeguato il programma in base al proprio sistema:

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

Queste sono solo opzioni extra per rendere una compilation adatta al tuo sistema. È quello che penso. Correggimi se è qualcos'altro.

L' --prefix=PREFIXopzione installa i file indipendenti dall'architettura PREFIX. Quando si esegue un make installcomando, le librerie verranno posizionate nella PREFIX/libdirectory, eseguibili nella PREFIX/bindirectory e così via.

Se questo argomento non viene passato al configurecomando, il valore predefinito è /usr/local.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.