2015-05-11 23 views
6

Ich benutze eine Gentoo-Box und ich möchte erstellen Debian-basierte Chroot-Umgebungen ohne den Root-Account oder Sudo.Gentoo + Debootstrap Fehler bei der Verwendung mit fakeroot und fakechrowot

Dies scheint möglich zu sein, Tools wie fakeroot und fakechroot mit, aber bisher habe ich keinen Erfolg mit ihnen hatte. Hier ist der Befehl, den ich für Precise bin mit:

fakeroot fakechroot /usr/sbin/debootstrap --variant=fakechroot precise ./precise http://archive.ubuntu.com/ubuntu/ 

Es ist immer mit dem gleichen Fehler fehlschlägt:

I: Installing core packages... 
W: Failure trying to run: chroot precise dpkg --force-depends --install /var/cache/apt/archives/base-passwd_3.5.24_amd64.deb 
W: See precise/debootstrap/debootstrap.log for details 

und der Inhalt von debootstrap.log sind:

dpkg: error while loading shared libraries: libselinux.so.1: cannot open shared object file: No such file or directory 

Ich habe keine Ahnung, warum SELinux wird gezogen und warum es diese Abhängigkeit nicht richtig behandelt. Außerdem habe ich versucht Wheezy und Jessie zu bauen. Derselbe Fehler.

Was ist los? Versionen:

debootstrap-1.0.67

fakeroot-1.19

fakechroot-2.17.2

kernel-3.19.6

+0

Ich sehe nicht, wie fakeroot Sie hier hilft. Um klar zu sein, wo versuchst du deine chroot zu installieren? Und warum willst du das tun, ohne root zu benutzen? –

+0

Chroot wird nicht ohne fakeroot (Nicht-root-Konto) gestartet. Ich befolge einige Tutorials, aber es funktioniert nicht in meiner Umgebung. Und ich möchte benutzerdefinierte Build-Umgebungen einrichten, ohne dem Benutzer zusätzliche Berechtigungen zu geben. Docker könnte verwendet werden, aber es hat die gleichen Probleme (oder mehr), wenn Sie versuchen, es als normaler Benutzer zu verwenden. – ivarec

Antwort

1

fakeroot und fakechroot sind nicht das Problem hier. Es scheint, dass libselinux.so.1 verwendet wurde, als dpkg ursprünglich erstellt wurde. Versuchen Sie zuerst den locate-Befehl:

locate libselinux 

ohne die Version. Dies sollte 1) bestätigen, dass es wirklich nicht existiert, oder 2) dass es existiert, aber nicht in Ihrem $ LD_LIBRARY_PATH oder Standardbibliothekssuchpfad.

Wenn locate eine andere Version anzeigt, verwenden Sie den Befehl ln -s, um den Symlink (libselinux.so.1) zu erstellen, der auf die vorhandene Version verweist, die Sie haben.

die Abhängigkeit zu sehen, laufen:

ldd `which dpkg` 
+0

Es funktioniert als root, aber nicht als normaler Benutzer mit fakeroot und fakechroot. Das ist nicht der Punkt der Frage. – ivarec

+0

OK. Wenn es fehlschlägt, wird die Bibliothek nicht gefunden. Ich wette, der Suchpfad unterscheidet sich für root, was erfolgreich ist, als der Suchpfad für fakeroot. Hast du strace um dir alles zu zeigen? Es zeigt jeden versuchten Pfad an, auch wenn er nicht in LD_LIBRARY_PATH ist. – donjuedo