SDB:Utilizzo di Zypper in openSUSE 11.3

Se si aggiorna valutare la possibilità di esportare questo articolo in (p.es.) SDB:Zypper usage 11.4 prima di modificarlo
Per openSUSE 12.2 è disponibile questo articolo: SDB:Zypper usage 12.2
Questo articolo riguarda l'uso di Portal:Zypper, il gestore di pacchetti a riga di comando che fa uso della libreria Libzypp. Contiene informazioni complementari alla pagina di manuale di Zypper (man zypper). Quello che non puoi trovare qui dovrebbe essere disponibile nella pagina di manuale e viceversa.
Versione: 11.3Questo articolo riguarda zypper 1.4.5 presente su openSUSE 11.3. Per le altre versioni vedi Vesioni di Zypper.

Guida rapida

Questi sono i comandi probabilmente usati più di frequente:

zypper                 # stampa la lista delle opzioni globali e dei comandi disponibili
zypper help search     # stampa la guida per il comando search
zypper lp              # per vedere quali patch sono necessarie
zypper patch           # per applicare le patch necessarie
zypper se sqlite       # per cercare il pacchetto sqlite
zypper rm sqlite2      # per rimuovere il pacchetto sqlite2
zypper in sqlite3      # per installare il pacchetto sqlite3
zypper in yast*        # per installare tutti i pacchetti corrispondenti a yast*
zypper up              # per effettuare l'aggiornamento di tutti i pacchetti installati con le nuove versioni, ove possibile

Cheat sheet

Le informazioni contenute in questo articolo, e altre, sono anche disponibili sotto forma di cheat sheet, ma solo per il wiki di openSUSE in lingua inglese. Se interessati visitare la pagina in inglese.


Uso Generale

La sintassi generale di zypper è:

# zypper [opzioni-globali] comando [opzioni-comando] [argomenti] ...

Le parti racchiuse tra parentesi quadre non sono richieste, così il modo più semplice per eseguire zypper è digitare il suo nome seguito da un comando. Per esempio, per applicare le patch necessarie al sistema digita:

# zypper update -t patch

In aggiunta puoi scegliere tra una o più opzioni globali digitandole subito prima del comando: (avvia il comando, ma non chiedermi nulla, decidi da solo)

# zypper --non-interactive patch

Per usare le opzioni specifiche di un particolare comando, digitale dopo il comando: (applica le patch necessarie al sistema ma non chiedermi la conferma di ogni licensa, le ho già lette tutte)

# zypper patch --auto-agree-with-licenses

Qualche comando richiede uno o più argomenti: (installa o aggiorna il pacchetto mplayer)

# zypper install mplayer

Alcune delle opzioni richiedono anche un argomento: (cerca per pattern/modelli)

# zypper search -t pattern

Combinando tutto quello elencato qui sopra: (installa mplayer e amarok usando solo il repository factory, visualizza informazioni dettagliate sul processo)

# zypper -v install --repo factory mplayer amarok

Richieste Utente

Ogni volta che necessita di qualche intervento da parte dell'utente, zypper elenca le possibili risposte tra parentesi quadre vicine al testo della richiesta. Per scegliere la risposta predefinita premi su <invio> (la risposta predefinita è stampata in lettere maiuscole (ad eccezione dei caratteri non ascii)). Per alcune richieste è anche disponibile un aiuto, in quel caso c'è un punto di domanda "?" elencato come una possibile risposta. Per far usare a zypper le risposte predefinite senza interazione utente, usa l'opzione globale --non-interactive.


Dizionario

  • repository - directory locale o remota contenente pacchetti e varie informazioni sugli stessi (metadati del pacchetto). I repository erano precedentemente conosciuti come sorgenti di installazione , servizi o cataloghi).
  • alias - l'alias di un repository è una versione abbreviata del nome di un repository da usare nei comandi e nelle opzioni per la gestione dei repository come removerepo o --repo.
  • package (pacchetto) - pacchetto software (pacchetto RPM o pacchetto sorgente). Comunemente si fa anche riferimento a patch, pattern (modelli), e prodotti come differenti tipi di pacchetti.
  • patch - rappresenta un pacchetto o un gruppo di pacchetti necessari per installare un aggiornamento (un bug fix la maggior parte delle volte).
  • pattern (modello) - rappresenta un gruppo di pacchetti. Per esempio un pattern Server Http dovrebbe avere le dipendenze definite in modo tale che tutti i pacchetti necessari per avviare e gestire un server http vengano attivati per l'installazione al momento di installare il modello (pattern).
  • product (prodotto) - rappresenta il prodotto completo (p.es. 'openSUSE 11.3').

Comandi

zypper fornisce un numero di comandi che possono essere raggruppati nelle seguenti categorie:

  • gestione repository
    refresh, repos, addrepo, removerepo, modifyrepo, namerepo
    refresh-services, services, addservice, removeservice, modifyservice
  • gestione pacchetti
    install, remove, source-install
  • gestione aggiornamenti
    patch, list-patches, patch-check, patches, update, list-updates, dist-upgrade
  • interrogazione
    search, info, what-provides, list-updates, patch-check, patches, packages, patterns, products
  • blocco
    locks, addlock, removelock, cleanlocks
  • utilità
    verify, install-new-recommends
  • altro
    help, licenses, versioncmp, targetos

