Próbuję napisać regułę makefile, aby skopiować katalog, zachowując jego strukturę, a ponieważ wszystkie inne reguły w naszych plikach makefile używają install
, chciałem zachować spójność.
Na stronie podręcznika jest napisane:
STRESZCZENIE
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, to brzmi jak to, czego potrzebuję ... ale flagi nie mają sensu. Jak określić katalog docelowy do zainstalowania?
Próbowałem wykonać podstawowy test, tworząc dowolną strukturę katalogów na lokalnym dysku twardym:
~>tree test
test
├── a
│ └── b
│ └── c
│ └── e.txt
└── d
4 directories, 1 file
A potem bieganie install -d
i patrzenie na to, co zostało stworzone:
~>install -d test test2
~>tree test2
test2
0 directories, 0 files
Nic się nie stało!
Czy ktoś może skierować mnie we właściwym kierunku? Googling „gnu install -d flag” nie przynosi mi wiele.
cp -r
cp -r
?install -d
służy tylko do tworzenia katalogów. Kazałeś mu stworzyć dwa katalogitest
itest2
.test
już istniał, więc wystarczyło zrobićtest2
. Nie sądzę, żeinstall
obsługuje kopiowanie całych drzew katalogów; jest zwykle używany w plikach. Prawdopodobnie musisz użyćcp
źródło
install -d
jest to samo,mkdir
z tym wyjątkiem, że możesz jednocześnie określić tryb, właściciela, kontekst SELinux i grupę.Zwykle chcesz zainstalować pliki w odpowiednim folderze, bez powtarzania się. Możesz użyć funkcji Znajdź i zainstaluj, aby skrypty instalacyjne były bardziej suche
źródło