Jaki jest cel polecenia „install”?


49

Widziałem installpolecenie używane w wielu plikach Makefiles, a jego istnienie i użycie jest trochę mylące. Na stronach podręcznika wygląda to na podróbkę cpz mniejszą liczbą funkcji, ale zakładam, że nie byłby używany, gdyby nie miał przewagi cp. O co chodzi?

Odpowiedzi:


50

installnie tylko kopiuje pliki, ale także zmienia ich własność i uprawnienia oraz opcjonalnie usuwa symbole debugowania z plików wykonywalnych. Łączy się cpz chown, chmodi strip. Jest to wygodne narzędzie wyższego poziomu, które realizuje wspólną sekwencję podstawowych zadań.

Zaletą installover cpinstalowania plików wykonywalnych jest to, że jeśli cel już istnieje, to usuwa plik docelowy i tworzy nowy. Pozbywa się to wszelkich bieżących właściwości, takich jak listy kontroli dostępu i możliwości, które można postrzegać zarówno jako plus, jak i minus. Podczas aktualizowania plików wykonywalnych, jeśli są uruchomione instancje tego pliku wykonywalnego, nadal działają bez zmian. Natomiast cpaktualizuje plik na miejscu, jeśli taki istnieje. W większości wariantów Uniksa błąd kończy się błędem EBUSY¹, jeśli celem jest działający plik wykonywalny; w niektórych przypadkach może powodować awarię celu, ponieważ dynamicznie ładuje sekcje kodu, a modyfikacja pliku powoduje wczytywanie nonsensownego kodu.

installto polecenie BSD (dodane w 4.2BSD , tj. na początku lat 80.). Nie został przyjęty przez POSIX.

¹ „Plik tekstowy zajęty”. W tym kontekście „plik tekstowy” oznacza „binarny plik wykonywalny” z niejasnych powodów historycznych .


Ważną uwagą (o ile rozumiem) jest to, że łączy się również rmz cp. Oznacza to, że może zastąpić używane pliki, rmnajpierw je rozłączając ( ). cpsam dałby błąd.
code_fodder

10

Zapewnia znormalizowany sposób manipulowania własnością i uprawnieniami do pliku lub katalogu podczas kopiowania pliku lub tworzenia katalogu za pomocą jednego polecenia.


9
To nie jest atomowe. Atom oznacza, że ​​nie ma stanów pośrednich widocznych dla innych procesów. installrobi kopię, po której następuje chown i chmod, wszystkie osobne wywołania systemowe i nie używa zmiany nazwy na miejsce (przynajmniej od coreutils 8.13 wersja GNU nie). Jeśli założysz, że wszystko dzieje się atomowo, możesz mieć nieprzyjemną niespodziankę.

3

Za pomocą installpolecenia możemy skopiować plik z uprawnieniami pożądania

Przykład, z którego najczęściej korzysta się podczas konfigurowania ldap

install -o ldap -g ldap /etc/openldap/DB_CONFIG_EXAMPLE  /var/lib/ldap/DB_CONFIG

To nas oszczędza chown ldap. /var/lib/ldap/DB_CONFIG, jeśli skopiowałeś przy użyciu, cpmusisz również chownw tym scenariuszu


1

Zobacz stronę podręcznika dla install:

$ man install

fragment

SYNOPSIS
       install [OPTION]... [-T] SOURCE DEST
       install [OPTION]... SOURCE... DIRECTORY
       install [OPTION]... -t DIRECTORY SOURCE...
       install [OPTION]... -d DIRECTORY...


DESCRIPTION
       This  install  program  copies  files  (often just compiled) into 
       destination locations you choose.  If you want to download and
       install a ready-to-use package on a GNU/Linux system, you should instead 
       be using a package manager like yum(1) or apt-get(1).

       In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to 
       the existing DIRECTORY, while  setting  permission  modes and 
       owner/group.  In the 4th form, create all components of the given 
       DIRECTORY(ies).

       Mandatory arguments to long options are mandatory for short options too.

Inne przydatne rzeczy, takie jak instalowanie z określoną własnością, uprawnieniami i zachowanie znaczników czasowych oryginalnych plików, można również uzyskać za pomocą install.

   -g, --group=GROUP
          set group ownership, instead of process' current group

   -m, --mode=MODE
          set permission mode (as in chmod), instead of rwxr-xr-x

   -o, --owner=OWNER
          set ownership (super-user only)

   -p, --preserve-timestamps
          apply access/modification times of SOURCE files to corresponding 
          destination files

Bibliografia


4
Jak powiedziałem w pytaniu, czytam stronę główną; pozostawiło mnie nieoświeconym, co to dodaje do funkcjonalności cp.
azernik

slm podkreślił specyficzną funkcjonalność, która je wyróżnia: możesz ustawić konkretnego właściciela, grupę i tryb dla pliku docelowego za pomocą install, zamiast tylko zachować istniejące uprawnienia jak w przypadkucp
Joshua Miller
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.