Quiero ejecutar 'make install' para tener todo lo que necesito, pero me gustaría instalar las cosas en su propia carpeta en lugar de / usr / bin del sistema, etc. ¿es eso posible? incluso si hace referencia a herramientas en / usr / bin, etc.
Quiero ejecutar 'make install' para tener todo lo que necesito, pero me gustaría instalar las cosas en su propia carpeta en lugar de / usr / bin del sistema, etc. ¿es eso posible? incluso si hace referencia a herramientas en / usr / bin, etc.
Respuestas:
Depende del paquete. Si el Makefile es generado por GNU autotools ( ./configure
), generalmente puede establecer la ubicación de destino de la siguiente manera:
./configure --prefix=/somewhere/else/than/usr/local
Si el Makefile no es generado por autotools, sino distribuido junto con el software, simplemente ábralo en un editor y cámbielo. El directorio de destino de la instalación probablemente esté definido en una variable en alguna parte.
make && make install
seguir la cláusula de configuración?
--prefix
es que si ejecuta un strings
binario resultante después, verá que la ruta está almacenada en su interior. No sé por qué sucede esto, pero ciertamente no quiero las rutas de mi máquina en los archivos binarios que envío a otros usuarios.
Como no sabe qué versión de automake puede usar la variable de entorno DESTDIR .
Ver Makefile para estar seguro.
Por ejemplo:
export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
make DESTDIR=./new/customized/path install
Este comando rápido funcionó para mí para la instalación de opencv versión 3.2.0 en Ubuntu 16. La ruta DESTDIR puede ser relativa o absoluta.
Dicha redirección también puede ser útil en caso de que el usuario no tenga privilegios de administrador, siempre que la ubicación DESTDIR tenga acceso correcto para el usuario. por ejemplo / home //
Podría depender de lo que admite el módulo que está intentando compilar. Si su archivo MAKE se genera usando autotools, use:
--prefix=<myinstalldir>
cuando ejecuta el ./configure
algunos paquetes le permiten anular también cuando se ejecuta:
make prefix=<myinstalldir>
sin embargo, si no está usando ./configure, la única forma de saberlo con certeza es abrir el archivo MAKE y verificar. Debería ser una de las primeras variables en la parte superior.
make prefix=...
puede dar como resultado archivos binarios con rutas codificadas incorrectamente, ya que generalmente no se pueden modificar después de./configure --prefix=...
Si el paquete proporciona un Makefile.PL
- uno puede usar:
perl Makefile.PL PREFIX=/home/my/local/lib LIB=/home/my/local/lib
make
make test
make install
* explicación adicional: https://www.perlmonks.org/?node_id=564720
Probé las soluciones anteriores. Ninguno funcionó.
Al final, abrí el archivo Makefile y cambié manualmente la ruta del prefijo a la ruta de instalación deseada como se muestra a continuación.
PREFIX ?= "installation path"
Cuando intenté --prefix, "make" se quejó de que no hay tal entrada de comando. Sin embargo, quizás algunos paquetes acepten --prefix, que por supuesto es una solución más limpia.
--prefix
opción es a la ./configure
que llamas ANTES make
.
intente usar INSTALL_ROOT.
make install INSTALL_ROOT=$INSTALL_DIRECTORY