Подделка среды Linux без chroot

1177
Pascal

Для университетского проекта я хочу протестировать программу C ++ 11 на 32-ядерном компьютере. К сожалению, на машине установлен Ubuntu 12.04 с установленным GCC 4.6 (нам нужен GCC 4.7 из-за некоторых возможностей многопоточности C ++ 11). В такой среде я обычно запускаю chroot с пользовательским linux (скажем, debootstrap с Ubuntu 12.10). Так как мы не получаем root-права на машине, мы не можем использовать chroot.

Пока что я подготовил среду выполнения с использованием debootstrap для нашего кода, я скомпилировал ее в environemnt debootstrap. Затем скопировал его на сервер (используя rsync). Для запуска нашего кода C ++ я установил LD_LIBRARY_PATH в

export LD_LIBRARY_PATH=~/debootstrap/usr/lib/:~/debootstrap/lib64/:~/debootstrap/usr/lib/x86_64-linux-gnu/:~/debootstrap/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH 

и пока наш код работает. Я, однако, застрял с нашим кодом Python. Похоже, недостаточно установить пути вручную.

export PYTHONPATH=~/debootstrap/usr/lib/python2.7/dist-packages:~/debootstrap/usr/lib/python2.7:~/debootstrap/usr/lib/python2.7/plat-linux2:~/debootstrap/usr/lib/python2.7/lib-tk:~/debootstrap/usr/lib/python2.7/lib-dynload:~/debootstrap/usr/local/lib/python2.7/dist-packages:~/debootstrap/usr/lib/pymodules/python2.7:~/debootstrap/usr/lib/python2.7/dist-packages/PIL:~/debootstrap/usr/lib/python2.7/dist-packages/gtk-2.0:~/debootstrap/usr/lib/python2.7 

Выполнение нашего скрипта приводит к

ImportError: No module named _path 

Есть ли более простой способ создать «поддельный» корень, чем просто переопределение и создание переменных среды?

Примечание. Мне нужен python, поскольку мы создали собственный модуль C ++ - Python для запуска наших тестов. Может быть, я должен создать два вопроса из этого.

1
Как насчет загрузки более новой версии gcc (или исходного кода) и установки ее для использования в вашем домашнем каталоге (если она у вас есть)? Ну, а насколько велика эта программа? Nick 11 лет назад 0
Вы также пытались установить PYTHONHOME? Cedric 11 лет назад 1
Каково стандартное местоположение для PYTHONHOME? Это /usr/lib/python2.7? Pascal 11 лет назад 0
Ник: проще создать изолированную среду, потому что замена gcc требует также замены glibc (или перекомпиляции), которая также имеет очень широкие побочные эффекты. Pascal 11 лет назад 0
Вы пробовали fakeroot или [fakeroot-ng] (http://fakeroot-ng.lingnu.com/index.php/Home_Page)? Возможно, вы сможете использовать `chroot` в` fakeroot-ng` ... Horn OK Please 11 лет назад 1
На самом деле есть пакет под названием fakechroot. Что позволяет создавать «поддельные» среды chroot (именно то, что нам нужно на самом деле). Я, однако, сомневаюсь, поскольку fakeroot и fakechroot могут привести к значительному снижению производительности, поскольку все системные вызовы перенаправляются. Pascal 11 лет назад 0
@Nick: Паскаль заявил о необходимости использовать 32-ядерный компьютер. Не много людей имеют один из _these_ дома. Scott 11 лет назад 0
@Pascal: когда вы отвечаете на комментарий (в новом комментарии), обычно упоминается имя автора, которому предшествует символ «@», как в «@Nick». Таким образом он получает уведомление. См. Параграфы ** «Ответы в комментариях» ** [раздела ** «Форматирование комментариев **»] (http://superuser.com/editing-help#comment-formatting) страницы справки по редактированию уценок. Scott 11 лет назад 0
Вы пытались использовать `virtualenv` для управления своей средой Python? Darth Android 11 лет назад 0
@ Паскаль, упс. Я должен был застеклить это и прочитать это как 32-разрядный. Несмотря на это, я думаю, что я вне своей лиги. Nick 11 лет назад 0
@allquixotic fakechroot, кажется, работает, но мы должны были позаботиться о символических ссылках в каталогах. Я немного не уверен насчет производительности, хотя. Pascal 11 лет назад 0
@DarthAndroid: virtualenv немного проблематичен, так как ubuntu делает некоторые странные вещи с их библиотеками python ... Нам удалось запустить некоторые библиотеки, но только в среде fachechroot после того, как позаботились о символических ссылках. Пока мы просто запрашиваем библиотеки python на целевой машине ... Pascal 11 лет назад 0
@Cedric Для проблемы с питоном. Pip установить --user определенно помогло;) Pascal 11 лет назад 0

0 ответов на вопрос

Похожие вопросы