Stampare a video la guida

Per prima cosa, è utile sapere come ricevere aiuto. Per stampare a video la guida generale (lista dei comandi e opzioni globali), digita solo zypper senza alcuna opzione o argomento. Per stampare la guida per un comando specifico, usa:

# zypper [command] --help

Nota che, per praticità, è anche possibile usare -h al posto di --help come opzione.

Gestione dei repository

Puoi specificare i repository esistenti per mezzo dei numeri ad essi associati nell'elenco generato da zypper lr, tramite i corrispettivi alias, o gli indirizzi URI. Quando usi i numeri, assicurati sempre di controllare prima con zypper lr, poiché il numero potrebbe cambiare dopo alcune modifiche fatte alla lista dei repository.

Elenco dei repository impostati

repos o lr

Output d'esempio (i comandi lanciati da root probabilmente visualizzeranno l'output in inglese):

$ zypper lr
# | Alias                 | Nome                  | Abilitato | Aggiornamento
--+-----------------------+-----------------------+-----------+--------
1 | packman               | Packman 11.1          | Sì        | No
2 | fate                  | fate                  | No        | No
3 | openSUSE-11.1-Updates | Updates for 11.1      | Sì        | Sì
4 | repo-oss              | openSUSE-11.1-Oss     | Sì        | No
5 | repo-non-oss          | openSUSE-11.1-Non-Oss | Sì        | No
6 | repo-debug            | openSUSE-11.1-Debug   | No        | No
# zypper lr 5 4
Alias          : openSUSE-11.3-Non-Oss
Name           : openSUSE-11.3-Non-Oss
URI            : http://download.opensuse.org/distribution/11.3/repo/non-oss/
Enabled        : Yes
Priority       : 99
Auto-refresh   : Off
Keep Packages  : Off
Type           : yast2
GPG Check      : On
GPG Key URI    :
Path Prefix    : /
Parent Service :
MD Cache Path  : /var/cache/zypp/raw/openSUSE-11.3-Non-Oss

Alias          : openSUSE-11.3-Oss
Name           : openSUSE-11.3-Oss
URI            : http://download.opensuse.org/distribution/11.3/repo/oss/
Enabled        : Yes
Priority       : 99
Auto-refresh   : Off
Keep Packages  : Off
Type           : yast2
GPG Check      : On
GPG Key URI    : 
Path Prefix    : /
Parent Service :
MD Cache Path  : /var/cache/zypp/raw/openSUSE-11.3-Oss

Altri esempi:

 zypper lr -u       # per includere anche gli URI dei repository nella tabella
 zypper lr -d       # per includere molte altre proprietà dei repository nella tabella
 zypper lr -P       # per includere anche la priorità dei repository e ordinare la lista secondo tale parametro
 zypper lr -e my    # esporta tutte le definizioni dei repository nel file ''my.repo''

Aggiungere i Repository

addrepo o ar

Prima che qualunque pacchetto possa essere installato, deve essere impostato almeno un repository. Per aggiungere un repository, usa il comando addrepo:

Output d'esempio:

Adding repository 'vlc' [done]
Repository 'vlc' successfully added
Enabled: Yes
Autorefresh: No
URI: http://download.videolan.org/pub/vlc/SuSE/11.1

Altri esempi:

zypper ar http://download.opensuse.org/repositories/X11:/XGL/openSUSE_11.1/X11:XGL.repo  # via file .repo
zypper ar -c ftp://some.download.site myalias   # controlla il repository prima di aggiungerlo
zypper ar mia/dir/con/rpm locale                # aggiunge come repository una directory locale contenente file rpm

Consulta anche Libzypp per l'elenco dei supporti di installazione (o media nella versione inglese) e degli URI supportati.

Aggiornare i Repository

refresh o ref

Dopo aver aggiunto un repository o quando un repository diventa vecchio, deve essere aggiornato (ovvero rinfrescato, in base alla terminologia usata da libzypp). Questo significa effettuare il download dei metadati dei pacchetti e pre-processare i dati nella cache .solv, per poterne fare poi una lettura veloce.

# zypper refresh
Downloading repository 'Packman 11.1' metadata [done]
Building repository 'Packman 11.1' cache [done]
Downloading repository 'Updates for 11.1' metadata [done]
Building repository 'Updates for 11.1' cache [done]
Repository 'openSUSE-11.1-Oss' is up to date.
All repositories have been refreshed.

Se autorefresh è abilitato per un repository, non devi preoccuparti per l'aggiornamento, in quanto quest'ultimo avviene automaticamente quando richiesto. Comunque, alcune persone preferiscono avere il controllo di quando effettuare l'aggiornamento (p.es. per evitare di attendere che termini l'aggiornamento quando vuoi solo vedere il risultato di "zypper info krusader"), così disabilitano l'autorefresh. Guarda man zypper per maggiori dettagli.

Altri esempi:

zypper ref packman main  # puoi anche specificare quali repository aggiornare
zypper ref -f upd        # forza l'aggiornamento del repository "upd"

Rimuovere i repository

removerepo o rr

