Diferencia entre revisiones de «Paquetes»

De CURE - Informática
Ir a la navegación Ir a la búsqueda
m
 
(No se muestran 58 ediciones intermedias de otro usuario)
Línea 1: Línea 1:
 +
== Introducción a la gestión de paquetes ==
 +
 +
Antes, muchos de los programas Linux se distribuían como código fuente que los usuarios luego transformaban en el programa o en el conjunto de programas requeridos, junto con las paginas '''man''', los archivos de configuración y todo lo demás que resultaba necesario. Hoy en día Linux usan programas o conjuntos de programas prefabricados denominados '''paquetes''', estos '''paquetes''' se envían listos para ser instalados en dicha distribución. En esta pagina le iremos a brindar conocimientos sobre herramientas de gestión de paquetes (ej:instalar, borrar, actualizar). Hay que mencionar que en este articulo nos vamos a basar mas en el uso de ''Advanced Packagin Tool'' (apt), este es usado por Debian como también por sus distribuciones que derivan de este. También para brindar un conocimiento general de esto, iremos a dar información de herramientas de gestión de otras distribuciones de Linux como Red Hat, este usa paquetes de tipo RPM, y su gestor de paquetes es '''yum'''.
 +
 +
Desde la perspectiva de los usuarios, la función básica de la gestión de paquetes es por medio de comandos, esto hizo que las distribuciones desarrollaran herramientas muy fácil de usar por este. Como mencionamos anteriormente nos vamos a centrar en '''.deb''' y '''.rpm''', pero también hablaremos de herramientas el cual el alumno podrá investigar mas adelante.
 +
 
== Sistema de gestión de paquetes ==
 
== Sistema de gestión de paquetes ==
  
Son un conjunto de herramientas que sirven para la instalación, actualización, configuración y eliminación de paquetes de software. El software se distribuye en formas de paquetes, encapsulado en un solo fichero. Estos paquetes ademas de tener el software, también pueden incluir la descripción de su funcionalidad, datos sobre la versión, información sobre quien lo distribuye, suma de verificación y también alguna lista de paquetes requeridos para poder hacerlo funcionar correctamente.
+
Un sistema de gestión de paquetes, también conocido como gestor de paquetes,es un conjunto de herramientas que sirven para la instalación, actualización, configuración y eliminación de paquetes de software. El software se distribuye en formas de paquetes, encapsulado en un solo fichero. Estos paquetes ademas de tener el software, también pueden incluir la descripción de su funcionalidad, datos sobre la versión, información sobre quien lo distribuye, suma de verificación y también alguna lista de paquetes requeridos para poder hacerlo funcionar correctamente.
 +
 
 +
 
 +
=== <u>Principales Funciones de Sistemas de Gestión de Paquetes</u> ===
 +
 
 +
Estos tienen la tarea de organizar todos los paquetes instalados en el sistema y se encargan de mantener su usabilidad, todo esto se hace combinando esto:
 +
 
 +
*Comprueba suma de verificación para evitar que haya diferencias entre la versión local de un paquete y la versión oficial.
 +
*Comprobar legitimidad de software.
 +
*Instalación, actualización y eliminación simple de paquetes.
 +
*Resolución de dependencias para ciertos software, esto se verifica para que el software funcione correctamente.
 +
*Búsqueda de actualizaciones para proveer la ultima versión de un paquete.
 +
*Agrupamiento de los paquetes según la función que tenga, esto lo hace para  evitar confusión al instalarlos o mantenerlos.
  
 
== Paquetes ==
 
== Paquetes ==
  
Un paquete de software es un archivo comprimido con una estructura determinada para ser usado por herramientas de gestión.  
+
Un paquete de software es un archivo comprimido con una estructura determinada para ser usado por herramientas de gestión,los paquetes son el elemento básico para tratar las tareas de instalación, actualización del existente o eliminación del no utilizado. El uso de paquetes facilita añadir o quitar software al considerarlo una unidad y no tener que trabajar con los ficheros individuales.
  
'''Categoría de paquetes:'''
+
=== Categoría de paquetes===
  
 
*Base: paquetes indispensables para el funcionamiento del sistema (útiles, programas de inicio, bibliotecas de sistema).
 
*Base: paquetes indispensables para el funcionamiento del sistema (útiles, programas de inicio, bibliotecas de sistema).
Línea 14: Línea 32:
 
*Gráficos: controladores e interfaces gráficas, escritorios, gestores de ventanas.
 
*Gráficos: controladores e interfaces gráficas, escritorios, gestores de ventanas.
 
*Otras categorías.
 
*Otras categorías.
 
Alternativas: control de aplicación invocada por defecto cuando hay diferentes aplicaciones para una misma cosa, con un mismo nombre de comando.
 
 
Ej: vi para vim, vim-tiny, elvis, nano, ...
 
 
Directorio: /etc/alternatives. Comando: update-alternatives.
 
 
Reconfigurar un paquete: dpkg-reconfigure.
 
 
Control de repositorios (fuentes) de paquetes para instalar: /etc/sources.list.
 
 
== Gestión de paquetes: ==
 
 
 
