Risposte:
install
non solo copia i file, ma modifica anche la proprietà e le autorizzazioni e, facoltativamente, rimuove i simboli di debug dagli eseguibili. Si combina cp
con chown
, chmod
e strip
. È uno strumento conveniente di livello superiore per realizzare una sequenza comune di compiti elementari.
Un vantaggio di install
over cp
per l'installazione di file eseguibili è che se la destinazione esiste già, rimuove il file di destinazione e ne crea uno nuovo. Questo elimina tutte le proprietà attuali come gli elenchi e le funzionalità di controllo degli accessi, che possono essere visti sia come aspetti positivi sia come aspetti negativi. Quando si aggiornano gli eseguibili, se ci sono istanze in esecuzione di questo eseguibile, continuano a rimanere inalterate. Al contrario, cp
aggiorna il file in atto, se presente. Sulla maggior parte delle varianti Unix, questo fallisce con l'errore EBUSY¹ se la destinazione è un eseguibile in esecuzione; su alcuni può causare il crash della destinazione perché carica sezioni di codice in modo dinamico e la modifica del file provoca il caricamento di codice senza senso.
install
è un comando BSD (aggiunto in 4.2BSD , cioè all'inizio degli anni '80). Non è stato adottato da POSIX.
¹ “File di testo occupato”. In questo contesto, "file di testo" significa "file eseguibile binario", per oscuri motivi storici .
Fornisce un modo standardizzato di manipolare la proprietà e le autorizzazioni di un file o directory durante la copia del file o la creazione della directory, in un singolo comando.
install
fa una copia seguita da chown e chmod, tutti i syscalls separati e non usa la ridenominazione in posizione (almeno come da coreutils 8.13 la versione GNU non lo fa). Se pensi che tutto accada atomicamente, potresti avere una brutta sorpresa.
Con il install
comando possiamo copiare il file con le autorizzazioni desiderate
Esempio che viene utilizzato principalmente durante l'impostazione di ldap
install -o ldap -g ldap /etc/openldap/DB_CONFIG_EXAMPLE /var/lib/ldap/DB_CONFIG
Questo ci fa risparmiare chown ldap. /var/lib/ldap/DB_CONFIG
, se hai copiato usando cp
allora devi farlo anche chown
in questo scenario
Vedi la pagina man per install
:
$ man install
estratto
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.
Altre cose utili come l'installazione con proprietà specifiche, permessi e preservare i timestamp dei file originali possono anche essere raggiunti attraverso l'uso di 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
, piuttosto che preservare le autorizzazioni esistenti come concp
rm
concp
. Ciò significa che può sovrascrivere i file in uso scollegandolirm
prima ( ).cp
da solo darebbe un errore.