Sie sind auf Seite 1von 30

Aprenda Linux, 101: Administracin de paquetes RPM y YUM

Visin general En este artculo aprenda a utilizar las herramientas del RPM y el YUM, y poder as administrar los paquetes en su sistema Linux. Aprenda a:

Instalar, reinstalar, actualizar, y eliminar paquetes utilizando RPM y YUM Obtener informacin acerca de los paquetes RPM, incluyendo la versin, el estado, las dependencias, la integridad y las firmas Determinar qu archivos proporciona el paquete, y descubrir cual de los paquetes contiene un archivo determinado.

Este artculo lo ayuda a prepararse para el Objetivo 102.5 del Tema 102 del examen 101 para Administracin Nivel Junior (LPIC-1) del Linux Professional Institute. Este objetivo tiene un valor de ponderacin de 3. Requisitos previos Para aprovechar al mximo los artculos de esta serie usted debera poseer conocimientos bsicos sobre Linux y tener un sistema de trabajo Linux para poder practicar los comandos explicados en este artculo. En ocasiones, versiones diferentes de un mismo programa muestran los resultados en formatos diferentes, por lo cual los resultados pueden no siempre ser idnticos a los listados y a las figuras presentados en este artculo. Particularmente, gran parte de los datos de salida que presentamos depende mucho de los paquetes que estn instalados en su sistema. Sus datos de salida pueden variar un poco, aunque usted debera igualmente poder reconocer las similitudes ms importantes. Volver arriba Introduccin a la administracin de paquetes

Conctese con Ian


Ian es uno de nuestros autores ms conocidos y exitosos. Vea todos los artculos de Ian en developerWorks. Conozca Ian's profile y conctese con l, con otros autores, y con otros lectores en My developerWorks.

Antiguamente muchos programas Linux eran distribuidos como cdigo fuente, que el usuario construa en el programa o en la serie de programas en los que era necesario, junto con las pginas de los manuales que fueran necesarias, los archivos de configuracin, y dems. Hoy en da, la mayora de los distribuidores de Linux utilizan programas o sets de programas prearmados denominados paquetes, los cuales son enviados para su distribucin listos para instalar. En este artculo, aprender de qu manera las herramientas para

administracin de programas lo ayudan a instalar, actualizar, y eliminar paquetes. Este artculo trata particularmente el tema del Red Hat Package Manager (RPM), desarrollado por by Red Hat, y del Yellowdog Updater Modified (YUM), originalmente desarrollado para administrar los sistemas Red Hat Linux en el Departamento de Fsica de la Universidad Duke. Otro de los artculos de esta serie, "Learn Linux 101: Debian package management," analiza las herramientas de administracin de paquetes utilizadas en los sistemas Debian. Desde el punto de vista del usuario, la funcin bsica de la administracin de paquetes la realizan los comandos. Dado que los desarrolladores de Linux se han esforzado para que el uso de Linux sea ms fcil, las herramientas bsicas han sido complementadas por otras, incluyendo las herramientas GUI, las cuales ocultan al usuario algunas de las complejidades de las herramientas bsicas. En este artculo y en el artculo sobre Debian package management, analizamos las herramientas bsicas, aunque tambin mencionamos algunas de las otras herramientas para que usted pueda luego buscar informacin sobre las mismas. RPM, YUM, y APT (para los sistemas Debian) poseen muchas similitudes. Todos ellos pueden instalar y quitar paquetes. La informacin sobre los paquetes instalados se guarda en una base de datos. Todos ellos tienen funcionalidad de lnea bsica de comando, adems de herramientas adicionales que pueden proporcionar al usuario interfaces de uso ms sencillo. Todos ellos pueden recuperar paquetes de Internet. Al instalar un sistema Linux, por lo general usted puede instalar una gran variedad de paquetes. El set puede personalizarse segn el uso que se quiera dar al sistema, como servidor, escritorio, o terminal de trabajo del desarrollador. Y en algn momento probablemente sea necesario instalar paquetes nuevos para obtener alguna otra funcionalidad, actualizar el paquete que posee, o incluso borrar paquetes que ya no se necesitan o son obsoleto debido a la aparicin de nuevos paquetes. Demos un vistazo a la forma en la que usted realiza estas tareas, y a algunos de los desafos a los que debe hacer frente, como la bsqueda de algn paquete que contenga algn comando en particular. RPM Red Hat lanz RPM en 1995. Actualmente RPM es el sistema de gestin de paquetes usado para crear paquetes en Linux Standard Base (LSB). Las opciones del comando rpm estn agrupadas en tres subgrupos segn se utilicen para:

Consultar y verificar paquetes Instalar, actualizar y borrar paquetes Realizar varias funciones

En este artculo nos ocuparemos de los dos primeros subgrupos de opciones de comandos. Usted encontrar informacin sobre el tercer subgrupo en las pginas de los manuales para RPM.

Deberamos tener en cuenta tambin que rpm es el nombre de comando para el comando principal utilizado con RPM, mientras que .rpm es la extensin utilizada en los archivos RPM. Por lo tanto "un rpm" o "el xxx rpm" se referir generalmente a un archivo RPM, mientras que rpm por lo general se referir al comando. YUM YUM agrega la actualizacin automtica y la administracin de paquetes, incluyendo la administracin de la dependencia, a los sistemas RPM. Adems de comprender los paquetes instalados un sistema, YUM, al igual que Debian Advanced empaquetado Tool (APT), trabaja con depsitos, los cuales son recopilaciones de paquetes, generalmente accesibles mediante la conexin de red. Volver arriba Instalacin de paquetes RPM Supongamos que usted desea aprender Lisp, y un colega le dice que utilice el comando gcl. Usted podra probar con gcl --help, o con which gcl, o con type gcl. Sin embargo, si su sistema no puede encontrar gcl, usted podra ver datos de salida similares a los presentados en el Listado 1.

Listado 1. Comando gcl faltante


[ian@echidna ~]$ gcl --help bash: gcl: command not found [ian@echidna ~]$ which gcl /usr/bin/which: no gcl in (/usr/lib64/qt3.3/bin:/usr/kerberos/sbin:/usr/kerber os/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/us r/sbin:/ sbin:/home/ian/bin) [ian@echidna ~]$ type gcl bash: type: gcl: not found

Usted podra volver a verificar con su colega para encontrar cual es el paquete que se debe instalar, o podra simplemente adivinar cual de los comandos gcl es el que se encuentra en el paquete gcl. A menudo se adivina correctamente, pero no siempre. Veremos ms tarde cmo encontrar el paquete adecuado. En este caso, usted necesita el paquete gcl. Suponiendo que usted ha descargado o adquirido una copia del paquete, usted podra probar instalarla utilizando el comando rpm con la opcin -i (para instalacin), como puede observarse en el Listado 2.

Listado 2. Instalacin de gcl con rpm - paso 1


[root@echidna ~]# rpm -i gcl-2.6.8-0.6.20090701cvs.fc12.x86_64.rpm error: Failed dependencies: gcl-selinux is needed by gcl-2.6.8-0.6.20090701cvs.fc12.x86_64

