Risposte:
libc.soè stato spostato come parte del lavoro multiarch in Ubuntu 11.04. La ragione per cui non può esserci un collegamento simbolico è che lo scopo di multiarch è di rendere possibile installare contemporaneamente entrambe le versioni i386e in modo da poter eseguire più facilmente i binari a 32 bit su sistemi a 64 bit e viceversa (e altre situazioni simili). Se il pacchetto contenesse un collegamento simbolico alla nuova posizione, le versioni di quel pacchetto per architetture diverse non sarebbero entrambe installabili contemporaneamente (quale versione del collegamento simbolico sceglierebbe?), Sconfiggendo l'intero punto dell'esercizio.amd64libclibc6dpkg
Tutto ciò che codifica il percorso libc.sodeve essere aggiornato per funzionare correttamente da Ubuntu 11.04 in poi. Se lo script di cui stai parlando fa parte di Ubuntu, segnala un bug e aggiungi il multiarchtag.
/lib/libc.so.6si tratti della libreria a 32 o 64 bit.
Le librerie dinamiche vengono caricate dal kernel, i percorsi non sono codificati in un programma. Un programma dice semplicemente "Ho bisogno di libc.so.6". Il sistema cerca quindi nei percorsi delle librerie come definito in /etc/ld.so.conf, incluso /usr/libe /libper impostazione predefinita. Questo file include file di configurazione aggiuntivi in /etc/ld.so.conf.d.
Sul mio sistema a 64 bit, libc.so.6può essere trovato a /lib/x86_64-linux-gnu/libc.so.6causa del percorso definito in /etc/ld.so.conf.d/x86_64-linux-gnu.conf:
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
Per scoprire quale libreria è caricata da un programma, utilizzare lddcome in ldd /bin/bash:
linux-vdso.so.1 => (0x00007ffff1dff000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00007f9d8b3b8000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9d8b1b4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9d8ae1f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9d8b61c000)
Mettere il link simbolico non romperà nulla.
Per ottenere un elenco di directory ricercate, eseguire:
ldconfig -v -N | grep '^/'
-vprovoca la visualizzazione di un elenco di file + directory, -Nimpedisce la /etc/ld.so.cachericreazione della cache ( ).
/usr/local/lib, ma funzionano bene se creo un collegamento simbolico da /usr/lib. Cosa causa questo comportamento?
ldconfig -v -N | grep '^/'?
Aggiungi semplicemente il link simbolico al file libc.so.6 come segue:
sudo ln -s /lib/i386-linux-gnu/libc.so.6 /lib/libc.so.6
Lo stesso vale per altri file mancanti ancora nel sistema, nel mio caso a Matlab mancava il file, il problema è sparito ora.