Odpowiedzi:
install
nie tylko kopiuje pliki, ale także zmienia ich własność i uprawnienia oraz opcjonalnie usuwa symbole debugowania z plików wykonywalnych. Łączy się cp
z chown
, chmod
i strip
. Jest to wygodne narzędzie wyższego poziomu, które realizuje wspólną sekwencję podstawowych zadań.
Zaletą install
over cp
instalowania 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 cp
aktualizuje 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.
install
to 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 .
Zapewnia znormalizowany sposób manipulowania własnością i uprawnieniami do pliku lub katalogu podczas kopiowania pliku lub tworzenia katalogu za pomocą jednego polecenia.
install
robi 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ę.
Za pomocą install
polecenia 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, cp
musisz również chown
w tym scenariuszu
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
install
, zamiast tylko zachować istniejące uprawnienia jak w przypadkucp
rm
zcp
. Oznacza to, że może zastąpić używane pliki,rm
najpierw je rozłączając ( ).cp
sam dałby błąd.