Ist es möglich, Debootstrap in einer Fakeroot-Umgebung auszuführen?


9

Ich habe ein Skript, das ein Installationsimage durch Ausführen vorbereitet debootstrap, einige Änderungen an den Dateien vornimmt und die Dateien dann auf ein von einer Datei gesichertes Disk-Image kopiert.

Dies funktioniert unter root, aber ich wollte das Skript ohne rootBerechtigungen ausführen können , da es wirklich keine privilegierten Ressourcen benötigen sollte. Ich dachte, ich würde nur das gesamte Skript mit ausführen fakeroot, aber es debootstrapschlägt fehl

W: Failure trying to run: chroot /tmp/tmp..... mount -t proc proc /proc

Gibt es einen Weg, das zu umgehen?

Antworten:


5

Im Allgemeinen ist es ja möglich, debootstrapals Nicht-Root-Benutzer ausgeführt zu werden fakeroot, aber es gibt mehr Details dazu.

Das unmittelbare Problem, das Sie zu haben scheinen, ist der Versuch, chrootals Nicht-Root-Benutzer zu arbeiten. Sie müssen fakechrootstattdessen zusätzlich zu verwenden fakeroot. Zum Beispiel:

fakechroot fakeroot debootstrap sid /tmp/sid

Spätere Probleme, auf die Sie möglicherweise stoßen, umfassen das Erstellen von Loopback-Mounts oder das Erstellen von Disk-Image-Partitionstabellen als Nicht-Root-Benutzer.

Anstatt all diese Details einzeln durchzuarbeiten , ist es möglicherweise einfacher, eine Debootstrap-Variante wie Polystrap zu verwenden , die auch die Cross-Kompilierung übernimmt (z. B. ein Armhf-Image von x86-64 generiert), wenn Sie dies eines Tages wünschen .


2
Das Problem ist, dass debootstrapselbst angerufen chrootwird und ich keinen Weg finden konnte, um zu sagen, dass es verwendet werden muss fakechroot.
Petr Pudlák

@ PetrPudlák Hast du fakerootng statt fakeroot ausprobiert? Sie arbeiten anders, so dass manchmal einer funktioniert, wenn der andere nicht. Ich weiß nicht, ob fakerootng chroot zum Laufen bringt.
Gilles 'SO - hör auf böse zu sein'

@ PetrPudlák: Die Fakechroot-Manpage gibt einen Beispielaufruf alsfakechroot fakeroot debootstrap sid /tmp/sid
bnewbold

@ PetrPudlák: --variant = fakechroot sollte das tun. Darüber hinaus: unshare / lxc-userns-exec sind eine "bessere" Möglichkeit, dies in Kombination mit Multistrap zu tun (dh die Idee hinter Polystrap, das in Brickstrap gerollt wurde).
user268396


0

Ich bin überrascht, dass niemand erwähnt hat, dass Debootstrap die Option hat --variant=fakechroot, genau das zu tun, was Sie versuchen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.