Widziałem w wielu miejscach używanych install -d
do tworzenia katalogów i install -c
kopiowania pliku. Dlaczego nie użyć mkdir
i cp
? Czy istnieje korzyść z używania install
?
źródło
Widziałem w wielu miejscach używanych install -d
do tworzenia katalogów i install -c
kopiowania pliku. Dlaczego nie użyć mkdir
i cp
? Czy istnieje korzyść z używania install
?
To zależy od tego, co robisz.
install
Polecenie jest zwykle używane w skryptach instalacyjnych, które pochodzą z opakowań i kod źródłowy dla instalacji binarny do systemu. Można go również użyć do zainstalowania dowolnego innego pliku lub katalogu. Oprócz opcji -d
i, -c
które masz -m
do określenia nowych uprawnień do pliku, który ma zostać zainstalowany, więc nie musisz wykonywać czynności A cp
i A, chmod
aby uzyskać ten sam wynik. Na przykład:
install -m644 "$srcdir/$pkgname-$pkgver-linux64" "$pkgdir/opt/$pkgname"
Masz również opcje -g
i odpowiednio -o
ustawić grupę docelową i właściciela. Pozwala to uniknąć oddzielnych połączeń z chown
. Ogólnie rzecz biorąc, użycie install
skraca skrypt i sprawia, że jest bardziej zwięzły, tworząc pliki, kopiując, ustawiając tryb i powiązane rzeczy w jednym poleceniu zamiast wielu.
W celach informacyjnych patrz man install
. Aby użyć, spójrz na dowolny skrypt instalacyjny dostarczony z kodem źródłowym pakietu .
„Instaluj” zazwyczaj łączy następujące działania:
Tak więc, zgodnie z podejściem uniksowym, należy stworzyć narzędzie do jednego, ale kompletnego działania polegającego na zainstalowaniu pliku wykonanego przez narzędzie budowlane w jego lokalizacji roboczej.
Kompletna koncepcja, którą opisałem, jest zaimplementowana w systemach BSD (w tak zwanej wersji „xinstall”); Traktuję tutaj tryb „bezpiecznego kopiowania” (nowa wersja z atomową zmianą nazwy). Systemy Linux (od coreutils) nie mają tej ważnej części i są podatne na wyścigi między usuwaniem a ponownym otwarciem przez przypadkowy proces; ale mogą to być objęte przez menedżerów pakietów.
install
lub$(INSTALL)
w plikach makefile oznacza również te kroki jako kroki kopiowania instalacji, a nie niektóre zwykłe kroki kopiowania. To może być przydatne.Oprócz poprzednich opisów tutaj dotyczących użycia, istnieje niewielka różnica poziomów między,
cp
ainstall
przynajmniej w Linuksie. W przypadku kopiowania na istniejącym pliku,cp
zastępuje on istniejący i-węzeł pliku, ainstall
zawsze tworzy nowy i-węzeł dla tej samej nazwy pliku.To robi różnicę podczas instalowania nowej wersji działającego pliku binarnego. Użycie
cp
powoduje błąd EBUSY, podczas gdyinstall
się powiedzie. Działający plik binarny nadal będzie korzystał ze starej wersji, ale nowa wersja jest używana, jeśli program zostanie zrestartowany.źródło
Jeśli dany katalog już istnieje:
mkdir -p
spróbuje ustawić bity własności i trybu plikówinstall -d
nie będzie próbował ustawić bitów własności i trybu plikówTo jest dla
mkdir
iinstall
od coreutils GNU . Oba używają tej samejmake_dir_parents
funkcji, ale zpreserve_existing
parametrem ustawionym odpowiednio nafalse
lubtrue
.źródło