make - DESTDIR y PREFIX de hacer
makefile c++ (2)
Estoy tratando de hacer que el software se instale en un directorio específico. Encontré varias formas, 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?
Esto puede ayudar a ilustrar el uso de DESTDIR
y --prefix
(desde here ):
Múltiples instalaciones usando --prefix y DESTDIR:
Sepcifique una ubicación / opción de prefijo diferente para cada compilación, en el momento de la 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
El número 1 determina dónde irá el paquete cuando esté instalado y dónde buscará sus archivos asociados cuando se ejecute. Es lo que deberías usar si solo estás compilando algo para usar en un solo host.
El número 2 es simplemente un error hasta donde yo sé.
El número 3 es para instalar en un directorio temporal que no es desde donde se ejecutará el paquete. Por ejemplo, esto se usa cuando se construyen paquetes deb
. La persona que crea el paquete en realidad no instala todo en su lugar final en su propio sistema. Puede que ya tenga una versión diferente instalada y no quiera molestarla, o puede que ni siquiera sea root. Entonces él usa
./configure --prefix=/usr
entonces el programa esperará instalarse en /usr
cuando se ejecute, luego
make install DESTDIR=debian/tmp
para realmente crear la estructura del directorio.
El número 4 lo instalará en un lugar diferente pero no creará todos los directorios como lo DESTDIR=/foo/bar/baz
. Se usa comúnmente con GNU stow via
./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 realmente se suponía que era el número 2 .