sábado, 16 de febrero de 2013


Capitulo 9  

Gestión de software con herramientas de línea de comandos



En este capítulo se describe Zypper y RPM, dos herramientas de línea de comandos para la gestión de software. Para la definición de la terminología utilizada en este contexto (por ejemplo, depósito ,parche o actualización ) se refieren a la Sección 5.1, "Definición de términos" .


9,1. Usando Zypper

 

Zypper es una línea de comandos del gestor de paquetes para instalar, actualizar y eliminar paquetes, así como para la gestión de repositorios. Es especialmente útil para llevar a cabo las tareas de administración remota de software o software de gestión de scripts de shell.

9.1.1. Uso General

 

La sintaxis general de Zypper es:
zypper [opciones-globales] comando [comando-opciones] [argumentos] ...
Los componentes encerrados entre paréntesis no son necesarios. La forma más sencilla de ejecutar Zypper es teclear su nombre, seguido por un comando. Por ejemplo, para aplicar todos los parches necesarios para el tipo de sistema:
zypper patch
Además, puede elegir una o varias opciones globales escribiéndolas justo antes del comando. Por ejemplo, - non-interactive significa correr el comando sin pedir nada (la aplicación automática de las respuestas por defecto):
zypper - non-interactive parche
Para utilizar las opciones específicas de un comando en particular, escríbalos justo después del comando. Por ejemplo, - aceptarán automáticamente-con-licencias significa aplicar todos los parches necesarios en el sistema sin preguntar para confirmar las licencias (que automáticamente serán aceptados):
zypper patch - Acordar auto-con-licencias
Algunos comandos requieren uno o más argumentos. Cuando se utiliza el comando de instalación, por ejemplo, es necesario especificar qué paquete (s) que desea instalar:
zypper install mplayer
Algunas opciones también requieren una discusión. El siguiente comando enumerará todos los patrones conocidos:
zypper search patrón-t
Puede combinar todo lo anterior. Por ejemplo, el siguiente comando instalará los mplayer y amarok paquetes de la fábrica repositorio al tiempo que verbose:
zypper-v instalar - de mplayer amarok fábrica
El - de opción se asegura de mantener todos los repositorios habilitados (para resolver todas las dependencias) al tiempo que solicitó el paquete desde el repositorio especificado.
La mayoría de los comandos de zypper tener un dry-run opción que realiza una simulación de la orden dada.Se puede utilizar para fines de prueba.
zypper remove - dry-run MozillaFirefox

9.1.2. Instalación y desinstalación del software mediante Zypper 

Para instalar o eliminar paquetes utilizan los siguientes comandos:
zypper install nombre_paquete 
zypper eliminar nombre_paquete
Zypper conoce maneras diferentes para hacer frente a los paquetes para la instalación y quitar comandos:
por el nombre del paquete exacto (y número de versión)
zypper install MozillaFirefox
o
zypper install MozillaFirefox-3.5.3
por alias y el nombre del paquete del repositorio
zypper install mozilla: MozillaFirefox
Donde mozilla es el alias del repositorio desde el que desea instalar.
por nombres de paquetes utilizando comodines
El siguiente comando instalará todos los paquetes que tienen nombres que comienzan con Moz " . Usar con cuidado, especialmente al retirar los paquetes.
zypper install 'Moz *'
por la capacidad de
Por ejemplo, si desea instalar un módulo de perl sin saber el nombre del paquete, la capacidad de ser útil:
zypper install 'perl (Time :: ParseDate)'
por la capacidad y / o la arquitectura y / o versión
Junto con una capacidad que puede especificar una arquitectura (tal como i586 o x86_64 ) y / o una versión. La versión debe ser precedida por un operador: < (menor que), <= (menor o igual), = (igual), > =(mayor o igual), > (mayor que).
'firefox.x86_64' zypper install
zypper install 'firefox> = 3.5.3'
'firefox.x86_64> = 3.5.3' zypper install
por ruta de acceso al archivo RPM
También puede especificar una ruta de acceso local o remoto a un paquete:
zypper install / tmp / install / MozillaFirefox.rpm
zypper install URL_TO_FIREFOX_RPM
Reemplace URL_TO_FIREFOX_RPM con la URL de descarga real de tal
Para instalar y eliminar paquetes simultáneamente usar los + / - modificadores. Para instalar emacs y eliminarvim simultáneamente, utilice:
zypper install vim emacs-
Para quitar emacs e instalar vim simultáneamente, utilice:
zypper remove vim emacs +
Para evitar que el nombre del paquete a partir de la - se interpreta como una opción de comando, siempre lo uso como segundo argumento. Si esto no es posible, coloque delante - :
zypper install-emacs vim + # Wrong
zypper install vim-emacs # Correcto
zypper install --- emacs vim + # Igual que el anterior
zypper remove vim emacs + # Igual que el anterior
Si (junto con un paquete en concreto) que desea eliminar automáticamente los paquetes que llegan a ser innecesarios después de eliminar el paquete especificado, utilice el - clean-deps opción:
rm nombre_paquete - clean-deps
De forma predeterminada, Zypper pide una confirmación antes de instalar o retirar un paquete seleccionado, o cuando se produce un problema. Puede cambiar este comportamiento usando el - non-interactiveopción. Esta opción se debe dar antes de que el comando actual ( instalar , quitar , y parche ) como en el siguiente:
zypper - non-interactive install nombre_paquete
Esta opción permite el uso de Zypper en scripts y trabajos cron.
[Warning]No elimine los paquetes obligatorios del sistema
No elimine los paquetes tales como glibc , zypper , núcleo o paquetes similares. Estos paquetes son obligatorios para el sistema y, si se quita, puede provocar que el sistema se vuelva inestable o dejar de funcionar por completo.

