@ Calmarius верен, это происходит, если вы рассматриваете 32-битный exe, даже без базовых 32-битных библиотек.
Я пытаюсь обновить свою систему (новая версия Ubuntu 16.04 от 12.04), мне нужно установить старую 32-битную примирительную службу avserver
, которая требует ia32-libs
(больше не доступна). Это означает, что оба dpkg
и apt-get
недовольны (что бы я ни делал, это побуждает меня apt-get -f install
, и если я запускаю это, он настаивает на том, чтобы удалить пакет службы), и моя служба не запускается.
Чтобы доказать, что это связано с отсутствием 32-битных библиотек, я установил мою старую систему (Ubuntu 12.04, с ia32-libs
и 32-битными библиотеками) /sda2
. Обеспечение /opt
(содержащее мой 32-битный двоичный файл) смонтировано /sda2/opt
, я могу, chroot /sda2
а ldd
затем работает как задумано.
Чтобы это исправить, я мог бы вручную установить все зависимые библиотечные пакеты с: i386 (arch). Однако я решил вместо того, чтобы попытаться выяснить, какие у меня были зависимости, я установил Wine (который в основном 32-битный, и поэтому устанавливает базовые библиотеки и загрузку, которая мне не очень нужна, но я согласен с этим).
Чтобы исправить dpkg
и apt-get
, я отредактировал /var/lib/dpkg/status
, нашел пакет для моего сервиса и удалил ia32-libs
. Сейчас dpkg
и apt-get
рады
Что сделано, ldd
радостно сообщает: -
root@withnail:/opt/<service path># ldd avserver
linux-gate.so.1 => (0xf77a6000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf778f000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7772000)
libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xf776b000)
libresolv.so.2 => /lib/i386-linux-gnu/libresolv.so.2 (0xf7752000)
libcrypt.so.1 => /lib/i386-linux-gnu/libcrypt.so.1 (0xf7720000)
libktssl.so.1.0.0 => /opt/<service path>/libktssl.so.1.0.0 (0xf76cb000)
libktcrypto.so.1.0.0 => /opt/<service path>/libktcrypto.so.1.0.0 (0xf756b000)
libktz.so.1 => /opt/<service path>/libktz.so.1 (0xf7558000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf754f000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf73d8000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7383000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7366000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf71af000)
/lib/ld-linux.so.2 (0x565b1000)