* Gráfica: aplicaciones Synaptic, Gestor de actualizaciones.
 
* En terminal, modo curses: aptitude. Esta es la aplicación preferida para mantener paquetes en modo texto (en terminal). Usa la biblioteca "curses", que permite crear interfaces de usuario en texto, con recuadros, similares a las interfaces gráficas.
 
* En terminal, para un paquete con resolución de dependencias: apt-get; admite muchas opciones, controla todo el sistema de paquetes.
 
* En terminal, para instalar un paquete .deb: dpkg
 
* Tasksel es una aplicación para instalar tareas; una tarea (task) es un conjunto de paquetes para un cierto tipo de trabajo o aplicación. OJO, examinar bien cómo funciona, puede instalar / desinstalar a su gusto.
 
* Comando alien, del paquete alien: instala paquetes con otros formatos de empaquetamiento, e.g. rpm de RedHat. OJO, puede haber dependencias y no funcionar o romper algo; conviene usar sólo si es imprescindible, y para paquetes "stand-alone", que pueden funcionar por sí solos. Como siempre, "unless you know what you are doing".
 
  
 
== Objetivos ==
 
== Objetivos ==
Línea 43: Línea 41:
 
== Software ==
 
== Software ==
  
*'''Synaptic''': es una interfaz gráfica para apt. Synaptic se usa de forma parecida a como se usa apt-get. Normalmente se realiza una actualización de la lista de paquetes de los servidores del fichero sources.list.
+
*'''Synaptic''': Es un programa informático que es una interfaz gráfica GTK+ de APT, para el sistema de gestión de paquetes de debian GNU/Linux. Generalmente se utiliza en sistemas basados en paquetes .deb pero también puede ser usado en sistemas basados en paquetes RPM.Synaptic utiliza repositorios Debian, y permite su gestión mediante un menú interactivo.Mediante un click, es posible actualizar la lista de paquetes disponibles o marcar automáticamente todas las actualizaciones de los paquetes ya instalados. Dispone de un avanzado filtro de búsqueda, es capaz de reparar las dependencias rotas de paquetes y permite deshacer y rehacer las últimas selecciones de paquetes. Normalmente se realiza una actualización de la lista de paquetes de los servidores del fichero sources.list.
  
 
*'''Adept''': Es un gestor de paquetes gráfico desarrollado para KDE, este también funciona bien en gnome, es muy fácil de usar y al igual que Synaptic, funciona en base a repositorios de donde extrae información sobre paquetes disponibles para instalar o actualizar.
 
*'''Adept''': Es un gestor de paquetes gráfico desarrollado para KDE, este también funciona bien en gnome, es muy fácil de usar y al igual que Synaptic, funciona en base a repositorios de donde extrae información sobre paquetes disponibles para instalar o actualizar.
[[Archivo:Ejemplo.jpg]]
 
  
 
== Conceptos, comandos, archivos ==
 
== Conceptos, comandos, archivos ==
  
 +
Existen muchos tipos de herramientas para el trabajo con los paquetes obtenidos desde los repositorios, estas herramientas varían según la distribución de Linux que estemos usando. Ahora iremos a mencionar algunas de esas herramientas, estas pueden ser usadas tanto en un entorno gráfico como en una terminal:
  
En cualquier distribución, los paquetes son el elemento básico para tratar las tareas de instalación de nuevo software, actualización del existente o eliminación del no utilizado.
+
<u>Herramientas interactivas</u>
El uso de paquetes facilita añadir o quitar software al considerarlo una unidad y no tener que trabajar con los ficheros individuales.
 
 
 
'''Paquetes Debian (DEB)'''
 
 
 
Herramientas interactivas:
 
  
* tasksel: permiten escoger unos subconjuntos de paquetes agrupados por tipo de tareas.
+
*tasksel: permiten escoger unos subconjuntos de paquetes agrupados por tipo de tareas.
* dselect: permite navegar por toda la lista de paquetes disponibles, y escoger aquellos que queramos instalar o desinstalar.
+
*dselect: permite navegar por toda la lista de paquetes disponibles, y escoger aquellos que queramos instalar o desinstalar.
  
A nivel de línea de comando:
+
=== Paquetes Debian ===
  
* dpkg: comando de más bajo nivel, para gestionar directamente los paquetes DEB de software, típicamente dpkg -i paquete.deb para realizar la instalación. Pueden realizarse todo tipo de tareas, de información, instalación, borrado o cambios internos a los paquetes de software.
+
<u>A nivel de linea de comando</u>:
  
