Udawanie środowiska Linux bez chroota


1

W przypadku projektu uniwersyteckiego chcę przetestować program C ++ 11 na maszynie 32-rdzeniowej. Niestety maszyna ma Ubuntu 12.04 z zainstalowanym GCC 4.6 (potrzebujemy GCC 4.7 ze względu na niektóre funkcje wątków w C ++ 11). W takim środowisku normalnie uruchamiałbym chroota z niestandardowym linuksem (powiedzmy debootstrap z Ubuntu 12.10). Ponieważ nie mamy dostępu do roota na komputerze, nie możemy używać chroot.

Do tej pory przygotowałem środowisko uruchomieniowe za pomocą debootstrap dla naszego kodu, skompilowałem je w środowisku debootstrap. Następnie skopiowałem go na serwer (używając rsync). Aby uruchomić nasz kod C ++, ustawiam LD_LIBRARY_PATH na

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

i do tej pory nasz kod wydaje się działać. Jednak utknąłem z naszym kodem python. Ręczne ustawianie ścieżek nie wydaje się wystarczające.

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

Wykonanie naszego skryptu powoduje

ImportError: No module named _path

Czy istnieje łatwiejszy sposób na uzyskanie „fałszywego” chroota niż po prostu nadpisywanie i tworzenie zmiennych środowiskowych?

Uwaga: Potrzebuję Pythona, ponieważ stworzyliśmy niestandardowy moduł C ++ - Python w celu uruchomienia naszych testów. Może powinienem z tego stworzyć dwa pytania.


Co powiesz na pobranie nowszej wersji gcc (lub źródła) i zainstalowanie jej jako katalogu domowego (jeśli taki posiadasz)? Jak duży jest ten program?
Nick

1
Czy próbowałeś również ustawić PYTHONHOME?
Cedric,

Jaka jest standardowa lokalizacja dla PYTHONHOME? Czy to /usr/lib/python2.7?
Pascal,

Nick: łatwiej jest stworzyć środowisko piaskownicowe, ponieważ zastąpienie gcc wymaga również zastąpienia glibc (lub ponownej kompilacji), co ma również bardzo szerokie skutki uboczne.
Pascal,

1
Czy próbowałeś fakeroot lub fakeroot-ng ? Możesz być w stanie zmusić do chrootUnder fakeroot-ng...
allquixotic
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.