¿Qué hace / usr / bin / install además de copiar?


11
  1. ¿ make installCon un Makefile la mayor parte del tiempo llama /usr/bin/install?

  2. ¿Qué trabajo necesario hace /usr/bin/installademás de copiar los archivos recién compilados /usr/bin/local?

  3. La página de manual dice /usr/bin/installcopiar archivos y establecer atributos. ¿Qué atributos son tan importantes para establecer?

  4. ¿Solo establece modos de permiso y propietario / grupo, que no son necesarios?

"¿Hacer la instalación con un Makefile la mayor parte del tiempo llama / usr / bin / install?" No, hace lo que quiere. Es un objetivo de marca. ¿Es su pregunta sobre el ejecutable de instalación? ¿O sobre hacer? No está claro.
Faheem Mitha

ambos. @FaheemMitha
Tim

Ok, bueno, 1 y 2 son preguntas diferentes, y la respuesta a 1 es, probablemente no, pero define "la mayoría de las veces". No estoy seguro del punto 1, de todos modos.
Faheem Mitha

Respuestas:


17

install ofrece una serie de características además de copiar archivos a un directorio.

  • la -sopción elimina la tabla de símbolos de un ejecutable, ahorrando espacio
  • La -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.
  • Las opciones -oy -gestablecen 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 wallprograma debe estar en grupo tty, el screenprograma 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é installse inventó el comando y por qué muchos makefiles lo usan.

Installsin embargo, no siempre se usa. He visto cp -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 un install.shderivado del que viene con X11, que es similar installpero admite una -topción (transformación) para cambiar el nombre de los archivos de destino de una manera específica.


2
  1. 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 nuevo installno es POSIX, por lo que usarlo siempre puede no ser el enfoque más portátil

    AFAIK, la mayoría de las herramientas se pueden usar para generar automáticamente archivos MAKE como automakey cmakese usarán install.

  2. 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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.