El comando rpm sabe que el paquete tiene una dependencia, pero desafortunadamente, no ayudar a resolverla. Usted necesitar obtener el paquete o los paquetes dependientes, probar nuevamente y ver si existen otras dependenciasy continuar con el mismo procedimiento hasta que se resuelvan todas las dependencias. Algo positivo es que puede darle al rpm comando una lista de paquetes para instalar y ste los instalar en el orden correcto si todas las dependencias han sido resueltas. Por lo tanto, al menos usted no tendr que instalar cada una de las piezas en el orden correcto en forma manual. Si usted ya ha utilizado Debian, a esta altura probablemente desear tener algo como el comando apt-get, el cual simplemente buscara lo que usted necesita, incluso las dependencias, y las instalara. Para los sistemas basados en RPM, YUM (o Yellowdog Updater Modified) realiza solamente esta funcin. El Listado 3 muestra como instalar gcl y cual es el gcl que se requiere;el requisito previo -selinux que utiliza el comando yum con la opcin install.

Listado 3. Instalacin de gcl utilizando yum


[root@echidna ~]# yum install gcl Loaded plugins: presto, refresh-packagekit Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package gcl.x86_64 0:2.6.8-0.7.20100201cvs.fc12 set to be updated --> Processing Dependency: gcl-selinux for package: gcl-2.6.80.7.20100201cvs.fc12.x86_64 --> Running transaction check ---> Package gcl-selinux.x86_64 0:2.6.8-0.7.20100201cvs.fc12 set to be updated --> Finished Dependency Resolution Dependencies Resolved ========================================================================= ============ Package Arch Version Repository Size ========================================================================= ============ Installing: gcl x86_64 2.6.8-0.7.20100201cvs.fc12 updates 6.3 M Installing for dependencies: gcl-selinux x86_64 2.6.8-0.7.20100201cvs.fc12 updates

17 k Transaction Summary ========================================================================= ============ Install 2 Package(s) Upgrade 0 Package(s) Total download size: 6.4 M Installed size: 40 M Is this ok [y/N]: y Downloading Packages: Setting up and reading Presto delta metadata updates/prestodelta | 964 kB 00:01 Processing delta metadata Package(s) data still to download: 6.4 M (1/2): gcl-2.6.8-0.7.20100201cvs.fc12.x86_64.rpm | 6.3 MB 00:12 (2/2): gcl-selinux-2.6.8-0.7.20100201cvs.fc12.x86_64.rpm | 17 kB 00:00 -----------------------------------------------------------------------------------Total 398 kB/s | 6.4 MB 00:16 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : gcl-selinux-2.6.8-0.7.20100201cvs.fc12.x86_64 1/2 Installing : gcl-2.6.8-0.7.20100201cvs.fc12.x86_64 2/2 Installed: gcl.x86_64 0:2.6.8-0.7.20100201cvs.fc12 Dependency Installed: gcl-selinux.x86_64 0:2.6.8-0.7.20100201cvs.fc12 Complete!

Los datos de salida en el Listado 3 muestran que YUM ha encontrado el gcl.x86_64 0:2.6.8-0.7.20100201cvs.fc12 y el gcl-selinux.x86_64 0:2.6.8-0.7.20100201cvs.fc12 en un depsito denominado "actualizaciones" (ampliaremos esto ms adelante), y ha determinado el tamao total de la descarga. Despus de que usted respondi "y" a aceptar la operacin, ste descarg ambos paquetes, y luego instal la dependencia, y por ltimo el gcl. Ms adelante ampliaremos el tema de las dependencias. Volver arriba Ubicacin de los paquetes

En la seccin anterior, usted aprendi a instalar un paquete RPM. Pero de dnde vienen los paquetes? Cmo sabe yum de dnde descargar los paquetes? El punto de inicio es /etc/yum.repos.d/ directory, el cual contiene por lo general varios archivos repo. Esta es la ubicacin por defecto para repos, pero otras ubicaciones pueden estar especificadas en el archivo de configuracin de YUMe, generalmente /etc/yum.conf. El Listado 4 muestra el archivo fedora-updates.repo correspondiente a la ubicacin desde la cual hemos instalado el gcl en nuestro sistema Fedora 12. Un archivo repo comn se divide en tres secciones, una para los paquetes normales, una para los paquetes de depuracin, y el ltimo para los paquetes fuentes. Por lo general, habr varias copias de un paquete de distribucin disponible en varias ubicaciones, o espejos. Por lo tanto el archivo repo nos dice donde yum encontrar la ltima lista de espejos para cada seccin. Obsrvese que el nivel de distribucin y la arquitectura de la mquina son parametrizados, por lo cual yum descargara la lista para mi sistema Fedora x86_64 de https://mirrors.fedoraproject.org/metalink?repo=updates-released-f12&arch=x86_64. Adems de la ubicacin del depsito, el archivo repo nos dice si un depsito en particular se encuentra habilitado y si las firmas GPG deberan utilizarse para verificar los paquetes descargados.