Para instalar un paquete .deb descargado a través de la línea de comandos: sudo dpkg -i nombrepaquete
+
*dpkg: comando de más bajo nivel, para gestionar directamente los paquetes DEB de software, típicamente dpkg -i paquete.deb para realizar la instalación. Pueden realizarse todo tipo de tareas, de información, instalación, borrado o cambios internos a los paquetes de software.
Para listar paquetes instalados: dpkg -l
+
*apt (Advanced Packaging Tool): es un sistema de gestión de paquetes creado por Debian, esta herramienta es de mucha ayuda ya que facilita mucho a la hora de realizar cambios en el sistema, como instalar o eliminar programas de la maquina. Existe también un front-end a apt-get, llamado aptitude, cuya interfaz de opciones es prácticamente igual; ; como ventaja aporta una mejor gestión de dependencias de los paquetes y permite una interfaz interactiva.
buscar de qué paquete proviene un elemento (fichero por ejemplo): dpkg -S fichero
+
*aptitude: Este es es una interfaz para apt. Este muestra una lista de paquetes de software y permite al usuario elegir en modo iterativo cuales paquetes desea instalar y eliminar.Este dispone de un sistema muy poderoso de búsqueda.
 
 
A nivel intermedio:
 
 
 
* apt: permite gestionar los paquetes a través de una lista de paquetes actuales y disponibles a partir de varias fuentes de software. La configuración del sistema APT se efectúa desde los archivos disponibles en /etc/apt, donde /etc/apt/sources.list es la lista de fuentes disponibles.
 
* apt-get: permite instalar, actualizar o borrar desde el paquete individual, hasta actualizar la distribución entera. Existe también un front-end a apt-get, llamado aptitude, cuya interfaz de opciones es prácticamente igual; ; como ventaja aporta una mejor gestión de dependencias de los paquetes y permite una interfaz interactiva.
 
 
 
Algunas funciones básicas de apt-get:
 
 
 
* Actualización de la distribución, podríamos efectuar los pasos combinados:
 
 
 
apt-get update
 
apt-get upgrade
 
apt-get dist-upgrade
 
  
 
La herramienta apt-cache dispone de comandos que nos permiten buscar información sobre los paquetes, como por ejemplo:
 
La herramienta apt-cache dispone de comandos que nos permiten buscar información sobre los paquetes, como por ejemplo:
Línea 88: Línea 68:
 
* De qué paquetes depende: apt-cache depends paquete
 
* De qué paquetes depende: apt-cache depends paquete
  
=== <u> Actualizar fuentes</u> ===
+
==== <u> Actualizar fuentes</u> ====
  
Para la actualizactualizacionacion de las fuentes el comando que se usa es:
+
Para la actual actualización de las fuentes el comando que se usa es:
  
 
  apt-get update
 
  apt-get update
  
=== <u> Instalar un Programa</u> ===
+
==== <u> Instalar un Programa</u> ====
  
 
Se puede instalar un paquete con el comando:
 
Se puede instalar un paquete con el comando:
Línea 100: Línea 80:
 
  apt-get install [nombre del paquete]
 
  apt-get install [nombre del paquete]
  
=== <u> Desinstalar un programa</u> ===
+
==== <u> Desinstalar un programa</u> ====
  
 
Se puede desinstalar un paquete con el comando:
 
Se puede desinstalar un paquete con el comando:
Línea 106: Línea 86:
 
  apt-get remove [nombre del paquete]
 
  apt-get remove [nombre del paquete]
  
=== <u> Borrar paquetes descargados</u> ===
+
==== <u> Borrar paquetes descargados</u> ====
  
 
Para borrar totalmente el repositorio local que contiene los ficheros de los paquetes descargados se usa el comando:
 
Para borrar totalmente el repositorio local que contiene los ficheros de los paquetes descargados se usa el comando:
Línea 114: Línea 94:
 
Borra todo excepto el fichero de bloqueo de los directorios /var/cache/apt/archives/ y /var/cache/apt/archives/partial/.
 
Borra todo excepto el fichero de bloqueo de los directorios /var/cache/apt/archives/ y /var/cache/apt/archives/partial/.
  
===<u> Actualización de la distribución </u> ===
+
==== <u> Actualización de la distribución </u> ====
  
 
  apt-get update --> Actualiza la base de datos de los programas disponibles.
 
  apt-get update --> Actualiza la base de datos de los programas disponibles.
Línea 124: Línea 104:
  
 
*apt-get source --> Descarga los paquetes fuente, este los guarda en el directorio /var/cache/apt/archives/.
 
*apt-get source --> Descarga los paquetes fuente, este los guarda en el directorio /var/cache/apt/archives/.
 
 
*apt-get -s install nombre_paquete --> Simula instalación.
 
*apt-get -s install nombre_paquete --> Simula instalación.
 
*apt-get purge [nombre de paquete] --> Borra paquetes instalados incluyendo los archivos de configuración.
 
*apt-get purge [nombre de paquete] --> Borra paquetes instalados incluyendo los archivos de configuración.
*apt-get clean --> Borra caché de las instalaciones de los deb.
 
 
*apt-get -f install --> Acaba instalaciones anteriores.
 
*apt-get -f install --> Acaba instalaciones anteriores.
 
*apt-get --compile source nombre_paquete --> Se baja las fuentes del paquete, lo compila y crea un deb recompilado obtimizado para tu máquina.
 
*apt-get --compile source nombre_paquete --> Se baja las fuentes del paquete, lo compila y crea un deb recompilado obtimizado para tu máquina.
 
*apt-cache show nombre_paquete --> Información del programa.
 
*apt-cache show nombre_paquete --> Información del programa.
 
*apt-cache search [nombre de comando] --> Busca paquetes sobre la base de un nombre incompleto.
 
