Eine Linux-Umgebung ohne Chroot vorspielen

1275
Pascal

Für ein Universitätsprojekt möchte ich ein C ++ 11-Programm auf einer 32-Kern-Maschine testen. Leider hat der Rechner Ubuntu 12.04 mit GCC 4.6 installiert (wir benötigen GCC 4.7 wegen einiger C ++ 11-Threading-Funktionen). In einer solchen Umgebung würde ich normalerweise eine chroot mit einem benutzerdefinierten Linux betreiben (beispielsweise einen Debootstrap mit Ubuntu 12.10). Da wir keinen Root-Zugriff auf die Maschine erhalten, können wir chroot nicht verwenden.

Bisher habe ich eine Laufzeitumgebung mit debootstrap für unseren Code erstellt. Ich habe sie in der debootstrap-Umgebung kompiliert. Dann kopiert es auf den Server (mit rsync). Um unseren C ++ - Code auszuführen, setze ich den LD_LIBRARY_PATH auf

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 

und bis jetzt scheint unser Code zu laufen. Ich bleibe jedoch bei unserem Python-Code. Es scheint nicht ausreichend zu sein, die Pfade manuell einzustellen.

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 

Die Ausführung unserer Skriptergebnisse erfolgt in

ImportError: No module named _path 

Gibt es eine einfachere Möglichkeit, eine "gefälschte" -Chroot zu erreichen, als nur Umgebungsvariablen zu überschreiben und zu erstellen?

Hinweis Ich brauche Python, da wir ein benutzerdefiniertes C ++ - Python-Modul erstellt haben, um unsere Tests auszuführen. Vielleicht sollte ich daraus zwei Fragen stellen.

1
Wie wäre es, wenn Sie die neuere Version von gcc (oder die Quelle) herunterladen und als Verwendung in Ihrem Home-Verzeichnis (falls vorhanden) installieren? Wie groß ist das Programm? Nick vor 11 Jahren 0
Haben Sie auch versucht, PYTHONHOME einzustellen? Cedric vor 11 Jahren 1
Was ist der Standardstandort für PYTHONHOME? Ist es /usr/lib/python2.7? Pascal vor 11 Jahren 0
Nick: Es ist einfacher, eine Sandkastenumgebung zu erstellen, da für das Ersetzen von gcc auch Glibc (oder eine Neukompilierung) ersetzt werden muss, was dann auch sehr breite Nebenwirkungen hat. Pascal vor 11 Jahren 0
Haben Sie es mit fakeroot oder [fakeroot-ng] versucht (http://fakeroot-ng.lingnu.com/index.php/Home_Page)? Sie können möglicherweise eine "chroot" unter "fakeroot-ng" zwingen ... Horn OK Please vor 11 Jahren 1
Es gibt tatsächlich ein Paket namens fakechroot. Dies ermöglicht die Schaffung einer "falschen" Chroot-Umgebung (genau das, was wir eigentlich brauchen). Ich bin jedoch unschlüssig, da sowohl fakeroot als auch fakechroot einen erheblichen Performance-Overhead verursachen können, da alle Systemaufrufe umgeleitet werden. Pascal vor 11 Jahren 0
@Nick: Pascal gab an, eine 32-Core-Maschine zu verwenden. Nicht viele Leute haben einen von diesen zu Hause. Scott vor 11 Jahren 0
@ Pascal: Wenn Sie auf einen Kommentar antworten (in einem neuen Kommentar), ist es üblich, den Namen des Autors anzugeben, dem ein "@" -Symbol vorangestellt ist, wie in "@Nick". Auf diese Weise wird er benachrichtigt. Siehe ** Antworten in Kommentaren ** Absätze des Abschnittes [Kommentarformatierung **] (http://superuser.com/editing-help#comment-formatting) auf der Hilfe-Seite zur Markdown-Bearbeitung. Scott vor 11 Jahren 0
Haben Sie versucht, Ihre Python-Umgebung mithilfe von "virtualenv" zu verwalten? Darth Android vor 11 Jahren 0
@ Pascal, oops. Ich muss darüber glasiert haben und es als 32-Bit lesen. Trotzdem denke ich, dass ich meine Liga verlassen habe. Nick vor 11 Jahren 0
@allquixotic fakechroot scheint zu funktionieren, aber wir mussten besonders auf die symbolischen Links in den Verzeichnissen achten. Ich bin allerdings etwas unsicher, was die Performance angeht. Pascal vor 11 Jahren 0
@DarthAndroid: virtualenv ist ein bisschen problematisch, da ubuntu etwas seltsames mit seinen Python-Bibliotheken macht ... Wir haben es geschafft, einige der Bibliotheken auszuführen, aber nur in einer fachechroot-Umgebung, nachdem wir uns um die Symlinks gekümmert hatten. Vorerst fordern wir nur die Python-Bibliotheken auf dem Zielrechner an ... Pascal vor 11 Jahren 0
@ Cedric Für das Python-Problem. Pip installieren - Benutzer definitiv geholfen;) Pascal vor 11 Jahren 0

0 Antworten auf die Frage