Listado 4. /etc/yum.repos.d/*.repo
[ian@echidna ~]$ cat /etc/yum.repos.d/fedora-updates.repo [updates] name=Fedora $releasever - $basearch - Updates failovermethod=priority #baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$rele asever /$basearch/ mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updatesreleased-f$r eleasever&arch=$basearch enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch [updates-debuginfo] name=Fedora $releasever - $basearch - Updates - Debug failovermethod=priority #baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$rele asever /$basearch/debug/ mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updatesreleased-deb ug-f$releasever&arch=$basearch enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch [updates-source] name=Fedora $releasever - Updates Source

failovermethod=priority #baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$rele asever /SRPMS/ mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updatesreleased-sou rce-f$releasever&arch=$basearch enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

YUM y RPM utilizan una base de datos local para determinar qu paquetes son instalados. Los metadatos sobre los paquetes que se guardan en la base de datos local son recuperados de los depsitos habilitados. Aunque rara vez necesite preocuparse por la base de datos local, usted utiliza el comando yum clean para borrar varias partes de la informacin guardada localmente y yum makecache para crear la informacin en su base de datos local para el repos habilitado. Usted podra hacer esto si cambia la configuracin de su repo, por ejemplo. Volver arriba Borrado de paquetes RPM Si usted desea borrar un paquete, puede utilizar la opcin remove de yum, o la opcin -e derpm. En el Listado 5 se puede observar un test que se ejecuta para borrar gcl utilizando rpm -e. Si el paquete puede ser borrado, no existen datos de salida.

Listado 5. Test removal of gcl


[root@echidna ~]# rpm -e --test gcl

A diferencia del borrado simulado de los paquetes Debian utilizando apt-get, el sistema RPM no guarda informacin sobre los paquetes que se agregan automticamente, por lo cual no hay una forma trivial de descubrir cuales son las dependencias que podran borrarse. Sin embargo, si usted especifica que varios paquetes se borren con un nico comando, los paquetes sin dependencias sern borrados antes de los paquetes que s poseen dependencias. Al borrar paquetes utilizando rpm, no hay ningn aviso antes de los paquetes borrados, a diferencia de lo que sucede al instalar los paquetes. Sin embargo, si usted intenta borrar un paquete que es necesario para algn otro paquete, la operacin no se realizar y usted recibir un mensaje de error, tal como se muestra en el Listado 6.

Listado 6. Borrado de un paquete independiente con rpm

[root@echidna ~]# rpm -e gcl-selinux error: Failed dependencies: gcl-selinux is needed by (installed) gcl-2.6.80.7.20100201cvs.fc12.x86_64

En cambio, si usted utiliza yum remove usted recibir un aviso luego de la realizacin de los tests de las operaciones. Si el paquete que est tratando de borrar es un paquete dependiente de algunos paquetes instalados, YUM ofrecer borrar estos y tambin el paquete dependiente, tal como se observa en el Listado 7.

Listado 7. Borrado de un paquete dependiente con yum


[root@echidna ~]# yum remove gcl|||||||-selinux Loaded plugins: presto, refresh-packagekit Setting up Remove Process Resolving Dependencies --> Running transaction check ---> Package gcl-selinux.x86_64 0:2.6.8-0.7.20100201cvs.fc12 set to be erased --> Processing Dependency: gcl-selinux for package: gcl-2.6.80.7.20100201cvs.fc12.x86_64 --> Running transaction check ---> Package gcl.x86_64 0:2.6.8-0.7.20100201cvs.fc12 set to be erased --> Finished Dependency Resolution Dependencies Resolved ========================================================================= ============ Package Arch Version Repository Size ========================================================================= ============ Removing: gcl-selinux x86_64 2.6.8-0.7.20100201cvs.fc12 @updates 90 k Removing for dependencies: gcl x86_64 2.6.8-0.7.20100201cvs.fc12 @updates 40 M Transaction Summary ========================================================================= ============ Remove 2 Package(s) Reinstall 0 Package(s) Downgrade 0 Package(s) Is this ok [y/N]: n Exiting on user Command Complete!

Volver arriba Actualizacin de paquetes RPM Ahora que ya sabe como instalar y borrar un RPM, analicemos la actualizacin de paquetes RPM en otro nivel. Usted puede utilizar yum update para actualizar todo su sistema, o puede especificar un solo paquete o la especificacin de un comodn. El Listado 8 muestra cmo actualizar todos los paquetes cuyos nombres comienzan con "gr". Obsrvese el uso de apstrofes para prevenir la expansin del shell de "*".

Listado 8. Actualizacin mediante la actualizacin de yum


[root@echidna ~]# yum update 'gr*' Loaded plugins: presto, refresh-packagekit Setting up Update Process Resolving Dependencies --> Running transaction check ---> Package grep.x86_64 0:2.6.3-1.fc12 set to be updated ---> Package groff.x86_64 0:1.18.1.4-20.fc12 set to be updated --> Finished Dependency Resolution Dependencies Resolved ========================================================================= ============ Package Arch Version Repository Size ========================================================================= ============ Updating: grep x86_64 2.6.3-1.fc12 updates 228 k groff x86_64 1.18.1.4-20.fc12 updates 1.5 M Transaction Summary ========================================================================= ============ Install 0 Package(s) Upgrade 2 Package(s) Total download size: 1.7 M Is this ok [y/N]: y Downloading Packages: Setting up and reading Presto delta metadata Processing delta metadata Download delta size: 854 k http://fedora.fastsoft.net/pub/linux/fedora/linux/updates/12/x86_64/drpms /grep-2.5.36.fc12_2.6.3-1.fc12.x86_64.drpm: [Errno 14] HTTP Error 404 : http://fedora.fastsoft.n et/pub/linux/fedora/linux/updates/12/x86_64/drpms/grep-2.5.36.fc12_2.6.3-1.fc12.x86_

64.drpm Trying other mirror. (1/2): grep-2.5.3-6.fc12_2.6.3-1.fc12.x86_64.drpm 00:00 (2/2): groff-1.18.1.4-18.fc12_1.18.1.4-20.fc12.x86_64.drpm 00:00 Finishing rebuild of rpms, from deltarpms <delta rebuild> 00:02 Presto reduced the update size by 52% (from 1.7 M to 854 k). Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Updating : grep-2.6.3-1.fc12.x86_64 1/4 Updating : groff-1.18.1.4-20.fc12.x86_64 2/4 Cleanup : grep-2.5.3-6.fc12.x86_64 3/4 Cleanup : groff-1.18.1.4-18.fc12.x86_64 4/4 Updated: grep.x86_64 0:2.6.3-1.fc12 Complete!

| 214 kB | 640 kB | 1.7 MB

groff.x86_64 0:1.18.1.4-20.fc12

Si usted sabe donde son colocados los archivos RPM, o los ha descargado, entonces tambin puede actualizar usando el comando rpm Este es un proceso similar al de la instalacin, salvo por el uso de la opcin -U o la opcin -F en lugar de la opcin -i. La diferencia entre estas dos opciones es que la opcin -U actualiza un paquete existente o instala el paquete si ste todava no est instalado, mientras que la opcin -F solamente actualiza o refresca un paquete que ya est instalado. Por esta razn, la opcin -U es frecuentemente la ms utilizada, particularmente cuando la lnea de comando contiene una lista de RPMs. De este modo, los paquetes que se desinstalaron son instalados, y los paquetes que estn instalados son actualizados. A menudo se utilizan otras dos opciones, -v (detalle) y -h (tecla numeral), para dar avisos de progreso. El Listado 9 muestra de qu modo actualizar los paquetes vim-common, vim-enhanced, y vim-minimal utilizando el comando rpm . Nosotros ya hemos descargado los paquetes vim-common y vim-enhanced en el directorio principal raz, mientras que borramos el paquete vim-minimal de uno de los espejos actualizados.

Listado 9. Actualizacin de paquetes con rpm


[root@echidna ~]# ls *.rpm vim-common-7.2.411-1.fc12.x86_64.rpm vim-enhanced-7.2.4111.fc12.x86_64.rpm [root@echidna ~]# rpm -Uvh *.rpm http://mirrors.usc.edu/pub/linux/distributions\

> /fedora/linux/updates/12/x86_64/vim-minimal-7.2.411-1.fc12.x86_64.rpm Retrieving http://mirrors.usc.edu/pub/linux/distributions/fedora/linux/updates/12/x8 6 _64/vim-minimal-7.2.411-1.fc12.x86_64.rpm Preparing... ########################################### [100%] 1:vim-common ########################################### [ 33%] 2:vim-enhanced ########################################### [ 67%] 3:vim-minimal ########################################### [100%]

Volver arriba Cuestionando los paquetes RPM En nuestros ejemplos usted pudo observar que para instalar un rpm con el comando rpm requiere el nombre completo del archivo paquete (o URL), por ejemplo gcl-2.6.80.6.20090701cvs.fc12.x86_64.rpm. Por otro lado, la instalacin con yum, o el borrado de un rpm con cualquiera de los comandos requiere solamente el nombre del paquete, por ejemplo gcl. Al igual que APT, RPM mantiene una base de datos interna de sus paquetes instalados, permitindole manipular los paquetes instalados utilizando el nombre del paquete. En esta seccin, vemos que se puede acceder a la informacin de la base de datos disponible utilizando la opcin -q (for consultar) del comando rpm o las consultas yum relacionadas. La consulta bsica simplemente pregunta si el paquete est instalado, y, si lo est, cul es su versin. Agregue la opcin -i para obtener informacin sobre el paquete. Tenga en cuenta que necesita autorizacin root para instalar, actualizar, o borrar paquetes, pero los usuarios no raz pueden realizar consultas a la base de datos rpm.

Listado 10. Visualizacin de informacin sobre gcl


[ian@echidna ~]$ yum list gcl Loaded plugins: presto, refresh-packagekit Installed Packages gcl.x86_64 2.6.8-0.7.20100201cvs.fc12 @updates [ian@echidna ~]$ rpm -q gcl gcl-2.6.8-0.7.20100201cvs.fc12.x86_64 [ian@echidna ~]$ yum info gcl Loaded plugins: presto, refresh-packagekit Installed Packages Name : gcl Arch : x86_64

Version : Release : Size : Repo : From repo : Summary : URL : License : Description: standard. : intermediary : : GUI.

2.6.8 0.7.20100201cvs.fc12 40 M installed updates GNU Common Lisp http://www.gnu.org/software/gcl/ GPL+ and LGPLv2+ GCL is a Common Lisp currently compliant with the ANSI Lisp compilation produces native code through the of the system's C compiler, from which GCL derives efficient performance and facile portability. Currently uses TCL/Tk as

[ian@echidna ~]$ rpm -qi gcl Name : gcl Relocations: (not relocatable) Version : 2.6.8 Vendor: Fedora Project Release : 0.7.20100201cvs.fc12 Build Date: Tue 23 Mar 2010 03:20:36 PM EDT Install Date: Wed 05 May 2010 01:01:34 PM EDT Build Host: x8602.phx2.fedoraproject. org Group : Development/Languages Source RPM: gcl-2.6.80.7.20100201cvs.fc12.sr c.rpm Size : 41667750 License: GPL+ and LGPLv2+ Signature : RSA/8, Tue 23 Mar 2010 04:14:06 PM EDT, Key ID 9d1cc34857bbccba Packager : Fedora Project URL : http://www.gnu.org/software/gcl/ Summary : GNU Common Lisp Description : GCL is a Common Lisp currently compliant with the ANSI standard. Lisp compilation produces native code through the intermediary of the system's C compiler, from which GCL derives efficient performance and facile portability. Currently uses TCL/Tk as GUI.

Cuanto ms extensos sean los listados, ms le mostrarn sobre las etiquetas que pueden estar relacionadas con un paquete RPM. Habr notado que rpm y yum muestran informacin levemente diferente en formatos levemente diferentes. En este artculo, nos referiremos a los datos de salida bsicos que brindan las opciones de los comandos estndard. Consulte las pginas de los manuales si quiere utilizar la opcin rpm --queryformat para construir consultas de salida personalizadas. Pruebe ejecutando rpm --querytags si desea conocer todas las etiquetas que soporta la versin del rpm. Como puede observar en el Listado 10, usted puede utilizar yum para obtener un listado de los paquetes instalados. Usted puede adems utilizarlo para hacer una lista de los paquetes disponibles que han sido actualizados, los paquetes que estn disponibles para ser instalados, y los paquetes con otras caractersticas, por ejemplo, los obsoletos o los que recientemente han sido agregados a un depsito. Usted puede incluso usar yum para buscar

paquetes. En el Listado 11, puede observar que el paquete texmacs no se encuentra instalado, pero est si se encuentra disponible en el depsito fedora. Si usted busca la palabra "texmacs" ver que hay cuatro paquetes que la mencionan. Usted puede ver fcilmente porqu se encontraron los paquetes TeXmacs* . Utilice yum info pydot para descubrir porqu el paquete pydot tambin es mencionado.

Listado 11. Visualizacin de informacin sobre gcl


[ian@echidna ~]$ yum list texmacs Loaded plugins: presto, refresh-packagekit Available Packages TeXmacs.x86_64 1.0.7.2-2.fc12 fedora [ian@echidna ~]$ yum search texmacs Loaded plugins: presto, refresh-packagekit ================================= Matched: texmacs ================================== TeXmacs-devel.i686 : Development files for TeXmacs TeXmacs-devel.x86_64 : Development files for TeXmacs TeXmacs.x86_64 : Structured wysiwyg scientific text editor pydot.noarch : Python interface to Graphviz's Dot language

En la mayora de los ejemplos de las consultas restantes, utilizaremos rpm, porque permite ms opciones. Muchos de los ejemplos pueden tambin realizarse con yum, y yum posee algunas capacidades que no se encuentran en las opciones rpm bsicas . Consulte las pginas del manual para aprender ms. Los paquetes RPM y los archivos que se encuentran en ellos A menudo desear saber el contenido de un paquete o de qu paquete viene un archivo en particular. Para obtener una lista de los archivos que se encuentran en el paquete gcl, utilice la opcin -ql tal como se puede observar en el Listado 12. Hay muchos archivos en este paquete, as que slo mostraremos parte de los datos de salida.

Listado 12. Visualizacinn de los archivos en el paquete gcl


[ian@echidna ~]$ rpm -ql gcl /usr/bin/gcl /usr/lib/gcl-2.6.8 /usr/lib/gcl-2.6.8/clcs /usr/lib/gcl-2.6.8/clcs/sys-proclaim.lisp /usr/lib/gcl-2.6.8/cmpnew /usr/lib/gcl-2.6.8/cmpnew/gcl_cmpmain.lsp /usr/lib/gcl-2.6.8/cmpnew/gcl_cmpopt.lsp /usr/lib/gcl-2.6.8/cmpnew/gcl_collectfn.lsp . .

. /usr/share/info/gcl-tk.info.gz /usr/share/info/gcl.info-1.gz /usr/share/info/gcl.info-2.gz /usr/share/info/gcl.info-3.gz /usr/share/info/gcl.info-4.gz /usr/share/info/gcl.info-5.gz /usr/share/info/gcl.info-6.gz /usr/share/info/gcl.info-7.gz /usr/share/info/gcl.info-8.gz /usr/share/info/gcl.info-9.gz /usr/share/info/gcl.info.gz /usr/share/man/man1/gcl.1.gz

Se pueden restringir los archivos listados a los archivos de configuracin mediante el agregado de la opcin -c a su pregunta. De manera similar, la opcin -d limita la visualizacin a los archivos de documentacin. Archivos de paquetes de consultas El paquete de consultas anterior ordena consultar a la base de datos RPM por los paquetes instalados. Si usted ha descargado un paquete y desea obtener este tipo de informacin, puede hacerlo mediante la opcin -p (para archivo de paquete) en su consulta junto con la especificacin del nombre del archivo de paquete (como al instalar el paquete). El Listado 13 muestra este proceso con los dos paquetes vim que descargamos anteriormente. Lo hemos ejecutado como raz simplemente porque los archivos se encontraban en el directorio principal raz. Usted puede agregar otras consultas, por ejemplo -l para obtener una lista de los archivos o -i para obtener una lista de la informacin.

Listado 13. Visualizacin de la informacin del archivo de paquete para los dos paquetes vim
[root@echidna ~]# rpm -qp *.rpm vim-common-7.2.411-1.fc12.x86_64 vim-enhanced-7.2.411-1.fc12.x86_64

Consultas a todos los paquetes instalados La opcin -a realiza la consulta a todos los paquetes instalados. Esto puede generar gran cantidad de datos de salida, por lo cual generalmente esta opcin se utiliza junto con uno o ms filtros, como sort para organizar el listado, more o less para buscar en l, wc para obtener los atributos del paquete o del archivo, o grep para buscar paquetes si uno no est seguro del nombre del mismo. El Listado 14 muestra las siguientes consultas:
1. Una lista ordenada de todos los paquetes de su sistema 2. Un recuento de todos los paquetes de su sistema 3. Un recuento de todos los archivos en todos los paquetes de su sistema

4. Un recuento de todos los archivos de documentacin instalados con RPMs 5. Una bsqueda de todos los paquetes en cuyo nombre aparece "gcl" (no se distingue maysculas de minsculas).

Listado 14. Consultas a todos los paquetes


[ian@echidna ~]$ rpm -qa | sort | more aalib-libs-1.4.0-0.18.rc5.fc12.x86_64 abrt-1.0.8-2.fc12.x86_64 abrt-addon-ccpp-1.0.8-2.fc12.x86_64 abrt-addon-kerneloops-1.0.8-2.fc12.x86_64 abrt-addon-python-1.0.8-2.fc12.x86_64 abrt-desktop-1.0.8-2.fc12.x86_64 abrt-gui-1.0.8-2.fc12.x86_64 abrt-libs-1.0.8-2.fc12.x86_64 abrt-plugin-bugzilla-1.0.8-2.fc12.x86_64 abrt-plugin-logger-1.0.8-2.fc12.x86_64 abrt-plugin-runapp-1.0.8-2.fc12.x86_64 abyssinica-fonts-1.0-5.fc12.noarch acl-2.2.49-2.fc12.x86_64 ... [ian@echidna ~]$ rpm -qa | wc -l 1792 [ian@echidna ~]$ rpm -qal | wc -l 281052 [ian@echidna ~]$ rpm -qad | wc -l 45686 [ian@echidna ~]$ rpm -qa | grep -i gcl gcl-selinux-2.6.8-0.7.20100201cvs.fc12.x86_64 gcl-2.6.8-0.7.20100201cvs.fc12.x86_64

El uso de rpm -qa puede facilitar la administracin de mltiples sistemas. Si usted redirige los datos de salida ordenados a un archivo de su mquina, y luego hace lo mismo en la otra mquina, usted puede utilizar el programa diff para encontrar las diferencias. En qu paquete se encuentra un archivo? Dado que usted puede obtener una lista de todos los paquetes y de todos los archivos de un paquete, ahora posee toda la informacin necesaria para encontrar cul es el paquete que posee el archivo que desea. Sin embargo, el comando rpm proporciona una opcin -f (o -file) para ayudarlo a localizar el paquete donde se encuentra un archivo determinado. Suponga que desea saber cual de los paquetes vim que vimos anteriormente posee el comando vim . Usted necesitar la ruta completa del archivo. El Listado 15 muestra el modo de utilizar el comando which para obtener la ruta completa del comando vim, y un consejo prctico para utilizar estos datos de salida como datos de entrada para el comando rpm -qf . Observe que las marcas de ayuda circundantes `which guile-config` son back-ticks. Otro modo de utilizar este comando en el shell bash es mediante $(which vim).

Listado 15. En cul de los paquetes se encuentra el ejecutable vim?


[ian@echidna ~]$ which vim /usr/bin/vim [ian@echidna ~]$ rpm -qf `which vim` vim-enhanced-7.2.411-1.fc12.x86_64 [ian@echidna ~]$ rpm -qf $(which vim) vim-enhanced-7.2.411-1.fc12.x86_64

Dependencias RPM Como vimos anteriormente, nuestro intento de borrar el paquete gcl-selinux fracas debido a las dependencias. Adems de archivos, un paquete RPM puede contener capacidadesarbitrarias de las que pueden depender otros paquetes. Como pudo haber notado, esto generalmente funciona. Si usted necesita instalar varios paquetes rpidamente, algunos de los cuales pueden depender de otros, simplemente use yum, o proporcione toda la lista a su comando rpm -Uvh , y ste analizar las dependencias y realizar las instalaciones en el orden correcto. Adems de tratar de instalar o borrar un paquete y obtener un mensaje de error, hay formas de descubrir cuales son los archivos o capacidades que requiere o de los depende un paquete. El comando rpm proporciona una opcin para consultar a los paquetes instalados o a los archivos de paquete para descubrir las capacidades de las que dependen o que requieren.Esta es la opcin --requires que puede ser abreviada -R. El Listado 16 muestra las capacidades requeridas por gcl. Agregue la opcin -p y utilice el nombre completo del archivo RPM si desea consultar un archivo de paquete en lugar de la base de datos RPM.

Listado 16. Requisitos de gcl


[ian@echidna ~]$ rpm -qR gcl /bin/sh /bin/sh /bin/sh /sbin/install-info /sbin/install-info gcl-selinux libX11.so.6()(64bit) libc.so.6()(64bit) libc.so.6(GLIBC_2.11)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit)

libc.so.6(GLIBC_2.7)(64bit) libc.so.6(GLIBC_2.8)(64bit) libdl.so.2()(64bit) libgmp.so.3()(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2.2.5)(64bit) libreadline.so.6()(64bit) libtcl8.5.so()(64bit) libtk8.5.so()(64bit) libz.so.1()(64bit) rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rtld(GNU_HASH) rpmlib(PayloadIsXz) <= 5.2-1

Puede resultar difcil descubrir que capacidades que proporciona cada paquete. El comando yum con la opcin deplist puede ser til para esto. Si usted proporciona un nombre de paquete que no se encuentra capacitado para la versin, usted puede obtener un listado de otras versiones conocidas. El Listado 17 muestra de que forma obtener la lista de dependencias slo para la versin de gcl que est instalada.

Listado 17. Uso del paquete yum para encontrar los requisitos de gcl
[ian@echidna ~]$ yum deplist $(rpm -q gcl) Loaded plugins: presto, refresh-packagekit Finding dependencies: package: gcl.x86_64 2.6.8-0.7.20100201cvs.fc12 dependency: libc.so.6(GLIBC_2.3.4)(64bit) provider: glibc.x86_64 2.11-2 provider: glibc.x86_64 2.11.1-6 dependency: gcl-selinux provider: gcl-selinux.x86_64 2.6.8-0.6.20090701cvs.fc12 provider: gcl-selinux.x86_64 2.6.8-0.7.20100201cvs.fc12 dependency: libgmp.so.3()(64bit) provider: gmp.x86_64 4.3.1-5.fc12 dependency: libc.so.6(GLIBC_2.8)(64bit) provider: glibc.x86_64 2.11-2 provider: glibc.x86_64 2.11.1-6 dependency: libc.so.6(GLIBC_2.4)(64bit) provider: glibc.x86_64 2.11-2 provider: glibc.x86_64 2.11.1-6 dependency: libc.so.6()(64bit) provider: glibc.x86_64 2.11-2 provider: glibc.x86_64 2.11.1-6 dependency: /sbin/install-info provider: info.x86_64 4.13a-7.fc12 provider: info.x86_64 4.13a-9.fc12 dependency: libX11.so.6()(64bit) provider: libX11.x86_64 1.3-1.fc12 dependency: libc.so.6(GLIBC_2.7)(64bit) provider: glibc.x86_64 2.11-2

provider: glibc.x86_64 2.11.1-6 dependency: libtcl8.5.so()(64bit) provider: tcl.x86_64 1:8.5.7-4.fc12 provider: tcl.x86_64 1:8.5.7-5.fc12 dependency: libc.so.6(GLIBC_2.11)(64bit) provider: glibc.x86_64 2.11-2 provider: glibc.x86_64 2.11.1-6 dependency: libtk8.5.so()(64bit) provider: tk.x86_64 1:8.5.7-2.fc12 provider: tk.x86_64 1:8.5.7-3.fc12 dependency: libc.so.6(GLIBC_2.3)(64bit) provider: glibc.x86_64 2.11-2 provider: glibc.x86_64 2.11.1-6 dependency: libm.so.6()(64bit) provider: glibc.x86_64 2.11-2 provider: glibc.x86_64 2.11.1-6 dependency: libz.so.1()(64bit) provider: zlib.x86_64 1.2.3-23.fc12 dependency: rtld(GNU_HASH) provider: glibc.i686 2.11-2 provider: glibc.x86_64 2.11-2 provider: glibc.x86_64 2.11.1-6 provider: glibc.i686 2.11.1-6 dependency: libdl.so.2()(64bit) provider: glibc.x86_64 2.11-2 provider: glibc.x86_64 2.11.1-6 dependency: libreadline.so.6()(64bit) provider: readline.x86_64 6.0-3.fc12 dependency: /bin/sh provider: bash.x86_64 4.0.33-1.fc12 provider: bash.x86_64 4.0.35-3.fc12 dependency: libc.so.6(GLIBC_2.2.5)(64bit) provider: glibc.x86_64 2.11-2 provider: glibc.x86_64 2.11.1-6 dependency: libm.so.6(GLIBC_2.2.5)(64bit) provider: glibc.x86_64 2.11-2 provider: glibc.x86_64 2.11.1-6

Esta lista tambin muestra los posibles proveedores de cada capacidad. Como puede ver la mayora de las dependencias podran ser proporcionadas por ms de uno de los niveles de alternativas de un paquete. Por ejemplo, /bin/sh podran venir de cualquiera de los dos niveles de bash. Con un pequeo filtro de escritura, usted puede reducir estos datos de salida a una lista de nombres de paquetes como se muestra en el Listado 18.

Listado 18. Reduccin de los datos de salida del paquete yum a tan slo los nombres de los paquetes
[ian@echidna ~]$ yum deplist $(rpm -q gcl) | grep "provider:" | \ > awk '{ print $2 }'|sort|uniq bash.x86_64 gcl-selinux.x86_64 glibc.i686

glibc.x86_64 gmp.x86_64 info.x86_64 libX11.x86_64 readline.x86_64 tcl.x86_64 tk.x86_64 zlib.x86_64

Si usted slo necesita saber qu paquetes es necesario instalar, usted puede siempre ejecutar yum install y ver la lista antes de recibir el aviso para aceptar la propuesta de instalacin. Adems de descubrir cuales son las capacidades que requiere un paquete, usted quiz necesite saber qu paquetes contienen una capacidad en particular. Ms arriba vimos cmo descubrir cuales son los paquetes que poseen un determinado archivo. El Listado 19 muestra cmo utilizar rpm o yum para descubrir qu paquetes contienen la capacidad gclselinux(x86-64). Adems de la informacin sobre los paquetes instalados que contienen la capacidad, YUM tambin muestra los paquetes o las versiones disponibles en los depsitos. Estas son las versiones originales 2.6.8-0.6 de los depsitos fedora y la versin 2.6.8-0.7 actualizada disponible de los depsitos de actualizaciones.

Listado 19. Qu paquetes suministran la capacidad gcl-selinux(x86-64) ?


[ian@echidna ~]$ rpm -q --whatprovides 'gcl-selinux(x86-64)' gcl-selinux-2.6.8-0.7.20100201cvs.fc12.x86_64 [ian@echidna ~]$ yum whatprovides 'gcl-selinux(x86-64)' Loaded plugins: presto, refresh-packagekit gcl-selinux-2.6.8-0.6.20090701cvs.fc12.x86_64 : SELinux policy for GCL images Repo : fedora Matched from: Other : gcl-selinux(x86-64)

gcl-selinux-2.6.8-0.7.20100201cvs.fc12.x86_64 : SELinux policy for GCL images Repo : updates Matched from: Other : gcl-selinux(x86-64)

gcl-selinux-2.6.8-0.7.20100201cvs.fc12.x86_64 : SELinux policy for GCL images Repo : installed Matched from: Other : Provides-match: gcl-selinux(x86-64)

Volver arriba La integridad del archivo de paquete RPM Para asegurar su integridad, los paquetes RPM incluyen un resumen, como MD5 o SHA1, y por lo general tienen firma digital. Para la verificacin de los paquetes que contienen firma digital se requieren una clave pblica. Para verificar la integridad de un archivo de paquete RPM, se utiliza la opcin --checksig (abreviada -K) de rpm. Probablemente le parecer til agregar la opcin -v para obtener datos de salida prolijos. El Listado 20 muestra un ejemplo de vim-enhanced RPM .

Listado 20. Verificacin de la integridad del archivo de paquete vim-enhanced


[root@echidna ~]# rpm -vK vim-enhanced-7.2.411-1.fc12.x86_64.rpm vim-enhanced-7.2.411-1.fc12.x86_64.rpm: Header V3 RSA/SHA256 signature: OK, key ID 57bbccba Header SHA1 digest: OK (f9a199545a515f7ff0716729768b41eb68fe29a8) V3 RSA/SHA256 signature: OK, key ID 57bbccba MD5 digest: OK (d4045f1f72d48073e3f401ee9d1f71cf)

Usted puede obtener una lnea de datos de salida como esta:


V3 DSA signature: NOKEY, key ID 16a61572

Esto significa que usted posee un paquete con firma, pero no posee la clave pblica necesaria en su base de datos RPM. Tenga en cuenta que las versiones anteriores de RPM pueden presentar la verificacin de un modo diferente. Si un paquete contiene firma y usted desea verificar la firma, entonces necesitar ubicar el archivo de firma correcto e importarlo a la base de datos de su RPM. Primero deber descargar la clave y luego verificar la huella digital antes de importarlo utilizando el comando rpm --import . Si desea ms informacin consulte las pginas de los manuales RPM. Usted encontrar ms informacin en los binarios con firma en la pgina principal de RPM (vea Resources para encontrar el link). Volver arriba Verificacin del paquete instalado Al igual que puede verificar la integridad de un rpm, usted puede tambin verificar la integridad de sus archivos instalados utilizando rpm -V. Este paso le asegura que los archivos no han sido modificados desde su instalacin desde el rpm. Como se puede observar en el Listado 21, no hay datos de salida desde este comando si el paquete sigue siendo bueno, pero usted puede agregar la opcin -v para obtener datos de salida ms detallados.

Listado 21. Verificacin del paquete vim-common instalado


[ian@echidna ~]$ rpm -V vim-common

Como usuario raz corrompamos la instalacin del vim-common borrando /usr/bin/xxd y reemplazndolo por /usr/share/vim/vim72/syntax/bindzone.vim /bin/bash. Hagamos la verificacin nuevamente. En el Listado 22 pueden verse los resultados.

Listado 22. Manipulacin de datos con el paquete vim-common


[root@echidna ~]# rpm -qf /usr/bin/xxd /usr/share/vim/vim72/syntax/bindzone.vim vim-common-7.2.411-1.fc12.x86_64 vim-common-7.2.411-1.fc12.x86_64 [root@echidna ~]# rm /usr/bin/xxd rm: remove regular file `/usr/bin/xxd'? y [root@echidna ~]# cp /bin/bash /usr/share/vim/vim72/syntax/bindzone.vim cp: overwrite `/usr/share/vim/vim72/syntax/bindzone.vim'? y [root@echidna ~]# rpm -V vim-common missing /usr/bin/xxd S.5....T. /usr/share/vim/vim72/syntax/bindzone.vim

Estos datos de salida muestran que el archivo h /usr/share/vim/vim72/syntax/bindzone.vim fracasa en el conteo de MD5, tamao de archivos, y tests mtime. Una forma de resolver el problema debera ser borrar el paquete y luego reinstalarlo, pero hay otros paquetes que dependen de vim-common y todava se encuentran instalados y listos. La solucin es necesariamente reinstalarlo utilizando la opcin --force de rpm, o la funcin reinstall de yum. El Listado 23 muestra como reinstalarlo con yum, y luego verificar que el paquete se encuentre OK y que el archivo borrado haya sido restaurado.

Listado 23. Reinstalacin del paquete vim-common


[root@echidna ~]# yum reinstall vim-common Loaded plugins: presto, refresh-packagekit Setting up Reinstall Process Resolving Dependencies --> Running transaction check ---> Package vim-common.x86_64 2:7.2.411-1.fc12 set to be updated --> Finished Dependency Resolution Dependencies Resolved =========================================================================

============ Package Arch Version Repository Size ========================================================================= ============ Reinstalling: vim-common x86_64 2:7.2.411-1.fc12 updates 6.0 M Transaction Summary ========================================================================= ============ Remove 0 Package(s) Reinstall 1 Package(s) Downgrade 0 Package(s) Total download size: 6.0 M Installed size: 17 M Is this ok [y/N]: y Downloading Packages: Setting up and reading Presto delta metadata updates/prestodelta 00:00 Processing delta metadata Package(s) data still to download: 6.0 M vim-common-7.2.411-1.fc12.x86_64.rpm 00:01 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Warning: RPMDB altered outside of yum. Installing : 2:vim-common-7.2.411-1.fc12.x86_64 1/1 Installed: vim-common.x86_64 2:7.2.411-1.fc12 Complete! [root@echidna ~]# rpm -V vim-common [root@echidna ~]# ls /usr/bin/xxd /usr/bin/xxd

| 969 kB

| 6.0 MB

Si necesita ms potencia Generalmente los sistemas de administracin de paquetes mantienen sus paquetes en orden. Sin embargo, si logra borrar algn archivo que es parte importante de un paquetey reinstalar el paquete sin borrar no solucionar el problema, quiz usted necesite entonces borrar el paquete antes de realizar la instalacin. En ese caso, usted probablemente querr borrar la copia actual y reinstalarla, sin necesidad de desinstalar y reinstalar todos los paquetes que dependen de l. En ese caso, usted puede utilizar la opcin rpm de los comandos --nodeps para evitar la dependencia realizando la verificacin al borrar un paquete. El Listado 24 muestra como esto podra funcionar si usted accidentalmente borrara

el archivo /usr/bin/xxd, el cual forma parte del paquete vim-common, como lo hicimos anteriormente.

Listado 24. Actualizacin de paquetes con rpm


[root@echidna ~]# rm /usr/bin/xxd rm: remove regular file `/usr/bin/xxd'? y [root@echidna ~]# # Oops! we needed that file [root@echidna ~]# rpm -Fvh vim-common-7.2.411-1.fc12.x86_64.rpm [root@echidna ~]# ls /usr/bin/xxd ls: cannot access /usr/bin/xxd: No such file or directory [root@echidna ~]# # Oh! Freshening the package didn't replace the missing file [root@echidna ~]# rpm -e vim-common error: Failed dependencies: vim-common = 2:7.2.411-1.fc12 is needed by (installed) vimenhanced-2:7.2.411-1.f c12.x86_64 [root@echidna ~]# # Can't remove vim-common because vim-enhanced needs it [root@echidna ~]# rpm -e --nodeps vim-common [root@echidna ~]# # Bypassing the dependency check allowed removal [root@echidna ~]# rpm -Uvh vim-common-7.2.411-1.fc12.x86_64.rpm Preparing... ########################################### [100%] 1:vim-common ########################################### [100%] [root@echidna ~]# # Update (or install) vim-common again [root@echidna ~]# ls /usr/bin/xxd /usr/bin/xxd [root@echidna ~]# # And /usr/bin/xxd is back

Por lo tanto ahora puede tener algunas ideas de como actualizar y reparar en caso de accidentes o de que fracasara el proceso normal de actualizacin. Tenga en cuenta que tambin puede evitar la dependencia realizando la verificacin al instalar un RPM, pero esta no es generalmente una buena idea. Volver arriba Descarga de RPMs desde los depsitos Aunque yum recupere automticamente paquetes de los depsitos, usted quiz quiera descargar RPMs y guardarlos, tal vez para instalarlos en un sistema sin conexin de red, o para examinar sus contenidos, o por alguna otra razn. Usted puede utilizar para esto el comando yumdownloader como se muestra en el Listado 25. En nuestro caso, el paquete ya ha sido instalado, por lo cual no hay paquetes adicionales para descargar. Si existieran esos paquetes, la opcin --resolve provocara su descarga tambin.

Listado 25. Descarga del paquete gcl

[ian@echidna ~]$ yumdownloader --resolve gcl Loaded plugins: presto, refresh-packagekit adobe-linux-i386 17/17 --> Running transaction check ---> Package gcl.x86_64 0:2.6.8-0.7.20100201cvs.fc12 set to be updated --> Finished Dependency Resolution gcl-2.6.8-0.7.20100201cvs.fc12.x86_64.rpm | 6.3 MB 00:01

Volver arriba Uso de rpm2cpio Si usted descarga un RPM y necesita examinar su contenido, en lugar de instalarlo, puede utilizar el comando rpm2cpio para convertir los contenidos en un archivo cpio y luego filtrarlo a travs del comando cpio para extraer los archivos del paquete de manera individual o todos los archivos juntos. El Listado 26 muestra como hacer esto con el paquete gcl-selinux y luego mostrar cuales son los archivos (y directorios) que fueron descomprimidos. Consulte las pginas de los manuales para encontrar detalles adicionales de rpm2cpio y cpio de estos comandos.

Listado 26. Descompresin del paquete gcl-selinux con rpm2cpio


[ian@echidna ~]$ yumdownloader gcl-selinux Loaded plugins: presto, refresh-packagekit gcl-selinux-2.6.8-0.7.20100201cvs.fc12.x86_64.rpm | 17 kB 00:00 [ian@echidna ~]$ mkdir gcl-selinux [ian@echidna ~]$ cd gcl-selinux [ian@echidna gcl-selinux]$ rpm2cpio ../gcl-selinux*.rpm | cpio -idv ./usr/share/selinux/packages/gcl ./usr/share/selinux/packages/gcl/gcl.pp 182 blocks [ian@echidna gcl-selinux]$ find . . ./usr ./usr/share ./usr/share/selinux ./usr/share/selinux/packages ./usr/share/selinux/packages/gcl ./usr/share/selinux/packages/gcl/gcl.pp

Volver arriba Bsqueda de RPMs

Hemos visto anteriormente que YUM proporciona una capacidad de bsqueda, la cual permite buscar descripciones y nombres de paquetes. Si usted necesita encontrar cual es el paquete que contiene un programa que no ha instalado, hay otras formas de hacerlo:

Adivinar qu paquete podra contenerlo y descargarlo sin instalarlo. Una vez que tiene el paquete, usted puede cuestionarlo. Buscar en Internet. Utilizar la capacidad comando-no-encontrado descripta ms abajo.

Si usted no puede encontrar un RPM determinado con las herramientas de su sistema, un buen recurso de Internet para localizar RPMs es el servidor Rpmfind.Net (consulte Resources para encontrar un link). Comando no encontrado Cuando el shell bash busca un comando y no lo encuentra, entonces el shell busca una funcin del shell denominada command_not_found_handle. Si la funcin command_not_found_handle ya existe, sta es invocada con el comando original y los argumentos originales como sus argumentos, y el estado salida de la funcin se convierte en el shell del estado de salida. Si la funcin no ha sido definida, el shell imprime un mensaje de error y vuelve al estado de salida de 127. La funcin generalmente se establece en el archivo de sistema /etc/bash.bashrc . El Listado 27 muestra cmo hemos buscado la capacidad comando no encontrado y luego la hemos instalado.

Listado 27. Bsqueda e instalacin de la capacidad comando no encontrado


[root@echidna ~]# yum search command-not-found Loaded plugins: presto, refresh-packagekit ========================== Matched: command-not-found ========================== PackageKit-command-not-found.x86_64 : Ask the user to install command line : programs automatically You have new mail in /var/spool/mail/root [root@echidna ~]# yum install PackageKit-command-not-found.x86_64 Loaded plugins: presto, refresh-packagekit Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package PackageKit-command-not-found.x86_64 0:0.5.7-2.fc12 set to be updated --> Finished Dependency Resolution Dependencies Resolved ========================================================================= ======= Package Arch Version Repository Size =========================================================================

======= Installing: PackageKit-command-not-found 102 k

x86_64

0.5.7-2.fc12

updates

Transaction Summary ========================================================================= ======= Install 1 Package(s) Upgrade 0 Package(s) Total download size: 102 k Installed size: 262 k Is this ok [y/N]: y Downloading Packages: Setting up and reading Presto delta metadata Processing delta metadata Package(s) data still to download: 102 k PackageKit-command-not-found-0.5.7-2.fc12.x86_64.rpm | 102 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : PackageKit-command-not-found-0.5.7-2.fc12.x86_64 1/1 Installed: PackageKit-command-not-found.x86_64 0:0.5.7-2.fc12 Complete!

El Listado 28 muestra cmo la funcin procesar se define luego de instalar PackageKitcommand-not-found. Si la funcin no puede realizar la bsqueda, entonces imita el comportamiento estndar del sistema y reaparece 127.

Listado 28. El proceso de comando no encontrado


[ian@echidna ~]$ type command_not_found_handle command_not_found_handle is a function command_not_found_handle () { runcnf=1; retval=127; [ ! -S /var/run/dbus/system_bus_socket ] && runcnf=0; [ ! -x /usr/sbin/packagekitd ] && runcnf=0; if [ $runcnf -eq 1 ]; then /usr/libexec/pk-command-not-found $1; retval=$?; else echo "bash: $1: command not found"; fi; return $retval

Si este ha sido instalado antes de ejecutar gcl como lo hicimos en el Listado 1, usted podra haber visto algo parecido al Listado 29.

Listado 29. Intento de procesar el comando no encontrado con gcl


[ian@echidna ~]$ gcl Command not found. Install package 'gcl' to provide command 'gcl'? [N/y]

Volver arriba Otras Herramientas Adems de yum y rpm, su distribuidor puede proporcionarle otras herramientas para la instalacin de paquetes del depsito o la actualizacin de todo su sistema. Estas herramientas pueden ser grficas o lneas de comando o ambas. Algunos ejemplos son:

YaST (SUSE) up2date (Red Hat) Mandrake Software Management (Mandriva)

Generalmente estas herramientas procesarn las mltiples actualizaciones en un modo automtico o semiautomtico . Estas tambin pueden proporcionar capacidades para visualizar el contenido de los depsitos o la bsqueda de paquetes. Consulte la documentacin por ms detalles sobre la distribucin. Volver arriba PackageKit No hay duda de que la instalacin del paquete se completara sin mencionar PackageKit, que es un sistema diseado para facilitar la instalacin y la actualizacin del software. El intento de unificar todas las herramientas grficas de software utilizadas en distribuciones diferentes. PackageKit utiliza un sistema de activacin daemon, que significa que daemon se activa slo cuando es necesario. Packagekit tiene una versin para Gnome (gnomepackagekit) y KDE KPackageKit). El proceso del comando no encontrado descripto ms arriba forma parte tambin de PackageKit. Este incluye los comandos pkcon para realizar las funciones de administracin de paquetes desde la consola, y pkmon para monitorear la actividad del kit de paquetes. Tambin incluye herramientas grficas para agregar paquetes de software, o para actualizar su sistema. La Figura 1 muestra un ejemplo de interfaz grfica de actualizacin de Software .

Figura 1. Interfaz grfica de actualizacin de Software en Fedora 12 (Gnome)

Varios sistemas de administracin de paquetes RPM and YUM estn explicados aqu. Vea Resources para obtener ms links.

Recursos Aprender

Use la developerWorks roadmap for LPIC-1 para encontrar los artculos developerWorks que lo ayudarn a estudiar para la certificacin LPIC-1 conforme a los objetivos de abril de 2009. En el sitio del Programa LPIC encuentre los objetivos detallados, las listas de tareas, y ejemplos de consultas para los tres niveles de la certificacin de administracin de sistema Linux del Linux Professional Institute. En particular, vea los objetivos de abril de 2009 para el examen LOI 101 y LPI exam 101. Siempre consulte en el sitio del Programa LPIC los ltimos objetivos. Revea toda la serie LPI exam prep series en developerWorks para aprender las bases de Linux y prepararse para la certificacin como administrador de su sistema segn los objetivos del examen LPI anteriores a abril de 2009.

En la RPM home page encuentre informacin actualizada sobre las herramientas de empaquetado del software RPM y las sugerencias para obtener ms informacin sobre RPM. El libro Maximum RPM ofrece un anlisis amplio y sistemtico de todos los aspectos de RPM. ste se encuentra disponible en dos formatos, copias duras y blandas. En LSB Home, aprenda sobre Linux Standard Base (LSB), un proyecto del Free Standards Group (FSG) para desarrollar un entorno operativo binario estndar. Consulte la pgina principal de PackageKit para aprender ms sobre PackageKit. El Linux Documentation Project contiene varios de documentos tiles, especialmente sus HOWTOs. En ladeveloperWorks Linux zone, encuentre cientos de artculos y tutoriales how-to , adems de descargas, foros de discusin, y otros recursos para los desarrolladores y administradores de Linux. Permanezca actualizado developerWorks technical events and webcasts sobre una gran variedad de productos IBM y los temas de la industria IT. Asista a una sesin free developerWorks Live! para actualizarse de manera sencilla sobre los productos IBM y encontrar herramientas y tendencias sobre la industria IT. Mire developerWorks on-demand demos que explican desde la instalacin de productos y la configuracin a principiantes, hasta las funcionalidades avanzadas para desarrolladores con experiencia. Mantngase al tanto de developerWorks on Twitter, o suscrbase a un canal de tweets de Linux en developerWorks.

Obtener los productos y tecnologas

Encuentre paquetes sobre uno de los espejos de su distribucin, como Fedora/12 Public Active Mirrors. Busque RPMs para su distribucin en Rpmfind.Net y RPM Search. Evaluate IBM products de la manera que ms le convenga: baje un producto de prueba, pruebe un producto en lnea, use un producto en un entorno nube, o pase algunas horas en el SOA Sandbox aprendiendo como implementar de manera eficaz la arquitectura orientada al servicio.

Comentar

Conctese con la My developerWorks community. Conctese con los usuarios de developerWorks mientras explora los blogs administrados por los desarrolladores, los foros, los grupos, y los wikis.

Sobre el autor

Ian Shields trabaja en mltiples proyectos Linux para la zona Linux de developerWorks. Es Senior Programmer de IBM en el Research Triangle Park (RTP), Carolina del Norte. Ingres a IBM en Canberra, Australia, como Systems Engineer en 1973, y desde entonces se dedica a sistemas de comunicaciones y computacin ubicua en Montreal, Canad, y en el RTP de Carolina del Norte. Es propietario de numerosas patentes y public diversos trabajos. Tiene una diplomatura en Matemtica Pura y Filosofa de la Universidad Nacional de Australia. Es Mster y Doctor en Ciencias de la Computacin de la Universidad Estatal de Carolina del Norte. Para contactar a Ian, escrbale a: ishields@us.ibm.com.

Das könnte Ihnen auch gefallen