Negli ultimi giorni ho testato ampiamente PIP e Pipenv strumenti nel mio sistema Arch Linux. Durante il test di questi strumenti, ho dovuto reinstallare e fare il downgrade dei pacchetti Python2.x, Python 3.x e alcuni altri pacchetti di dipendenze Python molte volte. Ad un certo punto, ha rotto il mio Arch Linux e pacman ha smesso di funzionare. Ogni volta che eseguo pacman, viene visualizzato un errore che dice "pacman:errore durante il caricamento delle librerie condivise:libidn2.so.0:impossibile aprire il file oggetto condiviso:nessun file o directory del genere" .
pacman:errore durante il caricamento delle librerie condivise:libidn2.so.0:impossibile aprire il file oggetto condiviso:nessun file o directory di questo tipo
Non solo pacman, anche altre applicazioni, come pacaur, yaourt, packer, virtualbox e trasmissione, ecc., hanno smesso di funzionare. Quando provo ad aprire una di queste applicazioni, continuo a ricevere questo messaggio:"errore durante il caricamento delle librerie condivise:libidn2.so.0:impossibile aprire il file oggetto condiviso". È probabile che io possa disinstallare qualcosa che non riuscivo a ricordare. Con mia sfortuna, era il mio sistema personale e non voglio reinstallarlo perché ha molte applicazioni. Quindi, la reinstallazione del sistema operativo e di tutte le applicazioni potrebbe richiedere due o più giorni. Dopo aver cercato vigorosamente su Arch Linux wiki e altri forum Linux come un pazzo, sono finalmente riuscito a risolverlo. Se dovessi riscontrare un problema del genere, non cercare da nessuna parte, scarica il file sorgente e copia i file mancanti in /usr/lib/ cartella. Per quanto ho cercato sul web, questo metodo sembra molto più semplice finora. Continua a leggere per sapere come ho corretto questo errore.
Corretto l'errore "pacman:errore durante il caricamento delle librerie condivise" in Arch Linux
Come ho già detto, continuavo a ricevere questo errore - "pacman:errore durante il caricamento delle librerie condivise:libidn2.so.0:impossibile aprire il file oggetto condiviso:nessun file o directory" quando eseguo il comando pacman o qualsiasi supporto AUR come pacaur, packer, yaourt e non riesco nemmeno ad aprire l'applicazione VirtualBox e il client di trasmissione. Quindi, il vero problema qui è il file "libidn2.so.0" è scomparso. Dobbiamo scoprirlo!
$ ls -la /usr/lib/libidn*
Esempio di output dal mio sistema Arch Linux:
lrwxrwxrwx 1 root root 22 Jul 22 2013 /usr/lib/libidnkitlite.so -> libidnkitlite.so.1.0.2 lrwxrwxrwx 1 root root 22 Jul 22 2013 /usr/lib/libidnkitlite.so.1 -> libidnkitlite.so.1.0.2 -rw-r--r-- 1 root root 276352 Jul 22 2013 /usr/lib/libidnkitlite.so.1.0.2 lrwxrwxrwx 1 root root 18 Jul 22 2013 /usr/lib/libidnkit.so -> libidnkit.so.1.0.2 lrwxrwxrwx 1 root root 18 Jul 22 2013 /usr/lib/libidnkit.so.1 -> libidnkit.so.1.0.2 -rw-r--r-- 1 root root 282368 Jul 22 2013 /usr/lib/libidnkit.so.1.0.2 lrwxrwxrwx 1 root root 17 Aug 15 19:00 /usr/lib/libidn.so -> libidn.so.11.6.16 lrwxrwxrwx 1 root root 17 Aug 15 19:00 /usr/lib/libidn.so.11 -> libidn.so.11.6.16 -rwxr-xr-x 1 root root 210872 Aug 15 19:00 /usr/lib/libidn.so.11.6.16
Avevo "libidn.so", ma non riesco a trovare "libidn2.so.0". Poiché pacman e qualsiasi altro gestore di pacchetti non hanno funzionato, non c'è modo di installare, aggiornare o downgrade dei pacchetti dal repository ufficiale o dalla cache locale. Quindi, ho pensato che l'unico modo potesse essere scaricare il pacchetto con il file mancante da Internet, estrarlo e infine copiare i file mancanti nella directory /usr/lib/. Fammi creare una directory per salvare il file tar di libdin2:
$ mkdir libidn
$ cd libidn
Trova e scarica l'ultima versione di questo pacchetto. Una rapida ricerca su Google mi ha portato qui . Estrai il file:
$ tar xf libidn2-2.0.4-2-x86_64.pkg.tar.xz
Il comando precedente ha estratto il contenuto del file in una directory denominata "usr". Vai alla cartella usr/lib:(Nota - È usr/lib , non /usr/lib )
$ cd usr/lib
Infine copia il file mancante, nel nostro caso è libidn2.so.0 , nella directory /usr/lib/ del tuo sistema Arch Linux.
$ sudo cp libidn2.so.0 /usr/lib/
Quindi, ho corso:
$ sudo pacman -syu
Aggiorna Arch Linux
Ecco! Pacman ora funziona!! Ops! Oh no, aspetta... Non ha funzionato. Ho ricevuto questo errore dopo pochi minuti.
[....] (511/511) checking keys in keyring [######################] 100% (511/511) checking package integrity [######################] 100% (511/511) loading package files [######################] 100% (511/511) checking for file conflicts [######################] 100% error: failed to commit transaction (conflicting files) libidn2: /usr/lib/libidn2.so.0 exists in filesystem Errors occurred, no packages were upgraded.
Per risolvere questo problema, ho eseguito:
$ sudo pacman -S libidn2 --force
Quindi, ho provato di nuovo ad aggiornare:
$ sudo pacman -Syu
Fisso!! Tutto bene adesso. Quindi, se avete mai riscontrato un problema come "errore durante il caricamento delle librerie condivise:.. impossibile aprire il file oggetto condiviso:nessun file o directory del genere" , un modo per risolvere questo problema è trovare il pacchetto che contiene i file mancanti, scaricare l'ultima versione di quel pacchetto, estrarlo e copiare i file mancanti in /usr/lib/ directory. Naturalmente, potrebbero esserci molti modi per risolvere questo tipo di problemi. Ma questa è l'unica soluzione funzionante che sono riuscito a trovare e la trovo molto più semplice e veloce. Questo trucco potrebbe funzionare anche su altre distribuzioni Linux.
Lettura correlata:
- Come ripristinare Arch Linux rotto allo stato di lavoro precedente
- Come correggere l'errore "impossibile bloccare il database" in Arch Linux
- Come correggere l'errore "pacchetto non valido o danneggiato (firma PGP)" in Arch Linux
- Come risolvere il problema "Avvio dell'aggiornamento completo del sistema... non c'è niente da fare" Problema in Arch Linux
- Come risolvere "errore:impossibile eseguire il commit della transazione (file in conflitto)" in Arch Linux