lunes, 29 de febrero de 2016

Buscando qué paquete ha instalado un archivo

Para determinar qué paquete es responsable de la instalación de un archivo en particular, podemos usar los siguientes comandos:

Tabla 14-12: Comandos de identificación del archivo de paquetes
Estilo
Comando(s)
Debian
dpkg --search archivo_paquete
Red Hat
rpm -qf archivo_paquete

Ejemplo: Para ver qué paquete instaló el archivo /usr/bin/vim en un sistema Red Hat:

rpm -qf /usr/bin/vim

viernes, 26 de febrero de 2016

Mostrando información acerca de un paquete instalado

Si sabemos el nombre de un paquete instalado, los siguientes comandos pueden utilizarse para mostrar una descripción del paquete:

Tabla 14-11: Comandos de información de paquetes
Estilo
Comando(s)
Debian
apt-cache show nombre_paquete
Red Hat
yum info nombre_paquete

Ejemplo: Para ver una descripción del paquete emacs en un sistema estilo Debian:

apt-cache show emacs

jueves, 25 de febrero de 2016

Determinando si un paquete está instalado

Estas herramientas de bajo nivel pueden utilizarse para mostrar si un paquete específico está instalado:

Tabla 14-10: Comandos de estado de paquetes
Estilo
Comando(s)
Debian
dpkg --status nombre_paquete
Red Hat
rpm -q nombre_paquete

Ejemplo: Para determinar si el paquete emacs está instalado en un sistema estilo Debian:

dpkg --status emacs

miércoles, 24 de febrero de 2016

Listando los paquetes instalados

Estos comandos pueden utilizarse para mostrar una lista de todos los paquetes instalados en el sistema:

Tabla 14-9: Comandos de listado de paquetes
Estilo
Comando(s)
Debian
dpkg --list
Red Hat
rpm -qa

martes, 23 de febrero de 2016

Actualizando un paquete desde un archivo de paquete

Si una versión actualizada de un paquete ha sido descargada desde una fuente que no es un repositorio, puede ser instalada reemplazando a la anterior versión:

Tabla 14-8: Comandos de actualización de paquetes de bajo nivel
Estilo
Comando(s)
Debian
dpkg --install archivo_paquete
Red Hat
rpm -U archivo_paquete

Ejemplo: Actualizar una instalación existente de emacs a la versión contenida en el archivo del paquete emacs-22.1-7.fc7-i386.rpm en un sistema Red Hat:

rpm -U emacs-22.1-7.fc7-i386.rpm

Nota: dpkg no tiene una opción específica para actualizar un paquete en lugar de instalarlo tal como lo hace rpm.

lunes, 22 de febrero de 2016

Actualizando paquetes de un repositorio

La tarea más común en la gestión de paquetes es mantener el sistema actualizado con los últimos paquetes. Las herramientas de alto nivel pueden realizar esta tarea vital en un paso único.

Tabla 14-7: Comandos de actualización de paquetes
Estilo Comando(s)
Debian apt-get update; apt-get upgrade
Red Hat yum update

Ejemplo: para aplicar todas las actualizaciones disponibles a los paquetes instalados en un sistema estilo Debian:

apt-get update; apt-get upgrade

viernes, 19 de febrero de 2016

Eliminando un paquete

Los paquetes pueden ser desinstalados usando tanto las herramientas de bajo nivel como de alto nivel. Las herramientas de alto nivel se muestran a continuación.

Tabla 15-6: Comandos de eliminación de paquetes
Estilo Comando(s)
Debian apt-get remove nombre_paquete
Red Hat yum erase nombre_paquete

Ejemplo: para desinstalar el paquete emacs de un sistema estilo Debian:

apt-get remove emacs

jueves, 18 de febrero de 2016

Instalando un paquete desde un archivo de paquete

Si un archivo de un paquete ha sido descargado de una fuente distinta a un repositorio, puede ser instalado directamente (aunque sin resolución de dependencias) usando una herramienta de bajo nivel:

Tabla 14-5: Comandos de instalación de paquetes de bajo nivel
Estilo Comando(s)
Debian dpkg --install archivo_paquete
Red Hat rpm -i archivo_paquete

Ejemplo: si el archivo del paquete emacs-22.1-7.fc7-i386 ha sido descargado de un sitio que no sea un repositorio, podría ser instalado de la siguiente forma:

rpm -i emacs-22.1-7.fc7-i386.rpm

Nota: Como esta técnica usa el programa de bajo nivel rpm para realizar la instalación, no se realiza ninguna resolución de dependencias. Si rpm descubre una dependencia que falta, rpm terminará con un error.

miércoles, 17 de febrero de 2016

Instalando un paquete de un repositorio

Las herramientas de alto nivel permiten descargar e instalar un paquete de un repositorio con resolución completa de dependencias.

Tabla 14-4: Comandos de instalación de paquetes
Estilo Comando(s)
Debian apt-get update
apt-get install nombre_paquete
Red Hat yum install nombre_paquete

