Ich versuche, eine Makefile-Regel zu schreiben, um ein Verzeichnis zu kopieren, wobei die Struktur beibehalten wird, und da alle anderen Regeln in unseren Makefiles verwendet werden install
, wollte ich konsistent sein.
In der Manpage heißt es:
ZUSAMMENFASSUNG
install [OPTION]... [-T] SOURCE DEST install [OPTION]... SOURCE... DIRECTORY install [OPTION]... -t DIRECTORY SOURCE... install [OPTION]... -d DIRECTORY... -d, --directory treat all arguments as directory names; create all components of the specified directories
OK, das hört sich nach dem an, was ich brauche ... aber die Fahnen ergeben keinen Sinn. Wie geben Sie das Zielverzeichnis an, in das installiert werden soll?
Ich habe versucht, einen Basistest durchzuführen, indem ich eine beliebige Verzeichnisstruktur auf meiner lokalen Festplatte erstellt habe:
~>tree test
test
├── a
│ └── b
│ └── c
│ └── e.txt
└── d
4 directories, 1 file
Und dann rennen install -d
und schauen, was erstellt wurde:
~>install -d test test2
~>tree test2
test2
0 directories, 0 files
Nichts ist passiert!
Kann mich jemand in die richtige Richtung weisen? Das googeln mit "gnu install -d flag" bringt mir nicht viel.
cp -r
cp -r
?install -d
wird nur zum Erstellen von Verzeichnissen verwendet. Sie haben gesagt, es sollen zwei Verzeichnisse erstellt werden,test
undtest2
.test
existierte bereits, so dass alles, was es zu tun brauchte, zu machen wartest2
. Ich glaube nicht, dassinstall
das Kopieren ganzer Verzeichnisbäume unterstützt wird. Es wird normalerweise für Dateien verwendet. Sie müssen wahrscheinlich verwendencp
quelle
install -d
ist es dasselbe,mkdir
außer dass Sie den Modus, den Eigentümer, den SELinux-Kontext und die Gruppe gleichzeitig angeben können.Normalerweise möchten Sie Dateien im richtigen Ordner installieren, ohne sich selbst zu wiederholen. Sie können find and install verwenden, um Ihre Installationsskripte trockener zu halten
quelle