9.1.2.1. Instalación de paquetes fuente 

Si desea instalar el paquete fuente correspondiente de un paquete, utilice:
zypper fuente-install nombre_paquete
Este comando también se instalará las dependencias de compilación del paquete especificado. Si no quieres esto, agregue el modificador -D . Para instalar sólo el uso de dependencias de construcción -d .
zypper install-fuente-D nombre_paquete # source paquete único
zypper fuente-install-d nombre_paquete # dependencias de construcción sólo
Por supuesto, esto sólo funcionará si tienes el repositorio con los paquetes fuente habilitadas en su lista de repositorios (se agrega de forma predeterminada, pero no habilitado). Consulte Sección 9.1.4, "Gestión de Repositorios con Zypper" para obtener más información sobre la gestión de repositorios.
Una lista de todos los paquetes de fuentes disponibles en los repositorios se puede obtener con:
zypper search-t srcpackage

9.1.2.2. Utilidades

 

Para verificar si todas las dependencias se siguen cumpliendo todos y para reparar las dependencias que faltan, utilice:
zypper verificar
Además de las dependencias que se deben cumplir, algunos paquetes de recomendar " otros paquetes. Estos paquetes recomendados se instalan sólo si realmente disponible y instalable. En el caso de paquetes recomendados se pusieron a disposición después de que el paquete se ha instalado recomendar (añadiendo paquetes adicionales o hardware), utilice el siguiente comando:
zypper install-new-recommends
Este comando es muy útil después de conectar un dispositivo webcam o WLAN. Se instalará los controladores para el software del dispositivo y afines, si están disponibles. Drivers y software relacionado son sólo instalable si determinadas dependencias de hardware se cumplan.

9.1.3. Actualización del software con Zypper

 

Hay tres maneras diferentes de actualizar el software usando Zypper: mediante la instalación de parches, mediante la instalación de una nueva versión de un paquete o mediante la actualización de toda la distribución.Esto último se logra con el zypper dist-upgrade comando que se discute en la Sección 16.1, "Actualización del sistema" .

9.1.3.1. Instalación de los parches

 

Para instalar todos los parches liberados oficialmente aplicables a su sistema, basta con ejecutar:
zypper patch
En este caso, todos los parches disponibles en los repositorios se comprueba la relevancia e instalado, si es necesario. El comando anterior es todo lo que debe introducir para que las apliquen cuando sea necesario.
Zypper conoce tres comandos diferentes para consultar la disponibilidad de parches:
zypper patch-check
Muestra el número de parches necesarios (parches, que se aplican a su sistema, pero no se ha instalado aún)
~ # Zypper patch-check
Carga de datos del repositorio ...
Leyendo los paquetes instalados ...
5 parches necesarios (1 parche de seguridad)
zypper list-patches
Listas de todos los parches necesarios (parches, que se aplican a su sistema, pero no se ha instalado aún)
~ # Zypper list-patches
Carga de datos del repositorio ...
Leyendo los paquetes instalados ...
 
Repositorio | Nombre | Versión | Categoría | Situación
------------------------------------ + ----------- + - -------- + ---------- + -------
Las actualizaciones para openSUSE 11.3 11.3 a 1.82 | LXSession | 2776 | Seguridad | necesario
parches zypper
Listas de todos los parches disponibles para openSUSE , independientemente de si ya están instalados o se aplican a su instalación.
También es posible hacer una lista e instalar los parches correspondientes a cuestiones específicas. Para una lista de los parches específicos, utilice el zypper list-parches de comando con las siguientes opciones:
- Bugzilla [= número ]
Lista todos los parches necesarios para los problemas de Bugzilla. Si lo desea, puede especificar un número de error si sólo desea una lista de parches para este error específico.
- Cve [= número ]
Lista todos los parches necesarios para CVE (Common vulnerabilidades y exposiciones) cuestiones o parches sólo coinciden con un cierto número CVE, si se especifica.
Para instalar un parche para un problema específico o Bugzilla CVE, utilice los siguientes comandos:
zypper patch - bugzilla = número
o
zypper patch - cve = número
Por ejemplo, para instalar un parche de seguridad con el número CVE CVE-2010-2713 , ejecute:
zypper patch - = cve CVE-2010-2713

9.1.3.2. Instalación de actualizaciones 

