Subsecciones
Instalación de software
Tenemos, básicamente dos formas de instalar programas en Linux:
- Compilación e instalación desde las fuentes
- Optimización para nuestro sistema
- Más compleja
- Instalación desde paquetes precompilados
- Menos optimización
- Más sencilla
Pasos:
- Descarga:
- Normalmente se distribuye en forma de tarballs: ficheros .tar.Z, .tar.gz, .tgz, .tar.bz2 o .tbz
- Desempaquetado: comando tar (Tape ARchive format)
- tar - crea y extrae ficheros de un archivo
- Opciones principales:
- -c o --create - Crea un archivo tar
- -t o --list - Lista el contenido de un archivo
- -x o --extract - Extrae los ficheros de un archivo
- Otras opciones
- -f o --file fich - Usa el archivo fich (por defecto ``-'' que significa entrada/salida estándar)
- -v o --verbose - Lista los ficheros según se van procesando
- -z o --gzip - Comprime/descomprime ficheros gzip
- -j o --bzip2 - Comprime/descomprime ficheros bzip2
- Ejemplos
- Muestra el contenido de un tar.gz
$ tar tzvf archivo.tar.gz | more
- Extrae un fichero tar.bz2
$ tar xjvf archivo.tar.bz2
- Crea un tar.gz con los ficheros del directorio dir
$ tar czvf archivo.tar.gz dir/
- Leer el fichero INSTALL, INSTALAR o similar
- Configuración
- El código fuente desarrollado con ayuda de las herramientas GNU (autoconf) contienen un script configure, que se encarga de:
- chequear el entorno de compilación
- chequear las librerías necesarias
- generar los Makefiles que nos permitirán compilar el código
- Ejecución
- Para ver opciones: ./configure --help
- Ejemplo:
- ./configure --prefix=/opt
- instala el programa en /opt en vez de en el directorio por defecto (normalmente /usr/local)
- Compilación
- El proceso de configuración genera ficheros makefile o Makefile en los directorios del código fuente
- indican reglas (rules) que especifican como ejecutar ciertas tareas (targets) sobre el código: compilar, enlazar, crear páginas de manual, instalar
- Funcionamiento:
- make (ejecuta el target por defecto, normalmente todo, menos instalar)
- make all (si no existe el target por defecto)
- make clean (borra ficheros objetos, ejecutables, etc)
- Instalación
- Si la compilación terminó con éxito, simplemente
- make install (instala el programa ejecutable, librerías, páginas de manual)
Dos tipos de ejecutables:
- Enlazados estáticamente (statically linked): son ``completos''
- Enlazados dinámicamente (dynamically linked): para ejecutarse necesitan librerías instaladas en el sistema
- ocupan menos que los estáticos
- librerías compartidas por varios programas
Para ver las librerías que un ejecutable necesita usar ldd:
# ldd /bin/ln
libc.so.6 => /lib/tls/libc.so.6 (0xb7ea3000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7fea000)
Se encarga de cargar los ejecutables con las librerías que necesitan
- en linux es ld-linux.so.2
- los directorios con librerías son (además de /lib/ y /usr/lib/) los indicados en el fichero /etc/ld.so.conf
- si modificamos ese fichero, debemos ejecutar el comando ldconfig, que regenera, a partir de los directorios indicados en /etc/ld.so.conf, el fichero /etc/ld.so.cache
- para ver las librerías compartidas: ldconfig -p |less
- si queremos que el cargador cargue las librerías de un directorio particular, antes de mirar los indicados en ld.so.conf usamos la variable de entorno LD_LIBRARY_PATH
- export LD_LIBRARY_PATH="/usr/lib/old:/opt/lib"
En la mayoría de distribuciones Linux, es posible obtener los programas precompilados en formato de paquetes
- Ventajas:
- Fáciles de instalar y desinstalar
- Fáciles de actualizar
- Fácil control de los programas instalados
- Inconvenientes
- Binarios menos optimizados
- Problemas de dependencias de paquetes
- Problemas si la base de datos de paquetes se corrompe
Formatos de paquetes más populares
- Paquetes DEB (distribución Debian)
- Paquetes RPM (RedHat Package Manager, distribuciones Fedora, RedHat, Mandriva, etc.)
La distribución Debian incluye un elevado número de paquetes (más de 17.000)
Varias herramientas para el manejo de esos paquetes.
- dpkg - herramienta de bajo nivel, para gestionar directamente los paquetes DEB
- apt-xxx - herramientas APT, permiten gestionar los paquetes, descargándolos de varias fuentes (CDs, ftp, http)
- dselect - herramienta de administración de paquetes basada en menús (alto nivel)
- tasksel - interfaz para instalación de tareas (grupos de paquetes relacionados)
- aptitude - front-end de APT para usar en consola
- synaptic - front-end de APT para usar en entorno gráfico
- alien - permite convertir e instalar paquetes de otro tipo, p.e. RPMs
Para más información ver el capítulo Debian package management
de la Debian Reference (v2)
Permite instalar, actualizar o desinstalar paquetes DEB
Los paquetes DEB contienen:
- Los binarios que se van a instalar
- Metadatos, con información sobre el paquete, scripts para su configuración, lista de dependencias, etc.
Nombre de los paquetes:
- paquete_versión-build_arquitectura.deb, donde
- 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
- Ejemplo:
- ethereal_0.10.11-1_i386.deb
Instalación y eliminación de paquetes con dpkg:
- Instalación de paquetes
dpkg --install paquete.deb, o
dpkg -i paquete.deb
- la instalación chequea la existencia de dependencias, paquetes en conflicto, sobreescritura de ficheros existentes, etc.
- se puede forzar la instalación usando la opción --force-cosas, donde cosas
- conflicts - permite la instalación de paquetes en conflicto
- overwrite - sobrescribe un fichero de un paquete con otro
- overwrite-dir - sobrescribe el directorio de un paquete con uno nuevo
- etc.
- para ver todas las opciones de forzado hacer: dpkg --force-help
- Eliminación de paquetes, manteniendo los ficheros de configuración
dpkg --remove paquete, o
dpkg -r paquete
- Eliminación total de paquetes, eliminando los ficheros de configuración
dpkg --purge paquete, o
dpkg -P paquete
- Reconfiguración de un paquete ya instalado
dpkg-reconfigure paquete
Información sobre los paquetes
- Listar paquetes
dpkg --list [patrón], o dpkg -l [patrón]
- si no se pone patrón muestra los paquetes instalados
- ejemplo
# dpkg -l 'telnet*'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Nome Versión Descripción
+++-========================-========================-========================================
ii telnet 0.17-29 The telnet client
un telnet-client <ningunha> (non hai ningunha descripción dispoñible)
un telnet-hurd <ningunha> (non hai ningunha descripción dispoñible)
un telnet-server <ningunha> (non hai ningunha descripción dispoñible)
pn telnet-ssl <ningunha> (non hai ningunha descripción dispoñible)
pn telnetd <ningunha> (non hai ningunha descripción dispoñible)
un telnetd-hurd <ningunha> (non hai ningunha descripción dispoñible)
pn telnetd-ssl <ningunha> (non hai ningunha descripción dispoñible)
- Las tres primeras columnas representan:
- Estado de selección: indica el estado del paquete para su uso con dselect
- u, Unknown - estado no conocido
- i, Install - paquete seleccionado para instalar (se instala con dselect install)
- r, Remove - paquete seleccionado para eliminar (se elimina con dselect install)
- p, Purge - paquete seleccionado para purgar (se elimina con dselect install)
- h, Hold - paquete retenido (no puede actualizarse)
- Estado actual: indica el estado actual del paquete
- n, Not Installed - paquete no instalado
- i, Installed - paquete instalado en el sistema
- c, Config-files - paquete no instalado, pero ficheros de configuración presentes (p.e. después de un remove)
- u, Unpacked - paquete desempaquetado y listo para instalación
- f, Failed-config - durante la instalación falló la configuración del paquete
- h, Half-installed - paquete a medio instalar debido a algún problema
- Condiciones de error
- h, Hold - paquete retenido, no puede instalarse o eliminarse
- r, Reinstallation Required - necesita reinstalarse
- Información y estado del paquete
- información general
dpkg --print-avail paquete, o dpkg -p paquete
- estado del paquete
dpkg --status paquete, o dpkg -s paquete
- ejemplo
# dpkg -s wget
Package: wget
Status: install ok installed
Priority: important
Section: web
Installed-Size: 1428
Maintainer: NoÚl Köthe <noel@debian.org>
Architecture: i386
Version: 1.10-2
Depends: libc6 (>= 2.3.2.ds1-21), libssl0.9.7
Conflicts: wget-ssl
Conffiles:
/etc/wgetrc a9465704a21e403be628d38e10b0e128
Description: retrieves files from the web
Wget is a network utility to retrieve files from the Web
....
- Ficheros de un paquete
dpkg --listfiles paquete, o dpkg -L paquete
- Paquete al que pertenece un fichero
dpkg --search fichero, o dpkg -S fichero
- Más información: ver ficheros en el directorio /var/lib/dpkg/
- Fichero /var/lib/dpkg/available
- muestra los paquetes disponibles
- Fichero /var/lib/dpkg/status
- muestra el estado de los paquetes
- dpkg lee estos ficheros para obtener información sobre los paquetes
Permite descargar e instalar paquetes desde una fuente local y/o remota
Fuentes de apt: fichero /etc/apt/sources.list
# See sources.list(5) for more information
deb ftp://ftp.rediris.es/debian/ stable main contrib non-free
deb http://security.debian.org/ stable/updates main contrib non-free
#Para descargar fuentes, a través de apt-get source
deb-src ftp://ftp.rediris.es/debian/ stable main
- formato de sources.list
deb uri distribución componente #Para binarios
deb-src uri distri. componente #Para ficheros fuente
- componente puede ser:
- main - conjunto principal de paquetes
- contrib - paquetes adicionales
- non-free - paquetes que no son libres
El fichero sources.list puede modificarse
- editándolo directamente, o
- a través del comando apt-setup
Opciones de configuración de APT
- Fichero /etc/apt/apt.conf
- Ficheros en el directorio /etc/apt/apt.conf.d
Cuando el fichero sources.list contiene referencias a más de una distribución (por ejemplo, estable y pruebas), APT asigna una prioridad a cada versión disponible
- es posible seleccionar una distribución ojetivo (target release) a la que se le asigna una mayor prioridad:
- crear un fichero en el directorio /etc/apt/apt.conf.d, de nombre, por ejemplo, 99apt-default-release.conf que contenga la línea
APT::Default-Release "distribution";
con distribution igual a stable, testing o unstable
- Si queremos instalar un paquete de una distribución distinta a la por defecto, añadir las líneas necesarias en el sources.list y usar apt-get con la opción -t
# apt-get -t distribution install package
- podemos usar apt-cache policy para ver la política de prioridades configurada
- ver man apt_preferences y Debian package management
para más detalles
Comando apt-get
Comando principal de las herramientas APT
Permite descargar, instalar, actualizar o borrar un paquete
- Actualizar la lista de paquetes
apt-get update
- Instalar un paquete
apt-get install nombre_paquete
- Actualizar los paquetes
apt-get upgrade
- debe hacerse un apt-get update antes de un apt-get upgrade
- Eliminar paquetes
apt-get remove nombre_paquete
- Actualizar la distribución
apt-get dist-upgrade
- maneja inteligentemente los cambios de dependencias debidos a nuevas versiones de paquetes
- Eliminar los paquetes descargados
- Cuando se instala un paquete a través de apt-get se guarda una copia en /var/cache/apt/archives/
apt-get clean #Elimina todos los paquetes descargados
apt-get autoclean #Elimina sólo los paquetes obsoletos
- Descargar ficheros fuente
apt-get source nombre_paquete
- con la opción --compile compila el paquete después de descargarlo (y genera el .deb)
- Descargar dependencias para compilar un paquete
apt-get build-dep nombre_paquete
apt-get acepta diversas opciones, por ejemplo:
- -s - simula la acción, pero no instala nada
- -y - responde y a todas las preguntas
para más opciones man apt-get
Dependencias entre paquetes
Los paquetes pueden depender unos de otros:
- El paquete A depende (Depends) del paquete B si B es absolutamente necesario para usar A
- El paquete A recomienda (Recommends) el paquere B si se considera que la mayoría de los usuarios no querrían A sin las funcionalidades que proporciona B
- El paquete A sugiere (Suggests) el paquete B si B está relacionado y mejora las funcionalidades de A
- El paquete A está en conflicto (Conflicts) con B en el caso de que A no funcionae correctamente si B está instalado
Otras herramientas APT
- apt-cache - permite manipular la caché de paquetes de APT, buscando paquetes o obteniendo información sobre los mismos
- Ejemplo: buscar el paquete que contiene el firefox
# apt-cache search firefox
bookmarkbridge - tool to synchronize bookmarks between browsers
gtkcookie - Editor for cookie files
latex-xft-fonts - Xft-compatible versions of some LaTeX fonts
libflash-mozplugin - GPL Flash (SWF) Library - Mozilla-compatible plugin
mozilla-firefox - lightweight web browser based on Mozilla
mozilla-firefox-dom-inspector - tool for inspecting the DOM of pages in Mozilla Firefox
mozilla-firefox-gnome-support - Support for Gnome in Mozilla Firefox
mozilla-firefox-locale-af-za - Mozilla Firefox Afrikaans language/region package
...
- el argumento puede ser una expresión regular
- apt-build - permite descargar, compilar e instalar un paquete a partir de las fuentes
Interfaces del gestor de paquetes
Proporcionan interfaces para consola o gráficas para simplificar el manejo de los paquetes
- Ejemplo de dselect
- Ejemplo de aptitude
- aptitude tiene opciones similares a apt-get
- aptitude update: actualiza la lista de paquetes
- aptitude search <nombre>: busca paquetes
- aptitude show <nombre_paquete>: muestra información del paquete
- aptitude install <nombre_paquete>: instala paquetes
- aptitude remove <nombre_paquete>: desinstala paquetes
- aptitude purge <nombre_paquete>: desinstala paquetes y sus archivos de configuración
- aptitude clean: elimina copias en cache de los ficheros deb descargados
- aptitude autoclean: elimina copias en cache de ficheros deb descargados obsoletos
- aptitude hold <nombre_paquete>: fuerza a que un paquete permanezca en su versión actual, y no se actualice
- aptitude safe-upgrade: actualiza los paquetes instalados, sin eliminar ninguno
- aptitude full-upgrade: actualiza los paquetes instalados, eliminando paquetes si es necesario
- aptitude podría manejar las dependencias mejor que apt-get, pero es menos estable
Convierte paquetes entre diferentes formatos
Soporta los formatos Red Hat rpm, Debian deb, Stampede slp, Slackware tgz, y Solaris
pkg
Instala software a partir de ficheros .rpm, manteniendo control de las dependencias
- Fichero RPM:
nombre-versión-<release>.<arquitectura>.rpm
- El sistema RPM mantiene una base de datos con información de los paquetes instalados en el sistema
- si hay problemas, intentar reconstruirla con:
rpm --rebuilddb
El comando rpm permite:
- instalar, actualizar y eliminar paquetes
- validar la integridad de un paquete
- consultar la base de datos RPM para obtener información
- construir un paquete binario a partir de las fuentes
Para más información sobre rpm:
- Instalar un rpm
rpm -i fichero.rpm, o rpm --install fichero.rpm
rpm -ivh fichero.rpm # Da una salida más visual
- El proceso de instalación falla si detecta dependencias o si tiene que sobreescribir algún fichero existente
- Opciones
- --force - Fuerza a rpm para que sobreescriba paquetes o ficheros existentes
- --nodeps - No chequea dependencias
- Ejemplo
# rpm -ivh xsnow-1.42-14.i386.rpm
Preparing... ############################################
xsnow ############################################
- En vez del fichero rpm puede usarse el URL del fichero, p.e.:
# rpm -ivh ftp://rpmfind.net/linux/fedora/core/2/i386/os/Fedora/RPMS/xsnow-1.42-14.i386.rpm
Preparing... ############################################
xsnow ############################################
- Borrar un paquete instalado
rpm -e paquete, o rpm --erase paquete
- Actualizar un paquete
rpm -U fichero.rpm, o rpm --upgrade fichero.rpm
rpm -F fichero.rpm, o rpm --freshen fichero.rpm
- si hay una versión del paquete instalada, la borra e instala la nueva; si no hay ninguna versión, simplemente instala la nueva
- la opción F sólo actualiza si hay una versión más antigua instalada
- Validar la integridad de un paquete
rpm --checksig fichero.rpm, o rpm -K fichero.rpm
- Información del paquete: uso rpm -q o rpm --query
rpm -q [opciones] paquete # si el paquete está instalado
rpm -qp [opciones] fichero.rpm # si el paquete no está instalado
rpm -qa # muestra todos los paquetes instalados
- Opciones de información
- Listar ficheros de un paquete
rpm -ql paquete
- Determinar a que paquete pertenece un fichero
rpm -qf fichero
- Información del paquete
rpm -qi paquete
- Requisitos previos (paquetes de los que depende)
rpm -qR paquete
- Verificar si algún fichero del paquete ha cambiado
rpm -V paquete, o rpm --verify paquete
- Compilar un paquete fuente
- El paquete fuente se puede instalar con rpm -i
rpm -ivh xsnow-1.42-14.src.rpm
- los ficheros fuente se descomprimen en
/usr/src/.../SOURCES/
- /usr/src/.../SPECS/ contiene el fichero de spec, que indica como compilar el código
- el paquete se compila con el comando rpmbuild, generándose el RPM para instalar:
rpmbuild -ba fichero.spec
- podemos hacerlo directamente desde el rpm
rpmbuild --rebuild fichero.rpm
Gestor de paquetes para sistemas basados en RPM
- Funcionalidad similar a APT
- Herramienta estándar en Fedora
- up2date puede usar YUM para actualizar el sistema
Algunas opciones:
- Busqueda de paquetes
yum search nombre
- Instalación
yum install nombre
- Actualización
yum update nombre
Ficheros de configuración:
- Configuración base: /etc/yum.conf
- Repositorios: /etc/yum.repos.d/
Es posible usar APT con RPMs:
- Instalar el paquete apt
- Configurar las fuentes:
- pueden añadirse más fuentes en el /etc/apt/sources.list
- Ejemplo (para Fedora):
# ATrpms for Fedora Core 1
# Possible sections: at-stable, at-good, at-testing, at-bleeding
rpm http://apt.atrpms.net fedora/2/en/i386 at-testing
#rpm-src http://apt.atrpms.net fedora/2/en/i386 at-testing
Administración de Sistemas e Redes <ASR.USC[at]gmail.com>
Tomás Fernández Pena <tf.pena[at]usc.es>
Última actualización: 30-09-15 17:44 por tomas
Curso de Administración de Sistemas y Redes por Tomás Fernández Pena se distribuye bajo la licencia Creative Commons Recoñecemento-Compartir baixo a mesma licenza. 3.0 España.
Trabajo original en persoal.citius.usc.es/tf.pena/ASR.