install
ofrece una serie de características además de copiar archivos a un directorio.
- la
-s
opción elimina la tabla de símbolos de un ejecutable, ahorrando espacio
- La
-m
opció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/bin
garantiza que todos puedan ejecutar el archivo, que es probablemente lo que el desarrollador quiere para un archivo en un directorio compartido.
- Las opciones
-o
y -g
establecen el propietario y el grupo. Con cp
, el propietario y el grupo del archivo de destino se establecerían en el uid y gid de quien ejecutó el archivo cp
, y con cp -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. El wall
programa debe estar en grupo tty
, el screen
programa debe estar en grupo utmp
, etc.
- reduce la cantidad de comandos que deben colocarse en una receta de archivo MAKE.
install -s -m 755 -o root -g bin file1 file2 lib/* $(DESTDIR)
es más sucinto que los cuatro comandos cp
, strip
, chmod
, y chown
.
La última viñeta es probable por qué install
se inventó el comando y por qué muchos makefiles lo usan.
Install
sin embargo, no siempre se usa. He visto cp -r lib $(DESTDIR)/lib
cuando hay un árbol completo lleno de cosas para copiar, y ./install.sh
si el desarrollador prefiere usar un script personalizado. Muchos paquetes tienen un install.sh
derivado del que viene con X11, que es similar install
pero admite una -t
opción (transformación) para cambiar el nombre de los archivos de destino de una manera específica.