Si un repositorio contiene sólo paquetes nuevos, pero no proporciona parches, parches zypper no muestra ningún efecto. Para actualizar todos los paquetes instalados con nuevas versiones disponibles, utilice:
zypper update
Para actualizar paquetes individuales, especifique el paquete, ya sea con la actualización o instalar comando:
zypper update nombre_paquete 
zypper install nombre_paquete
Una lista de todos los paquetes instalables nuevas se puede conseguir con el comando:
zypper list-updates
Tenga en cuenta que este comando sólo paquetes de paquetes de listas que responden a los siguientes criterios:
  • tiene el mismo proveedor como el paquete ya instalado,
  • es proporcionado por repositorios con al menos la misma prioridad que el paquete ya instalado,
  • es instalable (todas las dependencias han sido satisfechas).
Una lista de todos los paquetes disponibles nuevas (sin importar si instalar o no) pueden obtenerse en:
zypper list-updates - todos
Para saber por qué un nuevo paquete no se puede instalar, sólo tiene que utilizar la instalación zypper ozypper update comando como se ha descrito anteriormente.

9.1.3.3. La actualización a una nueva versión del producto

 

Para actualizar fácilmente su instalación en una nueva versión del producto (por ejemplo, de openSUSE openSUSE 11.4 a 12.1) , primero ajuste sus repositorios para que coincida con las actuales openSUSErepositorios. Para obtener más información, consulte la Sección 9.1.4, "Administrar los Repositorios con Zypper". A continuación, utilice el zypper dist-upgrade comando con los repositorios necesarios. Este comando garantiza que todos los paquetes se instalarán en los repositorios habilitados actualmente. Para obtener instrucciones detalladas, consulte la Sección 16.1.4, "Actualización de distribución con zypper" .
Para restringir la actualización de la distribución de paquetes de un repositorio determinado teniendo en cuenta también los otros repositorios para satisfacer las dependencias, utilice el - de opción y especifique el depósito por cualquiera de sus alias, su número o URI.
[Nota]Las diferencias entre zypper update y zypper dist-upgrade
Elige zypper update . actualizar a nuevas versiones de paquetes disponibles para la versión del producto, manteniendo la integridad del sistema de actualización zypper cumplirá las siguientes normas:
ningún cambio de proveedor
no hay cambios en la arquitectura
no hay rebajas
mantener los paquetes instalados
Al ejecutar zypper dist-upgrade , todos los paquetes se instalarán en los repositorios habilitados actualmente. Esta regla se aplica, por lo que un paquete puede cambiar de proveedor o arquitectura o incluso se rebajó. Todos los paquetes que tienen dependencias incumplidas después de la actualización se desinstalará.

9.1.4. Administrar los Repositorios con Zypper

 

Todos los comandos de instalación o parche de Zypper contar con una lista de repositorios conocidos. Para una lista de todos los repositorios conocidos por el sistema, utilice el comando:
zypper repos
El resultado será similar a la siguiente salida:
Ejemplo 9,1. Zypper-Lista de repositorios conocidos 
# | Alias ​​| Nombre | Activado | Actualizar
- + ----------------------- + ----------------------- + --------- + --------
1 | Actualidad | Noticias | Sí | Sí
2 | openSUSE 11.2-0 | openSUSE 11.2-0 | No | No
3 | openSUSE-11.2-Debug | openSUSE-11.2-Debug | No | Sí
4 | openSUSE-11.2-Non-Oss | openSUSE-11.2-Non-Oss | Sí | Sí
5 | openSUSE-11.2-Oss | openSUSE-11.2-Oss | Sí | Sí
6 | openSUSE-11.2-Source | openSUSE-11.2-Source | No | Sí

Al especificar repositorios en varios comandos, cada alias, URI o repositorio de la zypper repos salida del comando se puede utilizar. Un alias de repositorio es una versión abreviada del nombre de repositorio para su uso en los comandos de manipulación del repositorio. Tenga en cuenta que el número de repositorios puede cambiar después de modificar la lista de repositorios. El alias nunca va a cambiar por sí mismo.
De forma predeterminada, los detalles como el URI o la prioridad del repositorio no se muestran. Utilice el siguiente comando para mostrar todos los detalles:
zypper repos-d

9.1.4.1. Añadiendo repositorios

 

