Widziałem w wielu miejscach używanych install -ddo tworzenia katalogów i install -ckopiowania pliku. Dlaczego nie użyć mkdiri cp? Czy istnieje korzyść z używania install?
Widziałem w wielu miejscach używanych install -ddo tworzenia katalogów i install -ckopiowania pliku. Dlaczego nie użyć mkdiri cp? Czy istnieje korzyść z używania install?
Odpowiedzi:
To zależy od tego, co robisz.
installPolecenie 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 -di, -cktóre masz -mdo określenia nowych uprawnień do pliku, który ma zostać zainstalowany, więc nie musisz wykonywać czynności A cpi A, chmodaby uzyskać ten sam wynik. Na przykład:
install -m644 "$srcdir/$pkgname-$pkgver-linux64" "$pkgdir/opt/$pkgname"
Masz również opcje -gi odpowiednio -oustawić grupę docelową i właściciela. Pozwala to uniknąć oddzielnych połączeń z chown. Ogólnie rzecz biorąc, użycie installskraca 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.
Oprócz poprzednich opisów tutaj dotyczących użycia, istnieje niewielka różnica poziomów między, cpa installprzynajmniej w Linuksie. W przypadku kopiowania na istniejącym pliku, cpzastępuje on istniejący i-węzeł pliku, a installzawsze 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 cppowoduje błąd EBUSY, podczas gdy installsię powiedzie. Działający plik binarny nadal będzie korzystał ze starej wersji, ale nowa wersja jest używana, jeśli program zostanie zrestartowany.
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 mkdiri installod coreutils GNU . Oba używają tej samej make_dir_parentsfunkcji, ale z preserve_existingparametrem ustawionym odpowiednio na falselub true.
installlub$(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.