*apt-cache search [nombre de comando] --> Busca paquetes sobre la base de un nombre incompleto.
 +
 +
=== Paquetes Red Hat ===
 +
 +
*rpm: es un poderoso gestor de paquetes para extensiones '''.rpm''', el cual es usado para instalar, verificar, actualizar y borrar paquetes individuales. Este es bueno pero es debajo nivel como para gestionar facilmente todos los paquetes del sistema.
 +
*yum: es una herramienta libre de gestión de paquetes para sistemas linux basados en RPM. A pesar de que es para ser usado a nivel de comandos, existen otras herramientas que le brindan interfaz gráfica. Este comando usa la información de la base de datos RPM, para ver las dependencias para que todo ande bn
 +
 +
==== <u> Instalar un Programa</u> ====
 +
 +
El comando para instalar es:
 +
 +
rpm -i [nombre de paquete]
 +
yum install [nombre de paquete]
 +
 +
==== <u> Borrar un Programa</u> ====
 +
 +
El comando para borrar un programa es:
 +
 +
rpm -e [nombre de paquete]
 +
yum remove [nombre de paquete]
 +
 +
==== <u> Actualizar un Programa</u> ====
 +
 +
El comando para actualizar es:
 +
 +
rpm -U
 +
yum update
 +
 +
=== Observaciones ===
 +
 +
Hay que tener en cuenta que los comandos descritos en esta sección son estando logueado como '''root''', si estamos logueados como un usuario con privilegios, hay que agregarle '''sudo''' al principio de cada comando.
  
 
== Procedimiento ==
 
== Procedimiento ==
  
 +
Lo que haremos ahora es describir el típico flujo de información en el sistema de gestión de paquetes, desde que el usuario hace un requerimiento de instalación de software hasta que finalmente lo puede utilizar.
  
Puntos a tener en cuenta para una instalación de un paquete:
+
#Usuario solicita instalación de paquetes.
 +
#El sistema de gestión de paquetes encuentra los paquetes necesarios.
 +
#El sistema de gestión de paquetes descarga los paquetes necesarios desde el repositorio.
 +
#El sistema de gestión de paquetes configura y hace recomendaciones.
 +
#Usuario usa el software.
  
:1. Previo (preinstalación): comprobar que existe el software necesario (y con las versiones correctas) para su funcionamiento (dependencias), ya sean bibliotecas de sistema u otras aplicaciones que sean usadas por el software.
+
=== Repositorio ===
:2. Descomprimir el contenido del paquete, copiando los ficheros a sus localizaciones definitivas, ya sean absolutas (tendrán una posición fija) o si se permite reubicarlas a otros directorios.
+
 
:3. Postinstalación: retocar los ficheros necesarios, configurar posibles parámetros del software, adecuarlo al sistema.
+
El software normalmente se pone a disposicion de los usuarios en los repositorios, con el fin de proporcionar a los usuarios de un sencillo control sobre los diferentes tipos de software que van a instalar en el sitema. El archivo que maneja los repositorios en linux es /etc/sources.list.
  
 
== Verificación ==
 
== Verificación ==
 +
 +
En esta sección del articulo lo que vamos a tratar de hacer es ver todos los paquetes instalados en la maquina, tratando de filtrar el que nos interesa. luego de esto vamos a instalar un paquete.
 +
 +
dpkg -l -->listara todos los paquetes  instalados en la maquina
 +
dpkg -s [nombre de paquete]--> verifica si el paquete esta instalado.
 +
 +
Luego para instalar usamos el comando:
 +
 +
apt-get install finger
 +
 +
Esto es lo que nos aparecerá:
 +
 +
Leyendo lista de paquetes... Hecho
 +
Creando árbol de dependencias     
 +
Leyendo la información de estado... Hecho
 +
Se instalarán los siguientes paquetes NUEVOS:
 +
finger
 +
0 actualizados, 1 se instalarán, 0 para eliminar y 180 no actualizados.
 +
Necesito descargar 19,6 kB de archivos.
 +
Se utilizarán 81,9 kB de espacio de disco adicional después de esta operación.
 +
Des:1 http://uy.archive.ubuntu.com/ubuntu/ natty/main finger amd64 0.17-14 [19,6 kB]
 +
Descargados 19,6 kB en 1seg. (10,2 kB/s)
 +
Seleccionando el paquete finger previamente no seleccionado.
 +
(Leyendo la base de datos ... 146992 ficheros o directorios instalados actualmente.)
 +
Desempaquetando finger (de .../finger_0.17-14_amd64.deb) ...
 +
Procesando disparadores para man-db ...
 +
Configurando finger (0.17-14) ...
 +
 +
Verificamos si el paquete finger quedo instaldo con el comando mostrado anteriormente.
 +
 +
Si queremos verificar las dependencias de este paquete usamos:
 +
 +
apt-cache depends grub
 +
 +
Depende: grub-common
 +
Depende: udev
 +
Depende: ucf
 +
Depende: debconf
 +
Depende: cdebconf
 +
Depende: util-linux
 +
Sugiere: grub-legacy-doc
 +
