Я пытаюсь использовать schroot
для запуска 32-битного приложения на 64-битной установке Ubuntu (на самом деле Lubuntu) Raring. Мне удалось создать chroot
, заполненный следующей командой:
sudo debootstrap --arch=i386 raring /srv/chroot/raring_i386 http://archive.ubuntu.com/ubuntu
Однако, когда я вхожу в среду chroot
и пытаюсь запустить приложение, я получаю ошибки об отсутствии общего библиотеки. Например:
blockquote>
error while loading shared libraries: libICE.so.s: cannot open shared object file: No such file or directory
Пока что все отсутствующие библиотеки в моей среде
chroot
расположены вusr/lib/i386-linux-gnu/
. Я могу скопировать эти недостающие библиотеки из другой полной установки 32-битной Ubuntu, но я бы подумал, что вышеприведенный шагdebootstrap
должен был загрузить их напрямую. Может ли кто-нибудь дать дополнительное понимание того, как использованиеdebootstrap
должно создать средуchroot
? Возможно, я пропустил шаг или есть другая опция в вызовеdebootstrap
, чтобы сказать ему, чтобы получить некоторые дополнительные общие библиотеки?Большое спасибо!
После небольшого количества проб / ошибок и удачного поиска в Интернете, я думаю, что я нашел решение, которое искал. Вот краткое описание шагов, которые я использовал для решения этой проблемы:
В среде chroot
выполните следующую команду, чтобы выявить отсутствующие библиотеки:
ldd <binary executable>
Это покажет отсутствующие библиотеки как «не найденные». В качестве альтернативы эта команда может быть передана в grep как:
ldd <binary executable> | grep "not found"
Используйте следующую команду, чтобы найти пакеты, которые будут предоставлять отсутствующие библиотеки:
apt-cache search <library name>
Установите пакет из предыдущего шага из среды chroot
(можно найти несколько):
sudo apt-get install <package name>
После того, как я повторил вышеуказанные шаги для всех пропавших библиотеки мне удалось успешно запустить приложение из среды chroot
.
Ссылка, которую я нашел, которая дала мне ключ к поиску и установке отсутствующих библиотек, - это здесь .