GNU/Linux >> Znalost Linux >  >> Linux

CentOS 64 bit špatný interpret ELF

Obecně, když se objeví takováto chyba, prostě to udělejte

yum provides ld-linux.so.2

pak uvidíte něco jako:

glibc-2.20-5.fc21.i686 : The GNU libc libraries
Repo        : fedora
Matched from:
Provides    : ld-linux.so.2

a pak stačí spustit následující, jak napsal BRPocock (pro případ, že by vás zajímalo, jaká je logika...):

yum install glibc.i686

Zkuste

$ yum provides ld-linux.so.2
$ yum update
$ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6

Doufám, že se to vyřeší.


Používáte 64bitový systém a nemáte nainstalovanou podporu 32bitových knihoven.

Instalace (základní) podpory pro 32bitové spustitelné soubory

(pokud ve svém nastavení nepoužíváte sudo, přečtěte si poznámku níže)

Většina desktopových linuxových systémů v rodině Fedora/Red Hat:

 pkcon install glibc.i686

Možná nějaké desktopové systémy Debian/Ubuntu?:

pkcon install ia32-libs

Fedora nebo novější Red Hat, CentOS:

 sudo dnf install glibc.i686

Starší RHEL, CentOS:

   sudo yum install glibc.i686

Ještě starší RHEL, CentOS:

  sudo yum install glibc.i386

Debian nebo Ubuntu:

   sudo apt-get install ia32-libs

měli byste získat (první, hlavní) knihovnu, kterou potřebujete.

Jakmile to budete mít, budete pravděpodobně potřebovat support libs

Každý, kdo potřebuje nainstalovat glibc.i686 nebo glibc.i386 pravděpodobně narazí také na jiné závislosti knihovny. K identifikaci balíčku poskytujícího libovolnou knihovnu můžete použít

 ldd /usr/bin/YOURAPPHERE

pokud si nejste jisti, že je v /usr/bin můžete se také vrátit k

 ldd $(which YOURAPPNAME)

Výstup bude vypadat takto:

    linux-gate.so.1 =>  (0xf7760000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xf773e000)
    libSM.so.6 => not found

Zkontrolujte chybějící knihovny (např. libSM.so.6 ve výše uvedeném výstupu) a pro každý z nich musíte najít balíček, který jej poskytuje.

Příkazy k nalezení balíčku podle distribuční rodiny

Fedora/Red Hat Enterprise/CentOS:

 dnf provides /usr/lib/libSM.so.6

nebo na starších RHEL/CentOS:

 yum provides /usr/lib/libSM.so.6

nebo na Debian/Ubuntu:

nejprve nainstalujte a stáhněte databázi pro apt-file

 sudo apt-get install apt-file && apt-file update

pak hledejte pomocí

 apt-file find libSM.so.6

Poznamenejte si cestu předpony /usr/lib v (obvyklém) případě; zřídka, některé knihovny stále žijí pod /lib z historických důvodů… Na typických 64bitových systémech žijí 32bitové knihovny v /usr/lib a 64bitové knihovny žijí v /usr/lib64 .

(Debian/Ubuntu organizují knihovny s více architekturami jinak.)

Instalace balíčků pro chybějící knihovny

Výše uvedené by vám mělo poskytnout název balíčku, např.:

libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library
Repo        : fedora
Matched from:
Filename    : /usr/lib/libSM.so.6

V tomto příkladu je název balíčku libSM a název 32bitové verze balíčku je libSM.i686 .

Pak můžete nainstalovat balíček, abyste získali potřebnou knihovnu pomocí pkcon v GUI nebo sudo dnf/yum/apt-get podle potřeby…. Např. pkcon install libSM.i686 . V případě potřeby můžete specifikovat verzi úplně. Např. sudo dnf install ibSM-1.2.0-2.fc15.i686 .

Některé knihovny budou mít před jménem označení „epocha“; to lze vynechat (zvědavci si mohou přečíst poznámky níže).

Poznámky

Upozornění

Mimochodem, problém, kterému čelíte, buď znamená, že vaše databáze RPM (resp. DPkg/DSelect) je poškozená, nebo že aplikace, kterou se pokoušíte spustit, nebyla nainstalována prostřednictvím správce balíčků. Pokud s Linuxem začínáte, pravděpodobně se budete chtít vyhnout používání softwaru z jiných zdrojů, než je váš správce balíčků, kdykoli je to možné...

Pokud v nastavení nepoužíváte "sudo"

Typ

su -c

pokaždé, když uvidíte sudo , např.

su -c dnf install glibc.i686

O označení epochy v názvech knihoven

Označení „epoch“ před názvem je artefaktem způsobu, jakým základní knihovny RPM zpracovávají čísla verzí; např.

2:libpng-1.2.46-1.fc16.i686 : A library of functions for manipulating PNG image format files
Repo        : fedora
Matched from:
Filename    : /usr/lib/libpng.so.3

Zde je 2: lze vynechat; jen pkcon install libpng.i686 nebo sudo dnf install libpng-1.2.46-1.fc16.i686 . (Vágně to znamená něco jako:v určitém okamžiku číslo verze libpng balíček se vrátil zpět a „epocha“ musela být zvýšena, aby se zajistilo, že novější verze bude během aktualizací považována za „novější“. Nebo se stalo něco podobného. Dvakrát.)

Aktualizováno k objasnění a podrobnějšímu pokrytí různých možností správce balíčků (březen 2016)


Právě jsem narazil na stejný problém na čerstvě nainstalovaném 64bitovém počítači CentOS 6.4. Jediný příkaz yum to vyřeší plus 99 % podobných problémů:

yum groupinstall "Knihovny kompatibility"

Buď to předponu 'sudo', nebo spusťte jako root, podle toho, co vám nejlépe vyhovuje.


Linux
  1. Jak nainstalovat ASSP v.2 na CentOS 7 64 bit

  2. Jak nainstalovat Tomcat 7 na Centos?

  3. Nainstalujte Apache na CentOS 8

  1. Nainstalujte Auter na CentOS 6

  2. Nainstalujte GitLab na CentOS 7

  3. Nainstalujte Nginx na CentOS 6

  1. Nainstalujte Odoo 14 na CentOS 8

  2. Nainstalujte PHP 7 na CentOS 7

  3. Nainstalujte MariaDB na CentOS 7