Ejemplo: Para instalar el editor de texto emacs de un repositorio apt:

apt-get update; apt-get install emacs

martes, 16 de febrero de 2016

Encontrar un paquete en un repositorio

Usando las herramientas de alto nivel para buscar los metadatos del repositorio, un paquete puede ser localizado basándonos en su nombre o descripción.

Tabla 14-3: Comandos de búsqueda de paquetes
Estilo Comando(s)
Debian apt-get update
apt-cache search cadena_buscada
Red Hat yum search cadena_buscada

Ejemplo: Para buscar el editor de texto emacs en un repositorio yum, podemos usar este comando:

yum search emacs

lunes, 15 de febrero de 2016

Tareas comunes en la gestión de paquetes

Hay muchas operaciones que pueden ser realizadas con las herramientas de gestión de paquetes de la línea de comandos. Veremos las más comunes. Ten en cuenta que las herramientas de bajo nivel también soportan la creación de paquetes, una actividad fuera del objetivo de este libro.

En el siguiente apartado, el término “nombre_paquete” ser refiere al nombre real del paquete en lugar del término “archivo_paquete”, que es el nombre del archivo que contiene el paquete.

viernes, 12 de febrero de 2016

Herramientas, de alto y bajo nivel, de paquetes

Los sistemas de gestión de paquetes normalmente constan de dos tipos de herramientas: herramientas de bajo nivel que soportan tareas como instalar y eliminar paquetes, y herramientas de alto nivel que realizan búsquedas por metadatos y resolución de dependencias. En este capítulo, veremos las herramientas proporcionadas por los sistemas estilo Debian (como Ubuntu y muchos otros) y aquellas usadas por productos recientes de Red Hat. Mientras que todas las distribuciones estilo Red Hat coinciden en el mismo programa de bajo nivel (rpm), usan distintas herramientas de alto nivel. Para nuestro tema, veremos el programa de alto nivel yum, usado por Fedora, Red Hat Enterprise Linux y CentOS. Otras distribuciones estilo Red Hat cuentan con herramientas de alto nivel con características parecidas.

Tabla 14-2: Herramientas de sistemas de paquetes
Distribuciones Herramientas de bajo nivel Herramientas de alto nivel
Estilo Debian dpkg apt-get, aptitude
Fedora, Red Hat Enterprise Linux, CentOS rpm yum

jueves, 11 de febrero de 2016

Dependencias

Los programas raras veces son “autónomos”; en su lugar necesitan la presencia de otros componentes de software para hacer su trabajo. Actividades comunes, como por ejemplo entrada/salida, están soportadas por rutinas compartidas por muchos programas. Estas rutinas se almacenan en lo que llamamos bibilotecas (o librerías) compartidas, que proporcionan servicios esenciales a más de un programa. Si un paquete requiere un recurso compartido como una biblioteca compartida, se dice que tiene dependencia. Los sistemas modernos de gestión de paquetes cuentan con un método de resolución de dependencias para asegurarse de que cuando un paquete se instala, todas sus dependencias se instalan también.

miércoles, 10 de febrero de 2016

Repositorios

Mientras que algunos proyectos de software eligen realizar su propia distribución y empaquetado, la mayoría de los paquetes actuales son creados por los suministradores de la distribución y terceras partes interesadas. Los paquetes son puestos a disposición de los usuarios de una distribución en repositorios centrales que pueden contener miles de paquetes, cada uno construidos y mantenidos especialmente para la distribución.

Una distribución puede mantener varios repositorios diferentes para las diferentes fases del ciclo de desarrollo del software. Por ejemplo, normalmente habrá un repositorio de “pruebas” que contendrá paquetes que acaban de ser construidos y que están destinados a almas valientes que buscan errores antes de que sean liberados para distribución general. Una distribución, a menudo, tiene un repositorio de “desarrollo” donde se guardan los paquetes en proceso de trabajo para incluirlos en la siguiente versión principal de la distribución.

Una distribución también puede tener repositorios de terceros relacionados. Estos a menudo se necesitan para proporcionar software que, por razones legales como patentes o cuestiones de antielusión de DRM (Digital Rights Management - Gestión de Derechos Digitales), no pueden ser incluidos con la distribución. Quizá el caso más conocido es el del soporte del encriptado de los DVD, que no es legal en Estados Unidos. Los repositorios de terceros funcionan en países donde las patentes de software y las leyes antipiratería no se aplican. Estos repositorios son normalmente independientes de la distribución que soportan, y para usarlos, debemos conocerlos e incluirlos manualmente en los archivos de configuración del sistema de gestión de paquetes.

martes, 9 de febrero de 2016

Paquetes

La unidad básica de software en los sistemas de paquetes es el paquete. Un paquete es una colección comprimida de archivos que componen el paquete de software. Un paquete puede consistir en numerosos programas y archivos de datos que sustentan el programa. Además de los archivos a instalar, el paquete también incluye metadatos sobre el paquete, como una descripción en texto del paquete y su contenido. Adicionalmente, muchos paquetes contienen scripts de pre y post instalación que realizan tareas de configuración antes y después de la instalación del paquete.

