Red Hat Linux 7.0: The Official Red Hat Linux Getting Started Guide
Anterior | Capítulo 12. Usar Gnome-RPM y RPM | Siguiente

# `RPM` desde el prompt de la shell

También puede usar la tecnología `RPM` tecleando una conjunto de comandos en el prompt de la shell. Están a su disposición todas las funciones disponibles a través de `Gnome-RPM`, así como otras añadidas como la capacidad de renovar los paquetes, similar a la actualización (remitasé a la la sección de nombre Renovación para más información).

Para más información sobre `RPM`, Remitasé a los capítulos relativos en la Official Red Hat Linux Reference Guide. También puede leer las man page relativas tecleando man rpm o el fichero de ayuda, tecleando rpm --help.

## Instalación

Los paquetes RPM titnen típicamente un nombre de fichero del tipo `foo-1.0-1.i386.rpm`, que incluye el nombre del paquete (`foo`), versión (`1.0`), release (`1`),y arquitectura (`i386`). Instalar un paquete es muy fácil:

    # rpm -ivh foo-1.0-1.i386.rpm
    foo                       ####################################
    #

`RPM` visualiza el nombre del paquete (que no es necesariamente el mismo que el del fichero), y despues visualiza una serie de almohadillas durante la instalación de los paquetes, como una especie de barra progresiva.

Actualmente es posible instalar un paquete con la opción upgrade. Para más información, vea la sección de nombre Actualización.

Puede ser que se encuentre con algunos errores, que confirman que el paquete está ya instalado errores de dependencia que impiden la instalación del paquete.

Para más información sobre el tipo de errores que puede encontrar, siga leyendo.

### Paquete ya instalado

Si el paquete ya ha sido instalado ,verá:

    # rpm -ivh foo-1.0-1.i386.rpm
    foo                     package foo-1.0-1 is already installed
    error: foo-1.0-1.i386.rpm cannot be installed
    #

Si desea de todos modos instalar el paquete, puede usar --replacepkgs en la línea de comando, que le dice a `RPM` que ignore el error:

    # rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
    foo                       ####################################
    #

### Fichero en conflicto

Si intenta instalar un paquete que contiene un fichero que ya ha sido instalado desde otro paquete, verá:

    # rpm -ivh foo-1.0-1.i386.rpm
    foo           /usr/bin/foo conflicts with file from bar-1.0-1
    error: foo-1.0-1.i386.rpm cannot be installed
    #

Para que `RPM` ignore el error, use la opción --replacefiles en la linea de comando:

    # rpm -ivh --replacefiles foo-1.0-1.i386.rpm
    foo                       ####################################
    #

### Dependencias no resueltas

Los paquetes RPM pueden "depender" de otros paquetes, lo cual significa que requieren que otros paquetes hayan sido instalados previamente para poder ser ejecutados correctamente. Si intenta instalar un paquete para el que hay una dependencia no resuelta, vera:

    # rpm -ivh bar-1.0-1.i386.rpm
    failed dependencies:
            foo is needed by bar-1.0-1
    #

Para corregir este error, debe instalar el paquete solicitado. Si desea forzar la instalación de cualquier manera (una mala idea, si tenemos en cuenta que el paquete de todos modos no funcionará correctamente, use --nodeps en la línea de comando).

## Desinstalación

desinstalar un paquete también es fácil:

    # rpm -e foo
    #

Observe que usamos el nombre del paquete (`foo`) y no el nombre del fichero del paquete original ("`foo-1.0-1.i386.rpm`").

Puede encontrar un error de dependencia cuando desinstale un paquete si algún otro paquete depende de uno que esté intentando borrar. Por ejemplo:

    # rpm -e foo
    removing these packages would break dependencies:
            foo is needed by bar-1.0-1
    #

Para que `RPM` ignore tales errores y desinstale de cualquier manera el paquete (que es una mala idea ya que el paquete que depende del que está intentando eliminar no funcionará de manera correcta), use --nodeps sobre la línea de comandos.

## Actualización

La actualización de un paquete es parecida a la instalación.

    # rpm -Uvh foo-2.0-1.i386.rpm
    foo                       ####################################
    #

Cuando efectue la actualización, `RPM` desinstalará automaticamente cualquier versión vieja del paquete `foo`.

También puede usar upgrade para instalar los paquetes, ya que trabaja bien aunque no haya versiones precedentes de los paquetes instalados.

