He visto la install
comando utilizado en muchos Makefiles, y su existencia y uso son un poco confusos. De las páginas de manual, parece una imitación de cp
con menos funciones, pero supongo que no se usaría a menos que tuviera alguna ventaja sobre cp
. ¿Cuál es el problema?
Respuesta aceptada:
install
no solo copia archivos, sino que también cambia su propiedad y permisos y, opcionalmente, elimina los símbolos de depuración de los ejecutables. Combina cp
con chown
, chmod
y strip
. Es una herramienta conveniente de alto nivel que realiza una secuencia común de tareas elementales.
Una ventaja de install
sobre cp
para instalar ejecutables es que si el destino ya existe, elimina el archivo de destino y crea uno nuevo. Esto elimina las propiedades actuales, como las listas de control de acceso y las capacidades, que pueden verse tanto como una ventaja como una desventaja. Al actualizar los ejecutables, si hay instancias en ejecución de este ejecutable, seguirán ejecutándose sin verse afectadas. Por el contrario, cp
actualiza el archivo en su lugar si hay uno. En la mayoría de las variantes de Unix, esto falla con el error EBUSY¹ si el destino es un ejecutable en ejecución; en algunos, puede hacer que el objetivo se bloquee porque carga secciones de código dinámicamente y modificar el archivo hace que se cargue código sin sentido.
install
es un comando BSD (agregado en 4.2BSD, es decir, a principios de la década de 1980). No ha sido adoptado por POSIX.
¹ “Archivo de texto ocupado”. En este contexto, "archivo de texto" significa "archivo ejecutable binario", por oscuras razones históricas.