Zypper/Uso/10.3
De openSUSE, la enciclopedia libre.
| Este artículo explica el uso de zypper, una utilidad de línea de comandos que usa Libzypp, una librería específica para la gestión de paquetes. La sintaxis de zypper es similar a la de rug, aunque añade nuevas opciones y también tiene más prestaciones. En cualquier caso, zypper puede funcionar en modo de compatibilidad con rug |
| Versión: 10.3
| Este artículo describe el uso de zypper 0.8.23 correspondiente a la versión openSUSE 10.3. Hay otro artículo (en inglés) que explica el funcionamiento en openSUSE 10.2 en [Zypper/Usage/10.2] |
Uso General
La sintaxis general para zypper es:
# zypper [opciones-globales] command [opciones-comandos] [argumentos] ...
Los componentes entre corchetes no son obligatorios, por lo que la forma más simple de uso de zypper es escribir su nombre y a continuación un [commando]. Por ejemplo, para aplicar los parches al sistema, teclee:
# zypper update
Adicionalmente, es posible escoger una o varias opciones globales escribiéndolas antes del comando que queremos ejecutar: (ejecuta el comando sin preguntar nada al usuario)
# zypper --non-interactive update
Para usar las opciones especificas de un comando particular, escribirlas inmediatamente despues que el comando:(su aplicacion necesita parches para el sistema pero no me preguntes por confirmar nunguna licencia, las he leido todas con anterioridad)
# zypper update --auto-agree-with-licenses
Algunos de los comands requieren uno o mas argumentos: (instalar o actualizar mplayer paquete)
# zypper install mplayer
Algunas de las opciones tambien necesitan un argumento: (actualizar el sistema con nuevos paquetes)
# zypper update -t package
Todos lo anterior combinado: (instalar mplayer y amarok usando solo el repositorio factory, con descripcion detallada)
# zypper -v install --repo factory mplayer amarok
Vocabulario
- repository - Directorio local o remoto que contiene paquetes e informacion de varios paquetes (package meta-data). Los repositorios eran antes conocidos como las fuentes de instalacion , servicios o catalogos).
- alias - un alias de un repositorio es una version corta del nombre del repositorio que es utilizado por los comandos encargados de manejar el repositorio y opciones tales como removerepo o --repo.
- resolvable - package, patch, pattern, product. Estos son los objetos en el resolvedor de dependencias trabaja, usando el nombre de resolvable. El tipo de resolvedor mas utilizado es package (paquete)y patch (parche).
- pattern - representa un grupo de paquetes. Por ejemplo un Http Server pattern tendria que tener las dependencias definidas para que todos los paquetes necesario para ejecutar y administrar un servidor http tendrian que ser seleccionados para instalarse cuando se instale el pattern.
- product - representa el producto completo (ejemplo: openSUSE 10.3)
Opciones Globales
Las siguientes opciones pueden ser aplicadas a cualquier transaccion zypper:
- -V, --version
Muestra el numero de version
- -v, --verbose
Salida detallada, muestra todas las trazas.
- -t, --terse
Terse output. Actualmente no soportado, usado solo internamente por el Updater_Applet.
- -q, --quiet
Suprime la impresion de mensajes. Mensajes cortos y de error seran impresos, aunque, si se usa con la opcion --verbose entra en conflicos, la opcion --verbose tiene preferencia.
- -s, --table-style
Estilo tabla (numero entero).
- -r, --rug-compatible
Activar la compatibilidad con rug.
- -n, --non-interactive
Enciende el modo no-interactivo. en este modo no se le pide al usuario que tome alguna desicion, automaticamente utiliza los valores por defecto razonables. Esto es de gran ayuda cuando se utiliza zypper como un trabajo cron, o como parte de un scriptt. Vea la seccion Usando Zypper en Scripts para mas detalles.
- --no-gpg-checks
Ignora el fallo en los chequeos GPG y continua. Si ocurre un probema GPG cuando se usa esta opcion zypper imprime y registra una advertencia, y automaticamente continua sin interrumpir la operacion. Utilice esta opcion con precaucion, porque te puedes encontrar facilmente con problemas de seguridad utilizandolo.
- -R, --root <dir>
Trabajar en un directorio raiz diferente.
Commandos
zypper provee una cantidad de comandos. El comando comunmente mas usadp es zypper update el cual descarga e instala las actualizaciones (parches necesarios) desde los repositoris que has definido. Si solo se desea actualizar el software, este es el unico comando que necesitas.
Obteniendo ayuda
La Sintaxis general es:
help, -h
Imprime la ayuda. Para imprimir ayuda general, usa:
# zypper -h
PAra imprimir ayuda para un comando, usa:
# zypper -h [comando]
Listar los repositorios configurados
La Sintaxis general es:
repos, lr
Ejemplo de la salida:
# zypper lr # | Enabled | Refresh | Type | Alias | Name --+---------+---------+--------+---------+-------------------------- 1 | Yes | No | rpm-md | factory | factory 2 | Yes | Yes | yast2 | guru | guru 3 | Yes | No | rpm-md | packman | Packman 10.3 4 | Yes | No | rpm-md | updates | openSUSE-10.3-Updates 5 | Yes | Yes | yast2 | main-no | Main Repository (NON-OSS) 6 | No | Yes | yast2 | main | Main Repository (OSS)
Para incluir la URL del repositorio en la lista, usa la opcion global -v junto con zypper lr.
Añadir repositorios
Antes de que se pueda instalar cualquier paquete se tiene que definir por lo menos un package repository. Para agregar un repositorio, usa el comando addrepo
addrepo, ar <URI> <alias>
Este comando acepta las siguiente opciones:
- -r, --repo <FILE.repo> - Agrega el repositorio definido en el archivo especifico .repo f
Ejemplo:
# zypper ar http://packman.iu-bremen.de/suse/10.3 pm * Adding repository 'pm' Repository 'pm' successfully added: Enabled: Yes Autorefresh: Yes URL: http://packman.iu-bremen.de/suse/10.3
Eliminar repositorios
removerepo, rr <URI|alias>
Ejemplo:
zypper rr http://packman.iu-bremen.de/suse/10.3
o
zypper rr pm
Renombrar repositorios
La sintaxis general es:
renamerepo, nr <alias> <new-alias>
Este comando esta actualmente disponible para cambiar el alias del repositorio. Si se desea cambiar el nombre mostrado del repositorio, editar el correspondiente archivo .repo en el directorio /etc/zypp/repos.d (la llave name=).
Instalación de solucionables
La Sintaxis General es:
install, in <nombre_paquete> ... install, in --capability <capability> ...
La forma normal en que funciona es que selecciona los paquete para la instalacion segun los nombres que se le especifican:
# zypper install subversion gcc
Instala los paquetes llamados subversion y gcc
selecciona los paquetes por capacidad que ellos proveen:
# zypper install -C /usr/bin/svn file
Instala los paquetes que proveen /usr/bin/svn
# zypper install -C subversion=1.4.4
Instala un paquete con la version especificada en subversion
Acepta las siguiente banderas opcionales:
- -r, --repo <alias> - Considera solo los que puedan resolver desde el repositorio que se especifica por el alias.
- -t, --type <resolvable> - Tipo de Resolucion (por_defecto: package)
- -n, --name - Selecciona los que puedan resolver por texto plano, no por capacidad (por_defecto)
- -C, --capability - Selecciona los que puedan resolver por capacidad que ellos proveen
- -l, --auto-agree-with-licenses - Automaticamente responde 'yes' a la pregunta de confirmacion de licencias de terceros.
- Vea 'man zypper' para mas detalles.
- --debug-solver - Crear una solucion de prueba para chequeo
Eliminación de solucionables
The general syntax is:
remove, rm <packagename> ... remove, rm --capability <capability> ...
Accepts the same options except of the --force.
Buscando solucionables
La Sintaxis General es:
search, se [pattern] ...
Acepta cualquiera de las siguientes banderas opcionales:
- --match-all - Busca por un registro que concuerde con todas las cadenas de texto especificadas (por_defecto)
- --match-any - Busca por un registro que concuerde con cualquiera de las cadenas de etsto especificadas
- --match-substrings - Matches for search strings may be partial words (default)
- --match-words - Concuerda con la busqueda de las cadenas de texto pudiendo ser palabras completas
- --match-exact - Busca por un nombre de paquete exacto
- -d, --search-descriptions - Busca tambin en las descripciones e informacion del paquete.
- -c, --case-sensitive - Lleva a cabo una busqueda sensible a minusculas/mayusculas.
- -i, --installed-only - Muestra solo los paquetes que ya estan instalados.
- -u, --uninstalled-only - Muestra solo los paquetes que no estan actualmente instalados.
- -t, --type - Busca solo los paqueres del tipo especificado.
- --sort-by-name - Ordena lo paquetes por nombre (por_defecto).
- --sort-by-catalog - Orden los paquetes por catalogo.
Los comodines * y ? tambien son soportados.
Ejemplo:
# zypper se zypper * Reading installed packages [100%] S | Repository | Type | Name | Version | Arch --+------------+---------+--------+----------+------- | factory | package | zypper | 0.8.23-3 | i586 i | factory | package | zypper | 0.8.23-2 | x86_64
Actualmente, la funcionalidad de busqueda es un poco quebrada debido al redisen_o de libzypp, especialemente en las opciones especiales de busqueda. La busqueda basica ha trabajado bien y rapido de todos modos.
Verificando parches
La Sintaxis general es:
patch-check, pchk
Este comando respondera si hay algun parche importante disponible para tu sistema y la cantidad de esos parches.
Ejemplo:
# zypper pchk * Reading repository '10.3 - Main Repository (NON-OSS)' cache * Reading repository 'openSUSE-10.3-DVD 10.3' cache * Reading repository 'openSUSE-10.3-Updates' cache * Reading installed packages [100%] 9 patches needed (0 security patches)
Listado de parches
La Sintaxis General es:
patches, pch
Lista todos los posibles parches, incluyendo aquellos que no son necesitados o aplicables
Ejemplo:
# zypper pch * Reading repository '10.3 - Main Repository (NON-OSS)' cache * Reading repository 'openSUSE-10.3-DVD 10.3' cache * Reading repository 'openSUSE-10.3-Updates' cache * Reading installed packages [100%] Repository: | Name | Version | Category | Status ----------------------+--------------------+---------+-------------+--------------- openSUSE-10.3-Updates | amarok | 4492-0 | recommended | Not Applicable openSUSE-10.3-Updates | cpio | 4474-0 | recommended | Needed openSUSE-10.3-Updates | evince | 4465-0 | recommended | Needed openSUSE-10.3-Updates | fetchmsttfonts.sh | 4347-0 | optional | Not Needed openSUSE-10.3-Updates | fvwm2 | 4475-0 | recommended | Needed openSUSE-10.3-Updates | glibc | 4467-0 | recommended | Needed openSUSE-10.3-Updates | gnome-main-menu | 4491-0 | recommended | Needed openSUSE-10.3-Updates | gtk2 | 4466-0 | recommended | Needed openSUSE-10.3-Updates | jfbterm | 4460-0 | recommended | Not Applicable openSUSE-10.3-Updates | ksh | 4489-0 | recommended | Needed openSUSE-10.3-Updates | libiniparser-32bit | 4488-0 | optional | Not Applicable openSUSE-10.3-Updates | release-notes | 4464-0 | recommended | Needed openSUSE-10.3-Updates | wvdial | 4461-0 | recommended | Needed
Obtener información detallada acerca de un Parche
La sintaxis general es:
patch-info [patchname] ... info -t patch [patchname] ...
Muestra una informacion completa acerca del parche especificado.
Ejemplo:
testicek2:~ # zypper patch-info amarok * Reading repository '10.3 - Main Repository (NON-OSS)' cache * Reading repository 'openSUSE-10.3-DVD 10.3' cache * Reading repository 'openSUSE-10.3-Updates' cache * Reading installed packages [100%] Information for patch amarok: Name: amarok Version: 4492-0 Arch: noarch Status: Not Applicable Category: recommended Created On: Thu 04 Oct 2007 05:48:07 PM CEST Reboot Required: No Package Manager Restart Required: No Interactive: No Summary: Fixes to improve stability and playback with yauap Description: This patch includes fixes to increase the stability of Amarok when playing music and improves the collaboration with the GStreamer/Yauap engine. Provides: patch: amarok == 4492-0 Requires: atom: amarok-yauap == 1.4.7-37.2 atom: amarok-lang == 1.4.7-37.2 atom: amarok-xine == 1.4.7-37.2 atom: amarok == 1.4.7-37.2 atom: yauap == 0.2.1-21.2 atom: amarok-libvisual == 1.4.7-37.2
Listado de actualizaciones
La Sintaxis General es:
list-updates, lu
Lista todas las actualizaciones disponibles. Por defecto este comando lista todos lo parches disponibles necesitados y de seguridad. Usar la opcion -t para escoger cual tipo de resolvedor se quiere trabajar.
Acepta las siguientes banderas opcionales:
- -t, --type <type> - Tipo de resolvedor (por_defecto: patch)
- -r, --repo <alias> - Lista solo las actualizaciones de repositorio especificado por el alias.
- --best-effort - Realiza un 'mejor efuerzo' aprochimandose a la actualizacion, acualiza uno anterior que la version ultimo-y-mejor son tambien posibles.
Ejemplo:
testicek2:~ # zypper lu * Reading repository '10.3 - Main Repository (NON-OSS)' cache * Reading repository 'openSUSE-10.3-DVD 10.3' cache * Reading repository 'openSUSE-10.3-Updates' cache * Reading repository 'factory' cache * Reading installed packages [100%]
Repository: | Name | Version | Category | Status ----------------------+-----------------+---------+-------------+------- openSUSE-10.3-Updates | cpio | 4474-0 | recommended | Needed openSUSE-10.3-Updates | evince | 4465-0 | recommended | Needed openSUSE-10.3-Updates | fvwm2 | 4475-0 | recommended | Needed openSUSE-10.3-Updates | glibc | 4467-0 | recommended | Needed openSUSE-10.3-Updates | gnome-main-menu | 4491-0 | recommended | Needed openSUSE-10.3-Updates | gtk2 | 4466-0 | recommended | Needed openSUSE-10.3-Updates | ksh | 4489-0 | recommended | Needed openSUSE-10.3-Updates | release-notes | 4464-0 | recommended | Needed openSUSE-10.3-Updates | wvdial | 4461-0 | recommended | Needed
Actualizando
The general syntax is:
update, up
Update the system. By default this command applies all needed patches. To update other types of resolvables (e.g. packages) use the -t option.
- -t, --type - Type of resolvable (default: patch)
- -r, --repo <alias> - List only updates from the repository specified by the alias.
- --skip-interactive - Skip interactive updates.
- -l, --auto-agree-with-licenses - Automatically say 'yes' to the third party license agreement prompt. See man zypper for more details.
- --best-effort - Do a 'best effort' approach to update, updates to lower than the latest-and-greatest version are also possible.
- --debug-solver - Create a solver test case for debugging.
Example:
testicek2:~ # zypper update * Reading repository '10.3 - Main Repository (NON-OSS)' cache * Reading repository 'openSUSE-10.3-DVD 10.3' cache * Reading repository 'openSUSE-10.3-Updates' cache * Reading installed packages [100%] The following packages are going to be upgraded: cpio fvwm2 evince glibc-i18ndata glibc-locale nscd glibc release-notes wvdial gnome-main-menu gtk2 ksh The following NEW packages are going to be installed: evince-lang gnome-main-menu-lang The following NEW patches are going to be installed: gnome-main-menu release-notes evince gtk2 glibc ksh fvwm2 wvdial cpio Overall download size: 28.0 M. After the operation, additional 2.9 M will be used. Continue? [yes/no]: y Downloading package evince-lang-2.20.0-5.2.i586, 519.4 K (2.0 M unpacked) Downloading: evince-lang-2.20.0-5.2.i586.rpm * Downloading [100%] * Installing: evince-lang-2.20.0-5.2 [100%] Downloading package glibc-i18ndata-2.6.1-18.2.i586, 3.6 M (10.0 M unpacked) Downloading patch rpm: ./rpm/i586/glibc-i18ndata-2.6.1-18.2.i586.patch.rpm, 111.5 K Downloading: glibc-i18ndata-2.6.1-18.2.i586.patch.rpm * Downloading [100%] * Installing: glibc-i18ndata-2.6.1-18.2 [100%] Downloading package glibc-2.6.1-18.2.i686, 1.7 M (3.9 M unpacked) Downloading delta: ./rpm/i686/glibc-2.6.1-18_18.2.i686.delta.rpm, 89.2 K Downloading: glibc-2.6.1-18_18.2.i686.delta.rpm * Downloading [100%] Applying delta: /var/adm/mount/AP_0x00000001/rpm/i686/glibc-2.6.1-18_18.2.i686.delta.rpm * Installing: glibc-2.6.1-18.2 [100%] Downloading package release-notes-10.3.17-0.1.noarch, 113.6 K (608.5 K unpacked) Downloading delta: ./rpm/noarch/release-notes-10.3.16_10.3.17-2_0.1.noarch.delta.rpm, 42.8 K Downloading: release-notes-10.3.16_10.3.17-2_0.1.noarch.delta.rpm * Downloading [100%] Applying delta: /var/adm/mount/AP_0x00000001/rpm/noarch/release-notes-10.3.16_10.3.17-2_0.1.noarch.delta.rpm * Installing: release-notes-10.3.17-0.1 [100%] ...
Obtener información sobre los paquetes
La sintaxis general es:
info, if [nombre_paquete] ...
Muestra la informacion completa de un paquete especificado.
Ejemplo:
# zypper info suspend
* Reading repository '10.3 - Main Repository (NON-OSS)' cache
* Reading repository 'openSUSE-10.3-DVD 10.3' cache
* Reading repository 'openSUSE-10.3-Updates' cache
* Reading installed packages [100%]
Information for package amarok:
Repository: openSUSE-10.3-Updates
Name: amarok
Version: 1.4.7-37.2
Arch: i586
Installed: No
Status: not installed
Installed Size: 8.3 M
Summary: Media Player for KDE
Description:
Amarok is a media player for all kinds of media. This includes MP3, Ogg
Vorbis, audio CDs, podcasts and streams. Play lists can be stored in
.m3u or .pls files.
Authors:
--------
Christian Muehlhaeuser <chris@chris.de>
Mark Kretschmann <markey@web.de>
Max Howell <max.howell@methylblue.com>
Stanislav Karchebny <berk@inbox.ru>
Uso de zypper desde un script
Zypper soporta muchas opciones globales que lo hacen de gran utilidad para usarlo dentro de procesos automatizados como los scripts. Tambien. En el manual de zypper se listan muchas diferentes manera de salir/terminar via codigo, estas pueden ser activadas cuando se usa zypper en un proceso atutomatizado, Ve los siguientes para detallar.
Modo no interactivo
En este modo zypper no pregunta al usuario por respuestas y usa las respuestas por_defecto. Cuando se usa esta opcion se garantiza que zypper no se detendra a preguntar por una respuesta on stdin, o en una busqueda sin fin.
Por ejemplo, para actualizar tu sistema automaticamente sin necesitar confirmacion, se puede utilizar
# zypper --non-interactive update
Este comando no requiere confirmacion del usuario para proceder con la actualizacion, omite todos los parches interactivos que necesiten una confirmacion adiciona; y tambien automaticamente responde algun otra peticion.
--no-gpg-checks
Si esta opcion es utilizada, zypper siempre escogera continuar si falla algun chequeo GPGs, ejemplo: un archivo de un repositorio no esta firmado y deberia de estarlo, entonces el archivo se firma y el chequeo GPG falla, etc.
--auto-agree-with-licenses
Eta es una opcion especial para los comandos install, remove y update. Usando esto,el usuario declara que acepta los terminos de licencias que el comando va a instalar, y zypper va ha decir automaicamente 'yes' a la pregunta de confirmacion de licencia. Esto es de mucha ayuda para las personas instalando el mismo grupo de paquetes en multiples maquinas (por un proceso automatico) y han leido todas las licencias con anterioridad.
Mensajes (Prompt)
Lo siguiente tiene que ser una lista completa de los casos donde zypper necesita interaccion del usuario junto con respuestas en el modo non-interactive. Todas las opciones adicionales mencionadasaqui tienen una mayor prioridad sobre --non-interactive, asi que si se utiliza, la respuesta que implican son automaticamente usadas aun si --non-interactiva no es usado
GPG-related prompts
Donde --no-gpg-checks es aplicado, un mensaje es mostrado o una advertencia es escrita alstderr y registrada (log).
| mensaje (prompt) | respuesta por defecto | utilizando --no-gpgp-checks | nota |
|---|---|---|---|
| accept unsigned file? | N | Y | |
| import key into keyring? | N | N | a new key can be imported in the interactive mode only |
| accept unknown key? | N | Y | |
| trust key? | N | Y | |
| verification of signed file failed, continue? | N | Y | |
| no digest for a file, continue? | N | Y | |
| accept unknown digest? | N | Y |
Otros Mensajes(Prompts)
| mensaje(prompt) | respuesta por defecto | otra respuesta | nota |
|---|---|---|---|
| proceed with installation/removal/update? | Y | in addition, the --no-confirm option can be used with the install/remove/update commands even without the global --non-interactive | |
| confirm 3rd party license | N | Y if --auto-agree-with-licenses is used | in addition, for zypper update, --skip-interactive option can be used to exclude interactive patches from to-be-installed list (a heritage of rug) |
| problem while installing/removing a resolvable, Abort/Retry/Ignore? | ABORT | this is ugly and can be improved in future | |
| problem while downloading a package, Abort/Retry/Ignore? | ABORT | this is also ugly, can be enhanced somehow in the future | |
| dependency conflict. Prompt for solution number, (c)ancel, or (r)etry | c | ||
| media change request | ABORT |

