El comando install es un comando muy versátil cuando se trata de copiar archivos en Linux y macOS. En relación a la funcionalidad y eficiencia, ofrece la posibilidad de transerir archivos rápidamente y sin muchas complicaciones.
¿No es para instalar programas?
A pesar de que el nombre del comando pueda generar confusiones a primera vista, realmente no sirve para instalar nuevo software en nuestro equipo. Si quieres instalar un paquete de software en Ubuntu o Debian, debes usar el comando apt-get.
¿Entonces qué hace?
Esta instrucción, en resumen, combina los elementos de las herramientas cp (copiar), chown (reemplazar), chmod (cambiar modo), mkdir (realizar directorio) y strip (quitar elementos innecesarios) en una sola acción.
install permite:
- Copiar archivos
- Escojer donde reescribir los archivos
- Crear un directorio objetivo si no existe
- Establecer permisos de usuario para los archivos
- Configurar el dueño del archivo
- Descartar elementos no esenciales del archivo ejecutable
A pesar de todas esas fncionalidades, el comando install, no tiene muchas opciones similares que tengan las mmismas funciones.
¿Cuando debería usarlo?
No se trata de un comando de uso cotidiano, ya que se emplea en ciertas situaciones. Un escenario donde viene a resaltar su utilidad es cuando desarrollas tu propio software. Si programas una utilidad nueva, necesitarás probarla fuera del espacio de desarrollo. Para hacer esto, debes copiar todos los archivos del programa en un directorio de prueba, para lo cual necesitarás dos cosas: permisos adecuados y posesión de los archivos.
Ya que el desarrollo se trata de una actividad iterativa, podrías repetir esta actividad cientos de veces. Y ya que no quieres colocar cada comando por separado, install resume todas las actividades que necesitas para el propósito.
Un ejemplo:
Un programador está trabajando en una nueva utilidad llamada ana, un archivo binario ejecutable y una base de datos. Después de ser probado, debe ser copiado a la ruta /usr/local/bin para que esté disponible para todos los usuarios de Linux en el sistema. Necesitarás sustituir los nombres de archive y las rutas de directorio en nuestro ejemplo, para los archivos que usas en tu ordenador a momento de usar el comando install.
Hasta que esté listo para su lanzamiento, será probado en el directorio ~/test/ana. El comando install usa la musma representación numérica que el comando chmod. Nuestro programador debe configurar también los siguientes permmisos:
- Dueño: Editar, leer y ejecutar.
- Grupo: leer y ejecutar
- Otros: ejecutar
¿Cómo usar el commando install?
El directorio de trabajo de nuestro programador ficticio es ~/work/. Ha escrito, compilado y producido un archivo binario llamado ana. Ya ha creado el archivo de base de datos que ana empleará en su funcionamiento, Words.db. Ambos archivos se encuentran listos para una prueba. Observemos:
ls -l ana Words.db
La utilidad ana crea anagramas fuera de la frase provista en la línea de comando. Nuestro programador ha introducido la frase “biscuit” para invocar a ana, y al parecer ha funcionado. Ahora desea copiar estos dos archivos al directorio ~/test/ana, para comprobar el funcinamiento correcto de la utilidad fuera del entorno de desarrollo.
El programador introduce este comando:
install -D -v ana Words.db -t ~/test/ana
Las opciones usadas en esta línea de comando son:
- D: Crear directorios
- v: Enlista cada directorio como si estuviese hecho y cada copia de archivos
- t: Directorio objetivo
Podemos ver que install crea los direectrios ~/test directory y ~/test/ana. Los archivos son enlistados uno por uno mientras son copiados al directorio objetivo.
Enlistar los archivos en ~/test/ana confirma que estos han sido copiados correctamente.
ls-l
Invocando la funcionalidad de la utilidad
El siguiente paso es probar la funcionalidad de ana al invocarla en el directorio ~/test/ana.
La utilidad opera como se espera. Sin embargo, los permisos no son correctos. El requerimiento apropiado es establecer permisos de lectura y ejecución al grupo geek, y para los otros usuarios, solo de ejecución.
Podemos darle solución a ambos problemas de forma sencilla con el comando sudo. Ten en cuenta que debes ejecutar este comando con permisos de root, ya que las opciones -o y – g lo requieren:
sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
- -b: Backup. Realiza un respaldo de los archivos antes de copiarlos.
- -S: Sufijo. Define el sufijo para los archivos de respaldo. En este caso le asignaremos .bak
- -o: Dueño. Establecemos el propietario del archivo con esta opción.
- -g: Grupo. Esta opción requiere el nombre de un grupo, que vendría a ser el dueño del grupo de archivos. Aquí colocaremos al grupo geek.
- -m: Modo. Esta opción establece el modo mara los archivos, usando la sintaxis numérica estándar del comando chmod.
Ya no necesitamos usar la opción -D (crear directorios), ya que conocemos que el directorio de prueba existe. Hemos omitido también la opción -v (verboseo). Listar los archivos en el directorio ~/test/ana nos muestra los siguientes detalles:
- Los archivos han sido copiados al directorio de prueba.
- Los permisos han sido establecidos correctamente.
- dave es el dueño de los archivos.
- El grupo geek es el dueño del grupo de los dos archivos.
- Las copias de respaldo han sido realizadas para cada archivo, llamadas ana.bak y Words.db.bak.
Toques finales a la utilidad
Nuestro programador realiza algunos cambios finales a la utilidad y la recompila. Los archivos que han cambiado necesitan copiarse en el directorio ~/test/ana desde ~/work directory. Podemos hacer esto usando la opción-C (comparar). Si el archivo de origen y el archivo objetivo son los mismos, el archivo origen no será copiado.
sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
Enlistar los archivos en el directorio objetivo nos muestra que el tamaño de archivo de ana ha cambiado. Es más grande que el archive de respaldo ana.bak. La marca de tiempo en ana también ha cambiado. Estos cambios surgen a raíz de que la nueva versión del archivo ha sido copiada al presente directorio.
ls -l
El tamaño del archivo y la marca de tiempo del archivo Words.db no ha cambiado. Al no realizar ningún cambio, no se copia. En un proyecto con muchos archivos, la opción -C puede ahorrar mucho tiempo y uso del disco duro.
Comando install para copiar archivos
Es hora de usar install para copiar los archivos del directorio /usr/local/bin. Estohará que la nueva utilidad esté disponible para todos los usuarios de este equipo. Podemos usar una versión modificada del último comando para ello.
Hemos cambiado el directorio objetivo para que sea /usr/local/bin. Hemos quitado la opción -C ya que no hay copias de los archivos en ese directorio aún, así que no hay nada con lo que puedan compararse. Como tampoco necesitamos guardar un respaldo, eliminamos las opciones -b y -S.
sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin
Podemos ver que los archivos han llegado a /usr/local/bin.
ls -l
Y como prueba final, cambiaremos el directorio a nuestro directorio de inicio y veremos si podemos invocar nuestra nueva utilidad desde ahí.
Date cuenta que no necesitamos utilizar un prefacio “./” a la utilidad ana, lo que significaque está siendo ejecutada desde /usr/local/bin.
Hemos mencionado que install puede desechar elementos de sobra o redundantes del archivo binario para reducir su tamaño. Es lo que haremos ahora. En el comando inferior no incluiremos el archivo Words.db, ya que es un archivo de base de datos y no un código binario ejecutable.
sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin
- Hemos añadido las siguientes opciones:
- -s: Reducir
- -b: Backup
- -S: Sufijo
Mover los archivos a /usr/local/bin nos permite comparar el tamaño de ana con su versión de respaldo. Además, el archivo original ha reducido su tamaño en un 60%.
ls -l /usr/local/bin
En resumen
El comando install tiene un uso bastante particular. No será útil para muchos en sus actividades cotidianas, pero a pesar de eso, el comando ofrece la posibilidad de ahorrar tiempo a aquellos programadores dedicados que requieren optimizar sus trabajos y hacerlos más simples.
¿Tienes alguna pregunta o problema relacionado con el tema del artículo? Queremos ayudarte.
Deja un comentario con tu problema o pregunta. Leemos y respondemos todos los comentarios, aunque a veces podamos tardar un poco debido al volumen que recibimos. Además, si tu consulta inspira la escritura de un artículo, te notificaremos por email cuando lo publiquemos.
*Moderamos los comentarios para evitar spam.
¡Gracias por enriquecer nuestra comunidad con tu participación!