Voglio eseguire 'make install' in modo da avere tutto ciò di cui ho bisogno, ma mi piacerebbe che installasse le cose nella loro cartella invece del sistema / usr / bin ecc. È possibile? anche se fa riferimento a strumenti in / usr / bin ecc.?
Voglio eseguire 'make install' in modo da avere tutto ciò di cui ho bisogno, ma mi piacerebbe che installasse le cose nella loro cartella invece del sistema / usr / bin ecc. È possibile? anche se fa riferimento a strumenti in / usr / bin ecc.?
Risposte:
Dipende dal pacchetto. Se il Makefile è generato da GNU autotools ( ./configure
) di solito puoi impostare la posizione di destinazione in questo modo:
./configure --prefix=/somewhere/else/than/usr/local
Se il Makefile non è generato da autotools, ma distribuito insieme al software, è sufficiente aprirlo in un editor e modificarlo. La directory di destinazione dell'installazione è probabilmente definita da qualche parte in una variabile.
make && make install
seguire la clausola configure?
--prefix
è che se in seguito esegui un strings
binario risultante, vedi che il percorso è memorizzato all'interno. Non so perché questo accada, ma certamente non voglio i miei percorsi macchina su binari che invio ad altri utenti.
Dato che non so quale versione di automake puoi usare la variabile d'ambiente DESTDIR .
Vedi Makefile per essere sicuro.
Per esempio:
export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
make DESTDIR=./new/customized/path install
Questo comando rapido ha funzionato per me per l'installazione della versione 3.2.0 di opencv su Ubuntu 16. Il percorso DESTDIR può essere sia relativo che assoluto.
Tale reindirizzamento può anche essere utile nel caso in cui l'utente non disponga dei privilegi di amministratore purché la posizione di DESTDIR abbia il giusto accesso per l'utente. ad es. / home //
Potrebbe dipendere da ciò che è supportato dal modulo che stai cercando di compilare. Se il tuo makefile viene generato usando gli autotools, usa:
--prefix=<myinstalldir>
quando si esegue ./configure
alcuni pacchetti consentono anche di eseguire l'override durante l'esecuzione:
make prefix=<myinstalldir>
tuttavia, se non si utilizza ./configure, l'unico modo per saperlo con certezza è aprire il makefile e controllare. Dovrebbe essere una delle prime variabili in alto.
make prefix=...
potrebbero verificarsi file binari con percorsi errati, dato che di solito non possono essere modificati dopo./configure --prefix=...
Se il pacchetto fornisce un Makefile.PL
- si può usare:
perl Makefile.PL PREFIX=/home/my/local/lib LIB=/home/my/local/lib
make
make test
make install
* ulteriore spiegazione: https://www.perlmonks.org/?node_id=564720
Ho provato le soluzioni sopra. Nessuno ha funzionato.
Alla fine ho aperto il file Makefile e ho cambiato manualmente il percorso del prefisso nel percorso di installazione desiderato come di seguito.
PREFIX ?= "installation path"
Quando ho provato --prefix, "make" si è lamentato del fatto che non esiste un comando di questo tipo. Tuttavia, forse alcuni pacchetti accettano --prefix che è ovviamente una soluzione più pulita.
--prefix
opzione è quella ./configure
che chiami PRIMA make
.
prova a utilizzare INSTALL_ROOT.
make install INSTALL_ROOT=$INSTALL_DIRECTORY