Sugiere: mdadm
 +
Entra en conflicto: grub-coreboot
 +
Entra en conflicto: grub-efi-amd64
 +
Entra en conflicto: grub-efi-ia32
 +
Entra en conflicto: grub-ieee1275
 +
Entra en conflicto: grub-pc
 +
 +
Si queremos saber la informacion del programa :
 +
 +
apt-cache show finger
 +
 +
Package: finger
 +
Priority: optional
 +
Section: net
 +
Installed-Size: 80
 +
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
 +
Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
 +
Architecture: amd64
 +
Source: bsd-finger
 +
Version: 0.17-14
 +
Replaces: netstd
 +
Depends: libc6 (>= 2.8)
 +
Filename: pool/main/b/bsd-finger/finger_0.17-14_amd64.deb
 +
Size: 19584
 +
MD5sum: 6ed13d7fdab075ee3d3c4ef780267586
 +
SHA1: 890928e9edfe41a75102c91170d5d67efb832215
 +
SHA256: b8218c4106b9fbdda321056df1472244b01e41500a9fe8ea3b760d54a3d8b935
 +
Description: user information lookup program
 +
finger displays information about the system users.
 +
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
 +
Origin: Ubuntu
 +
Supported: 18m
 +
Task: kubuntu-full, kubuntu-mobile-full
 +
 +
Luego si nos arrepentimos de haber instalado un paquete lo que debemos hacer es:
 +
 +
apt-get remove finger
 +
 +
Leyendo lista de paquetes... Hecho
 +
Creando árbol de dependencias     
 +
Leyendo la información de estado... Hecho
 +
Los siguientes paquetes se ELIMINARÁN:
 +
finger
 +
0 actualizados, 0 se instalarán, 1 para eliminar y 180 no actualizados.
 +
Se liberarán 81,9 kB después de esta operación.
 +
¿Desea continuar [S/n]? s
 +
(Leyendo la base de datos ... 146998 ficheros o directorios instalados actualmente.)
 +
Desinstalando finger ...
 +
Procesando disparadores para man-db ...
 +
 +
=== Observaciones ===
 +
 +
En realidad este tema es un tema muy extenso el cual es imposible mostrar todas las opciones, aquí solamente damos una idea básica de la cantidad de cosas que se pueden hacer con esto, por esta razón recomendamos las paginas '''man''' de los comandos para mas información.
 +
 
== Notas adicionales==
 
== Notas adicionales==
 +
 +
* Comando alien, del paquete alien: instala paquetes con otros formatos de empaquetamiento, e.g. rpm de RedHat. OJO, puede haber dependencias y no funcionar o romper algo; conviene usar sólo si es imprescindible, y para paquetes "stand-alone", que pueden funcionar por sí solos. Como siempre, "unless you know what you are doing".
 +
 +
=== Ficheros ===
 +
 +
*/etc/apt/sources.list--> Ubicaciones de dónde conseguir los paquetes.
 +
 +
*/etc/apt/sources.list.d/--> Fragmentos de fichero para las ubicaciones de dónde descargar los paquetes.
 +
 +
*/etc/apt/apt.conf--> Fichero de configuración de APT.
 +
 +
*/etc/apt/apt.conf.d/--> Fragmentos del fichero de configuración de APT.
 +
 +
*/etc/apt/preferences--> Ficheros de preferencias de versión. Aquí puede especificar el anclaje ("pinning"), una preferencia para conseguir ciertos paquetes a partir de una fuente diferente o de una versión diferente de una distribución.
 +
 +
*/etc/apt/preferences.d/--> Fragmentos de fichero para las preferencias de la versión.
 +
 +
*/var/cache/apt/archives/--> Área de almacenamiento para los ficheros de paquetes descargados.
 +
         
 +
*/var/cache/apt/archives/partial/--> Área de almacenamiento para los ficheros de paquete en tránsito.
 +
         
 +
*/var/lib/apt/lists/--> Área de almacenamiento para la información del estado de cada fuente de paquetes especificado en sources.list(5).
 +
 +
*/var/lib/apt/lists/partial/--> Área de almacenamiento para la información del estado en tránsito.
  
 
== Referencias ==
 
== Referencias ==
  
Adminitración Avanzada de GNU/Linux
+
Administración Avanzada de GNU/Linux
  
 
http://doc.ubuntu-es.org/Formatos_de_paquetes#Paquetes_Deb
 
http://doc.ubuntu-es.org/Formatos_de_paquetes#Paquetes_Deb
 +
 +
http://linuca.org/body.phtml?nIdNoticia=39
 +
 +
http://es.kioskea.net/faq/274-linux-instalar-programas-gestion-de-paquetes-compilacion#i-4-2-actualizacion-de-fuentes
 +
 +
http://linuxhelp.blogspot.com/2005/12/concise-apt-get-dpkg-primer-for-new.html
 +
 +
http://web.mit.edu/rhel-doc/3/rhel-sag-pt_br-3/s1-rpm-using.html
 +
 +
[[Category:Descontinuadas]]

Revisión actual - 17:04 14 ene 2022

Introducción a la gestión de paquetes

