Debian Paketerstellung Fehler
Frage
Ich versuche, ein Debian-Paket zu bauen, aber ich habe dieses seltsame Pseudo-Verzeichnis Problem. Ich betreibe:
$ fakeroot debian/rules binary
Ich habe das binäre vor gebaut, aber etwas auf meinem System geändert haben muss. Jetzt dh_md5sums Fehler aus und kehrt:
md5sum: include: Is a directory
dh_md5sums: command returned error code
make: *** [binary-arch] Error 1
Tatsächlich ist include
ein Verzeichnis. Also, ich habe noch einige Debugging-Anweisungen zu dh_md5sums, um herauszufinden, warum include
trotz der Linie gehasht werden wurde, die angeblich Verzeichnisse auszufiltern. Hinzufügen:
doit("ls", "-l", "$tmp");
zeigt, dass in der Tat, include
kein Verzeichnis ist, wenn dh_md5sums ausgeführt wird:
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
Also, ich kann es entfernen? Ich fügte hinzu:
doit("rm", "$tmp/include");
und bekam:
rm: cannot remove `debian/myproject/include': Is a directory
vielleicht ist es ... verwandelte sich in ein Verzeichnis? Ich habe eine andere ls -l
unter dem rm
und bekam:
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
und wenn die das Ausführen von Skripts fertig ist, kann ich tun:
$ 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
... was merkwürdig ist, als include
ein Verzeichnis und die Eigentümerwechsel wird (x
ist mein Benutzername). include
selbst enthält alle Header-Dateien es soll.
Wer weiß, was los ist?
Lösung
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
Beachten Sie, dass include
eine Link Zahl von 3 hat, was darauf hinweist, dass es entweder ein Verzeichnis mit 1 Unterverzeichnis oder eine Datei mit drei harten Links. Der ehemalige scheint wahrscheinlicher.
Dies scheint wie eine schlechte Wechselwirkung mit fakeroot. Ich habe es gesehen, bevor in dem fakeroot manchmal „vergisst“ Berechtigungen, so überprüfen Sie, dass, wenn include
erstellt oder geändert wird, dass es die richtige Art hat (und dass keiner von ihnen hat die jüngsten Änderungen).