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.
./configure --prefix=***
make install --prefix=***
make install DESTDIR=***
make install prefix=***
Estoy confundido acerca de las funciones de estos cuatro. ¿Logran el mismo objetivo?
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.
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
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