Ответы:
Вы работаете в 64-битной системе, и у вас не установлена поддержка 32-битной библиотеки.
(если вы не используете sudo в вашей настройке, прочтите примечание ниже)
Большинство настольных Linux-систем семейства Fedora / Red Hat:
pkcon install glibc.i686
Возможно, какие-нибудь настольные системы Debian / Ubuntu ?:
pkcon install ia32-libs
Fedora или более новая Red Hat, CentOS:
sudo dnf install glibc.i686
Старые RHEL, CentOS:
sudo yum install glibc.i686
Еще старше RHEL, CentOS:
sudo yum install glibc.i386
Debian или Ubuntu:
sudo apt-get install ia32-libs
Вам нужно взять (первую, основную) библиотеку, которая вам нужна.
Любой, кому нужно установить glibc.i686
или glibc.i386
, возможно, столкнется с другими зависимостями библиотеки. Чтобы определить пакет, предоставляющий произвольную библиотеку, вы можете использовать
ldd /usr/bin/YOURAPPHERE
если вы не уверены, что он внутри, /usr/bin
вы также можете прибегнуть к
ldd $(which YOURAPPNAME)
Вывод будет выглядеть так:
linux-gate.so.1 => (0xf7760000)
libpthread.so.0 => /lib/libpthread.so.0 (0xf773e000)
libSM.so.6 => not found
Проверьте пропавшие библиотеки (например, libSM.so.6
в приведенном выше выводе), и для каждой из них вам нужно найти пакет, который его предоставляет.
Fedora / Red Hat Enterprise / CentOS:
dnf provides /usr/lib/libSM.so.6
или, на старых RHEL / CentOS:
yum provides /usr/lib/libSM.so.6
или в Debian / Ubuntu:
Сначала установите и загрузите базу данных для apt-file
sudo apt-get install apt-file && apt-file update
затем искать с
apt-file find libSM.so.6
Обратите внимание на префикс пути /usr/lib
в (обычном) случае; в редких случаях некоторые библиотеки по-прежнему живут /lib
по историческим причинам… В типичных 64-битных системах живут 32-битные библиотеки, /usr/lib
а в 64-битных /usr/lib64
.
(Debian / Ubuntu по-разному организовывают мульти-архитектурные библиотеки.)
Выше должно дать вам имя пакета, например:
libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library
Repo : fedora
Matched from:
Filename : /usr/lib/libSM.so.6
В этом примере имя пакета libSM
и имя 32 - битной версии пакета являетсяlibSM.i686
.
Затем вы можете установить пакет, чтобы получить необходимую библиотеку, используя pkcon
графический интерфейс или, sudo dnf/yum/apt-get
при необходимости… Например pkcon install libSM.i686
. При необходимости вы можете указать версию полностью. Напримерsudo dnf install ibSM-1.2.0-2.fc15.i686
.
Некоторые библиотеки будут иметь обозначение «эпохи» перед своим именем; это может быть опущено (любопытный может прочитать примечания ниже).
Кстати, проблема, с которой вы сталкиваетесь, подразумевает, что ваша база данных RPM (соответственно DPkg / DSelect) повреждена, или что приложение, которое вы пытаетесь запустить, не было установлено через менеджер пакетов. Если вы новичок в Linux, вы, возможно, захотите по возможности избегать использования программного обеспечения из источников, отличных от вашего менеджера пакетов ...
Тип
su -c
каждый раз, когда вы видите sudo
, например,
su -c dnf install glibc.i686
Указатель «эпоха» перед именем является артефактом того, как базовые библиотеки RPM обрабатывают номера версий; например
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
Здесь 2:
можно опустить; просто pkcon install libpng.i686
или sudo dnf install libpng-1.2.46-1.fc16.i686
. (Это смутно подразумевает что-то вроде: в какой-то момент номер версии libpng
пакета откатился назад, и «эпоху» пришлось увеличить, чтобы убедиться, что более новая версия будет считаться «более новой» во время обновлений. Или что-то подобное происходило. Дважды .)
Обновлено для уточнения и более полного охвата различных параметров диспетчера пакетов (март 2016 г.)
Просто столкнулся с той же проблемой на недавно установленной 64-битной машине CentOS 6.4. Одна команда yum исправит это плюс 99% подобных проблем:
yum groupinstall "Библиотеки совместимости"
Либо добавьте префикс «sudo», либо запустите от имени пользователя root, в зависимости от того, что вам больше подходит.
В общем, когда вы получаете такую ошибку, просто сделайте
yum provides ld-linux.so.2
тогда вы увидите что-то вроде:
glibc-2.20-5.fc21.i686 : The GNU libc libraries
Repo : fedora
Matched from:
Provides : ld-linux.so.2
и затем вы просто запускаете следующее, как написал BRPocock (на случай, если вам интересно, какова была логика ...):
yum install glibc.i686
Просто хотел добавить комментарий в BRPocock, но у меня нет достаточных привилегий.
Таким образом, мой вклад был для всех, кто пытался установить IBM Integration Toolkit из пакета IBM Integration Bus.
Когда вы пытаетесь запустить команду «Installation Manager» из папки / Integration_Toolkit / IM_Linux (файл для запуска «install»), вы получаете сообщение об ошибке, показанное в этом посте.
Дополнительные инструкции по устранению этой проблемы вы найдете на веб-странице IBM: https://www-304.ibm.com/support/docview.wss?uid=swg21459143
Надеюсь, это поможет любому, кто пытается это установить.
Я бы добавил, что для Debian вам нужен хотя бы один компилятор в системе (согласно 32-битным библиотекам Debian Stretch и Jessie) ).
Я установил apt-get install -y gcc-multilib
для запуска 32-битного исполняемого файла в моем док-контейнере на основе debian: jessie.
.i686
Вместо этого вы также можете установить 32-битный OpenJDK ( ). Согласно моему тесту, он будет установлен и работает без проблем.
sudo yum install java-1.8.0-openjdk.i686
Примечание:
Пакет java-1.8.0-openjdk содержит только среду выполнения Java . Если вы хотите разрабатывать программы на Java, установите пакет java-1.8.0-openjdk-devel .
Смотрите здесь для более подробной информации.