YUM nodeps

Il comando yum sulle distribuzioni Fedora/Red Hat/CentOS/OEL/... permette l'installazione automatica dei pacchetti con una gestione completa delle dipendenze presenti.
In qualche raro caso pero' puo' essere necessario non installare alcuni dei pacchetti richiesti... Teoricamente non e' possibile: ecco come fare.

Ho fretta!

Ecco come scaricare un utile plugin di yum ed installare un software senza applicare le dipendenze:

yum search downloadonly yum install yum-downloadonly.noarch yum --downloadonly install php53-mysql rpm --nodeps -ilv /var/cache/yum/base/packages/php53-mysql-5.3.3-5.el5.x86_64.rpm

RPM

Il gestore di pacchetti RPM (Red Hat Package Manager) e' stato introdotto dalla diffusa distribuzione Linux Red Hat nel 1997. Un pacchetto software viene presentato come un singolo file con il suffisso .rpm che contiene il programma, i file di configurazione ed di supporto e gli eventuali script da eseguire per l'installazione. Con un singolo comando (eg. rpm -i myProgram.rpm) e' possibile installare un pacchetto. Analoghe opzioni consentono di elencare i programmi installati (eg. rpm -qa), cancellare programmi (rpm -e myProgram), ...
A differenza di un classico TARBALL un RPM contiene direttamente i binari. L'installazione di un pacchetto risulta cosi' piu' semplice e veloce perche' non e' necessario compilare nulla.

Una caratteristica molto importante dell'RPM e' il controllo delle dipendenze tra programmi. Se non sono presenti tutti i prerequisiti necessari il pacchetto non viene installato. Per evitare questo controllo e' presente un'opzione specifica (--nodeps) da utilizzare con cautela.

Anche se introdotto da Red Hat, il formato .rpm trova un utilizzo molto ampio nella maggioranza delle altre distribuzioni e sono presenti parecchi tool, con funzionalita' ulteriori, che si basano sugli RPM.

YUM

Uno dei piu' diffusi gestori di pacchetti basati su RPM e' YUM (Yellowdog Updater Modified). Tra le molte funzionalita' aggiuntive rispetto all'RPM a mio avviso tre sono fondamentali: l'utilizzo di repository, la risoluzione automatica delle dipendenze e gli aggiornamenti.

La directory /etc/yum.repos.d contiene l'elenco dei repository da dove scaricare in automatico i file RPM. Con il comando yum search Pacchetto il software viene ricercato da tutti i repository abilitati e viene fornito l'elenco di tutte le alternative installabili. Una distribuzione Linux tipicamente contiene gia' le definizioni dei repository necessari, cosi' tutte le installazioni ed aggiornamenti possono avvenire in automatico.

YUM risolve automaticamente tutte le dipendenze. Quando viene installato un pacchetto (con yum install Pacchetto), se questo ne richiede altri, viene effettuata una nuova ricerca e vengono scaricati tutti i pacchetti necessari. A differenza di RPM, YUM non consente l'esclusione del controllo delle dipendenze. Anche perche' tipicamente YUM risolve tutte le dipendenze in automatico ed e' pensato per manternere un sistema sempre aggiornato e coerente con i repository.

Per effettuare l'aggiornamento di tutti i pacchetti basta un comando: yum update

Il trucco

Installare pacchetti violando le dipendenze non e' consigliabile. Ci sono pochi casi in cui e' opportuno (eg. utilizzo di pacchetti compilati da TARBALL, utilizzo di repository indipendenti) ed in ogni caso va fatto con attenzione e con cognizione di causa...
Tutto cio' premesso e' possibile sfruttare YUM per scaricare in modo automatico tutti i pacchetti necessari per un'installazione e poi installarli selettivamente con RPM.

Il primo passo e' quello di "attivare" l'opzione downloadonly che non e' disponibile come default su YUM ma e' presente come un pacchetto a parte (con nomi leggermente diversi tra le distribuzioni). E' facile perche' la si cerca ed installa con yum stesso.
Il secondo passo e' quello di lanciare una normale installazione com YUM, utilizzando l'opzione downloadonly. L'installazione procede normalmente ma si ferma all'ultimo passo: dopo avere scaricato tutto il software necessario e prima di effettuare l'installazione.
Nell'ultimo passo si installano i pacchetti desiderati con RPM, utilizzando l'opzione di esclusione del controllo delle dipendenze.

L'esempio riportato all'inizio della pagina e' reale. Un prerequisito del php-mysql sono le librerie di MySQL ma sul sistema ospite era gia' presente un'installazione differente del DB. Con un'installazione forzata e la copia di una libreria dinamica si e' installato quanto desiderato.


Titolo: YUM nodeps
Livello: Esperto (4/5)
Data: 14 Febbraio 2014
Versione: 1.0.0 - 14 Febbraio 2014
Autore: mail [AT] meo.bogliolo.name