木村です。 From: Hideki Yamane <henrich@iijmio-mail.jp> Subject: [debian-users 00665] Re: NFS上でのdebuildがエラーになる Date: Sun, 19 Jul 2020 20:51:18 +0900
fakerootとNFSの問題にみえます。 では仮説として debian/control ファイルで Rules-Requires-Root: no を 指定して fakeroot しないようにしてみるとか。
https://sources.debian.org/src/jdim/0.4.0-1/debian/control/ な 感じで最初のブロックに指定します。
これを試してみたところ、debuildが正常に完了するようになりました。 From: KISE Hiroshi <kise@fuyuneko.jp> Subject: [debian-users 00664] Re: NFS上でのdebuildがエラーになる Date: Sun, 19 Jul 2020 19:20:54 +0900 (JST)
検索してみたのですが、みつけられたのは、これぐらい。
https://github.com/hpcng/singularity/issues/4928
Fakeroot may not work correctly with some network filesystems not aware of user namespace mappings.
これをみてピンと来るものがあって、試しにautofsの設定を変更してNFSv3で マウントするようにしたところ、↑の変更を加えなくてもdebuildが成功する ようになりました。 それで再度NFSv4にしていろいろ試したり調べたりしたところ、どうやら以下 のようなことのようです。 1. ユーザやグループをNFSv3では数値(UID/GID)で取り扱うが、NFSv4では文字 列(ユーザ名/グループ名)で取り扱う 2. UID 0に相当するユーザ名はDebianでもFreeBSDでも同じ(root)だが、GID 0 に相当するグループ名は異なる(rootとwheel) 3. Fakerootを使うと、`chown root:root FileName`に相当する処理が行われ る(推測) 4. NFSv3を使っている場合、3の処理は「FileNameのUIDを0、GIDを0に変更」 としてNFSサーバに要求されるので、成功する(推測) 5. NFSv4を使っている場合、3の処理は「FileNameのオーナーをroot、グルー プをrootに変更」としてNFSサーバに要求されるが、NFSサーバ側にはroot というグループがないので、失敗する(推測) 例えば、NFSv4でマウントしている状態で、 yasu@rolling-vm-debian1[1069]% ls -l ~/tmp/hogehage -rw-r--r-- 1 yasu user 0 7月 20 00:48 /home/yasu/tmp/hogehage なファイルに対して、 yasu@rolling-vm-debian1[1073]% sudo chown root ~/tmp/hogehage は成功して yasu@rolling-vm-debian1[1074]% ls -l ~/tmp/hogehage -rw-r--r-- 1 root user 0 7月 20 00:50 /home/yasu/tmp/hogehage となりますが、 yasu@rolling-vm-debian1[1075]% sudo chgrp root ~/tmp/hogehage は yasu@rolling-vm-debian1[1075]% sudo chgrp root ~/tmp/hogehage chgrp: changing group of '/home/yasu/tmp/hogehage': Invalid argument のようにエラーとなるので、多分↑の推測は正しいものと思います。 それでNFSv4を使いつづけるのなら、NFSサーバなFreeBSDの/etg/groupにroot をGID=0なグループとして追加する、というのが解決策となりますが、何とな くそれは気持ちが悪かったので、専用の作業用ディレクトリをNFSサーバ側で exportして、クライアント側ではそのディレクトリをNFSv3でマウントするこ とにしました。 --- 木村 康浩