Antes, muchos de los programas Linux se distribuían como código fuente que los usuarios luego transformaban en el programa o en el conjunto de programas requeridos, junto con las paginas man, los archivos de configuración y todo lo demás que resultaba necesario. Hoy en día Linux usan programas o conjuntos de programas prefabricados denominados paquetes, estos paquetes se envían listos para ser instalados en dicha distribución. En esta pagina le iremos a brindar conocimientos sobre herramientas de gestión de paquetes (ej:instalar, borrar, actualizar). Hay que mencionar que en este articulo nos vamos a basar mas en el uso de Advanced Packagin Tool (apt), este es usado por Debian como también por sus distribuciones que derivan de este. También para brindar un conocimiento general de esto, iremos a dar información de herramientas de gestión de otras distribuciones de Linux como Red Hat, este usa paquetes de tipo RPM, y su gestor de paquetes es yum.

Desde la perspectiva de los usuarios, la función básica de la gestión de paquetes es por medio de comandos, esto hizo que las distribuciones desarrollaran herramientas muy fácil de usar por este. Como mencionamos anteriormente nos vamos a centrar en .deb y .rpm, pero también hablaremos de herramientas el cual el alumno podrá investigar mas adelante.

Sistema de gestión de paquetes

Un sistema de gestión de paquetes, también conocido como gestor de paquetes,es un conjunto de herramientas que sirven para la instalación, actualización, configuración y eliminación de paquetes de software. El software se distribuye en formas de paquetes, encapsulado en un solo fichero. Estos paquetes ademas de tener el software, también pueden incluir la descripción de su funcionalidad, datos sobre la versión, información sobre quien lo distribuye, suma de verificación y también alguna lista de paquetes requeridos para poder hacerlo funcionar correctamente.


Principales Funciones de Sistemas de Gestión de Paquetes

Estos tienen la tarea de organizar todos los paquetes instalados en el sistema y se encargan de mantener su usabilidad, todo esto se hace combinando esto:

  • Comprueba suma de verificación para evitar que haya diferencias entre la versión local de un paquete y la versión oficial.
  • Comprobar legitimidad de software.
  • Instalación, actualización y eliminación simple de paquetes.
  • Resolución de dependencias para ciertos software, esto se verifica para que el software funcione correctamente.
  • Búsqueda de actualizaciones para proveer la ultima versión de un paquete.
  • Agrupamiento de los paquetes según la función que tenga, esto lo hace para evitar confusión al instalarlos o mantenerlos.

Paquetes

Un paquete de software es un archivo comprimido con una estructura determinada para ser usado por herramientas de gestión,los paquetes son el elemento básico para tratar las tareas de instalación, actualización del existente o eliminación del no utilizado. El uso de paquetes facilita añadir o quitar software al considerarlo una unidad y no tener que trabajar con los ficheros individuales.

Categoría de paquetes

  • Base: paquetes indispensables para el funcionamiento del sistema (útiles, programas de inicio, bibliotecas de sistema).
  • Sistema: útiles de administración, comandos de utilidad.
  • Desarrollo (developement): útiles de programación: editores, compiladores, depuradores.
  • Gráficos: controladores e interfaces gráficas, escritorios, gestores de ventanas.
  • Otras categorías.

Objetivos

  • Instalar, reinstalar y actualizar paquetes.
  • Buscar paquetes que contengan archivos o bibliotecas especificas, incluso si el paquete instalado no esta instalado.
  • Obtener información de los paquetes instalados(versión,contenido, dependencias,estado de instalación), incluso si el paquete no esta instalado.

Software

  • Synaptic: Es un programa informático que es una interfaz gráfica GTK+ de APT, para el sistema de gestión de paquetes de debian GNU/Linux. Generalmente se utiliza en sistemas basados en paquetes .deb pero también puede ser usado en sistemas basados en paquetes RPM.Synaptic utiliza repositorios Debian, y permite su gestión mediante un menú interactivo.Mediante un click, es posible actualizar la lista de paquetes disponibles o marcar automáticamente todas las actualizaciones de los paquetes ya instalados. Dispone de un avanzado filtro de búsqueda, es capaz de reparar las dependencias rotas de paquetes y permite deshacer y rehacer las últimas selecciones de paquetes. Normalmente se realiza una actualización de la lista de paquetes de los servidores del fichero sources.list.
  • Adept: Es un gestor de paquetes gráfico desarrollado para KDE, este también funciona bien en gnome, es muy fácil de usar y al igual que Synaptic, funciona en base a repositorios de donde extrae información sobre paquetes disponibles para instalar o actualizar.

Conceptos, comandos, archivos

Existen muchos tipos de herramientas para el trabajo con los paquetes obtenidos desde los repositorios, estas herramientas varían según la distribución de Linux que estemos usando. Ahora iremos a mencionar algunas de esas herramientas, estas pueden ser usadas tanto en un entorno gráfico como en una terminal:

Herramientas interactivas

  • tasksel: permiten escoger unos subconjuntos de paquetes agrupados por tipo de tareas.
  • dselect: permite navegar por toda la lista de paquetes disponibles, y escoger aquellos que queramos instalar o desinstalar.