# zypper rr vlc 1 23 foo
Repository 23 not found by alias, number or URI.
Repository foo not found by alias, number or URI.
Removing repository 'repo-debug' [done]
Repository 'repo-debug' has been removed.
Removing repository 'vlc' [done]
Repository 'vlc' has been removed.

Modificare i repository

modifyrepo o mr

Disabilita il repository n.6:

# zypper mr -d 6
Repository 'repo-non-oss' has been sucessfully disabled.

Abilita aggiornamento automatico (autorefresh) e memorizzazione su disco (caching) dei file rpm per il repository 'packman' e imposta la sua priorità a 70:

# zypper mr -rk -p 70 packman
Autorefresh has been enabled for repository 'packman'.
RPM files caching has been enabled for repository 'packman'.
Repository 'packman' priority has been set to 70.

Disabilita il salvataggio su cache (caching) dei file RPM per tutti i repository:

# zypper mr -Ka
Nothing to change for repository 'local'.
RPM files caching has been disabled for repository 'packman'.
Nothing to change for repository 'fate'.
Nothing to change for repository 'upd'.
Nothing to change for repository 'repo-oss'.
Nothing to change for repository 'repo-non-oss'.

Abilita il salvataggio su cache (caching) dei file rpm per tutti i repository:

# zypper mr -ka
RPM files caching has been enabled for repository 'repo-non-oss'.
RPM files caching has been enabled for repository 'Main Repository (OSS)'.
RPM files caching has been enabled for repository 'Main Repository (NON-OSS)'.
RPM files caching has been enabled for repository 'openSUSE-11.1-Updates'.

Rinominare i Repository

namerepo o nr

# zypper nr 3 upd
Repository 'openSUSE-11.1-Updates' renamed to 'upd'.

Questo comando è attualmente in grado di cambiare l'alias del repository. Se desideri cambiare il nome visualizzato del repository, dai uno sguardo al comando mr.

Mantieni gli alias semplici e brevi per usarli con facilità come argomenti dei comandi e delle opzioni --repo. L'utilizzo di un alias è più sicuro che usare il numero di repository (dato che può cambiare ed è facile confondersi) e più semplice che servirsi degli URI (dato che sono lunghi, costringendo a ricorrere al copia e incolla).

Importare ed esportare i repository

repos --export oppure lr -e

Puoi esportare la lista completa dei repository in un file e importarla successivamente su un'altra macchina.

# zypper lr --export backups/repos/foo.repo
# zypper ar backups/repos/foo.repo

Gestione pacchetti

Selezionare i Pacchetti

Ci sono diversi modi con cui è possibile scegliere i pacchetti per l'installazione o la rimozione.

  • in base al nome della capacità (capability, in breve il nome della funzionalità richiesta)
    zypper in eclipse
    zypper in qt
  • in base al nome della capacità o all'architettura o alla versione, o a combinazioni di questi tre parametri
    zypper in 'zypper<0.12.10'
    zypper in zypper.i586=0.12.11
  • in base al nome esatto del pacchetto (--name)
    zypper in -n ftp
  • in base al nome esatto del pacchetto e al repository (implica --name)
    zypper in factory:zypper
  • in base al nome del pacchetto usando i caratteri jolly
    zypper in yast*ftp*
  • specificando un pacchetto .rpm da installare

Installare i Pacchetti

install o in

Puoi installare i pacchetti in base al nome...

# zypper install git
Reading installed packages...

The following NEW packages are going to be installed:
  subversion-perl sqlite3 perl-DBD-SQLite git-svn git-cvs git


Overall download size: 1.1 M. After the operation, additional 4.6 M will be used.
Continue? [YES/no]:
Downloading package subversion-perl-1.5.0-96.1.x86_64 (1/6), 950.0 K (4.1 M unpacked)
Downloading: subversion-perl-1.5.0-96.1.x86_64.rpm [done]
Installing: subversion-perl-1.5.0-96.1 [done]
Downloading package sqlite3-3.5.7-17.1.x86_64 (2/6), 30.0 K (40.0 K unpacked)
Downloading: sqlite3-3.5.7-17.1.x86_64.rpm [done]
Installing: sqlite3-3.5.7-17.1 [done]
Downloading package perl-DBD-SQLite-1.14-41.1.x86_64 (3/6), 44.0 K (103.0 K unpacked)
Downloading: perl-DBD-SQLite-1.14-41.1.x86_64.rpm [done]
Installing: perl-DBD-SQLite-1.14-41.1 [done]
Downloading package git-svn-1.5.4.5-26.1.x86_64 (4/6), 66.0 K (195.0 K unpacked)
Downloading: git-svn-1.5.4.5-26.1.x86_64.rpm [done]
Installing: git-svn-1.5.4.5-26.1 [done]
Downloading package git-cvs-1.5.4.5-26.1.x86_64 (5/6), 63.0 K (205.0 K unpacked)
Downloading: git-cvs-1.5.4.5-26.1.x86_64.rpm [done]
Installing: git-cvs-1.5.4.5-26.1 [done]
Downloading package git-1.5.4.5-26.1.x86_64 (6/6), 10.0 K (3.0 K unpacked)
Downloading: git-1.5.4.5-26.1.x86_64.rpm [done]
Installing: git-1.5.4.5-26.1 [done]