Los paquetes son creados por una persona conocida como el mantenedor del paquete, a menudo (pero no siempre) un empleado del suministrador de la distribución. El mantenedor del paquete toma el software en código fuente del proveedor superior (el autor del programa), lo compila, y crea los metadatos del paquete y todos los scripts de instalación necesarios. A menudo, el mantenedor del paquete aplicará modificaciones al código fuente original para mejorar la integración del programa con otras partes de la distribución Linux.

lunes, 8 de febrero de 2016

Cómo funciona un sistema de paquetes

El método de distribución de software utilizado en la industria del software propietario normalmente implica comprar un tipo de medio de instalación como un “disco de instalación” y luego ejecutar un “asistente de instalación” para instalar una nueva aplicación en el sistema.

Linux no funciona de esa forma. Prácticamente todo el software para un sistema Linux se encuentra en Internet. La mayoría lo proveerá el suministrador de la distribución en forma de paquetes y el resto estará disponible en código fuente para ser instalado manualmente. Hablaremos un poco sobre cómo instalar software compilando el código fuente en un capítulo posterior.

viernes, 5 de febrero de 2016

Sistemas de paquetes

Diferentes distribuciones usan diferentes sistemas de paquetes y, como regla general, un paquete destinado a una distribución no es compatible con otra distribución. La mayoría de las distribuciones se clasifican dentro de dos familias de tecnologías de paquetes: la familia Debian “.deb” y la familia Red Hat “.rpm”. Hay algunas excepciones importantes como Gentoo, Slackware y Foresight, pero la mayoría de las demás usan uno de estos dos sistemas básicos.

Tabla 14-1: Principales familias de sistemas de paquetes
Sistema de paquetes Distribuciones (Lista parcial)
Estilo Debian (.deb) Debian, Ubuntu, Xandros, Linspire
Estilo Red Hat (.rpm) Fedora, CentOS, Red Hat Enterprise Linux, OpenSUSE, Mandriva, PCLinuxOS

jueves, 4 de febrero de 2016

Gestión de paquetes

Si pasamos algún tiempo en la comunidad Linux, oímos muchas opiniones acerca de qué distribución es la “mejor”. A menudo, estas discusiones se vuelven muy tontas, centrándose en cosas como la belleza del fondo de pantalla (¡Algunas personas no usarán Ubuntu por su gama de colores por defecto!) y otros asuntos sin importancia.

El aspecto más importante que determina la calidad de una distribución es el sistema de paquetes y la vitalidad de la comunidad que soporte la distribución. A medida que pasemos más tiempo con Linux, veremos que su ecosistema de software es extremadamente dinámico. Las cosas cambian constantemente. La mayoría de las distribuciones Linux más destacadas liberan nuevas versiones cada seis meses y muchos programas individuales se actualizan cada día. Para enfrentarse a esta ventisca de software, necesitamos buenas herramientas para la gestión de paquetes.

La gestión de paquetes es un método para instalar y mantener software en el sistema. Hoy en día, la mayoría de la gente puede satisfacer todas sus necesidades de software instalando paquetes de su distribuidor Linux. Esto contrasta con los primeros días de Linux, cuando uno tenía que descargar y compilar código fuente para instalar software. No es que haya nada malo en compilar código fuente; de hecho, tener acceso al código fuente es una de las grandes maravillas de Linux. Nos da (y a todos los demás también) la capacidad de examinar y mejorar el sistema. Es sólo que tener un paquete precompilado es más rápido y fácil de manejar.

En este capítulo, veremos algunas herramientas de línea de comandos que se usan para manejar los paquetes. Aunque todas las distribuciones importantes ofrecen programas gráficos potentes y sofisticados para mantener el sistema, también es importante aprender los programas de la línea de comandos. Pueden realizar muchas tareas que son difíciles (o imposibles) de hacer con sus homólogos gráficos.

miércoles, 3 de febrero de 2016

Para saber más

martes, 2 de febrero de 2016

Resumiendo

Lo creas o no, hay mucho más que puede hacerse con los prompts incluyendo funciones de shell y scripts que no hemos visto aquí, pero este es un buen comienzo. No todo el mundo va a preocuparse de cambiar el prompt, ya que el prompt por defecto normalmente es satisfactorio. Pero para aquellos de nosotros a los que nos gusta juguetear, el shell nos brinda la oportunidad de pasar muchas horas de diversión trivial.

lunes, 1 de febrero de 2016

Salvando del prompt

Obviamente, no queremos escribir este monstruo todo el tiempo, así que querremos almacenar nuestro prompt en alguna parte. Podemos hacer el prompt permanente añadiéndolo a nuestro archivo .bashrc. Para hacerlo, añade estas dos líneas al archivo:

PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]<\u@\h \W>\$ "

export PS1