Paquetes Debian

A nivel de linea de comando:

  • dpkg: comando de más bajo nivel, para gestionar directamente los paquetes DEB de software, típicamente dpkg -i paquete.deb para realizar la instalación. Pueden realizarse todo tipo de tareas, de información, instalación, borrado o cambios internos a los paquetes de software.
  • apt (Advanced Packaging Tool): es un sistema de gestión de paquetes creado por Debian, esta herramienta es de mucha ayuda ya que facilita mucho a la hora de realizar cambios en el sistema, como instalar o eliminar programas de la maquina. Existe también un front-end a apt-get, llamado aptitude, cuya interfaz de opciones es prácticamente igual; ; como ventaja aporta una mejor gestión de dependencias de los paquetes y permite una interfaz interactiva.
  • aptitude: Este es es una interfaz para apt. Este muestra una lista de paquetes de software y permite al usuario elegir en modo iterativo cuales paquetes desea instalar y eliminar.Este dispone de un sistema muy poderoso de búsqueda.

La herramienta apt-cache dispone de comandos que nos permiten buscar información sobre los paquetes, como por ejemplo:

  • Buscar paquetes sobre la base de un nombre incompleto: apt-cache search nombre
  • Mostrar la descripción del paquete: apt-cache show paquete
  • De qué paquetes depende: apt-cache depends paquete

Actualizar fuentes

Para la actual actualización de las fuentes el comando que se usa es:

apt-get update

Instalar un Programa

Se puede instalar un paquete con el comando:

apt-get install [nombre del paquete]

Desinstalar un programa

Se puede desinstalar un paquete con el comando:

apt-get remove [nombre del paquete]

Borrar paquetes descargados

Para borrar totalmente el repositorio local que contiene los ficheros de los paquetes descargados se usa el comando:

apt-get clean

Borra todo excepto el fichero de bloqueo de los directorios /var/cache/apt/archives/ y /var/cache/apt/archives/partial/.

Actualización de la distribución

apt-get update --> Actualiza la base de datos de los programas disponibles.
apt-get upgrade --> Actualiza todo el sistema, con las nuevas versiones de los programas.
apt-get dist-upgrade --> Cambia de una versión a otra.


Otros comandos interesantes

  • apt-get source --> Descarga los paquetes fuente, este los guarda en el directorio /var/cache/apt/archives/.
  • apt-get -s install nombre_paquete --> Simula instalación.
  • apt-get purge [nombre de paquete] --> Borra paquetes instalados incluyendo los archivos de configuración.
  • apt-get -f install --> Acaba instalaciones anteriores.
  • apt-get --compile source nombre_paquete --> Se baja las fuentes del paquete, lo compila y crea un deb recompilado obtimizado para tu máquina.
  • apt-cache show nombre_paquete --> Información del programa.
  • apt-cache search [nombre de comando] --> Busca paquetes sobre la base de un nombre incompleto.

Paquetes Red Hat

  • rpm: es un poderoso gestor de paquetes para extensiones .rpm, el cual es usado para instalar, verificar, actualizar y borrar paquetes individuales. Este es bueno pero es debajo nivel como para gestionar facilmente todos los paquetes del sistema.
  • yum: es una herramienta libre de gestión de paquetes para sistemas linux basados en RPM. A pesar de que es para ser usado a nivel de comandos, existen otras herramientas que le brindan interfaz gráfica. Este comando usa la información de la base de datos RPM, para ver las dependencias para que todo ande bn

Instalar un Programa

El comando para instalar es:

rpm -i [nombre de paquete]
yum install [nombre de paquete]

Borrar un Programa

El comando para borrar un programa es:

rpm -e [nombre de paquete]
yum remove [nombre de paquete]

Actualizar un Programa

El comando para actualizar es:

rpm -U
yum update

Observaciones

Hay que tener en cuenta que los comandos descritos en esta sección son estando logueado como root, si estamos logueados como un usuario con privilegios, hay que agregarle sudo al principio de cada comando.

Procedimiento

Lo que haremos ahora es describir el típico flujo de información en el sistema de gestión de paquetes, desde que el usuario hace un requerimiento de instalación de software hasta que finalmente lo puede utilizar.

  1. Usuario solicita instalación de paquetes.
  2. El sistema de gestión de paquetes encuentra los paquetes necesarios.
  3. El sistema de gestión de paquetes descarga los paquetes necesarios desde el repositorio.
  4. El sistema de gestión de paquetes configura y hace recomendaciones.
  5. Usuario usa el software.

Repositorio

El software normalmente se pone a disposicion de los usuarios en los repositorios, con el fin de proporcionar a los usuarios de un sencillo control sobre los diferentes tipos de software que van a instalar en el sitema. El archivo que maneja los repositorios en linux es /etc/sources.list.

Verificación

En esta sección del articulo lo que vamos a tratar de hacer es ver todos los paquetes instalados en la maquina, tratando de filtrar el que nos interesa. luego de esto vamos a instalar un paquete.

dpkg -l -->listara todos los paquetes  instalados en la maquina
dpkg -s [nombre de paquete]--> verifica si el paquete esta instalado.

