web-dev-qa-db-fra.com

DESTDIR et PREFIX de marque

J'essaie de faire installer le logiciel dans un répertoire spécifique. J'ai trouvé plusieurs façons, mais je ne sais pas quelles sont les différences entre elles.

  1. ./configure --prefix=***
  2. make install DESTDIR=***
  3. make install prefix=***

Je suis confus sur les fonctions de ces trois. Est-ce qu'ils atteignent le même objectif?

104
Sean

./configure --prefix=***

Number 1 détermine où le paquet ira quand il sera installé et où il cherchera les fichiers associés quand il sera lancé. C'est ce que vous devriez utiliser si vous compilez quelque chose pour l'utiliser sur un seul hôte.


make install DESTDIR=***

Number 2 est destiné à être installé dans un répertoire temporaire dans lequel le package ne sera pas exécuté. Par exemple, ceci est utilisé lors de la construction de packages deb. La personne qui construit le paquet n’installe pas tout à sa place 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 ne pas être root. Alors il utilise

./configure --prefix=/usr

donc le programme s’attendra à être installé dans /usr quand il fonctionne, puis

make install DESTDIR=debian/tmp

pour créer réellement la structure de répertoire.


make install prefix=***

Number va l'installer à un endroit différent mais ne pas créer tous les répertoires en tant que DESTDIR=/foo/bar/baz aurait. 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 les binaires dans /usr/local/stow/foo/usr/local/bin.

162
Alan Curry

Cela peut aider à illustrer l'utilisation de DESTDIR et --prefix (de ici ):

Installations multiples à l'aide de - préfixe et DESTDIR:

Sépécifier un - emplacement/une option différente pour chaque construction - au moment de la configuration. Pour 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
1
sancho.s

De openssl/INSTALL

Les constructeurs de packages qui souhaitent configurer la bibliothèque pour des emplacements standard, mais qui ont installé le package ailleurs afin de pouvoir le conditionner facilement, peuvent utiliser

$ make INSTALL_PREFIX=/tmp/package-root install

(ou spécifiez "--install_prefix =/tmp/package-root" en tant qu'option de configuration). Le préfixe spécifié sera ajouté au début à tous les noms de fichiers cibles d'installation.

Ceci n'est pas standard mais INSTALL_PREFIX est utilisé dans d'autres programmes.

Cela fonctionne pour les versions OpenSSL antérieures à 1.1.x. OpenSSL 1.1.x et les versions ultérieures sont capables de reconnaître les DESTDIR habituels.

0
kyb