Ответ 1
Вы находитесь в 64-битной системе и не имеете 32-битной поддержки библиотеки.
Для установки (базовой) поддержки 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
должен захватить вам (первую, основную) библиотеку, в которой вы нуждаетесь.
После этого вам, вероятно, понадобятся поддержка 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, вы, вероятно, захотите избежать использования программного обеспечения из источников, отличных от вашего менеджера пакетов, когда это возможно...
Если вы не используете "sudo" в своей настройке
Тип
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 года)