...o alla capacità (capability) che forniscono:

# zypper in MozillaFirefox \< 3
Reading installed packages...
'MozillaFirefox' providing 'MozillaFirefox<3' is already installed.
Nothing to do.
# zypper in MozillaFirefox \>= 3
Reading installed packages...

The following packages are going to be upgraded:
  mozilla-xulrunner190-translations MozillaFirefox mozilla-xulrunner190-gnomevfs
mozilla-xulrunner190 MozillaFirefox-translations


The following package is going to be REMOVED:
  mozilla-xulrunner190-lang


Overall download size: 11.0 M. After the operation, 12.9 M will be freed.
Continue? [Y/n/p/?]:
# zypper in 'libqtiff.so()(64bit)'
Reading installed packages...
'libqt4-x11' providing 'libqtiff.so()(64bit)' is already installed.
Nothing to do.

Altri esempi:

zypper in yast*                     # installa tutti i moduli di Yast
zypper in -t pattern lamp_server    # installa il modello (''pattern'') "lamp_server" (i pacchetti necessari per un server LAMP)
zypper in emacs pattern:lamp_server # installa il pacchetto emacs e il pattern lamp_server
zypper in vim -emacs                # installa vim e rimuovi emacs in un sol colpo
zypper in amarok packman:libxine1   # installa libxine1 da packman e amarok da qualunque repository
zypper in bitchx-1.1-81.x86_64.rpm  # installa l'rpm di bitchx dalla directory locale
zypper in -f subversion             # forza la reinstallazione di subversion

Rimuovere i Pacchetti

remove o rm

Il comando remove è molto simile al comando di installazione, ad eccezione del fatto che produce l'effetto contrario :O)

# zypper remove sqlite
Reading installed packages...

The following packages are going to be REMOVED:
  sqlite3 perl-DBD-SQLite git-cvs git


After the operation, 351.0 K will be freed.
Continue? [YES/no]: n

Pacchetti sorgente e dipendenze di build

source-install o si

# zypper si zypper
Reading installed packages...

The following NEW packages are going to be installed:
  libzypp-devel libsatsolver-devel


The following source package is going to be installed:
  zypper


Overall download size: 1.5 M. After the operation, additional 6.7 M will be used.
Continue? [YES/no]:

Puoi anche installare solo le dipendenze di build o solo i pacchetti sorgente:

zypper si -D zypper    # solo i pacchetti sorgente (senza dipendenze di build)
zypper si -d zypper    # solo le dipendenze di ''build'' (senza pacchetti sorgente)

Aggiornare i Pacchetti

update o up

I seguenti comandi servono ad aggiornare i pacchetti alle loro versioni disponibili più recenti. Vedi anche il paragrafo gestione degli aggiornamenti per maggiori informazioni.

zypper up                           # aggiorna tutti i pacchetti installati con la versione più recente, per quanto possibile,
zypper up libzypp zypper            # aggiorna ''libzypp'' e ''zypper''
zypper in sqlite3                   # aggiorna ''sqlite3'' o lo installa se non ancora presente

Interrogazione

Ricercare i Pacchetti

search o se

Per impostazione predefinita, il comando search ricerca i pacchetti di ogni tipo, stato o repository, i cui nomi contengano la stringa specificata (il confronto ignora la differenza tra maiscule e minuscle, non essendo case-sensitive):

# zypper se sqlite
Reading installed packages...

S | Name                     | Summary                                                        | Type
--+--------------------------+----------------------------------------------------------------+--------
  | libapr-util1-dbd-sqlite3 | DBD driver for SQLite 3                                        | package
i | libgda-3_0-sqlite        | Sqlite Provider for GNU Data Access (GDA)                      | package
  | libqt4-sql-sqlite        | Qt 4 sqlite plugin                                             | package
i | libsqlite3-0             | Shared libraries for the Embeddable SQL Database Engine        | package
  | libsqlite3-0-32bit       | Shared libraries for the Embeddable SQL Database Engine        | package
  | mediatomb-sqlite         | UPnP AV MediaServer                                            | package
i | mono-data-sqlite         | Database connectivity for Mono                                 | package
  | pdns-backend-sqlite2     | SQLite 2 backend for pdns                                      | package
  | pdns-backend-sqlite3     | SQLite 3 backend for pdns                                      | package
i | perl-DBD-SQLite          | The DBD::SQLite is a self contained RDBMS in a DBI driver      | package
i | php5-sqlite              | PHP5 Extension Module                                          | package
  | python-sqlite2           | Python bindings for sqlite 2                                   | package
  | qt3-sqlite               | SQLite Database Plug-In for Qt                                 | package
  | rekall-sqlite            | Rekall sqlite Database Backend                                 | package
  | rubygem-sqlite3          | A Ruby interface for the SQLite3 database engine               | package
i | sqlite2                  | Embeddable SQL Database Engine                                 | package
  | sqlite2-32bit            | Embeddable SQL Database Engine                                 | package
  | sqlite2-devel            | Embeddable SQL Database Engine                                 | package
