prima parte
segue.....codice:Autore : Pierluigi Previtali Argomento: Le interdipendenze tra i pacchetti della mia distro preferita... la Slackware. Stato: 0.1b delirio incompleto in beta stage Lamentele: slack@ERASETHISslack.z00.it pierluigi.previtali@ERASETHIStiscali.it Scopo del gioco e' creare una lista in stile "MANIFEST" delle interdipendenze tra i pacchetti, cioe' sapere da quali pacchetti dipende un dato pacchetto, argomento affrontato da vari tools di aggiornamento automatico come swaret e altri in maniera oscura. Usando io sul mio portatile una current, e utilizzando per tenerla aggiornata un mio script (sul mio sito) che mi mirrora in locale la current e mi avvisa se ci sono pacchetti da upgradare ecc. ecc. ( non sto' qui' a parlarne, dovrebbe esserci pure un mio post qui e comunque come detto e' scaricabile dal mio sito) e utilizzando un altro mio script (sempre disponibile e postato pure qui') che gia' e' in grado di controllare le dipendenze e suggerire pacchetti mancanti, mi mancava un file da consultare per avere un riferimento veloce su cosa dipendesse da cosa in una release completa della slackware. Per chi non avesse mai curiosato, preso per riferimento un punto di mount standard del cdrom come /mnt/cdrom, nella sotto-directory /mnt/cdrom/slackware e' presente un file chiamato MANIFEST.bz2 che non e' altro che un file compresso che contiene la lista di tutti i file presenti nella sotto-directory /mnt/cdrom/slackware e chiaramente quindi la lista dei pacchetti e del loro contenuto. Per chi non si fosse mai posta la domanda poi possiamo aggiungere che al 99% dei casi il problema delle dipendenze tra i pacchetti riguarda la presenza in altri pacchetti di librerie dinamiche necessarie al programma che installiamo (quelle che nel mondo windows sono .dll o altre estensioni di libreria), il comando che ci permette di conoscere, dato un eseguibile, le librerie dalle quali dipende (a meno che sia staticamente compilato cioe' include tutte le funzioni che gli necessitano da altre librerie gia' al suo interno, spesso a scapito delle dimensioni e della memoria occupata in esecuzione ...detta alla grezza), e' il comando ldd. ldd /percorso/del/file/eseguibile ci restituisce una lista delle librerie collegate, a questo punto si potrebbe pensare di guardare nel MANIFEST in quali pacchetti sono le eventuali librerie non trovate. Non e' purtroppo cosi' semplice dato che spesso, quasi sempre le librerie a cui fa' riferimento l'eseguibile sono dei collegamenti (link) alle librerie originali, per esempio se consideriamo il comando: ls -l /lib/libc.so.6 ci dira' che in realta' al momento dell'installazione e' stato creato un link di nome libc.so.6 che in realta' punta a libc-2.3.3.so* lrwxrwxrwx 1 root root 13 2004-10-18 16:23 /lib/libc.so.6 -> libc-2.3.3.so* Nel MANIFEST chiaramente sara' presente solo il file puntato che fa' parte effettivamente di un pacchetto... e il link dove esce? I pacchetti standard slackware al loro interno hanno sempre una cartella /install al cui interno ci sono due file, uno che contiene la descrizione del pacchetto e uno il file /install/doinst.sh che contiene i comandi che eseguira' installpkg dopo aver scompresso il pacchetto slackware che a parte i succitati files non e' altro che un tgz cioe' un tar.gz, in questo file ci sono i comandi che creano i link e la libreria cercata potrebbe essere (quasi sempre) uno di questi link...a questo punto abbiamo bisogno di un altra lista da consultare oltre il MANIFEST.bz2 che contenga tutti i nomi dei link creati e quali pacchetti li contengano, sara' la seconda cosa che faremo dopo aver scompresso per comodita' il file MANIFEST.bz2 sotto /tmp , per ottenerlo dobbiamo utilizzare uno script che e' volutamente grezzo e con pochi controlli sull'utente, dato che e' stato realizzato in un pomeriggio di bash-fu , va' rifinito e completato ma per adesso funge e lo possiamo usare, andremo a ottenere cosi' un file MANIFESTLINK che consulteremo insieme al MANIFEST per scoprire le varie dipendenze tra i pacchetti, la ricerca sara' svolta da un'altro script che generera' finalmente il file MANIFESTDEP che conterra' la lista dei pacchetti presenti sulla distro e i pacchetti necessari al corretto funzionamento dei primi... ho parlato pure troppo si capisce meglio se procediamo praticamente... osokaaaaaaaaaa budaaaaaaaaa sooo (invocazione di bash-fu) assumiamo la posizione del loto fumato...si parte...

Rispondi quotando