# Instalación de software

La instalación de los programas computacionales (software) es el proceso fundamental por el cual los nuevos programas son transferidos a un computador con el fin de ser configurados, y preparados para ser desarrollados. Un programa recorre diferentes fases de desarrollo durante su vida útil:
* Programador: profesional encargado de desarrollar el programa computacional.
* Desarrollo: cada programador necesita el programa instalado, pero con las herramientas, códigos fuente, bancos de datos y etc, para modificar el programa.
* Prueba: antes de la entrega al usuario, el software debe ser sometido a pruebas. Esto se hace, en caso de software complejos, en una instalación ad hoc.
* Producción: Para ser utilizado por el usuario final....
En cada una de esas fases la instalación cumple diferentes objetivos. En español, programa sirve para señalar tanto un guion o archivo ejecutable, ejemplo tar, como un conjunto de archivos que sirven un fin común, ejemplo LibreOffice. Por eso usaremos el neologismo software para programas computacionales.

## Objetivo

Una instalación exitosa es una condición necesaria para el funcionamiento de cualquier software. Mientras más complejo sea el software, es decir, entre otras características, mientras más archivos contenga, mientras mayor la dispersión de los archivos y mientras mayor sea la interdependencia con otros softwares, mayor es el riesgo de alguna falla durante la instalación. Si la instalación falla aunque sea solo parcialmente, el fin que persigue la instalación posiblemente no podrá ser alcanzado. Por esa razón, sobre todo en casos de software complejo, el desarrollo de un proceso de instalación confiable y seguro es una parte fundamental del equipo desarrollo del software.
La desinstalación de software es el proceso por el que elimina el software del computador.

## Alternativas

En los últimos años se han producido normas y técnicas cada vez más avanzadas para minimizar y estandarizar el proceso de instalación de software. Ver Sistema de gestión de paquetes. Para la instalación de software se pueden aplicar las siguientes técnicas básicas:
* Los archivos son simplemente copiados en algún lugar del directorio. Este sistema es fácil e intuitivo, y el preferido en MacOS X. Un riesgo es que versiones más antiguas hayan quedado abandonadas en algún otro lugar sin que nos demos cuenta.
* Se instala primero un instalador, el que posteriormente instala el software deseado.
* El sistema operativo o algún software permanente se ocupan de instalar un paquete de software con todos los archivos requeridos. Esto es un Sistema de gestión de paquetes.

## Proceso de la instalación

* Verificación de la compatibilidad: Se debe comprobar si se cumplen los requisitos para la instalación en cuanto a hardware y software. A veces es necesario desinstalar versiones antiguas del mismo software.
* Verificación de la integridad: Se verifica que el paquete de software es el original, esto se hace para evitar la instalación de programas maliciosos.
* Creación de los directorios requeridos: Para mantener el orden en el directorio cada sistema operativo puede tener un estándar para la instalación de ciertos archivos en ciertos directorios. Ver por ejemplo Linux Standard Base.
* Creación de los usuarios requeridos: Para deslindar responsabilidades y tareas se pueden o deben usar diferentes usuarios para diferentes paquetes de software.
* Concesión de los derechos requeridos: Para ordenar el sistema y limitar daños en caso necesario, se le conceden a los usuarios solo el mínimo necesario de derechos.
* Copia, desempaque y decompresión de los archivos desde el paquete de software: Para ahorrar Ancho de banda y tiempo en la transmisión por internet o espacio de Disco duro, los paquetes vienen empacados y comprimidos.
** Archivos principales, sean de fuente o binarios.
** Archivos de datos, por ejemplo datos, imágenes, modelos, documentos XML-Dokumente, etc.
** Documentación
** Archivos de configuración
** Bibliotecas
** Enlaces duros o enlaces simbólico a otros archivos
* Compilación y enlace con la bibliotecas requeridas: En algunos casos no se puede evitar el complicado paso de la compilación y enlace que a su vez tiene severos requerimientos de software al sistema. El enlace con bibliotecas requeridas puede ser un problema si en su instalación no se acataron los estándares establecidos.
* Configuración: Por medio de archivos de configuración se le da a conocer al software con que parámetros debe trabajar. Por ejemplo, los nombres de las personas que pueden usar el software, como verificar su clave de ingreso, la ruta donde se encuentran los archivos con datos o la dirección de nuestro proveedor de correo electrónico. Para sistemas complejos se debe desarrollar el Software Configuration Management.
* Definir las variables de entorno requeridas: Algunos comportamientos del software solo pueden ser determinados por medio de estas variables. Esto es parte de la configuración, aunque es más dinámica.
* Registro ante el dueño de la marca: Para el Software comercial a veces el desarrollador de software exige el registro de la instalación si se desea su servicio.

### Término de la instalación

Si un sistema de gestión de paquetes realiza paquetes de software del sistema.
En caso de que bibliotecas hayan sido cambiadas por la instalación, es necesario arrancar el sistema operativo o el software nuevamente para hacer efectivos los cambios en todos los programas.