J'essaye de faire installer le logiciel dans un répertoire spécifique. J'ai trouvé plusieurs moyens, mais je ne sais pas quelles sont les différences entre eux.
./configure --prefix=***
make install DESTDIR=***
make install prefix=***
Je suis confus au sujet des fonctions de ces trois. Atteignent-ils le même objectif?
Le numéro 1 détermine où ira le package lors de son installation et où il recherchera ses fichiers associés lors de son exécution. C'est ce que vous devriez utiliser si vous compilez simplement quelque chose pour une utilisation sur un seul hôte.
make install DESTDIR=***
Le numéro 2 est pour l'installation dans un répertoire temporaire qui n'est pas à partir duquel le package sera exécuté. Par exemple, ceci est utilisé lors de la construction de debpackages. La personne qui construit le paquet n'installe pas réellement tout à sa place finale sur son propre système. Il peut avoir une version différente déjà installée et ne pas vouloir la déranger, ou même pas être root. Alors il utilise
./configure --prefix=/usr
le programme s'attendra donc à être installé /usrlors de son exécution, puis
make install DESTDIR=debian/tmp
pour créer réellement la structure de répertoires.
make install prefix=***
Le numéro 3 va l'installer à un endroit différent mais pas créer tous les répertoires comme le DESTDIR=/foo/bar/bazferait. Il est couramment utilisé avec GNU stow via
./configure --prefix=/usr/local&& make && sudo make install prefix=/usr/local/stow/foo
, qui installerait des binaires dans /usr/local/stow/foo/bin. Par comparaison,
make install DESTDIR=/usr/local/stow/foo
installerait des binaires dans /usr/local/stow/foo/usr/local/bin.
Pour ce que ça vaut, dans une construction basée sur cmake, vous pouvez émuler le "cas 4" (pour le rangement, etc.) en exécutant cmake -DCMAKE_INSTALL_PREFIX=/foo/bar/baz -P cmake_install.cmakedans le répertoire de construction.
Ryan Pavlik
@JackKelly: Merci! J'ai utilisé DESTDIR avec GNU stow et j'ai dû réparer la structure des répertoires avec une utilisation mv usr/local/* . && rmdir usr/local && rmdir usrtypique, prefix=c'est bien mieux!
thinkski
Remarque: certains logiciels ne prennent pas en charge DESTDIR=/tmp/foo make install; pour les projets basés sur cmake, j'ai eu plus de chance avec cmake -DCMAKE_INSTALL_PREFIX=/tmp/test1 -P cmake_install.cmakelequel installe /tmp/foo/{bin,...}; voir github.com/opencv/opencv/issues/11833#issuecomment-401164056 pour un exemple.
timotheecour
Une dernière note: DESTDIRet prefixpeut être utilisé make installensemble, à savoir make install DESTDIR=/foo/bar/tmp perfix=/local.
albert
1
Cela peut aider à illustrer l'utilisation de DESTDIRet --prefix(à partir d' ici ):
Plusieurs installations utilisant --prefix et DESTDIR:
Séparez un emplacement / une option --prefix différent pour chaque build - au moment de la configuration. Par exemple:
untar petsc tar ball
./configure --prefix=/opt/petsc/petsc-3.9.0-mpich --with-mpi-dir=/opt/mpich
make
make install DESTDIR=/tmp/petsc-pkg
untar petsc tar ball
./configure --prefix=/opt/petsc/petsc-3.9.0-openmpi --with-mpi-dir=/opt/openmpi
make
make install DESTDIR=/tmp/petsc-pkg
Dans le cas où le fichier ./configure n'est pas fourni, on peut toujours installer dans un répertoire spécifique à l'utilisateur en utilisant: make prefix = / path / to / your / lib / libaio install
Good Will
0
De openssl/INSTALL
Les constructeurs de packages qui souhaitent configurer la bibliothèque pour des emplacements standard, mais qui ont le package installé ailleurs afin qu'il puisse être facilement empaqueté, peuvent utiliser
$ make INSTALL_PREFIX=/tmp/package-root install
(ou spécifiez "--install_prefix = / tmp / package-root" comme option de configuration). Le préfixe spécifié sera ajouté à tous les noms de fichiers cibles de l'installation.
Ceci n'est pas standard mais INSTALL_PREFIX est utilisé dans certains autres programmes.
Cela fonctionne pour les versions d'OpenSSL antérieures à 1.1.x. OpenSSL 1.1.x et versions ultérieures sont capables de reconnaître les fichiers habituels DESTDIR.
cmake -DCMAKE_INSTALL_PREFIX=/foo/bar/baz -P cmake_install.cmake
dans le répertoire de construction.mv usr/local/* . && rmdir usr/local && rmdir usr
typique,prefix=
c'est bien mieux!DESTDIR=/tmp/foo make install
; pour les projets basés sur cmake, j'ai eu plus de chance aveccmake -DCMAKE_INSTALL_PREFIX=/tmp/test1 -P cmake_install.cmake
lequel installe/tmp/foo/{bin,...}
; voir github.com/opencv/opencv/issues/11833#issuecomment-401164056 pour un exemple.DESTDIR
etprefix
peut être utilisémake install
ensemble, à savoirmake install DESTDIR=/foo/bar/tmp perfix=/local
.Cela peut aider à illustrer l'utilisation de
DESTDIR
et--prefix
(à partir d' ici ):la source
De
openssl/INSTALL
Ceci n'est pas standard mais INSTALL_PREFIX est utilisé dans certains autres programmes.
Cela fonctionne pour les versions d'OpenSSL antérieures à 1.1.x. OpenSSL 1.1.x et versions ultérieures sont capables de reconnaître les fichiers habituels
DESTDIR
.la source