Instalación de Linux y de los paquetes de software
Instalar una distribución
Antes de proceder a la instalación de una distribución Linux en un ordenador, hay que responder a diferentes preguntas y determinar los argumentos principales:
1. Determinar las características de instalación
-
¿Para qué se utilizará el sistema: estación de trabajo de un usuario, estación de trabajo de un desarrollador, servidor de recursos, servidor de aplicaciones, red?
-
¿Cuál será la configuración mínima deseable (dependiendo del uso previsto): tamaño de la memoria, procesador(es), espacio en disco, tarjeta(s) de red?
-
¿Qué distribución se debe instalar?
-
¿Qué medios se van a instalación utilizar para la instalación: CD/DVD, llave USB, instalación a través de la red?
Es posible instalar una distribución de Linux en una máquina virtual, especialmente para pruebas. También puede configurar una máquina virtual en la nube.
2. Parámetros de instalación
Una vez se conozcan las respuestas a las preguntas anteriores, puede comenzar la instalación. Se requieren pocos elementos para una instalación básica, y normalmente será posible completarla más adelante, a excepción de ciertos parámetros que se deben especificar en el momento de la instalación, ya que puede ser difícil modificarlos posteriormente:
-
Idioma
-
Huso horario
-
Nombre de la máquina
-
Dominio DNS
-
Direccionamiento IP básico (dirección IP, pasarela predeterminada, servidor DNS o automático...
Los administradores de paquetes de software
Las distribuciones de Linux ofrecen herramientas de administración de software, que le permiten instalar, actualizar o desinstalar los componentes de software en un sistema. Estas herramientas mantienen una base de datos que permite a los administradores conocer y administrar todas las aplicaciones implementadas a través de estas herramientas.
Los dos administradores de software más utilizados hoy en día son el de tipo Debian y el de tipo Red Hat. Ambos se basan en el concepto de un paquete de software (package), pero no tienen una estructura común ni herramientas de diferente estructura y ofrecen diferentes herramientas. Distribuciones como Red Hat o SUSE utilizan el formato RPM (Red Hat Package Manager), mientras que las distribuciones Debian y Ubuntu utilizan el formato DPKG (Debian Package).
1. Noción de paquete de software (package)
En un entorno Linux, la mayoría de los componentes de software se proporcionan como paquetes de software (paquetes). Un paquete de software es un archivo que contiene los componentes del producto que se van a instalar, así como un conjunto de reglas para instalarlo, actualizarlo o desinstalarlo. Dependiendo de su contenido, su tamaño puede ser mayor o menor. Por ejemplo, el kernel y todos sus módulos se suministran de esta forma.
Hay muchas reglas para un paquete de software:
-
Gestión de las dependencias: lista...
Los paquetes de software Red Hat
Red Hat ha definido el formato de paquetes de software RPM (Red Hat Package Manager), utilizado por las distribuciones de tipo Red Hat y SUSE.
1. El gestor RPM
RPM es un conjunto de software que soporta la distribución, la instalación, la actualización y la eliminación de los programas. Para hacer esto, dispone de comandos específicos que se basan en una base de datos local.
La base de datos de gestión de los paquetes de software está ubicada en /var/lib/rpm. Toda la información correspondiente a los programas instalados, sus versiones, sus archivos y derechos y sus dependencias, se almacena. Solo en casos especiales, no se debe modificar NUNCA esta base de datos directamente, sino que se deben utilizar las herramientas RPM para ello.
Se facilita cada programa en forma de paquete de software con formato RPM. El nombre del paquete utiliza el sufijo .rpm y responde a una nomenclatura precisa.
nombre-versión-edición.arquitectura.rpm
La edición es un identificador de versión del paquete de software RPM propio del editor que puede ser un simple número de construcción (número de veces que el paquete de software ha sido reconstruido), pero también podría contener datos como la versión del sistema o la referencia a una confirmación de un repositorio de código git.
La arquitectura dicta el tipo de procesador que se admite. Un paquete de software en arquitectura noarch contiene solo elementos que son independientes del tipo de procesador (scripts, programas de lenguaje interpretado, documentación, imágenes, sonido, vídeo, etc.).
Ejemplo
Archivo de paquete de software de php 8.1.14:
php-8.1.14-1.module_el9+260+8424407f.x86_64.rpm
Este archivo contiene la edición 1.module_el9+260+8424407f del paquete de software PHP en versión 8.1.14. La arquitectura es x86_64 (Intel o AMD 64 bits).
2. Instalar, actualizar y eliminar
Para instalar un paquete de software RPM, podemos utilizar la opción -i.
rpm -i php-8.1.14-1.module el9+260+8424407f.x86_64.rpm
Dado que es posible utilizar comodines (rpm -i *.rpm), quizás necesite visualizar el nombre del paquete de software durante la instalación con la opción -v. La opción -h visualiza caracteres # para indicar la progresión de la instalación.
La instalación...
El administrador de paquetes YUM
Yum (Yellow dog Updater Modified) es un software de gestión de paquetes de software. Carga los paquetes de software en repositorios de software y administra dependencias. Lo utilizan las distribuciones de tipo RPM, si los repositorios asociados lo admiten.
A partir de las versiones 8 de Red Hat Enterprise Linux y CentOS, el comando yum tiene un enlace simbólico al archivo ejecutable del comando dnf, que lo reemplaza y es totalmente compatible.
# ls -l /usr/bin/yum
lrwxrwxrwx. 1 root root 5 15 sept. 2022 /usr/bin/yum -> dnf-3
Los comandos y ejemplos siguientes utilizan un servidor RHEL en versión 9. El archivo de configuración es /etc/yum.conf (enlace simbólico a /etc/dnf/dnf.conf).
1. Configurar los repositorios
Es posible configurar los repositorios de software adicionales a los que ya están presentes por defecto. Es el caso, por ejemplo, del repositorio EPEL gestionado por el proyecto Fedora, que añade muchos paquetes de software que no se encuentran en las distribuciones.
Los repositorios se ubican bien en el archivo de configuración principal, bien en el directorio /etc/yum.repos.d.
El formato de declaración de un repositorio es el siguiente (una línea que empieza por # es un comentario):
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
#baseurl=https://download.fedoraproject.org/pub/epel/$releasever/
Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=
epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=1
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
Con:
-
[epel]: identificador del repositorio.
-
name: el nombre largo del repositorio, detallado.
-
baseurl: la URL del repositorio.
-
metalink (o mirrorlist): siempre se debe proporcionar una URL específica, metalink apunta a una lista de URL que YUM puede utilizar.
-
gpgcheck: requiere comprobar la firma GPG del repositorio si el valor es igual a 1.
-
enabled: si no está definido o en 1, el repositorio está activo.
-
gpgkey: ruta de la clave pública GPG.
-
failovermethod: opción que quedará pronto obsoleta en dnf. Indica cómo seleccionar el repositorio en caso de fallo (lista secuencial aleatoria).
Las URL de los repositorios pueden ser locales...
El administrador de paquetes DNF
DNF (Dandified Yum), introducido en la versión 18 de la distribución Fedora, se ha convertido en el instalador de paquetes de software predeterminado para distribuciones de tipo Red Hat.
DNF es una reescritura completa del software Yum, su comando, dnf, utiliza todas las opciones del comando yum, con la misma sintaxis.
Ejemplo
Búsqueda del paquete de software httpd-core:
# dnf search httpd-core
Actualización de los repositorios de gestión de las suscripciones.
Última verificación de la expiración de los metadatos realizada
hace 0:30:03 en Thu. 09 may 2023 10:04:21.
=============== Nombre corresponde exactamente a: httpd-core ================
httpd-core.x86_64 : httpd minimal core
Los paquetes de software Debian
Debian ha definido el formato de los paquetes de software .deb, utilizado por su propia distribución y sus derivadas (como Ubuntu).
1. dpkg: el comando de gestión de paquetes Debian
El comando dpkg es el equivalente del comando rpm para paquetes de software en formato Debian, que utilizan paquetes con la extensión .deb. El comando dpkg se puede usar para administrar paquetes de software.
La base de datos de dpkg normalmente se coloca en /var/lib/dpkg. Los archivos que la componen están en formato de texto, pero no necesitan ser editados directamente. El archivo /var/lib/dpkg/status contiene todos los paquetes de software conocidos por dpkg y su estado.
Ejemplo
Lista de líneas "package" en el archivo de status:
# grep ^Package: /var/lib/dpkg/status | grep linux
Package: accountsservice
Package: acl
Package: adduser
Package: adwaita-icon-theme
Package: aisleriot
Package: alsa-topology-conf
Package: alsa-ucm-conf
Package: alsa-utils
Package: anacron
Package: apache2-bin
Package: apg
[...]
2. Instalar, actualizar y eliminar paquetes de software
Las opciones -i, o --install, instalan paquetes de software de nombres de archivo pasados como argumentos.
Ejemplo
#DPKG-e Mipaquete.dev
El comando dpkg no soporta dependencias. Si falta alguna, el comando lo indicará. En este caso, se deben instalar antes de implementar el paquete de software.
Puede solicitar la instalación de todos los paquetes de software de un árbol con la opción -R (Recursiva). La opción espera un nombre de directorio como argumento: se instalarán todos los paquetes de software del directorio y sus subdirectorios.
Ejemplo
# dpkg -R directorio
Se actualiza de la misma manera que se instala, con la opción -i. Si instala un paquete de software ya presente, el comando efectúa su actualización.
Procedimiento para realizar una instalación o una actualización usando dpkg:
-
Extracción de los archivos de control del nuevo paquete.
-
Si ya se instaló una antigua versión, se ejecuta el script previo a la eliminación del antiguo paquete.
-
Ejecución del script de preinstalación si se facilita con el paquete.
-
Desempaquetado de nuevos archivos y copia de seguridad del antiguo...
Administrador de paquetes APT
El componente de software APT (Advanced Packaging Tool) permite la gestión en línea de comandos de paquetes de software almacenados en repositorios de software locales o remotos.
Un repositorio de software contiene un conjunto de paquetes de software que dependen unos de otros o de otros paquetes de software que provienen de otros repositorios. APT administra automáticamente las dependencias de los paquetes de software.
1. Los repositorios de paquetes de software
a. Configuración
Los repositorios se especifican en el archivo /etc/apt/sources.list y en los archivos ubicados en el directorio /etc/apt/sources.list.d.
Ejemplo
Archivo /etc/apt/sources.list de una distribución Debian 12.0.0 Bookworm:
# cat /etc/apt/sources.list
deb cdrom:[Debian GNU/Linux 12.0.0 _Bookworm_ - Official amd64 DVD Binary-1
with firmware 20230610-10:23]/ bookworm main non-free-firmware
deb http://deb.debian.org/debian/ bookworm main non-free-firmware
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main
non-free-firmware
deb-src http://security.debian.org/debian-security bookworm-security main
non-free-firmware
# bookworm-updates, to get updates before a point release is made;
# see https://www.debian.org/doc/manuals/debian-reference/
ch02.en.html#_updates_and_backports
deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware
deb-src http://deb.debian.org/debian/ bookworm-updates main non-free-firmware
# see https://www.debian.org/doc/manuals/debian-reference/
ch02.en.html#_updates_and_backports
deb http://deb.debian.org/debian/ bullseye-updates main contrib
deb-src http://deb.debian.org/debian/...
El administrador aptitude
1. ¿apt o aptitude?
Aptitude es un administrador de paquetes de software Debian con una interfaz en modo línea de comandos. Sustituye a APT (y apt-get), a los que puede reemplazar.
Aptitude ofrece una mejor gestión de dependencias, especialmente cuando se desinstalan paquetes de software. Estas son algunas de sus ventajas e inconvenientes:
-
apt-get remove elimina el paquete de software pero no sus dependencias, aunque no se utilicen. A continuación, será necesario ejecutar apt-get autoremove o autoclean para purgar las dependencias que hayan quedado obsoletas.
-
APT ofrece veinte comandos (como apt-get y apt-cache) para gestionar el conjunto de posibilidades.
-
APT no ofrece un modo interactivo.
-
Aptitude elimina el paquete de software y sus dependencias si estas ya no se utilizan.
-
Aptitude ofrece un único comando para el conjunto de sus funcionalidades.
-
El comando aptitude, sin argumentos, se lanza en modo interactivo.
2. Instalación de aptitude
Aptitude se instala con el paquete de sofware aptitude:
$ sudo apt-get install aptitude
3. Utilización
La sintaxis del comando aptitude es similar a la del comando apt-get. He aquí las principales opciones:
Opciones |
Efecto |
update |
Actualiza los repositorios. |
install |
Instala los paquetes de software indicados. |
remove |
Elimina los paquetes de software y sus dependencias. |
markauto |
Elimina el paquete de software cuando ya no se utiliza de manera automática... |
Paquetes de software Zypper
Zypper es un administrador de paquetes de software en modo línea de comandos que hace uso de la biblioteca ZYpp (libwypp). Permite instalar, actualizar y eliminar paquetes de software y también los repositorios correspondientes.
Zypper gestiona los paquetes de software en formato rpm como Yum o DNF. Lo utiliza SUSE Linux y también su versión libre openSUSE.
La librería que administra las dependencias de Zypper ha sido reutilizada por Red Hat para su herramienta DNF.
Zypper conserva un rastro de los repositorios que se han utilizado como fuente de instalación para cada aplicación. Cuando se hace una actualización, esta información (o más bien la del distribuidor o vendor) le permite actualizar los paquetes de software que provienen del mismo distribuidor, incluso si hay una versión más reciente disponible desde otro repositorio. En este caso, habrá que autorizar a Zypper para que cambie de repositorio.
1. Gestionar los repositorios
Los archivos de configuración de los repositorios Zypper se encuentran en el directorio /etc/zypp/repos.d y llevan el sufijo .repo.
El contenido de un archivo .repo se parece mucho al de un repositorio Yum, y también utiliza un alias.
Ejemplo
# cat repo-oss.repo
[repo-oss]
name=Repositorio principal
enabled=1
autorefresh=1
baseurl=http://download.opensuse.org/distribution/leap/$releasever/repo/oss/
path=/
type=rpm-md
keeppackages=0
La opción removerepo permite eliminar un repositorio; la opción mr permite modificarlo.
La opción clean vacía las cachés locales.
La opción refresh actualiza los repositorios.
Ejemplo
# zypper clean ; zypper refresh -f
All repositories have been cleaned up.
Forcing raw metadata refresh
Retrieving repository 'Mozilla-repo' metadata ..................................[done]
Forcing building of repository cache
Building repository 'Mozilla-repo' cache .......................................[done] ...
Gestionar las librerías compartidas
Una librería compartida es un archivo que contiene un conjunto de funciones compiladas a las que puede acceder cualquier programa que las utilice. A diferencia de una librería estática, que se incluye en el ejecutable, una librería compartida se carga de forma independiente y sus funciones son accesibles dinámicamente por los programas que realizan la llamada.
El conjunto de funciones que ofrecen una o más librerías compartidas forma un API, Application Programming Interface.
Se establece un vínculo entre el programa y una librería compartida durante la generación del ejecutable; concretamente, cuando el editor de vínculos ld edita los vínculos.
Otra posibilidad para un programa consiste en utilizar la función C dlopen, que abre una librería dinámica como un archivo y accede a las funciones contenidas mediante punteros de funciones.
Si un programa depende de una librería compartida y esta está ausente, el programa no puede funcionar nunca más.
Las librerías compartidas se llaman Shared Objects (so) porque contienen los módulos de objetos (compilados) sin bloque de instrucción main. Los nombres de los archivos correspondientes llevan el sufijo .so.
Una librería puede disponer de varias versiones, que pueden ser o no compatibles, y se puede precisar la versión durante la edición de los vínculos. También es posible determinar una versión por defecto.
1. Lugar de almacenamiento
Las librerías compartidas se almacenan normalmente en directorios llamados lib, en particular:
-
/lib: librerías de sistema.
-
/lib64: librerías de sistema de 64 bits.
-
/lib32: librerías de sistema de 32 bits.
-
/usr/lib: librerías de usuario y sistema, no necesarias para el boot.
-
/usr/local/lib: librerías locales para los programas para la máquina.
-
Las librerías compartidas, por lo general, son muy numerosas.
Ejemplo
2147 archivos de librerías compartidas...