debootstrap
を実行してインストールイメージを準備し、ファイルにいくつかの変更を加えてから、ファイルによってバックアップされたディスクイメージにファイルをコピーするスクリプトがあります。
これはroot
で機能しますが、実際には特権リソースを必要としないため、root
特権なしでスクリプトを実行できるようにしたいと考えました。 fakeroot
を使用してスクリプト全体を実行するだけだと思いましたが、debootstrap
は失敗します
W: Failure trying to run: chroot /tmp/tmp..... mount -t proc proc /proc
それを回避する方法はありますか?
一般的に、yes、debootstrap
をroot以外のユーザーとしてfakeroot
を使用して実行できます。それよりも詳細があります。
あなたが直面していると思われる問題は、root以外のユーザーとしてchroot
を使用しようとしていることです。代わりに、fakechroot
に加えて fakeroot
を使用する必要があります。例えば:
fakechroot fakeroot debootstrap sid /tmp/sid
ループバックマウントの作成や非rootユーザーとしてのディスクイメージパーティションテーブルの作成など、後で発生する可能性のある問題。
これらすべての詳細を1つずつ処理する代わりに、 polystrap のようなdebootstrapバリアントを使用する方が簡単な場合があります。あなたはいつかそのことを望んでしまうでしょう。
Debootstrapにあなたがやろうとしていることを正確に行うためのオプション--variant=fakechroot
があると誰も言っていないことに驚いています。
chroot(2) syscallにはroot権限、またはより正確かつ技術的にはCAP_SYS_CHROOT
機能が必要です( capabilities(7))を参照
したがって、fakeroot
だけを使用することはできません( fakechroot
なども必要です)。