DESTDIR y PREFIJO de make


Estoy tratando de hacer que el software se instale en un directorio específico. Encontré varias maneras, pero no estoy seguro de cuáles son las diferencias entre ellas.

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

Estoy confundido acerca de las funciones de estos cuatro. ¿Logran el mismo objetivo?

Author: Mateen Ulhaq, 2012-07-03

2 answers

Number 1 determina dónde irá el paquete cuando esté instalado, y dónde buscará sus archivos asociados cuando se ejecute. Es lo que debe usar si solo está compilando algo para usarlo en un solo host.


El número 2 es simplemente un error que yo sepa.


Number 3 es para instalar en un directorio temporal que no es desde donde se ejecutará el paquete. Por ejemplo, esto se usa cuando se construye deb paquete. La persona que construye el paquete en realidad no instala todo en su lugar final en su propio sistema. Puede que ya tenga instalada una versión diferente y no quiera molestarla, o puede que ni siquiera sea root. Así que usa

./configure --prefix=/usr

Así que el programa esperará ser instalado en /usr cuando se ejecute, entonces

make install DESTDIR=debian/tmp

Para crear realmente la estructura de directorios.


Número 4 va a instalarlo en un lugar diferente, pero no crear todos los directorios como DESTDIR=/foo/bar/baz lo haría. Se usa comúnmente con GNU stow a través de

./configure --prefix=/usr/local && make && sudo make install prefix=/usr/local/stow/foo

, que instalaría binarios en /usr/local/stow/foo/bin. En comparación,

make install DESTDIR=/usr/local/stow/foo

Instalaría binarios en /usr/local/stow/foo/usr/local/bin. Eso es probablemente lo que el Número 2 realmente se suponía que era.

 138
Author: Alan Curry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-26 03:15:35

Esto puede ayudar a ilustrar el uso de DESTDIR y --prefix (de aquí):

Varias instalaciones usando pref prefix y DESTDIR:

Sepcifique una ubicación/opción different prefix diferente para cada compilación en el momento de configuración. Por ejemplo:

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
 0
Author: sancho.s,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-27 14:31:14