GNU/Linux >> Znalost Linux >  >> Arch Linux

Jak opravit chybu „pacman:chyba při načítání sdílených knihoven“ v Arch Linuxu

Posledních pár dní jsem intenzivně testoval PIP a Pipenv nástroje v mém systému Arch Linux. Při testování těchto nástrojů jsem musel mnohokrát přeinstalovat a downgradovat balíčky Python2.x, Python 3.x a některé další balíčky závislostí Pythonu. V určitém okamžiku mi to rozbilo Arch Linux a pacman přestal fungovat. Kdykoli spustím pacman, zobrazí se mi chyba, která říká "pacman:chyba při načítání sdílených knihoven:libidn2.so.0:nelze otevřít soubor sdíleného objektu:Žádný takový soubor nebo adresář" .

pacman:chyba při načítání sdílených knihoven:libidn2.so.0:nelze otevřít soubor sdíleného objektu:Žádný takový soubor nebo adresář

Nejen pacman, přestaly fungovat i některé další aplikace jako pacaur, yaourt, packer, virtualbox a přenos atd. Když se pokusím otevřít kteroukoli z těchto aplikací, stále se mi zobrazuje tato zpráva - "chyba při načítání sdílených knihoven:libidn2.so.0:nelze otevřít soubor sdíleného objektu". Je pravděpodobné, že jsem mohl odinstalovat něco, co jsem si nepamatoval. K mé smůle to byl můj osobní systém a nechci ho přeinstalovat, protože má spoustu aplikací. Takže přeinstalace OS a všech aplikací může trvat dva nebo více dní. Po usilovném hledání na Arch Linux wiki a dalších linuxových fórech jako blázen se mi to konečně podařilo opravit. Pokud někdy narazíte na problém, jako je tento, nikam nehledejte, stáhněte si zdrojový soubor a zkopírujte chybějící soubory do /usr/lib/ složka. Pokud jsem hledal na webu, tato metoda se zatím zdá velmi nejjednodušší. Přečtěte si, jak jsem tuto chybu opravil.

Oprava chyby „pacman:chyba při načítání sdílených knihoven“ v Arch Linuxu

Jak jsem již řekl, stále se mi zobrazuje tato chyba - "pacman:chyba při načítání sdílených knihoven:libidn2.so.0:nelze otevřít soubor sdíleného objektu:Žádný takový soubor nebo adresář" když spustím příkaz pacman nebo jakékoli pomocníky AUR, jako je pacaur, packer, yaourt, a dokonce nemohu otevřít aplikaci VirtualBox a klienta přenosu. Takže skutečným problémem je zde soubor "libidn2.so.0" zmizela. Musíme to zjistit!

$ ls -la /usr/lib/libidn*

Ukázkový výstup z mého systému 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

Měl jsem "libidn.so", ale nemohu najít "libidn2.so.0". Vzhledem k tomu, že pacman a jakýkoli jiný správce balíčků nefungoval, neexistuje způsob, jak instalovat, upgradovat nebo downgradovat jakékoli balíčky z oficiálního úložiště nebo místní mezipaměti. Takže jsem si myslel, že jediným způsobem by mohlo být stáhnout balíček s chybějícím souborem z internetu, rozbalit jej a nakonec zkopírovat chybějící soubory do adresáře /usr/lib/. Dovolte mi vytvořit adresář pro uložení souboru tar libdin2:

$ mkdir libidn
$ cd libidn

Najděte a stáhněte si nejnovější verzi tohoto balíčku. Rychlé vyhledávání Google mě přivedlo sem . Rozbalte soubor:

$ tar xf libidn2-2.0.4-2-x86_64.pkg.tar.xz

Výše uvedený příkaz extrahoval obsah souboru do adresáře s názvem "usr". Přejděte do složky usr/lib:(Poznámka – Je to usr/lib , nikoli /usr/lib )

$ cd usr/lib

Nakonec zkopírujte chybějící soubor, v našem případě je to libidn2.so.0 , do adresáře /usr/lib/ vašeho systému Arch Linux.

$ sudo cp libidn2.so.0 /usr/lib/

Pak jsem běžel:

$ sudo pacman -syu

Aktualizujte Arch Linux

Voila! Pacman už funguje!! Jejda! Ach ne, počkat... Nefungovalo to. Tuto chybu jsem dostal po několika minutách.

[....]
(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.

Abych to napravil, spustil jsem:

$ sudo pacman -S libidn2 --force

Pak jsem zkusil aktualizaci znovu:

$ sudo pacman -Syu

Pevný!! Všechno dobré. Pokud tedy někdy narazíte na problém jako „chyba při načítání sdílených knihoven:.. nelze otevřít soubor sdíleného objektu:Žádný takový soubor nebo adresář“ , jeden způsob, jak to vyřešit, je najít balíček, který obsahuje chybějící soubory, stáhnout nejnovější verzi tohoto balíčku, rozbalit jej a zkopírovat chybějící soubory do /usr/lib/ adresář. Samozřejmě existuje mnoho způsobů, jak takové problémy vyřešit. Ale toto je jediné funkční řešení, které jsem našel, a zdá se mi to mnohem jednodušší a rychlejší. Tento trik může fungovat i na jiných linuxových distribucích.

Související čtení:

  • Jak obnovit Broken Arch Linux do předchozího funkčního stavu
  • Jak opravit chybu „nelze uzamknout databázi“ v Arch Linuxu
  • Jak opravit chybu „neplatný nebo poškozený balíček (podpis PGP)“ v Arch Linuxu
  • Jak vyřešit problém „Spouštění úplného upgradu systému… není co dělat“ v Arch Linuxu
  • Jak vyřešit „chybu:nepodařilo se potvrdit transakci (konfliktní soubory)“ v Arch Linuxu

Arch Linux
  1. Jak nainstalovat MariaDB na Arch Linux / Manjaro Linux

  2. Jak používat Pacman na Arch Linuxu

  3. Jak opravit chybu „Upozornění:místní je novější než komunita“ v Arch Linuxu

  1. Jak opravit chybu „neplatný nebo poškozený balíček (podpis PGP)“ v Arch Linuxu

  2. Linux – Jak odstranit staré balíčky nainstalované Pacmanem v Arch Linuxu?

  3. chyba při načítání sdílených knihoven:libncurses.so.5:

  1. Chyba při načítání sdílených knihoven libcrypto.so.1.1 – OpenSSL [Oprava]

  2. Linux – Jak přepnout Arch Linux na Lts Kernel?

  3. Jak opravit „chybu při načítání sdílených knihoven:libgtk-x11-2.0.so.0“