


Aggiornato al : dic 29, 2008
Questa guida è stata testata su Ubuntu a 64 bit, ma dovrebbe andare più o meno con tutte le distrubuzioni derivate da Debian, con le dovute modifiche.
Installare se possibile la versione a 64 bit, se non c’è scaricare i sorgenti e compilarla sul proprio sistema. Se non si può fare o per qualche motivo si vuole far funzionare la versione a 32 bit del software che ci interessa già compilata, installare prima di tutto il pacchetto ia32-libs, che contiene la versione a 32 bit delle librerie più comuni e le installa in /usr/lib32 mettendole a disposizione del sistema.
sudo aptitude update
sudo aptitude install ia32-libs
Riprovare. Se non funziona, scrivere
ldd nomefile
Verranno mostrate le librerie richieste e la loro posizione, quelle non trovate sono indicate con “not found”, e significa che vi manca quella libreria a 32 bit, evidentemente non si trova nel pacchetto ia32-libs, probabilmente avete già installata quella libreria in versione a 64 bit, ma è inutile perchè a voi serve la versione a 32 bit.
Ad esempio, ho installato sulla mia Ubuntu a 64 bit Virtualbox 2.0, mi serviva il tool vditool che ho potuto scaricare dal sito, tuttavia era la versione a 32 bit, quindi all’avvio il risultato era il seguente:
vditool: error while loading shared libraries: libuuid.so.1: cannot open shared object file: No such file or directory
Che si fa in questo caso? Si lancia il comando
ldd ./vditool
e il risultato è il seguente:
linux-gate.so.1 => (0xffffe000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf7f10000)
libuuid.so.1 => not found
librt.so.1 => /lib32/librt.so.1 (0xf7f06000)
libdl.so.2 => /lib32/libdl.so.2 (0xf7f02000)
VBoxDD.so => not found
VBoxRT.so => not found
libstdc++.so.5 => /usr/lib32/libstdc++.so.5 (0xf7e48000)
libm.so.6 => /lib32/libm.so.6 (0xf7e22000)
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7e17000)
libc.so.6 => /lib32/libc.so.6 (0xf7cc8000)
/lib/ld-linux.so.2 (0xf7f47000)
Come si può vedere, mancano all’appello libuuid.so.1, VboxDD.so e VboxRT.so, dobbiamo procurarci le versioni a 32 bit. Vediamo come fare per la prima, si fa allo stesso modo per le altre.
L’idea è quella di vedere a quale pacchetto di Ubuntu appartiene e scaricarne la versione a 32 bit, successivamente estrarne i file e copiare le librerie richieste in /usr/lib32.
Per vedere il pacchetto di appartenenza, usare apt-file, installabile mediante
sudo aptitude install apt-file
sudo apt-file update
Per usarlo:
apt-file search libuuid.so.1 (sostituite la libreria richiesta)
Il risultato è:
libuuid1: /lib/libuuid.so.1
libuuid1: /lib/libuuid.so.1.2
libuuid1-dbg: /usr/lib/debug/lib/libuuid.so.1.2
Decido di scaricare il pacchetto libuuid1. Per fare questo vado sul sito
http://packages.ubuntu.com e attraverso la funzione “Search” cerco questo pacchetto. Lo trovo e posso scaricarlo in versione a 32 bit o a 64 bit. Ovviamente scarico quello a 32 bit.
Adesso lo estraggo mediante il comando
dpkg -x nomefile.deb
e ottengo una cartella lib in cui trovo i due file libuuid.so.1.2 e libuuid.so.1 che è un link simbolico al primo. Li copio entrambi in /usr/lib32 e poi faccio in modo che il file /usr/lib32/libuuid.so.1 punti al file /usr/lib32/libuuid.so.1.2.
Faccio lo stesso per le altre due librerie, che si trovano nel pacchetto virtualbox-ose e per le altre librerie che spuntano successivamente, finchè il risultato del comando
ldd ./vditool
è il seguente:
linux-gate.so.1 => (0xffffe000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf7f28000)
libuuid.so.1 => /usr/lib32/libuuid.so.1 (0xf7f24000)
librt.so.1 => /lib32/librt.so.1 (0xf7f1a000)
libdl.so.2 => /lib32/libdl.so.2 (0xf7f16000)
VBoxDD.so => /usr/lib32/VBoxDD.so (0xf7e9d000)
VBoxRT.so => /usr/lib32/VBoxRT.so (0xf7e3a000)
libstdc++.so.5 => /usr/lib32/libstdc++.so.5 (0xf7d80000)
libm.so.6 => /lib32/libm.so.6 (0xf7d5b000)
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7d4f000)
libc.so.6 => /lib32/libc.so.6 (0xf7c00000)
/lib/ld-linux.so.2 (0xf7f5f000)
VBoxVMM.so => /usr/lib32/VBoxVMM.so (0xf7b10000)
VBoxDDU.so => /usr/lib32/VBoxDDU.so (0xf7afa000)
VBoxDD2.so => /usr/lib32/VBoxDD2.so (0xf7ad7000)
libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf79e3000)
VBoxREM.so => /usr/lib32/VBoxREM.so (0xf6131000)
libutil.so.1 => /lib32/libutil.so.1 (0xf612d000)
Non ci sono più librerie “not found”, quindi il programma funziona. Infatti il suo output è:
vditool Copyright (c) 2004-2005 InnoTek Systemberatung GmbH.
Usage: vditool [Params]
Commands and params:
NEW Filename Mbytes - create new image;
DD Filename DDFilename - create new image from DD format image;
CONVERT Filename - convert VDI image from old format;
DUMP Filename - debug dump;
RESETGEO Filename - reset geometry information;
COPY FromImage ToImage - make image copy;
COPYDD FromImage DDFilename - make a DD copy of the image;
SHRINK Filename - optimize (reduce) VDI image size.
Autore : Giacomo Antonino Fazio aka l3golas











