¿Cuál es la diferencia entre install -c y cp? La mayoría de las instalaciones tienden a usar install -c, pero desde la página de manual no suena como algo diferente a cp (excepto quizás establecer permisos). ¿Cuándo debo usar install -c y cuándo cp?
Una diferencia significativa es que cp trunca el archivo de destino y comienza a copiar datos del origen en el archivo de destino.
instalar, por otro lado, elimina primero el archivo de destino.
Esto es importante porque si el archivo de destino ya está en uso, podrían pasarle cosas malas a quien esté usando ese archivo en caso de que tenga cp
un archivo nuevo encima. por ejemplo, sobrescribir un ejecutable que se está ejecutando podría fallar. Truncar un archivo de datos en el que un proceso existente está ocupado leyendo / escribiendo podría causar un comportamiento bastante extraño. Si solo elimina primero el archivo de destino, como lo hace la instalación, las cosas continúan de manera muy normal: el archivo eliminado no se elimina realmente hasta que todos los procesos cierran ese archivo.
cp --remove-destination
en GNU coreutils.Técnicamente, la diferencia entre
install -c
ycp
es queinstall
establece los permisos del archivo de destinorwxr-xr-x
.cp
conserva los permisos del archivo fuente menos la umask. Estos comportamientos predeterminados son útiles en diferentes situaciones. Obviamente, con todas las opciones que ofrecencp
yinstall
ofrecen hoy en día, las funcionalidades han convergido.Hoy en día,
install
se usa comúnmente en makefiles, encp
cualquier otro lugar. Esta distinción es útil ocasionalmente porque algunos sistemas operativos o sistemas de instalación le permiten conectarse alinstall
programa para registrar los paquetes instalados. Los sistemas modernos de administración de paquetes hacen que este tipo de obsoleto, pero algunas personas todavía lo usan. Además, la posibilidad de establecer los permisos del archivo de destino de la misma manera es muy conveniente.fuente
La
install
utilidad, en su base, es una fantasíacp
. Pero como una herramienta específicamente se instala, contiene algunas características quecp
no lo hacen. Mi/usr/bin/install
partir de GNU coreutils no sólo copias, sino que también puede cambiar las permanentes / propiedad como banderas Arg (ahorrochgrp
,chown
,chmod
invocaciones) una opción de columna de información de depuración (guardar unastrip
invocación) y también un poco de mojo para los contextos de SELinux.Simplemente proporciona acciones de conveniencia útiles para las instalaciones de software. Ninguno cambia la vida, todos son útiles y hacen que sus scripts sean más limpios.
fuente