Quando esegui l'aggiornamento yum, verrà scaricata l'ultima versione di tutti i pacchetti installati sul tuo sistema, e aggiornali all'ultima versione.
Potresti trovarti in una situazione in cui potresti non volere che yum aggiorni automaticamente uno (o più) pacchetti specifici.
In queste situazioni, usa l'opzione di esclusione yum come mostrato negli esempi seguenti.
1. Escludi un pacchetto singolo utilizzando l'opzione -x
Ad esempio, su questo sistema utilizziamo PHP 5.1 e l'applicazione php personalizzata in esecuzione su questo sistema non è ancora stata testata con altre nuove versioni di PHP.
# rpm -q php php-5.1.0-27.el6_5.x86_64
Quindi, in questo caso, quando eseguiamo un aggiornamento, vogliamo escludere solo un pacchetto specifico, che è php. Come vediamo di seguito, quanto segue indica che il pacchetto php verrà aggiornato alla versione 5.3.3 quando eseguiamo il comando 'yum update'.
# yum check-update php php.x86_64 5.3.3-40.el6_6 updates
Quanto segue escluderà un solo pacchetto (php) durante l'aggiornamento di yum.
# yum -x php update
2. Escludi più pacchetti usando l'opzione -x
Puoi escludere più pacchetti specificando più opzioni -x come mostrato di seguito:
yum -x php -x httpd update
Puoi anche escludere più di un pacchetto specificando l'elenco dei pacchetti separati da virgola. Quanto segue si comporterà esattamente come sopra.
yum -x php,httpd update
3. Escludi più pacchetti (ad es. pacchetti del kernel) utilizzando Wildcard
Nella maggior parte delle situazioni potresti non volere che yum update aggiorni automaticamente il kernel.
Prima di eseguire il vero aggiornamento di yum, puoi eseguire il check-update di yum, che visualizzerà tutti i pacchetti che aggiornerà durante l'aggiornamento di yum.
Come puoi vedere di seguito, in questo esempio, ci sono tre pacchetti relativi al kernel che verranno aggiornati da yum update.
# yum check-update | grep -i kernel kernel.x86_64 2.6.32-504.1.3.el6 updates kernel-firmware.noarch 2.6.32-504.1.3.el6 updates kernel-headers.x86_64 2.6.32-504.1.3.el6 updates
Invece di specificare tutti i nomi dei singoli pacchetti nell'elenco di esclusione -x, possiamo semplicemente usare i caratteri jolly del glob della shell come mostrato di seguito. Quanto segue escluderà tutti i pacchetti relativi al kernel che verranno aggiornati durante l'aggiornamento di yum.
yum -x kernel* update
4. Più elenchi di caratteri jolly nell'opzione -x
Puoi anche specificare più elenchi di caratteri jolly nell'opzione -x.
Come vedi di seguito, quanto segue indica che ci sono più pacchetti php che verranno aggiornati durante il prossimo aggiornamento di yum.
# yum check-update | grep -i php php.x86_64 5.3.3-40.el6_6 updates php-cli.x86_64 5.3.3-40.el6_6 updates php-common.x86_64 5.3.3-40.el6_6 updates php-xml.x86_64 5.3.3-40.el6_6 updates
Se vuoi escludere tutti i pacchetti relativi a php e kernel durante il prossimo aggiornamento di yum, puoi usare quanto segue. Tieni presente che dovresti usare " " in questo esempio.
yum -x 'php*' -x 'kernel*' update
5. Usando –exclude invece di -x
Puoi anche usare –exclude invece di -x come mostrato di seguito:
yum --exclude php update yum --exclude httpd update yum --exclude kernel update yum -exclude php*,httpd*,kernel* update
6. Escludi i pacchetti usando il file yum.conf
Invece di specificare i pacchetti da escludere nella riga di comando, puoi specificarli nel file /etc/yum.conf.
Ad esempio, per escludere tutti i pacchetti php, httpd e kernel da escludere dall'aggiornamento yum, aggiungi la seguente riga:
exclude=php* httpd* kernel*
Oppure, esegui il seguente comando:
echo "exclude=php* httpd* kernel*" >> /etc/yum.conf
7. Usa l'elenco separato da virgole
Puoi anche escludere più di un pacchetto specificando l'elenco dei pacchetti con caratteri jolly separati da virgola. Quanto segue si comporterà esattamente come sopra.
yum -x php*,kernel* update
Per essere coerenti con il modo in cui abbiamo mostrato gli altri esempi usando l'opzione -x sopra, puoi anche usare la virgola (anziché solo lo spazio) per separare i pacchetti multipli come mostrato di seguito:
# vi /etc/yum.conf exclude=php*,httpd*,kernel*
8. Escludi parametro all'interno del file repository personalizzato
Invece di specificare il parametro di esclusione nel file yum.conf principale, puoi anche specificarlo nel singolo file del repository.
Ad esempio, se hai installato mongodb, avrai mongodb.repo nella directory /etc/yum.repos.d. Puoi specificare l'elenco dei pacchetti di esclusione per il repository mongodb all'interno di questo file mongodb.repo.
# vi /etc/yum.repos.d/mongodb.repo exclude=mongo*
9. Simula Yum Exclude Check usando il check-update (Dry-run -x)
Puoi anche specificare l'opzione -x insieme a check-update. Questo ti aiuta a controllare se l'opzione -x che hai specificato nella riga di comando o nel file yum.conf funziona come previsto.
Ad esempio, quanto segue indica che il kernel verrà aggiornato durante l'aggiornamento yum.
# yum check-update | grep -i kernel kernel.x86_64 2.6.32-504.1.3.el6 updates kernel-firmware.noarch 2.6.32-504.1.3.el6 updates kernel-headers.x86_64 2.6.32-504.1.3.el6 updates
Quanto segue indica che il flag -x funzionerà come previsto poiché non ha restituito nulla nel risultato.
# yum -x kernel* check-update | grep -i kernel
Ad esempio, diciamo che la seguente riga di esclusione è presente nel file yum.conf.
# grep exclude /etc/yum.conf exclude=php*,httpd*,kernel*
Quindi, quanto segue indica che l'elenco di esclusione specificato nel precedente /etc/yum.conf funzionerà come previsto poiché il check-update non ha mostrato quei pacchetti (compreso il kernel) nell'output seguente.
# yum check-update | egrep 'php|httpd|kernel'
10. Ignora Escludi dal file yum.conf
Se ti piace disabilitare le esclusioni menzionate nel file yum.conf. ad esempio, se non vuoi che yum update consideri l'elenco di esclusione specificato nel file yum.conf, puoi utilizzare l'opzione –disableexcludes dalla riga di comando.
Nel nostro esempio precedente, abbiamo escluso i pacchetti php, httpd e kernel da aggiornare con l'aggiornamento yum.
Ma, se vuoi che yum ignori quell'elenco di esclusione (cioè disabiliti l'esclusione) e continui ad aggiornare php, httpd e kernel come parte del normale comando di aggiornamento yum, esegui quanto segue:
yum --disableexcludes=all update
Di seguito sono riportati i tre possibili valori che puoi specificare in disableexcludes
- tutto Disattiva tutto esclude
- main Disable esclude specificate nella sezione principale del file yum.conf
- repoid Disabilita le esclusioni specificate per l'ID repository specificato
Se vuoi disabilitare le esclusioni solo per un repository personalizzato specifico, puoi specificare l'id del repository (che è la prima colonna nel comando yum repolist come mostrato di seguito).
# yum repolist repo id repo name status mongodb MongoDB Repository 240 base CentOS-6 - Base 6,518 extras CentOS-6 - Extras 35 updates CentOS-6 - Updates 315
Quanto segue disabiliterà (ignorerà) l'elenco di esclusione specificato nel file mongodb.repo nella directory /etc/yum.repos.d.
yum --disableexcludes=mongodb update