ottobre 7th, 2008 at 20:28
Molto, molto ma molto interessante. Grazie!
Rispondi
ottobre 8th, 2008 at 23:09
leggete i commenti finali di questa pagina:
http://www.kde-apps.org/conten.....tent=64905
capirete perchè ubuntu a 64 bit è così disastrosa e chiede tutto sto macello per installare un programma a 32 bit
Rispondi
ottobre 31st, 2008 at 23:25
ciao,sono un profano ma deciso a passare da windows a ubuntu. ho un processore 64 bit e al momento ho sul pc sia win xp pro che ubuntu 8.04 64 bit.il problema che tratti qui mi interessa perche lo incontro di continuo e non riesco spesso a uscirne.la tua guida non l’ho provata perche al momento non capisco il seguente passaggio:cosa vul dire fare in modo che un dato file punti a un’altro?
ringrazio per qualsiasi informazione.non vedo l’ora di passare a ubuntu,ma troppe delle cose che faccio in win usano programmi a 32 bit che non riesco ad installare su ubuntu
Rispondi
novembre 1st, 2008 at 15:38
Ciao, forse allora ti converrebbe usare la versione a 32 bit, sicuramente ti causerà qualche grattacapo in meno, dato che sei ancora un “newbie”. Fare in modo che un file punti ad un altro siginifica creare un link, in questo caso parlo di link simbolici. Ad esempio hai un file x contenuto in /usr/lib/, invece che copiarlo in /usr/local/lib/, crei un link in esso tramite il comando ln, con la sintassi
ln -s target linkname
Quindi in questo caso:
sudo ln -s /usr/lib/x /usr/local/lib/x
Il “sudo” davanti è perchè devi lavorare su file di sistema.
Comunque per maggiori info digita “man ln” e lì c’è scritto tutto, oppure cerca su Google.
Rispondi
novembre 29th, 2009 at 18:22
UUUU grazie mille!! Con questo metodo rimane installata anche la libreria a 64 bit, per cui i programmi che la usano non si lamentano
Rispondi