Avete mai avuto la necessità di trasformare un sistema da CentOS a Red Hat Enterprise Linux o viceversa?
Ho avuto questa necessità numerose volte; nel caso più semplice si è trattato di trasformare un ambiente di valutazione per qualche soluzione realizzata su CentOS in una Red Hat vera e propria alla fine della fase di test.
Nel caso opposto può essere utile per esempio per realizzare una copia speculare di un sistema già installato e agganciato alle subscription di Red Hat sul proprio portatile per questioni di sviluppo. Oppure perchè ci è semplicemente scaduta la subscription e non abbiamo la necessità del supporto Red Hat.
Come esempio prendiamo un sistema CentOS/RHEL 6.6 che desideriamo convertire. Ovviamente la procedura è identica anche se passiamo da una versione 6.3 ad una 6.6 durante la conversione.
Da Red Hat Enterprise Linux a CentOS
Questo caso è un po’ più semplice per due motivi; il primo è la possibilità di reperire su internet tutti i package necessari per l’installazione (non vi serve un account Red Hat con delle subscritpion valide) e sostanzialmente di andare a ridurre il numero di pacchetti installati rispetto ad un sistema Red Hat Enterprise Linux.
Per prima cosa dobbiamo rimuovere il package -release
dal sistema e sostituirlo con quello che ci interessa. In questo modo i comandi yum
saranno in grado di espandere le variabili necesssarie a recuperare i pacchetti necessari.
rpm -e --nodeps redhat-release-server-6Server yum -y install http://mirror.centos.org/centos/6/os/x86_64/Packages/centos-release-6-6.el6.centos.12.2.x86_64.rpm |
Nel caso di CentOS e Fedora, inoltre, il package che definisce la release di sistema contiene anche i file con le definizioni dei repository yum; semplificando utleriormente la conversione.
A questo punto non ci resta che allineare i pacchetti relativi al sistema che ci interessa. Yum si preoccuperà di fare il resto.
yum -y distro-sync reboot |
Se durante l’upgrade abbiamo fatto un importante salto di release (ad esempio da 6.3 a 6.6) è opportuno anche procedere con il reset dei contesti SELinux sul filesystem prima di riavviare:
fixfiles onboot |
Pulizia del sistema dopo la conversione
Prima di riavviare, possiamo procedere con un paio di accorgimenti ulteriori; per esempio rimuovere i pacchetti di Red Hat network (che non verranno più utilizzati):
yum -y remove rhn\* subscription\* yum-rhn-plugin |
O addirittura tutti i package non più presenti in nessun repository:
package-cleanup --orphans |
E sostiture la pagina iniziale di Firefox che ci suggerisce di registrare il nostro sistema a Red Hat Network:
rpm -e --nodeps redhat-indexhtml yum -y install http://mirror.centos.org/centos-6/6.6/os/x86_64/Packages/centos-indexhtml-6-2.el6.centos.noarch.rpm |
Per rimuovere i kernel rimanenti (compresi i package contenenti gli header del kernel, i moduli, ecc.) possiamo procedere con questo comando che farà pulizia di tutti i vecchi kernel eccetto quello corrente:
package-clenup -y --oldkernels --count=1 |
Da CentOS a Red Hat Enterprise Linux
La procedura inversa è leggeremente più semplice in merito ai comandi da digitare (molti package di CentOS continuano a fornire il vecchio nome Red Hat nei Provides:
ma decisamente più dispendiosa in termini di tempo; bisogna avere un account valido per poter scaricare i package necessari per la conversione prima di poter avere i repository disponibili.
Dopo aver ottenuto l’accesso sul portale di Red Hat, dobbiamo scaricare manualmente i seguenti package per registrare il sistema (nel nostro caso vogliamo passare ad una subscription di tipo Server):
redhat-release-server
rhn-check
rhn-client-tools
rhn-setup
rhn-setup-gnome
rhnlib
rhnsd
subscription-manager
subscription-manager-firstboot
subscription-manager-gnome
yum-rhn-plugin
A questo punto possiamo procedere con la conversione del sistema (di fatto yum
penserà di girare su una Red Hat):
rpm -e --nodeps centos-release yum install *rpm |
Registrare il nostro host:
subscription-manager --register |
E successivamente procedere con l’allineamento dei package:
yum -y distro-sync reboot |