@Calmarius è corretto, questo accade se si considera un exe a 32 bit, senza nemmeno le librerie di base a 32 bit.
Sto tentando di aggiornare il mio sistema (una nuova installazione di Ubuntu 16.04, dalla 12.04), devo installare un vecchio servizio propiziatorio a 32 bit avserver
, che richiede ia32-libs
(non più disponibile). Questo mezzo sia dpkg
e apt-get
sono infelici (qualunque cosa io faccia, mi spinge a apt-get -f install
, e se corro che, insiste disinstalla il pacchetto di servizi), e il mio servizio non si avvia.
Per dimostrare che ciò dipende dalle librerie a 32 bit mancanti, ho montato il mio vecchio sistema (Ubuntu 12.04, con ia32-libs
e librerie a 32 bit) /sda2
. Assicurarsi che /opt
(contenente il mio binario a 32 bit) sia montato /sda2/opt
, posso chroot /sda2
e ldd
quindi funziona come previsto.
Per risolvere questo problema, avrei potuto installare manualmente tutti i pacchetti di librerie dipendenti con: i386 (arch). Comunque ho deciso piuttosto che cercare di capire quali fossero le mie dipendenze, ho installato wine (che è principalmente a 32 bit, quindi installa le librerie di base e un carico in più di cui non ho davvero bisogno, ma sto bene con quello).
Per riparare dpkg
e apt-get
, ho modificato /var/lib/dpkg/status
, trovando il pacchetto per il mio servizio e rimosso ia32-libs
. Adesso dpkg
e apt-get
siamo felici
Fatto ciò, ldd
riporta felicemente: -
root@withnail:/opt/<service path># ldd avserver
linux-gate.so.1 => (0xf77a6000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf778f000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7772000)
libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xf776b000)
libresolv.so.2 => /lib/i386-linux-gnu/libresolv.so.2 (0xf7752000)
libcrypt.so.1 => /lib/i386-linux-gnu/libcrypt.so.1 (0xf7720000)
libktssl.so.1.0.0 => /opt/<service path>/libktssl.so.1.0.0 (0xf76cb000)
libktcrypto.so.1.0.0 => /opt/<service path>/libktcrypto.so.1.0.0 (0xf756b000)
libktz.so.1 => /opt/<service path>/libktz.so.1 (0xf7558000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf754f000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf73d8000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7383000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7366000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf71af000)
/lib/ld-linux.so.2 (0x565b1000)