Files media_info/*.xml.lzma in punta di Editor

Mer, 19/03/2008 - 09:09

Files media_info/*.xml.lzma in punta di Editor

Inviato da Moreno 0 commenti

MGSM0054 19/03/2008 Files media_info/*.xml.lzma in punta di Editor

1) Introduzione

i Mandriviani dopo anni di uso dei files hdlist.cz si sono accorti che stavano crescendo a dismisura rendendo le operazioni di aggiornamento delle macchine un vero supplizio, ad oggi per esempio l'hdlist.cz di Cooker contrib è grosso quasi 66MB, una mostruosità.

Pensa che ti ripensa è stata scovata la soluzione, che è la seguente:

a) File indice base il tradizionale synthesis.hdlist.cz grande poco più di 1MB
Cool changelog.xml.lzma questo file contiene l'elenco delle modifiche apportate ai vari pacchetti
c) files.xml.lzma questo file contiene l'elenco di tutti i files presenti nei vari pacchetti
d) info.xml.lzma questo file contiene le info generali dei vari pacchetti

N.B. questa soluzione è disponibile solo a partire dalla Mandriva Spring 2008.1

Questi 4 files occupano in totale 10MB quindi oltre 6 volte meno di hdlist.cz.
I files *.xml.lzma sono appunto dei file xml molto semplici compressi nello speciale formato lzma, questo è molto utile per risparmiare spazio ma rende umanamente illeggibili questi files che invece possono tornare molto utili.

Lo script presentato in seguito non fa altro che scaricare tutti i files .xml.lzma di main, Contrib e Non-Free e convertirli in formato xml con il comando lzcat ed il tutto viene salvato nella cartella ~/cookerinfo.

Dopo la conversione i files fono leggibili da qualsiasi edito ed alcuni fanno pure la formattazione automatica.

2) Script

Ecco il semplicissimo script.

<br />#!/bin/sh<br /><br />#a<br />#indirizzo del mirror FTP <br />BASE=ftp://ftp.free.fr/mirrors/ftp.mandriva.com/MandrivaLinux/devel/cooker<br /><br />#b<br />case "$1" in<br />     1 ) CPU="i586"; ;;<br />        2 ) CPU="x86_64"; ;;<br />      * ) echo "DATI ERRATI ( 1 = i586 2 = x86_64 )"; exit 1 ;;<br />esac<br /><br />#c<br />cd ~<br />mkdir cookerinfo<br />cd cookerinfo<br /><br />#d<br />wget $BASE/$CPU/media/main/release/media_info/changelog.xml.lzma<br />lzcat changelog.xml.lzma > main-changelog.txt<br />rm changelog.xml.lzma<br />wget $BASE/$CPU/media/main/release/media_info/files.xml.lzma<br />lzcat files.xml.lzma > main-files.txt<br />rm files.xml.lzma<br />wget $BASE/$CPU/media/main/release/media_info/info.xml.lzma<br />lzcat info.xml.lzma > main-info.txt<br />rm info.xml.lzma<br /><br /><br />#e<br />wget $BASE/$CPU/media/contrib/release/media_info/changelog.xml.lzma<br />lzcat changelog.xml.lzma > contrib-changelog.txt<br />rm changelog.xml.lzma<br />wget $BASE/$CPU/media/contrib/release/media_info/files.xml.lzma<br />lzcat files.xml.lzma > contrib-files.txt<br />rm files.xml.lzma<br />wget $BASE/$CPU/media/contrib/release/media_info/info.xml.lzma<br />lzcat info.xml.lzma > contrib-info.txt<br />rm info.xml.lzma<br /><br /><br />#f<br />wget $BASE/$CPU/media/non-free/release/media_info/changelog.xml.lzma<br />lzcat changelog.xml.lzma > non-free-changelog.txt<br />rm changelog.xml.lzma<br />wget $BASE/$CPU/media/non-free/release/media_info/files.xml.lzma<br />lzcat files.xml.lzma > non-free-files.txt<br />rm files.xml.lzma<br />wget $BASE/$CPU/media/non-free/release/media_info/info.xml.lzma<br />lzcat info.xml.lzma > non-free-info.txt<br />rm info.xml.lzma<br />

In #a si assegna l'indirizzo ftp del mirror alla variabile BASE
In #b tramite la variabile di input $1 si seleziona il tipo di processore desiderato
In #c si crea la cartella che conterrà le informazioni
In #d si scaricano i files xml.lzma di Main, li si converte in xml e poi li si cancella.
In #e si scaricano i files xml.lzma di Contrib, li si converte in xml e poi li si cancella.
In #f si scaricano i files xml.lzma di Non-Free, li si converte in xml e poi li si cancella.

3) Interpretazione dei files XML

Come detto prima i files sono in formato XML ma comunque facilmente interpretabili.

Ecco un esempio di Changelog
<br /><changelogs fn="adp94xx-1.3.11424-3mdv2007.1.noarch"><br /><log time="1173175200"><br /><log_name>Gwenole Beauchesne &lt;&gt; 1.3.11424-3mdv</log_name><br /><log_text>- sort pci ids</log_text><br /></log><log time="1164621600"><br /><log_name>Gwenole Beauchesne &lt;&gt; 1.3.11424-2mdv</log_name><br /><log_text>- fix pcitable entries<br />- fix pcitable updates<br />- fix includes for ioctl32 compat</log_text><br /></log><log time="1158055200"><br /><log_name>Gwenole Beauchesne &lt;&gt; 1.3.11424-1mdv2007.0</log_name><br /><log_text>- First Mandriva Linux package</log_text><br /></log></changelogs><br />

Ecco un esempio di Files
<br /><files fn="adp94xx-1.3.11424-3mdv2007.1.noarch"><br />/usr/share/ldetect-lst/pcitable.d/95_adaptec_adp94xx.lst<br /></files><files fn="ueagle-firmware-1.1-2mdv2008.0.noarch"><br />/lib/firmware/ueagle-atm<br />/lib/firmware/ueagle-atm/930-fpga.bin<br />/lib/firmware/ueagle-atm/CMV4p.bin.v2<br />/lib/firmware/ueagle-atm/CMV9i.bin<br />/lib/firmware/ueagle-atm/CMV9p.bin<br />/lib/firmware/ueagle-atm/CMVei.bin<br />/lib/firmware/ueagle-atm/CMVeiWO.bin<br />/lib/firmware/ueagle-atm/CMVep.bin<br />/lib/firmware/ueagle-atm/CMVepES.bin<br />/lib/firmware/ueagle-atm/CMVepES03.bin<br />/lib/firmware/ueagle-atm/CMVepFR.bin<br />/lib/firmware/ueagle-atm/CMVepFR04.bin<br />/lib/firmware/ueagle-atm/CMVepFR10.bin<br />/lib/firmware/ueagle-atm/CMVepIT.bin<br />/lib/firmware/ueagle-atm/CMVepWO.bin<br />/lib/firmware/ueagle-atm/DSP4p.bin<br />/lib/firmware/ueagle-atm/DSP9i.bin<br />/lib/firmware/ueagle-atm/DSP9p.bin<br />/lib/firmware/ueagle-atm/DSPei.bin<br />/lib/firmware/ueagle-atm/DSPep.bin<br />/lib/firmware/ueagle-atm/adi930.fw<br />/lib/firmware/ueagle-atm/eagleI.fw<br />/lib/firmware/ueagle-atm/eagleII.fw<br />/lib/firmware/ueagle-atm/eagleIII.fw<br />/lib/firmware/ueagle-atm/eagleIV.fw<br /></files><br />

Ecco un esempio di Info
<br /><info fn="koffice-kivio-1.6.3-15mdv2008.1.i586"<br /> sourcerpm='koffice-1.6.3-15mdv2008.1.src.rpm'<br /> url='http://www.koffice.org/'<br /> license='GPLv2+'><br />Kivio is a diagramme for kde project.<br /></info><br />

Ciao Ciao Moreno


In: