0

Debianパッケージをビルドしようとしていますが、この奇妙な疑似ディレクトリの問題があります。走る:

$ fakeroot debian/rules binary

以前にバイナリを作成しましたが、システムで何かが変更されたに違いありません。ここで、dh_md5sumsはエラーを出し、次を返します。

md5sum: include: Is a directory
dh_md5sums: command returned error code
make: *** [binary-arch] Error 1

確かにinclude、ディレクトリです。そこで、dh_md5sumsにいくつかのデバッグステートメントを追加して、includeディレクトリを除外することになっている行にもかかわらず、なぜハッシュされているのかを理解しました。追加:

doit("ls", "-l", "$tmp");

は、実際、includedh_md5sumsが実行されたときにディレクトリではないことを示しています。

total 28
drwxr-xr-x 2 root root 4096 2009-06-18 13:36 bin
-rwxr-xr-x 3 root root 4096 2009-06-18 13:36 include
drwxr-xr-x 3 root root 4096 2009-06-18 13:36 var
# some directories removed for brevity's sake

それで、私はそれを取り除くことができますか?追加した:

doit("rm", "$tmp/include");

そして得た:

rm: cannot remove `debian/myproject/include': Is a directory

多分それは...ディレクトリに変わりましたか?ls -l下にもう1つ追加して、次のようにrmしました。

total 28
drwxr-xr-x 2 root root 4096 2009-06-18 13:36 bin
-rwxr-xr-x 3 root root 4096 2009-06-18 13:36 include
drwxr-xr-x 3 root root 4096 2009-06-18 13:36 var

スクリプトの実行が完了すると、次のことができます。

$ ls -l
drwxr-xr-x 2 x x 4096 2009-06-18 13:48 bin
drwxr-xr-x 3 x x 4096 2009-06-18 13:48 include
drwxr-xr-x 3 x x 4096 2009-06-18 13:48 var

...これは奇妙なことです。includeディレクトリになり、所有権が変更されます(x私のユーザー名です)。 include想定されているすべてのヘッダーファイルも含まれています。

誰かが何が起こっているのか知っていますか?

4

1 に答える 1

1
total 28
drwxr-xr-x 2 root root 4096 2009-06-18 13:36 bin
-rwxr-xr-x 3 root root 4096 2009-06-18 13:36 include
drwxr-xr-x 3 root root 4096 2009-06-18 13:36 var
# some directories removed for brevity's sake

リンク数が3であることに注意しincludeてください。これは、サブディレクトリが1つあるディレクトリか、ハードリンクが3つあるファイルのいずれかであることを示しています。前者の方が可能性が高いようです。

これは、fakerootとの悪い相互作用のようです。fakerootがパーミッションを「忘れる」ことがあるのは以前にも見たことがあります。そのため、include作成または変更するときに、正しいタイプである(そして、最近変更されたものがない)ことを再確認してください。

于 2009-06-18T19:20:33.457 に答える