Getlibs: per risolvere automaticamente le dipendenze di binari October 5, 2007
Posted by Igor , trackback , send to friendGetlibs è uno script che serve per risolvere automaticamente le dipendenze di librerie di file binari. In parole povere che significa? Significa che se avere un binario che non riuscite a far partire perchè dipende da n librerie che non avete installato nel sistema dando il comando “getlibs /path/binario” automaticamente lo script vi scarica le librerie necessarie e le installa.
Vediamo ora in dettaglio quando e a chi serve e come si usa.
Possiamo installare il pacchetto in formato .deb da qui.
Lo script è scritto per funzionare su sistemi debian like ed in particolare su:
- Tutte le Ubuntu: Gutsy, Feisty, Edgy, Dapper, Breezy, Hoary, Warty
- Tutte le Debian: Sid (unstable), Lenny (testing), Etch (stable), Sarge (oldstable)
- Mepis (usando il repository ubuntu)
Lo script risolve le dipendenze per:
- Binari a 32 e 64 bit su sistemi a 64 bit.
- Binari a 32 bit su sistemi a 32 bit.
Può essere usato in 2 modi:
- Automatico: con il comando “getlibs /path/binario” lo script automaticamente elenca le librerie necessarie e propone all’utente il loro download.
- Manuale: con il comando “getlibs [-32|-64] nomelibreria.so” chiediamo di prelevare la libreria corrispondente al nome fornito per l’architettura specificata (32 o 64 bit).
Un esempio di utilizzo potrebbe essere con il pacchetto skype a 32 su un sistema a 64 bit. Innanzitutto dobbiamo installare il pacchetto skype, o prendendo i binari precompilati o forzando l’installazione del pacchetto per i386 con il comando dpkg -i --force-all skype-debian_xxx_i386.deb a questo punto se probviamo ad eseguire skype otteniamo $ skype affidiamoci quindi a getlibs per ottenere le librerie necessarie per il nostro sistema
skype: error while loading shared libraries: libQtDBus.so.4: cannot open shared object file: No such file or directory$ getlibs /usr/bin/skype
Matched library libQtCore.so.4 to /feisty/libs/libqt4-core
Matched library libQtDBus.so.4 to /feisty/libs/libqt4-core
Matched library libQtGui.so.4 to /feisty/libs/libqt4-gui
Matched library libQtNetwork.so.4 to /feisty/libs/libqt4-core
Matched library libsigc-2.0.so.0 to /feisty/libs/libsigc++-2.0-0c2a
The following i386 libraries will be installed:
/feisty/libs/libqt4-core
/feisty/libs/libqt4-gui
/feisty/libs/libsigc++-2.0-0c2a
Continue? (y/n) y
Downloading.....Installing libraries ...
New depedencies have been detected:
libdbus-1.so.3
Matched library libdbus-1.so.3 to /feisty/libs/libdbus-1-3
The following i386 libraries will be installed:
/feisty/libs/libdbus-1-3
Continue? (y/n) y
Downloading.....Installing libraries ...
ecco fatto, ora possiamo eseguire skype senza più problemi di dipendenza di librerie.

Comments»
Cavolo questa cosa è grandiosa!! Ti riduce di molto la perdita di tempo.. ottimo :D!
Meraviglioso! Solo una cosa non ho capito: devo mettere il path del file installato o del pacchetto? Cioè, se ho un tar.gz che non riesco ad installare, ed è sul desktop, cosa metto per cercare le librerie?
Questo script funziona solo con binari, se il tuo pacchetto tar.gz è un insieme di sorgenti che non riesci a compilare ed installare non va bene questa soluzione, invece se è un pacchetto con dei compilati li copi dove vuoi e poi dai il comando “getlibs /path_dove_li_hai_messi/nome_binario”. In pratica lo script fa una cosa tipo “lld nome_binario” prende la lista delle librerie necessarie al binario e scarica il pacchetto deb che le contiene e lo installa.
Se un pacchetto deb è fatto a regola d’arte (quelli di skype non li sanno fare) le dipendenze sono risolte da sole e il tuo script non serve.
Innanzitutto preciso che lo script non è mio, sto solo informandovi dell’esistenza dello stesso.
Mi dispiace deluderti Simone ma non hai capito l’utilità dello script. So perfettamente che le dipendenze sono specificate nel pacchetto, se correttamente creato ma nel acaso che ho analizzato il problema che si pone è diverso. Stiamo cercando di installare un pacchetto a 32 bit su una macchina a 64 bit, ovviamente per farlo dobbiamo forzare l’architettura e il pacchetto per i386 richiede come dipendenze delle librerie che nel nostro sistema saranno a 64bit e quindi non compatibili con skype a 32bit. A questo punto ci serviamo dello script per scaricare ed installare le librerie a 32bit necessarie a far funzionare skype. Preciso poi che quello di pacchetti .deb per architetture diverse è solo un caso particolare di applicazione, lo scopo dello script è di reperire la lista di librerie dinamiche necessarie per il funzionamento di un binario e di installarle. Ad esempio un tuo amico o una ditta o chi altro vuoi ti fornisce un eseguibile di un programma non pacchettizzato e questo ti da errore al momento dell’avvio perchè non trova alcune librerie dinamiche, al posto di cercare in che pacchetto stanno e installare manualmente tutti i pacchetti necessari puoi usare questo script per automatizzare la procedura. Spero di essere stato esaustivo, se ci sono ulteriori dubbi sono qui…