web-dev-qa-db-ja.com

fakeroot環境内でdebootstrapを実行することは可能ですか?

debootstrapを実行してインストールイメージを準備し、ファイルにいくつかの変更を加えてから、ファイルによってバックアップされたディスクイメージにファイルをコピーするスクリプトがあります。

これはrootで機能しますが、実際には特権リソースを必要としないため、root特権なしでスクリプトを実行できるようにしたいと考えました。 fakerootを使用してスクリプト全体を実行するだけだと思いましたが、debootstrapは失敗します

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

それを回避する方法はありますか?

9
Petr Pudlák

一般的に、yesdebootstrapをroot以外のユーザーとしてfakerootを使用して実行できます。それよりも詳細があります。

あなたが直面していると思われる問題は、root以外のユーザーとしてchrootを使用しようとしていることです。代わりに、fakechrootに加えて fakeroot を使用する必要があります。例えば:

fakechroot fakeroot debootstrap sid /tmp/sid

ループバックマウントの作成や非rootユーザーとしてのディスクイメージパーティションテーブルの作成など、後で発生する可能性のある問題。

これらすべての詳細を1つずつ処理する代わりに、 polystrap のようなdebootstrapバリアントを使用する方が簡単な場合があります。あなたはいつかそのことを望んでしまうでしょう。

5
bnewbold

Debootstrapにあなたがやろうとしていることを正確に行うためのオプション--variant=fakechrootがあると誰も言っていないことに驚いています。

0
Étienne

chroot(2) syscallにはroot権限、またはより正確かつ技術的にはCAP_SYS_CHROOT機能が必要です( capabilities(7))を参照

したがって、fakerootだけを使用することはできません( fakechroot なども必要です)。