Formas de instalación
En Linux hay varias formas de instalar software:
- Instalación de paquetes precompilados (menos optimización, más sencillo)
- Compilación e instalación desde código fuente (optimización para nuestro sistema, más complejo)
Gestores de paquetes
En la mayoría de distribuciones, es posible obtener los paquetes precompilados desde unos repositorios (servidores de archivos que normalmente pertenecen a la distribución).
| Ventajas |
|
| Desventajas |
|
Estos paquetes se distribuyen en formatos concretos. Algunos de los más populares:
.deb: para distribuciones basadas en Debian (Ubuntu, Mint, etc).rpm: para distribuciones basadas en RedHat (Fedora…)
Se puede utilizar la herramienta alien para convertir de otros formatos
a .deb.
<paquete>_<version>-<build>_<arquitectura>.deb
- Paquete: nombre de la aplicación.
- Versión: número de versión de la aplicación.
- Build: número de «compilación» (subversión).
- Arquitectura: plataforma para la que está compilado.
Ejemplos:
ethereal_0.10.11-1_i386.deblibgtk-3-0_3.18.9-1_amd64.deb
Debian
En Debian hay dos herramientas estándar para manejar los paquetes de software:
dpkg(Debian Package): herramienta de bajo nivel para gestionar directamente los paquetes.debapt(Advanced Packaging Tool): herramientas APT que permiten gestionar los paquetes descargándolos de varias fuentes.
También existen otras herramientas gráficas a modo de tienda.
dpkgdpkg -i / --install Instalación del paquete
dpkg -r / --remove Eliminación del paquete
dpkg -P / --purge Eliminación completa del paquete (configuración)
dpkg -s / --status Muestra el estado del paquete
dpkg -l / --list Lista los paquetes instalados
dpkg -L / --listfiles Muestra el contenido de un paquete
dpkg -S / --search Busca el paquete al que pertenece un archivo
dpkg-reconfigure Reconfigura un paquete
--install es la única opción a la que se le necesita pasar el nombre del
archivo del paquete completo (nombre_version_build_arch.deb), al resto basta
con el nombre del paquete.
aptAPT es un sistema de gestión de paquetes creado por el proyecto Debian que simplifica la instalación de programas.
- Contacta con el servidor
- Comprueba las dependencias necesarias
- Pregunta al usuario si continuar
- Instala el paquete
Comandos
apt-get: realiza modificaciones en la base de datos.apt-cache: aporta únicamente información.apt: interfaz moderna que combina las funcionalidades anteriores.
Las opciones más habituales son:
apt-get update Actualiza la lista de paquetes (sincronizar con el server)
apt-get updrade Actualiza los paquetes
apt-get install Instala un paquete
apt-get dist-upgrade Actualiza la versión de la distribución
Borra o instala nuevos paquetes si es necesario
apt-get remove Elimina un paquete
apt-get purge Elimina un paquete incluyendo la configuración
apt-get autoremove Elimina paquetes que no hacen falta (dependencias)
apt-get clean Borra la caché y descargas
apt-get source Descarga un archivo fuente
--compile Compila el paquete a .deb
apt-get build-dep Descarga las dependencias de compilación
---------------------------------------------------------------------------
apt-cache search Busca paquetes para instalar
apt-cache show Muestra información de un paquete
apt-cache depends Lista las dependencias del paquete
apt-cache policy Muestra fuentes y prioridades
---------------------------------------------------------------------------
apt-get -f install Corrige errores de dependencias
Bloqueo
Solo se puede usar un comando de apt-get a la vez para evitar posibles errores
de inconsistencia. El archivo /var/lib/dpkg/lock funciona a modo de cerrojo.
Cuando sucede un error con apt es posible que no libere el lock y luego no
puedas volver a usarlo. Llega con eliminar el lock para arreglar el problema.
Puede configurarse que se realicen actualizaciones de forma automática, que también crea el lock. Es posible que esté bloqueado por eso.
Archivos de configuración
/etc/apt/sources.list es el archivo de configuración que contiene los
distintos servidores desde los que se obtienen los paquetes.
deb <URL> {stable|testing|unstable} <componentes> # Ejecutables
deb-src <URL> {stable|testing|unstable} <componentes> # Código fuente
stableo el code name de la versión de la distro: versión recomendadatesting: versiones más recientes pero no probados exhaustivamenteunstable: versión en desarrollo, con errores sin corregir
Y componentes puede ser:
main: conjunto principal dados por el personal de la distribución, más fiables.contrib: paquetes adicionales dados por la comunidad, menos fiables.non-free: paquetes con licencias comerciales
El resto de la configuración se puede poner en el archivo /etc/apt/apt.conf
o separado en varios archivos dentro del directorio /etc/apt/apt.conf.d/*.
Snap
Los snaps son paquetes autocontenidos que funcionan en una amplia gama de distribuciones. Incluyen todas las dependencias que necesitan, lo que permite que funcionen de forma independiente de las ya instaladas. Como desventaja, esto introduce mucha redundancia.
Las programas snap se ejecutan en contenedores aislados con acceso limitado al sistema. El usuario puede configurar varios niveles de permisos de forma similar que en sistemas Android. Este enfoque aumenta la seguridad pero tiene la desventaja de que las aplicaciones son algo más lentas al arrancar.
Se desarrollaron por Ubuntu.
Flatpak
Modelo similar a los snaps, pero desarrollado por Fedora y RedHat.
Otras herramientas
pip: instalación de librerías Python.cargo: instalación de programas escritos en Rust.
Instalación desde código fuente
- Descargar el código fuente.
- Descomprimir el archivo (ver Tarballs o Zip).
- Leer el archivo
INSTALLpor si hubiese instrucciones de instalación.
A continuación, el proceso más habitual (sobre todo para programas escritos en C para Linux) sigue con los siguientes pasos:
- Configuración del build system.
Si se usóautoconf, ejecutar el script./configureque se encarga de:- Chequear el entorno de compilación
- Chequear las librerías necesarias
- Generar los
Makefilesde compilación e instalación Se le puede especificar el directorio de instalación:./configure --prefix=dir. Por defecto, instalará localmente (/usr/local).
- Compilación: el estándar en Linux es
make - Instalación: se puede utilizar el mismo
Makefile:make install - Opcionalmente, se pueden limpiar los archivos de compilación:
make clean
En resumen, el proceso estándar es:
wget https://servidor.com/software/paquete_version.tar.gz
tar xzvf paquete_version.tar.gz
cd paquete_version
./configure
make
make install
Tipos de ejecutables
- Estáticamente enlazados: contienen todo el código que necesitan para ejecutarse.
- Dinámicamente enlazados: necesitan de librerías instaladas en el sistema.
El comando file indica si un ejecutable fue enlazados dinámicamente
o estáticamente. gcc por defecto utiliza enlazado dinámico.
| Uso de librerías dinámicas | |
|---|---|
| Ventajas |
|
| Desventajas |
|
El comando ldd permite ver las librerías en las que depende un ejecutable
y dónde localizarlas.
Cuando una librería no se encuentra (Not found) puede ser por 2 motivos:
- No se encuentra en una localización estándar. Se le debe indicar al linker
(
LD_LIBRARY_PATH) dónde encontrarla. - La librería tiene una versión diferente. Una posible solución es crear un
enlace simbólico con
lna otra versión. No siempre funciona.
Archivos comprimidos
Tarballs
La herramienta tar empaqueta archivos y directorios en solo uno, llamados
tarballs.
.tar: tarball empaquetado pero sin comprimir.tar.gzo.tgz: tarball comprimido con gzip.tar.bz2o.tbz: tarball comprimido con bzip2- Y muchos otros formatos
El formato del comando es:
tar <operacion> <opciones> <archivo tar> <contenidos...>
Operaciones:
-c/--create: se puede especificar el algoritmo de compresión- gzip:
-z - bzip2:
-j
- gzip:
-x/--extract: se pueden especificar archivos (para no extraer todos)-t/--list: si se combina con-v, muestra dueño del archivo, permisos…-r/--append--delete
Opciones:
-f: nombre del archivo tar-v/--verbose-C/--directory: directorio de extracción
Zip
Se utiliza el comando zip para crear archivos .zip y el comando unzip
para descomprimir. Su uso es más intuitivo que el de tar.
zip <nombre zip> <contenidos>
Con unzip se pueden ver sus contenidos:
-l: lista los archivos-p: imprime los archivos