Para añadir un repositorio, ejecute
zypper addrepo URI alias
URI puede ser un repositorio de Internet, un recurso de red, un directorio o una unidad de CD o DVD (veahttp://en.opensuse.org/openSUSE:Libzypp_URIs para más detalles). El alias es una forma rápida e identificador único del repositorio. Es libre de elegir que, con la única excepción de que se tiene que ser único.Zypper emitirá una advertencia si se especifica un alias que ya está en uso.

9.1.4.2. Extracción de Repositorios 

Si desea eliminar un repositorio de la lista, utilice el comando zypper removerepo junto con el alias o el número del repositorio que desea eliminar. Por ejemplo, para eliminar el repositorio aparece como tercera entrada en Ejemplo 9.1, "Zypper-Lista de repositorios conocidos" , utilice el siguiente comando:
zypper removerepo 3

9.1.4.3. Modificación de Repositorios 

Activar o desactivar repositorios con zypper modifyrepo . También puede modificar las propiedades del repositorio (por ejemplo, el comportamiento refrescante, nombre o prioridad) con este comando. El siguiente comando le permitirá al repositorio llamado actualizaciones , active la actualización automática y configurar su prioridad a 20:
zypper modifyrepo-er-p 20 'updates'
Modificación de los repositorios no se limita a un único depósito-que también pueden operar en grupos:
-A : todos los repositorios
-L : repositorios locales
-T : repositorios remotos
-M TIPO : repositorios de un cierto tipo (donde TIPO puede ser uno de los siguientes: http , https , ftp ,cd , dvd , dir , archivo , CIFS , SMB , NFS , hd , iso )
Para cambiar el nombre de un alias del repositorio, utilice el renamerepo comando. El ejemplo siguiente cambia el alias de Mozilla Firefox con sólo firefox :
zypper renamerepo 'Mozilla Firefox' firefox

9.1.5. Consulta de Repositorios y Paquetes con Zypper

 

Zypper ofrece varios métodos de consulta a los repositorios o paquetes. Para obtener una lista de todos los productos, patrones, paquetes o parches disponibles, utilice los siguientes comandos:
zypper productos
patrones zypper
paquetes zypper
parches zypper
Para consultar todos los repositorios de paquetes determinados, utilice búsqueda . Funciona en los nombres de paquetes, o, opcionalmente, en los resúmenes de paquetes y descripciones. Usando el comodín * y ? con el término de búsqueda está permitido. Por defecto, la búsqueda no distingue entre mayúsculas y minúsculas.
zypper # firefox búsqueda simple búsqueda de "firefox"
zypper search "* fuego *" comodines # using
zypper search-d fuego # también buscar en las descripciones de paquetes y resúmenes
zypper search-u firefox # sólo mostrar los paquetes no instalados
Para buscar paquetes que proporcionan una capacidad especial, utilice el comando what-ofrece . Por ejemplo, si usted desea saber qué paquete proporciona el módulo de perl SVN :: Core , use el siguiente comando:
zypper lo-que-ofrece-perl (SVN :: Core) '
Para consultar paquetes individuales, utilizar información con un nombre exacto del paquete como argumento. Muestra información detallada acerca de un paquete. Para mostrar también lo que se requiere / recomendados por el paquete, use las opciones - requiere y - recomienda :
zypper info - requiere MozillaFirefox
El lo-que-ofrece paquete es similar a rpm-q - whatprovides paquete , pero rpm sólo es capaz de consultar la base de datos RPM (que es la base de datos de todos los paquetes instalados). Zypper, por el contrario, le dirá acerca de los proveedores de la capacidad de cualquier repositorio, no sólo los que están instalados.

9.1.6. Configuración Zypper

 

Zypper ahora viene con un archivo de configuración, lo que le permite cambiar de forma permanente el comportamiento de Zypper (ya sea el sistema o usuario específico-). Para todo el sistema de cambios, editar / etc / ZYpp / zypper.conf . Para los cambios específicos del usuario, editar ~ /. zypper.conf . Si~ /. zypper.conf todavía no existe, puede usar / etc / ZYpp / zypper.conf como plantilla: copiarlo a ~ / zypper.conf. y ajustarlo a tu gusto. Consulte los comentarios del archivo de ayuda sobre las opciones disponibles.

9.1.7. Solución de problemas 

En caso de tener problemas para acceder a los paquetes de los repositorios configurados (por ejemplo, zypper no puede encontrar un paquete en concreto cuando sabes que existe en uno de los repositorios), puede ayudar a actualizar los repositorios con:
zypper refresh
Si eso no ayuda, intente
zypper refresh-fdb
Esto obliga a una completa renovación y reconstrucción de la base de datos, incluyendo una descarga forzada de metadatos prima.

9.1.8. Característica Zypper Rollback en sistema de archivos Btrfs

 

Si el sistema de archivos Btrfs se utiliza en la partición raíz y pargo está instalado, zypper llama automáticamente pargo (a través de script instalado por pargo ) al confirmar los cambios en el sistema de archivo para crear instantáneas del sistema de archivos apropiados. Estas instantáneas se puede utilizar para revertir los cambios realizados por zypper. Para obtener más información acerca de pargo , consulte pargo hombre .
Zypper (y YaST), actualmente sólo hacer instantáneas del sistema de archivos raíz. Subvolumes Otros no se pueden configurar. Esta función no se admite en el sistema de archivos por defecto.

9.1.9. Para obtener más información

 

Para obtener más información sobre la gestión de software desde la línea de comandos, escriba zypper ayuda , ayuda zypper  comando o consulte la zypper (8) página de manual. Para una referencia de comandos completa y detallada, incluyendo hojas de trucos con los comandos más importantes, así como información sobre la manera de Zypper utilizar en scripts y aplicaciones, consultehttp://en.opensuse.org/SDB:Zypper_usage . Una lista de los cambios en el software de los últimos openSUSEversión se puede encontrar en . .

9,2. RPM Package Manager

 

RPM (RPM Package Gerente) se utiliza para la gestión de paquetes de software. Sus comandos principales sonrpm y rpmbuild . La base de datos RPM de gran alcance puede ser consultada por los usuarios, administradores de sistemas y fabricantes de paquetes para obtener información detallada sobre el software instalado.
Esencialmente, rpm tiene cinco modos:. Instalación, desinstalación (o actualización) de paquetes de software, la reconstrucción de la base de datos RPM, consulta de bases de RPM o los archivos RPM individuales, comprobar la integridad de los paquetes y paquetes de firma rpmbuild se puede utilizar para construir paquetes instalables de fuentes prístinas.
Archivos instalables RPM están envasados ​​en un formato binario especial. Estos archivos constan de los archivos de programa para instalar y metainformación cierta utilizado durante la instalación por rpm para configurar el paquete de software o almacenados en la base de datos de RPM para fines de documentación.Archivos RPM normalmente tienen la extensión . rpm .
[Tip]Paquetes de desarrollo de software
Desde hace varios paquetes, los componentes necesarios para el desarrollo de software (librerías, cabeceras, incluyen archivos, etc) han sido puestos en paquetes separados. Estos paquetes de desarrollo sólo son necesarios si desea compilar programas por sí mismo (por ejemplo, los paquetes de GNOME más recientes). Pueden ser identificados por el nombre de la extensión -devel , como los paquetes alsa-devel , GIMP desa- y libkde4 desa- .

9.2.1. Verificación de la autenticidad del paquete

 

Estos paquetes tienen una firma GPG. Para verificar la firma de un paquete RPM, utilice el comando rpm - checksig  paquete -1.2.3.rpm para determinar si el paquete procede de Novell / SUSE o de otro centro de confianza. Esto se recomienda especialmente para los paquetes de actualización de Internet.

9.2.2. Gestión de paquetes: instalar, actualizar y desinstalar

 

Normalmente, la instalación de un archivo RPM es bastante simple: rpm-i paquete rpm. . Con este comando se instala el paquete, pero sólo si se cumplen sus dependencias y si no hay conflictos con otros paquetes. Con un mensaje de error, rpm peticiones aquellos paquetes que deben ser instalados para cumplir con los requisitos de dependencia. En el fondo, la base de datos RPM se asegura de que no haya un conflicto, un archivo específico sólo puede pertenecer a un solo paquete. Al optar por diferentes opciones, puede forzar rpmpara ignorar estos valores predeterminados, pero esto es sólo para expertos. De lo contrario, corre el riesgo de comprometer la integridad del sistema y poner en peligro la capacidad de actualizar el sistema.
Las opciones -U o - upgrade y -F o - freshen se puede utilizar para actualizar un paquete (por ejemplo,rpm-F paquete rpm. ). Este comando elimina los archivos de la versión anterior e inmediatamente instala los nuevos archivos. La diferencia entre las dos versiones es que -U instala los paquetes que antes no existían en el sistema, pero -F se limita a actualizar los paquetes instalados previamente. Cuando la actualización, rpmactualiza los archivos de configuración con cuidado utilizando la siguiente estrategia:
  • Si un archivo de configuración no se ha cambiado por el administrador del sistema, rpm instala la versión nueva del archivo correspondiente. Ninguna acción por el administrador del sistema se requiere.
  • Si un archivo de configuración se ha cambiado por el administrador del sistema antes de la actualización,rpm guarda el archivo con la extensión . rpmorig o . rpmsave (copia de seguridad) e instala la versión del nuevo paquete (pero sólo si el archivo de instalación original y la nueva versión son diferentes).Si este es el caso, comparar el archivo de copia de seguridad ( . rpmorig o rpmsave. ) con el archivo que acaba de instalar y realice los cambios de nuevo en el nuevo archivo. A continuación, asegúrese de borrar todos . rpmorig y . rpmsave archivos para evitar problemas con las actualizaciones futuras.
  • . Rpmnew archivos aparecen si el archivo de configuración ya existe y si el noreplace etiqueta se especifica en la . especificación de archivo.
Después de una actualización, . rpmsave y . rpmnew archivos deben ser eliminados después de compararlas, por lo que no obstruyan las futuras actualizaciones. La . rpmorig extensión se asigna si el archivo no ha sido previamente reconocido por la base de datos RPM.
De lo contrario, . rpmsave se utiliza. En otras palabras, . rpmorig los resultados de la actualización de un formato ajeno a RPM. . rpmsave resultados de la actualización de un RPM antiguo a más reciente. RPM . rpmnew no revela ninguna información sobre si el administrador del sistema ha realizado cambios en la configuración archivo. Una lista de estos archivos está disponible en / var / adm / rpmconfigcheck .Algunos archivos de configuración (como / etc / httpd / httpd.conf ) no se sobrescriben para permitir el funcionamiento continuo.
El U- switch es no sólo un equivalente a desinstalar con el e- opción y se instala con la -i opción. Uso -Usiempre que sea posible.
Para eliminar un paquete, escriba rpm-e paquete . rpm , que sólo elimina el paquete si no existen dependencias no resueltas. En teoría, es imposible eliminar el Tcl / Tk, por ejemplo, mientras otra aplicación lo requiere. Incluso en este caso, RPM llama para la ayuda de la base de datos. Si tal eliminación es, por cualquier razón, imposible (incluso si no existen dependencias adicionales), puede ser útil para reconstruir la base de datos RPM, usando la opción - rebuilddb .

9.2.3. RPM y parches

 

Para garantizar la seguridad de funcionamiento de un sistema, los paquetes de actualización se debe instalar en el sistema de vez en cuando. Anteriormente, un error en un paquete sólo podía ser resuelto sustituyendo el paquete entero. Paquetes grandes con fallos en pequeños archivos fácilmente podría dar lugar a este escenario.Sin embargo, el RPM SUSE ofrece una característica que permite la instalación de parches en paquetes.
Las consideraciones más importantes son demostradas utilizando pino como ejemplo:
Es el parche RPM apropiado para mi sistema?
Para comprobar esta consulta, primero la versión instalada del paquete. Para pino , esto se puede hacer con
rpm-q pino
pino-4.44-188
A continuación, compruebe si el parche RPM es adecuado para esta versión de pine :
rpm-qp - BasedOn pino-4.44-224.i586.patch.rpm 
pine = 4.44-188
pine = 4.44-195
pine = 4.44-207
Este parche es adecuado para tres versiones diferentes de pino. La versión instalada en el ejemplo está también en la lista, por lo que el parche se puede instalar.
¿Qué archivos se sustituyen por el parche?
Los archivos afectados por el parche se puede ver fácilmente en el parche RPM. El rpm parámetro -Ppermite la selección de las características de parches especiales. Muestra la lista de archivos con el comando siguiente:
rpm-qpPl pino-4.44-224.i586.patch.rpm
/ Etc / pine.conf
/ Etc / pine.conf.fixed
/ Usr / bin / pino
o, si el parche ya está instalado, con el siguiente comando:
rpm-CVP pino
/ Etc / pine.conf
/ Etc / pine.conf.fixed
/ Usr / bin / pino
¿Cómo puede un parche RPM se instala en el sistema?
Los parches RPMs se utilizan como RPMs normales. La única diferencia es que una RPM adecuado debe estar ya instalado.
Qué parches están ya instalados en el sistema y para que versiones de los paquetes?
Una lista de todos los parches instalados en el sistema se pueden visualizar con el comando rpm -qPa .Si sólo hay un parche se instala en un sistema nuevo (como en este ejemplo), la lista aparece de la siguiente manera:
rpm-qPa
pino-4.44-224
Si en una fecha posterior, desea saber qué versión del paquete se instaló originalmente, esta información también está disponible en la base de datos RPM. Para pino , esta información se puede visualizar con el siguiente comando:
rpm-q - BasedOn pino
pine = 4.44-188
Más información, incluyendo información sobre la función de parche RPM, disponible en las páginas del manual de rpm y rpmbuild .
[Nota]Actualizaciones Oficiales para openSUSE
Con el fin de hacer que el tamaño de la descarga de actualizaciones tan pequeño como sea posible, las actualizaciones oficiales para openSUSE no se proporcionan las RPM de un parche, pero como paquetes RPM Delta. Para obtener más información, consulte la Sección 9.2.4, "Delta paquetes RPM" .

9.2.4. Delta paquetes RPM

 

Delta paquetes RPM contienen la diferencia entre una vieja y una nueva versión de un paquete RPM. La aplicación de un RPM delta en un resultado RPM RPM antiguos en un completamente nuevo. No es necesario tener una copia del RPM viejo porque un RPM delta también se puede trabajar con un RPM instalado. Los paquetes RPM delta son aún más pequeñas en tamaño que los RPM de conexión, lo cual es una ventaja cuando se transfieren los paquetes de actualización a través de Internet. El inconveniente es que las operaciones de actualización con RPMs delta implicados consumen muchos más ciclos de CPU que RPMs normales o parche.
El prepdeltarpm , writedeltarpm y applydeltarpm binarios son parte de la suite RPM delta (paquetedeltarpm ) y ayudarle a crear y aplicar paquetes RPM delta. Con los siguientes comandos, cree un RPM delta llamado new.delta.rpm . El comando siguiente se supone que old.rpm y new.rpm están presentes:
prepdeltarpm ss-s-i info old.rpm> old.cpio
prepdeltarpm-f new.rpm> new.cpio
xdelta delta -0 old.cpio new.cpio delta
writedeltarpm new.rpm delta info new.delta.rpm
Por último, eliminar los archivos temporales de trabajo old.cpio , new.cpio y delta .
Usando applydeltarpm , se puede reconstruir el RPM nuevo del sistema de archivos si el paquete viejo ya está instalado:
applydeltarpm new.delta.rpm new.rpm
Para ello se derivan del antiguo RPM sin ​​acceder al sistema de archivos, utilice el -r opción:
applydeltarpm-r old.rpm new.delta.rpm new.rpm
Véase / usr / share / doc / packages / deltarpm / README para más detalles técnicos.

9.2.5. Consultas RPM

 

Con el -q opción rpm inicia consultas, por lo que es posible inspeccionar un archivo RPM (añadiendo la opción-p ) y también para consultar la base de datos de RPM de paquetes instalados. Se dispone de varios conmutadores para especificar el tipo de información requerida. Véase la Tabla 9.1, "Las opciones de consulta más importantes RPM" .
Tabla 9.1. Las opciones de consulta más importantes RPM 
-I
Información sobre el paquete
-L
Lista de archivos
-F ARCHIVO
Consultar el paquete que contiene el archivo ARCHIVO (la ruta completa debe especificarse con ARCHIVO )
-S
Lista de archivos con información de estado (implica -l )
-D
Lista los archivos de documentación solamente (implica -l )
-C
Listar archivos de configuración (implica -l )
- Dump
Archivo de lista con los detalles completos (para ser utilizado con -l , -c , o d- )
- Proporciona
Lista de características del paquete que otro paquete puede solicitar con - requiere
- Requiere ,-R
Capacidades del paquete requiere
- Guiones
Secuencias de comandos de instalación (preinstall, postinstall, desinstalación)

Por ejemplo, el comando rpm-q-i wget muestra la información que se muestra en Ejemplo 9.2, "rpm-q-i wget".
Ejemplo 9,2. rpm-q-i wget 
Nombre: Movimientos wget: (no reubicable)
Versión: 1.11.4 Vendedor: openSUSE
Release: 1,70 Fecha de fabricación: sáb 01 de agosto 2009 09:49:48 CEST
Instale Fecha: Jueves 06 de agosto 2009 14:53:24 CEST Build Host: build18
Grupo: Productividad / Networking / Web / Utilidades RPM Fuente: wget-1.11.4-1.70.src.rpm
Tamaño: 1525431 Licencia: GPL v3 o posterior
Firma: RSA / 8, sábado 01 de agosto 2009 09:50:04 CEST, Cayo b88b2fd43dbdc284 ID
Packager: http://bugs.opensuse.org
URL: http://www.gnu.org/software/wget/
Resumen: Una Herramienta para la creación de reflejo de FTP y HTTP
Descripción:
Wget le permite recuperar documentos WWW o archivos FTP de un servidor.
Esto se puede hacer en archivos de script o a través de la línea de comandos.
[...]

La opción -f sólo funciona si se especifica el nombre de archivo completo con su ruta completa. Proporcione los nombres de archivo que desee. Por ejemplo, el siguiente comando
rpm-q-f / bin / rpm / usr / bin / wget
resulta en:
rpm-4.8.0-4.3.x86_64
wget-1.11.4-11.18.x86_64
Si sólo una parte del nombre de archivo se sabe, utilice un script de shell, como se muestra en el Ejemplo 9.3, "Script de búsqueda de paquetes" . Pase el nombre de archivo parcial de la secuencia de comandos se muestra como un parámetro cuando se ejecuta.
Ejemplo 9,3. Script de búsqueda de paquetes 
#! / Bin / sh
for i in $ (rpm-q-a-l | grep $ 1); hacer
    echo "\" $ i \ "está en el paquete:"
    rpm-q-f $ i
    echo ""
hecho

El comando rpm-q - changelog rpm muestra una lista detallada de la información de cambio de un paquete específico (en este caso, la rpm del paquete), clasificadas por fecha.
Con la ayuda de la base de datos de RPM instalado, los controles de verificación se puede hacer. Iniciado estos con -V , o - verify . Con esta opción, rpm muestra todos los archivos de un paquete que se han modificado desde la instalación. rpm utiliza ocho símbolos de caracteres para dar algunas pistas sobre los siguientes cambios:
Tabla 9.2. Las verificaciones 
5
Suma de control MD5
S
Tamaño de archivo
L
Enlace simbólico
T
Modificación tiempo
D
Mayores y menores números de dispositivo
U
Propietario
G
Grupo
M
Modo (con derecho y tipo)

En el caso de archivos de configuración, la letra c se imprime. Por ejemplo, para los cambios en / etc / wgetrc ( wget paquete):
rpm-V wget
S.5 .... T c / etc / wgetrc
Los archivos de la base de datos RPM se encuentran en / var / lib / rpm . Si la partición / usr tiene un tamaño de 1 GB, esta base de datos pueden ocupar hasta 30 MB, especialmente después de una actualización completa. Si la base de datos es mucho mayor de lo esperado, es útil para reconstruir la base de datos con la opción - rebuilddb . Antes de hacer esto, haga una copia de seguridad de la base de datos antigua. El cronscript de cron.daily genera diariamente copias de la base de datos (embalado con gzip) y los almacena en / var / adm / backup / rpmdb . El número de copias está controlado por la variableMAX_RPMDB_BACKUPS (por defecto: 5 ) en / etc / sysconfig / backup . El tamaño de una sola copia de seguridad es de aproximadamente 1 MB por 1 GB en / usr .

9.2.6. Instalar y compilar los paquetes fuente

 

Todos los paquetes fuente tienen una . src.rpm extensión (RPM fuente).
[Nota]Instalados los paquetes fuente
Los paquetes fuente se pueden copiar desde el medio de instalación en el disco duro y deshacer con YaST.No son, sin embargo, marca como instalado ( [i] ) en el gestor de paquetes. Esto se debe a que los paquetes fuente no se introducen en la base de datos RPM. Sólo instalar el software del sistema operativo aparece en la base de datos RPM. Cuando se instala " un paquete fuente, sólo el código fuente se agrega al sistema.
Los siguientes directorios deben estar disponibles para rpm y rpmbuild en / usr / src / packages (a menos que haya especificado los ajustes personalizados en un archivo como / etc / rpmrc ):
FUENTES
para las fuentes originales ( . tar.bz2 o tar.gz. archivos, etc) y para los ajustes específicos de distribución (en su mayoría . diff o parches. archivos)
ESPECIFICACIONES
para las especificaciones. archivos, similar a un Makefile meta, que controlan la compilaciónproceso
CONSTRUIR
todas las fuentes están sin envasar, parcheado y compilado en este directorio
RPMS
donde los paquetes binarios completos se almacenan
SRPMS
aquí están las fuentes RPM
Al instalar un paquete fuente con YaST, todos los componentes necesarios se instalan en / usr / src / packages : las fuentes y los ajustes de FUENTES y la correspondiente especificación. archivo en ESPEC .
[Warning]
No experimente con los componentes del sistema ( glibc , rpm , sysvinit , etc), ya que esto pone en peligro la estabilidad de su sistema.
En el ejemplo siguiente se utiliza la wget.src.rpm paquete. Después de instalar el paquete de fuentes, usted debe tener archivos similares a los de la siguiente lista:
/ Usr/src/packages/SOURCES/wget-1.11.4.tar.bz2
/ Usr / src / packages / SOURCES / wgetrc.patch
/ Usr / src / packages / SPECS / wget.spec
rpmbuild-b X / usr / src / packages / SPECS / wget.spec comienza la compilación. X es un comodín para las distintas etapas del proceso de construcción (ver la salida de - help o la documentación de RPM para más detalles). La siguiente es meramente una breve explicación:
-Pb
Preparar las fuentes en / usr / src / packages / BUILD : desempaqueta y parche.
-Bc
Haz lo mismo que bp , pero con compilación.
-Bi
Haz lo mismo que bp , pero con instalación del software construido. Precaución: si el paquete no es compatible con la función de BuildRoot, es posible sobrescribir los archivos de configuración.
-Bb
Haz lo mismo que -bi , pero con generación adicional del paquete binario. Si la compilación se ha realizado correctamente, el binario debería estar en / usr / src / packages / RPMS .
Ba-
Haz lo mismo que -bb , pero con generación adicional del RPM fuente. Si la compilación se ha realizado correctamente, el binario debería estar en / usr / src / packages / SRPMS .
- Cortocircuito
Omite algunas etapas.
El RPM binario creado ahora se puede instalar con rpm -i , o, preferiblemente, con rpm -U . Instalación conrpm lo hace aparecer en la base de datos RPM.

9.2.7. Creación de paquetes RPM con build

 

El peligro con muchos paquetes es que los archivos no deseados se añaden al sistema en ejecución durante el proceso de construcción. Para evitar este uso construir , lo que crea un entorno definido en el que se construye el paquete. Para crear ese entorno chroot, el build script debe estar provisto de un árbol de paquete completo. Este árbol puede estar disponible en el disco duro, mediante NFS o desde el DVD. Ajuste la posición con build - rpms directorio . A diferencia de rpm , la construcción comando busca la . especificación de archivo en el directorio de origen. Para construir wget (como en el ejemplo anterior) con el DVD montado en el sistema en / media / dvd , utilice los siguientes comandos como root :
cd / usr / src / packages / SOURCES /
mv .. / SPECS / wget.spec.
build - rpms / media / dvd / suse / wget.spec
Posteriormente, un entorno mínimo se establece en / var / tmp / build-root . El paquete se construye en este entorno. Al finalizar, los paquetes resultantes se encuentran en / var / tmp / build-root / usr / src / packages / RPMS .
La construcción guión ofrece una serie de opciones adicionales. Por ejemplo, hace que el script prefieren los propios RPMs, omitir la inicialización del entorno de construcción o limitar la rpm comando a una de las etapas antes mencionadas. Acceder a información adicional con construir - ayuda y mediante la lectura de lacompilación página de manual.

9.2.8. Herramientas para los archivos RPM y la base de datos RPM 

Midnight Commander ( mc ) puede mostrar el contenido de un archivo RPM y copiar partes de ellos. Representa los archivos como sistemas de archivos virtuales, que ofrece todas las opciones de menú habituales de Midnight Commander. Muestra la HEADER con F3 . Ver la estructura de archivo con las teclas de cursor y Enter . Copia de archivos componentes con F5 .
Un gestor de paquetes con todas las funciones está disponible como un módulo de YaST. Para obtener más información, consulte el Capítulo 5, Instalación o eliminación de software .

1 comentario: