D:Ho più repository yum sul mio sistema. Ad esempio, centos, epel, docker, mongo, ecc. Quando eseguo il comando yum update, i pacchetti installati da tutti i repository vengono aggiornati. Come posso escludere un repository specifico durante l'aggiornamento di yum?
R:Durante l'aggiornamento di yum, per escludere i pacchetti che appartengono a un repository specifico, utilizza uno qualsiasi dei due metodi spiegati in questo tutorial.
Inoltre, tieni presente che invece di escludere un intero repository, può anche escludere un pacchetto specifico:10 esempi di esclusione Yum per saltare i pacchetti per l'aggiornamento Yum di Linux (come escludere gli aggiornamenti del kernel Yum)
1. Ottieni elenco repository
Per visualizzare tutti i repository disponibili sul tuo sistema, esegui yum repolist come mostrato di seguito.
# yum repolist repo id repo name status base CentOS-6 - Base 6,575 extras CentOS-6 - Extras 62 updates CentOS-6 - Updates 1,622 dockerrepo Docker Repository 2 mongodb-org-3.0 MongoDB Repository 75 repolist: 8,336
Nell'esempio sopra, abbiamo quanto segue:
- I primi tre repository sopra elencati sono i principali repository CentOS:base, extra e aggiornamenti
- dockerrepo è un repository di terze parti che contiene pacchetti relativi ai container Docker
- mongodb-org-3.0 è un repository di terze parti che contiene pacchetti relativi a MongoDB.
Quando esegui l'aggiornamento come mostrato di seguito, aggiornerà tutti i pacchetti già installati sul tuo sistema all'ultima versione disponibile da tutti i repository sopra.
yum update
Se hai già installato mongodb sul tuo sistema e quando esegui il precedente "yum update", aggiornerà anche i pacchetti mongodb all'ultima versione.
Se non vuoi aggiornare mongodb quando esegui "yum update", dovresti escluderlo durante yum update come spiegato nella sezione seguente.
Inoltre, se vuoi sapere a quale repository appartiene un particolare pacchetto, in modo da poter escludere quel repository dall'aggiornamento, usa il comando yum info come mostrato di seguito.
yum info package-name | grep -i repo
Se non conosci il comando yum:15 esempi di comandi Yum per Linux:installazione, disinstallazione, aggiornamento dei pacchetti
2. Escludi un repository dall'aggiornamento di Yum (metodo 1)
Puoi usare l'opzione –disablerepo=nome-repository insieme a yum update. Questo non aggiornerà i pacchetti che appartengono al nome del repository specificato.
Nell'esempio seguente, yum update aggiornerà tutti i pacchetti installati ad eccezione di tutti i pacchetti installati che appartengono al repository MongoDB.
yum --disablerepo=mongodb-org-3.0 update
Puoi anche specificare l'opzione –disablerepo alla fine dopo l'aggiornamento di yum. Quanto segue escluderà i pacchetti che appartengono al repository Docker durante l'aggiornamento di yum.
yum update --disablerepo=dockerrepo
Puoi ottenere il nome esatto del repository che desideri escludere guardando la prima colonna dell'output del comando "yum repolist".
3. Escludi un repository dall'aggiornamento Yum utilizzando il parametro abilitato (metodo 2)
Invece di escludere un repository specifico dalla riga di comando di yum update, puoi escludere in modo permanente un pacchetto da yum update impostando il parametro abilitato su 0 nel file di configurazione del repository.
I file di configurazione del repository si trovano nella directory /etc/yum.repos.d come mostrato di seguito.
# ls -l /etc/yum.repos.d/ -rw-r--r--. 1 root root 1926 Jan 30 2016 CentOS-Base.repo -rw-r--r-- 1 root root 166 Feb 18 2016 docker.repo -rw-r--r-- 1 root root 142 Feb 5 2016 mongodb-org-3.0.repo .. ..
Per escludere il repository mongodb, apri il file del repository mongodb e imposta la modifica del valore di abilitato su 0 come mostrato di seguito.
# vi /etc/yum.repos.d/mongodb-org-3.0.repo [mongodb-org-3.0] name=MongoDB Repository baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/ gpgcheck=0 enabled=0
Ora, se esegui il repolist, non vedrai il repository MongoDB nell'output.
# yum repolist repo id repo name status base CentOS-6 - Base 6,575 extras CentOS-6 - Extras 62 updates CentOS-6 - Updates 1,622 dockerrepo Docker Repository 2 repolist: 8,261
Ciò significa anche che anche se sul tuo sistema sono installati pacchetti relativi a mongodb, quando esegui il seguente "yum update", i pacchetti mongodb non verranno più aggiornati.
yum update
4. Escludi più repository dalla riga di comando dell'aggiornamento di Yum
Puoi anche escludere più repository durante l'aggiornamento di yum specificando i repository delimitati da virgole come mostrato di seguito.
L'esempio seguente escluderà i repository MongoDB, Docker ed EPEL durante l'aggiornamento di yum.
yum update --disablerepo=mongodb-org-3.0,dockerrepo,epel
5. Abilita un repository per l'aggiornamento di Yum
Se hai disabilitato un repository impostando "enabled=0" nel file di configurazione del repository, puoi comunque includerlo durante il tuo "yum update" utilizzando l'opzione –enablerepo come mostrato di seguito.
L'esempio seguente includerà i pacchetti dal repository MongoDB durante "yum update" anche se questo repository è disabilitato nel file del repository nella directory /etc/yum.repos.d/.
yum update --enablerepo=mongodb-org-3.0
6. Combina EnableRepo e DisableRepo nell'aggiornamento Yum
Puoi anche diventare creativo combinando l'opzione enablerepo e disablerepo.
Ad esempio, il seguente comando yum update aggiornerà solo i pacchetti dal repository MongoDB.
yum update --disablerepo=* --enablerepo=mongodb-org-3.0
In quanto sopra:
- –disablerepo=* Indica che tutti i repository devono prima essere disabilitati e non essere presi in considerazione per l'aggiornamento yum
- –enablerepo=mongo Questo indica che solo il repository MongoDB dovrebbe essere considerato durante l'aggiornamento di yum (se combinato con l'opzione di disabilitazione sopra)