SDB:Aggiornamento con cambio di fornitore

Questo articolo illustra il concetto di persistenza del fornitore e fornisce informazioni su come cambiare questo comportamento predefinito.

Introduzione

Versione: 11.2+Valida per openSUSE a partire dalla versione 11.2.

Il gestore dei pacchetti Zypp utilizza il concetto della persistenza di fornitore. Questo significa che, quando si aggiorna il proprio sistema, i pacchetti già installati non verranno aggiornati ad una versione più recente, se la versione più recente è resa disponibile da un fornitore diverso.

Vantaggi della persistenza di fornitore:

  • Quando si aggiorna, non si rischia di sostituire per errore versioni stabili di pacchetti installati con versioni sperimentali provenienti da un repository diverso.
  • Quando lo stesso pacchetto è presente in più di un repository, non si rischia di passare continuamente ad un diverso repository ogni volta che si esegue un aggiornamento.

Svantaggi della persistenza di fornitore:

  • Gli aggiornamenti che per risultare disponibili richiedono un cambio di venditore sono parzialmente nascosti in YaST.
  • Aggiornare o cambiare un pacchetto verso un nuovo fornitore richiede un po' di lavoro in più.
  • Ogni tanto il gestore dei pacchetti chiederà se si vuole consentire il cambio del fornitore, il che può risultare fastidioso, intimidire oppure confondere.

Eseguire aggiornamenti con cambio di fornitore

Qui si seguito si riportano i diversi metodi che si possono usare per eseguire aggiornamenti con cambio di fornitore.

Cambio di fornitore per il singolo pacchetto

Utilizzando YaST

Cercare il pacchetto che si intende aggiornare, trovarlo e quindi spostarsi nella scheda Versioni e selezionare la versione che si vuole installare.

Yast-vendor-package.png

Utilizzando Zypper

Installare il pacchetto con zypper specificando la versione che si desidera, per esempio:

zypper install 'gparted=0.15.0'

Oppure specificando un certo repository:

zypper install --from [repository] [pacchetto]

Cambio di fornitore per tutto il repository

Utilizzando YaST

Se si vogliono passare tutti i pacchetti installati alle versioni presenti in un repository specifico, aprire la scheda Repository, selezionare il repository desiderato e fare clic su Passa i pacchetti di sistema alle versioni in questo repository.

Yast-vendor-repo.png

Utilizzando Zypper

È possibile cambiare fornitore per tutti i pacchetti in un certo repository anche con zypper:

zypper dup --from [repository]

Consentire il cambio di fornitore in generale

Consentire il cambio di fornitore per alcuni repository

È possibile definire un elenco di repository con "vendors" (ovvero fornitori) differenti da considerare come equivalenti, creando un file nella directory /etc/zypp/vendors.d/ con un contenuto simile al seguente:

[main]

vendors = suse,opensuse,obs://build.suse.de,Packman,http://packman.links2linux.de
È possibile scoprire il fornitore con YaST (nella scheda "Versioni") oppure tramite la riga di comando "zypper if <pacchetto>".
  • Il file può avere un nome qualsiasi, ma a ogni file in questa directory corrisponde un gruppo di fornitori equivalenti.
  • Libzypp effettua un confronto fra stringhe (alla maniera di strncmp e case-insensitive), laddove vengono confrontate soltanto le parti iniziali delle stringhe, per esempio il fornitore "opensuse11.0" è confrontabile con "openSUSE".

Disabilitare la persistenza del fornitore

Volendo, è possibile disabilitare completamente la persistenza del fornitore. In questo caso il gestore dei pacchetti non chiederà il permesso per effettuare il cambio di fornitore per i pacchetti, inoltre durante l'aggiornamento verrà direttamente installato qualunque pacchetto abbia il numero di versione più elevato, indipendentemente dalla sorgente da cui provenga.

In /etc/zypp/zypp.conf impostare

solver.allowVendorChange = true

Da ora in poi zypper up installerà le versioni più recenti disponibili da qualsiasi fornitore. E YaST indicherà i pacchetti per i quali un aggiornamento è disponibile con caratteri di colore blu, anche se l'aggiornamento viene da un fornitore diverso.