Archivio

Archive for the ‘YUM’ Category

YUM plug-in : FS-SNAPSHOT

fs-snapshot (yum-plugin-fs-snapshot) è un plug-in che estende le funzionalità di yum permettendogli di creare uno snapshot del sistema nel momento in cui vengono eseguiti degli Update o vengono rimossi dei pacchetti .
Se qualcosa dovesse andar storto durante la rimozione di un pacchetto perchè vengono eliminate delle dipendeze che servono ad altri software o dopo un aggiornamento ci si accorge che qualcosa non funziona correttamente , grazie a questo plug-in è possibile tornare ialla situazione precedente.

Per funzionare il filesystem root ( / ) deve essere un volume LVM o Btrfs . Per utilizzare fs-snapshot su un volume LVM si deve :

N.B. = La seguente procedura è stata provata su un server virtuale , per tale motivo aggiungere un disco è un gioco da ragazzi . Le cose potrebbero essere più complicate se si tratta di un server fisico , in quanto occorre installare un disco fisico .

1. Assicurarsi che il Volume Group in cui risiede il file system / abbia abbastanza extent liberi . Lo spazio necessario dovrebbe essere il 50-80% delle dimensioni del volume originale. Questo valore dipende comunque da quanti cambiamenti vengono apportati .
Per vedere le informazioni dettagliate di un volume group , usare il comando vgdisplay come utente root

#vgdisplay nome_volume_group

Il numero degli extents liberi è visibile alla voce Free PE/Size .

2. Se il volume group in cui risiede il file system / non ha abbastanza spazio è necessario aggiungere un volume:

A. come utente root , utilizzate il comando pvcreate per inizializzarlo come volume da utilizzare con LVM:
#pvcreate nome-device

B. Usiamo poi vgextend per aggiungere il volume fisico al volume group :

#vgextend volume-group volume

3. Ora dobbiamo modificare il file di configurazione del plugin situato in /etc/yum/pluginconf.d/fs-snapshot.conf facendo le seguenti modifiche nella sezione [lvm] :

A. Cambiamo il valore dell’opzione enabled a 1 :

enabled = 1

B. Rimuoviamo il carattere # all’inizio della linea lvcreate_size_args e configuriamo la percentuale di spazio che verrà allocata per lo snapshot :

lvcreate_size_args = -l 80%ORIGIN

4. A questo punto possiamo provare l’installazione di un’pacchetto , ad esmpio proviamo ad installare nmap :

#yum install nmap

Ci accorgeremo che dopo aver scaricato i pacchetti necessari comparirà una voce del tipo :

snapshotting file_system (/dev/volume_group/logical_volume): logical_volume_yum_timestamp
fs-snapshot: snapshotting / (/dev/VolGroup/lv_root): lv_root_yum_20120403112435

Se diamo il comando lvdisplay vedremo un nuovo volume chiamato lv_root_yum_20120403112435 (questo nome dipende da come si chiama il vostro volume root di cosenguenza può essere diverso)

Ora abbiamo due possibilià per gestire questo snapshot :

1. Dopo aver verificato che il sistema funzioni correttamente e nel modo in cui ce lo aspettavamo possiamo eliminare lo snapshot . Come utente root diamo il comando :

lvremove /dev/volume_group/logical_volume_yum_timestamp

N.B. : Fate molta attenzione perchè YUM non elimina gli snapshot , bisogna quindi ricordarsi di farlo a mano

2. Decidiamo che le modfiche apportate dagli aggiornamenti o dal software installato non vanno bene quindi dobbiamo tornare alla situazione precedente :

N.B. : E’ importante tenere presente che se nel server stanno girando servizi come DB o cose del genere e stanno eseguendo delle transazioni, nel momento in cui torneremo allo stato precedente perderemo le ultime transazioni eseguite .

A. Come utente root diamo il seguente comando per eseguire il merge dello snapshot con il sistema

#lvconvert --merge /dev/volume_group/logical_volume_yum_timestamp
#lvconvert --merge /dev/VolGroup/lv_root_yum_20120403112435

L’utility ci avviserà che sarà necessario eseguire un riavvio perchè le modifiche abbiano effetto .