i | sqlite3                  | Embeddable SQL Database Engine                                 | package
  | sqlite3-devel            | Embeddable SQL Database Engine                                 | package
  | sqlite3-tcl              | Tcl binding for SQLite                                         | package
  | tntdb1-sqlite            | Tntdb is a c++-class-library for easy database-access - sqlite | package
  | ulogd-sqlite             | SQLite output plugin for ulogd                                 | package

La lettera i nella prima colonna indica che il pacchetto è già installato sulla macchina locale. Per vedere tutte le versioni disponibili dei pacchetti corrispondenti, usa l'opzione "--details/-s":

# zypper search -s --match-exact virtualbox-ose
Reading installed packages...

S | Name           | Type    | Version    | Arch   | Repository
--+----------------+---------+------------+--------+------------------------------------
v | virtualbox-ose | package | 1.6.2-2.1  | x86_64 | VirtualBox OSE
i | virtualbox-ose | package | 1.5.6-33.1 | x86_64 | openSUSE-11.1-Oss
v | virtualbox-ose | package | 1.5.6-20.5 | x86_64 | VirtualBox OSE (
v | virtualbox-ose | package | 1.6.2-2.1  | i586   | VirtualBox OSE
v | virtualbox-ose | package | 1.5.6-33.1 | i586   | openSUSE-11.1-Oss
v | virtualbox-ose | package | 1.5.6-20.3 | i586   | VirtualBox OSE

La lettera i nella prima colonna indica che il programma selezionato è già installato sulla macchina locale, mentre la lettera v nella prima colonna indica che sono disponibili altre versioni del prodotto installato sulla macchina locale.

Altri esempi:

zypper se -dC --match-words RSI   # cerca l'acronimo RSI (in modfo case-sensitive, sensibile alle maiuscole), anche nel sommario e nella descrizione
zypper se 'yast*'                 # visualizza tutti i pacchetti che cominciano con 'yast' (attenzione all'espansione di shell, in caso di dubbi proteggi le stringhe con le virgolette!)
zypper se -r packman              # elenca tutti i pacchetti dal repository packman
zypper se -i sqlite               # mostra tutti i pacchetti installati i cui nomi contengolo la parola 'sqlite'
zypper se -t pattern -r repo-oss  # elenca tutti i modelli (''pattern'') disponibili nel repository 'repo-oss'
zypper se -t product              # elenca tutti i prodotti disponibili

Ottenere informazioni sui pacchetti

info o if

zypper info amarok

Reading installed packages...


Information for package amarok:

Repository: Packman 11.1
Name: amarok
Version: 1.4.9.1-103.pm.1
Arch: x86_64
Vendor: packman.links2linux.de
Installed: Yes
Status: up-to-date
Installed Size: 12.1 M
Summary: Media Player for KDE
Description:
Amarok is a media player for all kinds of media, supported by aRts, GStreamer
or Xine (depending on the packages you install). This includes MP3, Ogg
Vorbis, audio CDs and streams.
It also supports audio effects of all kinds that are provided by aRts.
Playlists can be stored in .m3u or .pls files.

Amarok also provides audio file collection management, by using either an
embedded sqlite3, a MySQL or a PostgreSQL database.

Questo comando visualizza informazioni dettagliate sul pacchetto che si chiama 'amarok'.

Altri esempi:

zypper info -t patch MozillaFirefox    # mostra informazioni sulla patch 'MozillaFirefox'
zypper patch-info MozillaFirefox       # lo stesso di sopra
zypper info -t pattern lamp_server     # mostra informazioni sul modello (''pattern'') 'lamp_server'
zypper info -t product openSUSE-FTP    # mostra informazioni sul prodotto specificato

Dipendenze

what-provides o wp

Per elencare tutti fornitori di una specificata capacità (funzionalità di pacchetto, nella versione inglese capabilty), usa:

# zypper wp firefox
Reading installed packages...
S | Name           | Type    | Version     | Arch   | Repository
--+----------------+---------+-------------+--------+------------------
i | MozillaFirefox | package | 3.0-0.1     | x86_64 | Updates for 11.1
v | MozillaFirefox | package | 2.9.95-25.1 | x86_64 | openSUSE-11.1-Oss
v | MozillaFirefox | package | 3.0-0.1     | i586   | Updates for 11.1
v | MozillaFirefox | package | 2.9.95-25.1 | i586   | openSUSE-11.1-Oss

Questo comando è simile a rpm -q --whatprovides firefox, ma rpm è solo in grado di interrogare il database RPM (il database dei pacchetti installati). Zypper, al contrario, ti informerà dei fornitori che rendono disponibile quella capacità da ogni repository, non solo da quelli installati.

Altre Interrogazioni

I comandi patches, packages, patterns e products sono simili a search -s -t [patch,package,pattern,product], ad eccezione del fatto che visualizzano alcune informazioni aggiuntive specifiche del corrispondente tipo di pacchetto. Per esempio patches mostra anche lo stato delle patch (Needed/Security/Not Applicable).

I comandi list-updates e patch-check sono discussi nel paragrafo sulla gestione degli aggiornamenti.

Pacchetti bloccati

locks o ll addlock o al removelock o rl cleanlocks or cl

Il blocco dei pacchetti serve allo scopo di prevenire cambiamenti ai pacchetti nel sistema. Ai pacchetti cui si applica un blocco attivo non è possibile cambiare il proprio stato di installazione; pacchetti installati non possono essere rimossi o aggiornati, pacchetti non ancora installati non possono essere installati.

Per bloccare tutti i pacchetti che cominciano con yast2, usa:

# zypper al 'yast2*'
Reading installed packages...
Specified lock has been successfully added.

Di nuovo, fai attenzione all'espansione di shell, usa le virgolette se c'è la possibilità che a yast* corrispondano qualche file o directory nella directory di lavoro.

Per elencare i blocchi correntementi attivi:

# zypper ll
# | Name             | Type    | Repository
--+------------------+---------+-----------
1 | libpoppler3      | package | (any)
2 | libpoppler-glib3 | package | (any)
3 | yast*            | package | (any)

Per rimuovere un blocco, usa:

# zypper rl yast2-packager
Reading installed packages...
The following query locks some of the objects you want to unlock:

type: package
match_type: glob
case_sensitive: on
solvable_name: yast2*

Do you want remove this lock? [YES/no]: y
Lock count has been succesfully decreased by: 1

Altri esempi:

zypper al zypper                   # blocca il pacchetto 'zypper' (corrispondenza esatta)
zypper al -r repo-oss virtualbox*  # limita il blocco al repository 'repo-oss' (consente l'installazione da altri repo)
zypper rl 3                        # rimuove il blocco in base al numero

Puoi agire sui blocchi modificando direttamente il file dei blocchi.

Utilità

Verificare le dipendenze

verify o ve

Occasionalmente può succedere di ritrovarsi con il sistema che presenti dei problemi per quanto concerne le dipendenze dei pacchetti. Se qualcuna delle tue applicazioni fallisce l'avvio con un messaggio che indica la mancanza di qualcosa, questo è allora un problema da verificare con zypper:

$ rpm -e --nodeps mozilla-xulrunner190 $ firefox
Could not find compatible GRE between version 1.9.0 and 1.9.0.
# zypper ve
Reading installed packages...
Some of the dependencies of installed packages are broken. In order to fix these dependencies, the following actions need to be taken:

The following NEW package is going to be installed:
  mozilla-xulrunner190


Overall download size: 6.5 M. After the operation, additional 23.5 M will be used.
Continue? [YES/no]: y

Installare i nuovi pacchetti raccomandati

install-new-recommends or inr

Questo comando rileva e installa i pacchetti raccomandati aggiunti recentemente per i pacchetti che hai già installato. Questo fornisce un modo semplice per ottenere nuovi pacchetti di traduzione per il proprio software o driver per l'hardware recentemente aggiunto.

# zypper inr
Reading installed packages...

The following NEW packages are going to be installed:
  kdebase4-openSUSE-lang bundle-lang-common-cs


Overall download size: 534.0 K. After the operation, additional 1.9 M will be used.
Continue? [YES/no]:

Controllo dei processi

ps

This command shows processes that use files deleted by recent package upgrades or removal

There are some running programs that use files deleted by recent upgrade. You may wish to restart some of them. Run 'zypper ps' to list these programs.
# zypper ps
The following running processes use deleted files:

PID   | PPID  | UID  | Login | Command       | Service | Files
------+-------+------+-------+---------------+---------+--------------------------------
10604 | 10603 | 1000 | geeko | chrome        |         | /usr/share/mime/mime.cache
      |       |      |       |               |         | /usr/share/mime/mime.cache
15304 | 3195  | 1000 | geeko | kio_thumbnail |         | /var/tmp/kdecache-geeko/ksycoca4
      |       |      |       |               |         | /var/tmp/kdecache-geeko/ksycoca4

You may wish to restart these processes.
See 'man zypper' for information about the meaning of values in the above table.

Gestione aggiornamenti

Ci sono due approcci per mantenere il sistema sempre aggiornato. Il primo è basato su patch, il secondo basato su pacchetti.

L'approccio basato su patch è particolarmente utile per le persone che usano il rilascio stabile e vogliono aggiornare i loro sistemi con le patch rilasciate attraverso i repository di aggiornamento online. I repository di aggiornamento vengono aggiunti durante l'installazione o l'aggiornamento del sistema, oppure possono essere aggiunti attraverso la Configurazione Aggiornamenti in linea dalla scheda Gestione pacchetti nel Centro di controllo di YaST, o manualmente usando zypper. Qui è disponibile l'elenco dei repository di aggiornamento di openSUSE disponibili.

La funzione di YaST equivalente è data dal modulo Aggiornamenti in linea.

Il secondo tipo, quello basato su pacchetti, è descritto nella sezione Aggiornamento pacchetti ed è usato per l'aggiornamento globale dei pacchetti forniti da ogni repository, alle loro versioni recenti.

Elencare le patch necessarie

list-patches o lp

Per elencare tutte le patch necessarie, usa:

# zypper lp
Reading installed packages...
Patches

Repository       | Name               | Version | Category    | Status
-----------------+--------------------+---------+-------------+-------
Updates for 11.1 | KDE4-fixes         | 38      | recommended | Needed
Updates for 11.1 | MozillaFirefox     | 50      | recommended | Needed
Updates for 11.1 | NetworkManager-kde | 49      | recommended | Needed

A volte sono elencati solo gli aggiornamenti che riguardano il sistema di gestione dei pacchetti, in quanto questi devono essere applicati per primi. Una volta applicati, saranno elencati da questo comando il resto degli aggiornamenti disponibili.

Questo comando è equivalente a zypper up -t patch noto dalle precedenti versioni di zypper. Per elencare tutti gli aggiornamenti di pacchetto disponibili, usa:

# zypper lu

Applicare le patch

patch

Per applicare le patch necessarie, usa:

# zypper patch
Reading installed packages...

The following packages are going to be upgraded:
  NetworkManager-kde mozilla-nss mozilla-nspr kde4-korganizer


The following NEW patches are going to be installed:
  NetworkManager-kde MozillaFirefox KDE4-fixes


Overall download size: 2.9 M. After the operation, additional 283.0 K will be used.
Continue? [YES/no]:

Elencare tutte le patch

patches

Il comando list-updates elenca solo le patch necessarie. Per elencare tutte le patch disponibili, usa:

# zypper patches
Reading installed packages...
Catalog          | Name               | Version | Category    | Status
-----------------+--------------------+---------+-------------+---------------
Updates for 11.1 | KDE4-fixes         | 38      | recommended | Installed
Updates for 11.1 | MozillaFirefox     | 50      | recommended | Installed
Updates for 11.1 | NetworkManager-kde | 49      | recommended | Installed
Updates for 11.1 | autoyast2          | 37      | recommended | Installed
Updates for 11.1 | courier-authlib    | 42      | security    | Not Applicable
Updates for 11.1 | insserv            | 47      | recommended | Installed
Updates for 11.1 | opera              | 43      | security    | Installed

Controllo delle patch

patch-check

Questo comando riporterà se ci sono importanti patch disponibili per il sistema e il numero di tali patch:

# zypper pchk
Reading installed packages...
0 patches needed (0 security patches)

Ottenere informazioni sulle Patch

patch-info
info -t patch

# zypper info -t patch MozillaFirefox
Reading installed packages...


Information for patch MozillaFirefox:

Name: MozillaFirefox
Version: 50
Arch: noarch
Vendor: maint-coord@suse.de
Status: Installed
Category: recommended
Created On: Thu 01 Jan 1970 01:00:00 AM CET
Reboot Required: No
Package Manager Restart Required: No
Interactive: No
Summary: Mozilla Firefox 3.0
Description:
This patch updates Mozilla Firefox to the final 3.0 version.

The dependend libraries mozilla-xulrunner190, mozilla-nspr
and mozilla-nss were also brought to their release version.

Aggiornamenti di pacchetto

list-updates or lu
update or up

Per aggiornare semplicemente i pacchetti installati con le loro versioni più recenti disponibili, eseguire:

# zypper up

Puoi ottenere l'elenco degli aggiornamenti disponibili con:

# zypper lu

I comandi qui sopra elencheranno o aggiorneranno solo quei pacchetti i cui aggiornamenti non hanno problemi di dipendenze. Per ottenere l'elenco dei pacchetti con le versioni più recenti rispetto a quelli installati, esegui:

# zypper lu -a

Questo elencherà tutti gli aggiornamenti candidati, indipendentemente dal fatto che siano installabili o meno, o che abbiano bisogno dell'intervento dell'utente per risolvere alcuni problemi.

Aggiornamento di distribuzione (Upgrade)

dist-upgrade or dup

Questo comando usa l'algoritmo di upgrade della distribuzione, che gestisce suddivisioni di pacchetti, pacchetti non mantenuti, e altre situazioni del genere. Usalo per passare ad un differente rilascio della distribuzione.

# zypper dup

Durante un aggiornamento di distribuzione (dist-upgrade) si raccomanda di abilitare solo il repository principale della distribuzione che si desidera installare più alcuni importanti repository che si stavano utilizzando (meglio ancora: la loro versione deve essere corrispondente alla versione del Repository principale). Puoi ottenere ciò disabilitando i vecchi repository con il comando zypper mr -da; aggiungere i nuovi repository per mezzo di zypper ar e ottenere l'ultima release con zypper dup. È inoltre possibile specificare i repository che devono essere utilizzati tramite l'opzione --repo: zypper dup -r repo1 -r repo2 ....

Domanda: È vero che "zypper up" aggiorna i pacchetti solo quando una nuova versione è disponibile nello stesso repository del vecchio pacchetto e "zypper dup" aggiorna qualsiasi cosa, indipendentemente dal repository in cui si trovi il nuovo pacchetto?

Risposta: "zypper up" aggiorna il pacchetto se una nuova versione è disponibile ma non cambierà il fornitore (Nota: L'intero build service attualmente ha lo stesso fornitore). "zypper dup" cercherà di sincronizzare i pacchetti correntemente installati con quelli disponibili da tutti i repository che hai abilitato. Questo significa che effettuerà anche il downgrade dei pacchetti se la versione installata è più recente di quella disponibile nel repository.


Usare zypper in script e applicazioni

Zypper supporta diverse opzioni globali che lo rendono adatto per l'uso all'interno di processi automatizzati, come gli script. Inoltre, numerosi dei differenti codici di output, elencati nella pagina di manuale di zypper, possono essere controllati durante l'utilizzo di zypper in un processo automatizzato.

Modalità non interattiva

--non-interactive

In questa modalità zypper non richiede l'intervento dell'utente e per eventuali risposte utilizza quelle di default. Quando si utilizza questa opzione si è certi che zypper non stallerà per chiedere una risposta dallo standard input, o in un loop infinito.

Per esempio, per aggiornare il tuo sistema automaticamente senza conferme, puoi digitare:

# zypper --non-interactive update

Questo comando non richiede la conferma da parte dell'utente per procedere con l'aggiornamento, salta tutte le patch interattive che avrebbero bisogno di ulteriori conferme e inoltre risponde automaticamente a tutte le altre richieste.

Modalità senza verifica GPG

--no-gpg-checks

Se viene usata questa opzione, zypper sceglierà sempre di continuare se qualche verifica gpg fallisce, per esempio un file di un repository non è firmato e dovrebbe esserlo, un file è firmato e il controllo gpg fallisce, ecc.

Accetta automaticamente le licenze

--auto-agree-with-licenses

Questa è un'opzione speciale per i comandi install, remove e update. Usandola l'utente dichiara che accetta i termini di licenza per quanto il comando installerà, e zypper risponderà automaticamente 'sì' alla richiesta di conferma della licenza. Questa opzione è utile per coloro che installano lo stesso insieme di pacchetti su più macchine (con un procedimento automatico) e hanno precedentemente letto tutte le licenze.

Output silenzioso

--quiet

Evita la visualizzazione di eccessivo testo di output, come le informazioni sul progresso, e visualizza solo il risultato dell'operazione e i messaggi di errore.

Output XML

--xmlout

Questa opzione "fa parlare" zypper in XML. Permette agli script, alle interfacce grafiche o ad altri tipi di applicazioni, che desiderano utilizzare zypper, di analizzare l'output di zypper in una modalità standard e ben definita. Lo schema RNC dell'output XML di zypper è disponibile qui e sotto /usr/share/zypper/xml/xmlout.rnc.

Non tutto, ma la maggior parte dell'output è attualmente disponibile in XML; l'obiettivo è di avere tutto l'output possibile in XML.

Richieste

Quello che segue mira ad essere l'elenco completo di casi in cui zypper necessita di interagire con l'utente, insieme alle risposte usate nella modalità non-interattiva. Tutte le opzioni aggiuntive menzionate qui hanno priorità più elevata rispetto a --non-interactive, quindi, se queste vengono usate, le risposte da esse implicate vengono usate automaticamente anche se non si fa uso di--non-interactive.

Richieste relative a GPG

Quando si applica l'opzione --no-gpg-checks, viene visualizzato un messaggio oppure viene scritto un avviso sullo standard error e nel file di log (registro).

richiesta risposta predefinita con --no-gpgp-checks nota
accettare file non firmati? N S
accettare la nuova chiave (rifiutare la chiave, fidarsi temporaneamente, fidarsi definitivamente? [r/t/a]) R R una nuova chiave può essere resa affidabile o importata solo in modalità interattiva
accettare la chiave sconosciuta? N S
verifica del file firmato fallita, continuare? N S
nessun sommario disponibile per un file, continuare? N S
accettare il sommario sconosciuto? N S

Altre richieste

richiesta risposta predefinita altra risposta nota
procedere con l'installazione/rimozione/aggiornamento? S in aggiunta, l'opzione --no-confirm può essere usata con i comandi install/remove/update anche senza l'opzione globale --non-interactive
conferma licenza di terze parti N S se si utilizza --auto-agree-with-licenses in aggiunta, per l'aggiornamento di zypper, l'opzione --skip-interactive può essere usata per escludere le patch interattive dall'elenco delle cose da installare (to-be-installed list, un'eredità di rug)
confermare un messaggio di patch S
problema durante l'installazione/rimozione di un risolvibile, Interrompi/Riprova/Ignora? INTERROMPI è brutto e si può migliorare in futuro
problema durante lo scaricamento di un pacchetto, Interrompi/Riprova/Ignora? INTERROMPI è brutto e si può migliorare in futuro
conflitto di dipendenze, #/s/r/c (numero della soluzione, salta, riprova, o annulla) c annulla sempre, è richiesto l'intervento dell'utente per risolvere le dipendenze
richiesta di cambiare il supporto INTERROMPI
rimuovere il blocco problematico? Y

Nell'output in XML le richieste all'utente sono indicate dal tag <prompt>, contenente l'attributo id. L'enumerazione di tutti gli id noti è disponibile nel file di include prompt.h, impacchettato con zypper (/usr/include/zypper/prompt.h).


Compatibilità con Rug

La sintassi di Zypper è simile a quella di Rug ma il suo corredo di comandi e opzioni ha cominciato a diversificarsi da quello di rug, così come il suo output e il suo comportamento. Comunque, zypper è in grado di lavorare anche in modalità compatibilità con rug e supporta la maggior parte dei comandi di rug. Per maggiori dettagli si veda man zypper, nella sezione "COMPATIBILITY WITH RUG", dedicata alla compatibilità con rug.


Vedi anche