Luego para instalar usamos el comando:

apt-get install finger

Esto es lo que nos aparecerá:

Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
finger
0 actualizados, 1 se instalarán, 0 para eliminar y 180 no actualizados.
Necesito descargar 19,6 kB de archivos.
Se utilizarán 81,9 kB de espacio de disco adicional después de esta operación.
Des:1 http://uy.archive.ubuntu.com/ubuntu/ natty/main finger amd64 0.17-14 [19,6 kB]
Descargados 19,6 kB en 1seg. (10,2 kB/s)
Seleccionando el paquete finger previamente no seleccionado.
(Leyendo la base de datos ... 146992 ficheros o directorios instalados actualmente.)
Desempaquetando finger (de .../finger_0.17-14_amd64.deb) ...
Procesando disparadores para man-db ...
Configurando finger (0.17-14) ...

Verificamos si el paquete finger quedo instaldo con el comando mostrado anteriormente.

Si queremos verificar las dependencias de este paquete usamos:

apt-cache depends grub
Depende: grub-common
Depende: udev
Depende: ucf
Depende: debconf
Depende: cdebconf
Depende: util-linux
Sugiere: grub-legacy-doc
Sugiere: mdadm
Entra en conflicto: grub-coreboot
Entra en conflicto: grub-efi-amd64
Entra en conflicto: grub-efi-ia32
Entra en conflicto: grub-ieee1275
Entra en conflicto: grub-pc

Si queremos saber la informacion del programa :

apt-cache show finger
Package: finger
Priority: optional
Section: net
Installed-Size: 80
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
Architecture: amd64
Source: bsd-finger
Version: 0.17-14
Replaces: netstd
Depends: libc6 (>= 2.8)
Filename: pool/main/b/bsd-finger/finger_0.17-14_amd64.deb
Size: 19584
MD5sum: 6ed13d7fdab075ee3d3c4ef780267586
SHA1: 890928e9edfe41a75102c91170d5d67efb832215
SHA256: b8218c4106b9fbdda321056df1472244b01e41500a9fe8ea3b760d54a3d8b935
Description: user information lookup program
finger displays information about the system users.
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 18m
Task: kubuntu-full, kubuntu-mobile-full

Luego si nos arrepentimos de haber instalado un paquete lo que debemos hacer es:

apt-get remove finger
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Los siguientes paquetes se ELIMINARÁN:
finger
0 actualizados, 0 se instalarán, 1 para eliminar y 180 no actualizados.
Se liberarán 81,9 kB después de esta operación.
¿Desea continuar [S/n]? s
(Leyendo la base de datos ... 146998 ficheros o directorios instalados actualmente.)
Desinstalando finger ...
Procesando disparadores para man-db ...

Observaciones

En realidad este tema es un tema muy extenso el cual es imposible mostrar todas las opciones, aquí solamente damos una idea básica de la cantidad de cosas que se pueden hacer con esto, por esta razón recomendamos las paginas man de los comandos para mas información.

Notas adicionales

  • Comando alien, del paquete alien: instala paquetes con otros formatos de empaquetamiento, e.g. rpm de RedHat. OJO, puede haber dependencias y no funcionar o romper algo; conviene usar sólo si es imprescindible, y para paquetes "stand-alone", que pueden funcionar por sí solos. Como siempre, "unless you know what you are doing".

Ficheros

  • /etc/apt/sources.list--> Ubicaciones de dónde conseguir los paquetes.
  • /etc/apt/sources.list.d/--> Fragmentos de fichero para las ubicaciones de dónde descargar los paquetes.
  • /etc/apt/apt.conf--> Fichero de configuración de APT.
  • /etc/apt/apt.conf.d/--> Fragmentos del fichero de configuración de APT.
  • /etc/apt/preferences--> Ficheros de preferencias de versión. Aquí puede especificar el anclaje ("pinning"), una preferencia para conseguir ciertos paquetes a partir de una fuente diferente o de una versión diferente de una distribución.
  • /etc/apt/preferences.d/--> Fragmentos de fichero para las preferencias de la versión.
  • /var/cache/apt/archives/--> Área de almacenamiento para los ficheros de paquetes descargados.
  • /var/cache/apt/archives/partial/--> Área de almacenamiento para los ficheros de paquete en tránsito.
  • /var/lib/apt/lists/--> Área de almacenamiento para la información del estado de cada fuente de paquetes especificado en sources.list(5).
  • /var/lib/apt/lists/partial/--> Área de almacenamiento para la información del estado en tránsito.

Referencias

Administración Avanzada de GNU/Linux

http://doc.ubuntu-es.org/Formatos_de_paquetes#Paquetes_Deb

http://linuca.org/body.phtml?nIdNoticia=39

http://es.kioskea.net/faq/274-linux-instalar-programas-gestion-de-paquetes-compilacion#i-4-2-actualizacion-de-fuentes

http://linuxhelp.blogspot.com/2005/12/concise-apt-get-dpkg-primer-for-new.html

http://web.mit.edu/rhel-doc/3/rhel-sag-pt_br-3/s1-rpm-using.html