Ich versuche, Quartal zu kompilieren und es mit checkinstall .
Wenn ich den Standard ./configure & amp; & amp; machen & amp; & amp; sudo make install, alles geht gut.
%Vor% Aber wenn ich checkinstall verwende, scheitert es an einer mkdir -p
, die vollkommen in Ordnung sein sollte. Die Art, wie es fehlschlägt, ist genau so, als ob die Option -p
nicht gegeben wäre. Dies ist die Checkinstall-Befehlszeile, die ich verwende:
Dies ist der Fehler:
%Vor%Dies ist der relevante Teil des Skripts:
%Vor% Ich verstehe nicht, warum (Wenn exec
da ist - garantiert das nicht, dass der Rest des Skripts (nach dem esac
) niemals ausgeführt wird? if
test übergibt, dann nimmt das Skript an, dass mkdir -p
korrekt funktioniert, also kann es das echte mkdir -p
beenden, ansonsten implementiert der Rest des Skripts das richtige mkdir -p
Verhalten.) Ich auch nicht verstehe, warum es (Erklärte Tom im Kommentar) "$*"
im Echo und "$@"
in der nächsten Zeile verwendet, aber es scheint keine Rolle zu spielen - sie sind beide dasselbe, da dieses Skript mit nur einem Argument aufgerufen wird.
Wenn ich zwei Zeilen zwischen echo
und exec
hinzufüge, die mkdir -p -- "$@"
und dann echo "Now doing the exec mkdir..."
haben, dann funktioniert das so - besser, aber immer noch verwirrend:
Nun, die Tatsache, dass die mkdir-Zeile zweimal funktioniert hat, sagt mir, dass es kein Berechtigungsproblem ist (abgesehen davon würde das eine andere Diagnose als mkdir erzeugen, und das wird als sudo
ausgeführt und es funktioniert tatsächlich /var/tmp/...
nicht die reale /usr/local/...
). Ich denke, was passiert, ist, dass der erste Aufruf von mkdir (den ich hinzugefügt habe) tatsächlich nur das Quarter
-Verzeichnis erstellt und ausbucht, und wenn das zweite mkdir ausgeführt wird, kann das devices
-Unterverzeichnis erstellt werden, da das Viertel Verzeichnis ist schon da. Aber warum würde mkdir so arbeiten ???
Meine Problemumgehung besteht darin, das Skript mkinstalldirs irgendwie zu patchen, aber ich bin wirklich neugierig, warum das bricht!
Dies ist ein Ubuntu 10.10 guest, der in VirtualBox auf Win7 läuft, checkinstall version 1.6.2 installiert durch apt-get.
BEARBEITEN: Ich habe einige Tests durchgeführt, um zu sehen, was in dieser Umgebung funktioniert und was nicht funktioniert ...
%Vor% Seltsam, dass -p
für relative Pfadnamen, aber nicht für absolute Pfadnamen funktioniert. Oder vielleicht ist die korrekte Unterscheidung, dass -p
außerhalb des "chroot" -Baums arbeitet (wenn es wirklich chroot benutzt), aber nicht innerhalb von chroot.
Ich habe auch überprüft, dass es trotz des Fehlers in der Lage ist, die erste Verzeichnisebene zu erstellen.
Immer noch ein Mysterium.
Tags und Links linux mkdir checkinstall