B. reboot

Dopo il riavvio il server sarà esattamente come era prima dello snapshot .

Yum – Prendiamo il controllo degli aggiornamenti

Gestire l’installazione e l’aggiornamento dei software insatallati su distribuzioni basate su pacchetti RPM è diventato col tempo molto semplice ; in questo articolo vedremo come tenere sotto controllo i pacchetti che vengono aggiornati o installati nel nostro sistema.

YUM HISTORY

Il comando che ci permette di controllare le transazioni eseguite da YUM è “yum history” al quale possiamo dare diversi parametri :

#yum history list

questo primo comando ci dà una lista delle prime 20 transazioni eseguite da yum , l’output è suddiviso in colonne che riportano : l’ID delle transazioni(ID), l’utente che ha eseguito la transazione (Login user), la data (Date and time), il tipo di operazioni eseguite (Action) e infine il numero di pacchetti modificati (Altered).

Prima di continuare analizziamo i valori che possono assumere le colonne Action e Altered

Action

Downgrade D Uno o più pacchetti sono riportati ad una versione più vecchia
Erase E Uno o più pacchetti sono stati rimossi
Install I Uno o più pacchetti sono stati installati
Obsoletin O Uno o più pacchetti sono stati marcati come obsoleti
Reinstall R Uno o più pacchetti sono stati reinstallati
Update U Uno o più pacchetti sono stati aggiornati

Altered

<; Prima della fine della transazione , il database rpmdb è cambiato
>; Dopo la transazione , il database rpmdb è cambiato
* La transazione è fallita
# La transazione è finita correttamente , ma yum è terminato con un errore
E La transazione è finita correttamente, ma è stato riportato un errore o un avviso
P La transazione è finita correttamente, ma un problema è presente nel database rpmdb
s La transazione è finita correttamente, ma è stata utilizzata l’opzione –skip-borken e alcuni pacchetti sono stati ignorati

Se vogliamo vedere tutte le transazioni eseguite da yum dobbiamo usare il comando :

#yum history list all

Possiamo anche sceglire di visualizzare un range di transazioni utilizzando gli ID :

#yum history list start_id..end_id
#yum hisroty list 2..6

In questo modo vedremo le transazioni dal ID 2 al ID 6.

Se vogliamo analizzare nel dettagio una transazione per vedere i pacchetti che sono stati modificati possiamo usare il comando :

#yum history info id_transazione
#yum history info 4

L’output ci dirà quando è iniziata la transazione (Begin Time) , quando è terminata (End Time), come è terminata (Return-Code) ed i pacchetti modificati.
Se non specifichiamo nessun ID ci verrà visualizzata l’ultima transazione eseguita .

I comandi appena visti sono orientati in generale alle transazioni , ma se volessimo sapere la storia di un determinato pacchetto come quando è stato installato o aggiornato?
per questo ci viene in aiuto l’opzione “package-list” :

#yum history package-list gnome/*

Con questo comando vedremo tutti i cambiamenti (Update,Installazione ecc) apportati ai pacchetti il cui nome inizia con “gnome” .

E’ possibile ottenere anche altre informazioni , come quali opzioni di configurazione yum ha utilizzato per una determinata transazione o da quali repository certi pacchetti sono stati installati .

Per vedere quali informazioni aggiuntive sono disponibili per una transazione si utilizza il comando :

#yum history addon-info id_transazione
#yum history addon-info 2

Come per “yum history info” se non specifichiamo nessuna transazione ci verrà visualizata l’ultima eseguita .

Le voci che possiamo trovare sono :

config-main : Le opzioni globali di yum usate durante la transazione
config-repos : Le opsioni usate per i singoli repository
saved_tx : I dati che possono essere utilizzati con il comando “yum load-transaction” per ripetere la transazione su un’altro computer .

Oltre a poter verificare la storia delle transazioni il comando yum history permette anche di ripetere una transazione o di tornare alla situazione precedente alla transazione .

Vista la delicatezza di queste procedure non tanto per il comando ma per quello che comporta verrà trattato nel prossimo articolo insieme al comando “yum load-transaction” .