## Errores en la instalació de viejos Paquetes

    # rpm -Uvh foo-1.0-1.i386.rpm
    foo    package foo-2.0-1 (which is newer) is already installed
    error: foo-1.0-1.i386.rpm cannot be installed
    #

Para que `RPM` realice de todos modos la actualización, use --oldpackage en la linea de comando:

    # rpm -Uvh --oldpackage foo-1.0-1.i386.rpm
    foo                       ####################################
    #

## Renovación

La renovación de un paquete es similar a la actualización:

    # rpm -Fvh foo-1.2-1.i386.rpm
    foo                       ####################################
    #

La opción Freshen de `RPM` controla las versiones de los paquetes especificados en la línea de comando con aquellos ya instalados en el sistema. Cuando la versión nueva de un paquete ya actualizado se elabora desde la función freshen de `RPM`, será automaticamente actualizado. La opción freshen de `RPM` no instala un paquete si no hay una versión precedente en el sistema. En esto se diferencia de la opción upgrade de `RPM`, ya que una actualización instalará paquetes, independientemente del hecho de que haya o no una versión precedente.

## Consultas

Puede consultar la base de datos de los paquetes ya instalados con rpm -q. Usando rpm -q foo visualiza el nombre del paquete, la versión, y el número de la versión:

    # rpm -q foo
    foo-2.0-1
    #

En vez de especificar el nombre del paquete, puede usar la opción siguiente -q para especificar que paquete/s desea consultar. Estas son llamadas opciones para especificar el paquete.

- -a consulta todos los paquetes instalados.

- -f ``<file>`` consulta el paquete que contiene el ``<file>``.

- -p ``<packagefile>`` consulta el paquete ``<packagefile>``.

Existen muchos modos de especificar que información debe ser visualizada del paquete interrogado. Las opciones siguientes se usan para seleccionar la información que está buscando. Estas se llaman opciones para seleccionar información .

- -i muestra la información del paquete como el nombre, la descripción , el release, el tamaño, la fecha de realización, la fecha de instalación, el vendedor e información de otro tipo.

- -l muestra la lista de ficheros que contiene el paquete.

- -s muestra el estado de todos los ficheros del paquete.

- -d muestra una lista de los ficheros de documentación (páginas man, páginas info, ficheros LEGGIMI, etc.).

- -c muestra una lista de los ficheros de configuración. Estos son ficheros que puede eventualmente cambiar después de la instalación, para configurar el paquete de su sistema. (`sendmail.cf`, `passwd`, `inittab`, etc).

A aquellas opciones que se muestran en la lista, puede añadir -v al comando para hacer la lista similar a la del comando ls -l.

## Verificar

El proceso de verificación de un paquete compara la información de los ficheros instalados de un paquete con la información del paquete original. Entre otras cosas la verificación compara los tamañs, MD5 sum, permisos, tipo, propietario y el grupo de cada fichero.

rpm -V verifica un paquete. Puede usar una lista cualquiera de opciones para seleccionar paquetes para consultar los paquetes especificados que desea verificar. Una manera fácil de hacerlo es con rpm -V foo que verifica que todos los ficheros del paquete fpp sean idénticos a los instalados originariamente. Por ejemplo:

- Para verificar un paquete que contiene unos determinados ficheros:

      rpm -Vf /bin/vi

- Para verificar todos los paquetes instalados:

      rpm -Va

- Para verificar un paquete instalado con un fichero del paquete RPM:

      rpm -Vp foo-1.0-1.i386.rpm

  Puede ser útil si sospecha que sus bases de datos `RPM` están deterioradas.

Si todo es verificado correctamente no habrá outputs. Si hay alguna discrepancia será visualizada. El formato del output es una cadena de 8 caracteres, una posible "c" denota un fichero de configuración y despues el nombre del fichero. Cada uno de los caracteres es el resultado de la comparación de un atributo del fichero con el valor del atributo en memoria en la base de datos `RPM`. Un "." (periodo) significa que la comprobación ha sido correcta. Los siguientes caracteres indican error en alguna de las comprobaciones:

- `5` -- MD5 checksum

- `S` -- Tamaño del fichero

- `L` -- Enlace simbólico

- `T` -- tiempo en modificar el fichero

- `D` -- Dispositivo

- `U` -- Usuario

- `G` -- Grupo

- `M` -- Modo (incluye los permisos y el tipo de fichero)

Si ve algún output, use su intuición para determinar si es necesario eliminar o reinstalar el paquete o en cualquier caso determinar el problema.

Anterior | Inicio | Siguiente
Gestión de los paquetes | Subir | Verificar una "Firma" de un Paquete