¿
make installCon un Makefile la mayor parte del tiempo llama/usr/bin/install?¿Qué trabajo necesario hace
/usr/bin/installademás de copiar los archivos recién compilados/usr/bin/local?La página de manual dice
/usr/bin/installcopiar archivos y establecer atributos. ¿Qué atributos son tan importantes para establecer?- ¿Solo establece modos de permiso y propietario / grupo, que no son necesarios?
11

Respuestas:
installofrece una serie de características además de copiar archivos a un directorio.-sopción elimina la tabla de símbolos de un ejecutable, ahorrando espacio-mopción establece los bits de permiso. Los archivos que se encuentran en el directorio del desarrollador se crearon sujetos a su umask, lo que puede impedir que otros los ejecuten.install -m 755 file1 /usr/local/bingarantiza que todos puedan ejecutar el archivo, que es probablemente lo que el desarrollador quiere para un archivo en un directorio compartido.-oy-gestablecen el propietario y el grupo. Concp, el propietario y el grupo del archivo de destino se establecerían en el uid y gid de quien ejecutó el archivocp, y concp -p, el propietario y el grupo del archivo de destino serían los mismos que el archivo en el directorio de compilación, ninguno de los cuales podría ser lo que el desarrollador quiera. Elwallprograma debe estar en grupotty, elscreenprograma debe estar en grupoutmp, etc.install -s -m 755 -o root -g bin file1 file2 lib/* $(DESTDIR)es más sucinto que los cuatro comandoscp,strip,chmod, ychown.La última viñeta es probable por qué
installse inventó el comando y por qué muchos makefiles lo usan.Installsin embargo, no siempre se usa. He vistocp -r lib $(DESTDIR)/libcuando hay un árbol completo lleno de cosas para copiar, y./install.shsi el desarrollador prefiere usar un script personalizado. Muchos paquetes tienen uninstall.shderivado del que viene con X11, que es similarinstallpero admite una-topción (transformación) para cambiar el nombre de los archivos de destino de una manera específica.fuente
Dado que los comandos que se usan en un archivo MAKE dependen esencialmente de los desarrolladores del proyecto, es difícil dar una respuesta definitiva aquí. En general, diría que es una buena práctica usar el
installcomando en un archivo MAKE para cualquier proceso de instalación mencionado en 2, pero de nuevoinstallno es POSIX, por lo que usarlo siempre puede no ser el enfoque más portátilAFAIK, la mayoría de las herramientas se pueden usar para generar automáticamente archivos MAKE como
automakeycmakese usaráninstall.Generalmente
installse usa para copiar archivos y configurar permisos / propietario / grupo en un comando como usted dice. Otra función de uso común es quitar símbolos innecesarios (por ejemplo, símbolos de depuración) de un binario que ya no los necesita. También tiene algunas opciones adicionales para cosas como hacer copias de seguridad antes de instalar y trabajar dentro de un contexto SELinux que pueden ser útiles.Los permisos para elegir dependen del archivo en sí. La mayoría de los archivos instalados son legibles por todos, pero solo se pueden escribir desde la raíz (la idea es colocar los archivos de programa en un lugar donde todos puedan acceder a ellos pero no puedan ser manipulados). Este no es el caso con todo, si el archivo contiene datos confidenciales, es común limitar el acceso a un grupo o solo a la raíz.
fuente