Qual è lo scopo del comando 'install'?


49

Ho visto il installcomando usato in molti Makefile e la sua esistenza e utilizzo sono un po 'confusi. Dalle manpage, sembra un knockoff cpcon meno funzionalità, ma suppongo che non sarebbe usato se non avesse qualche vantaggio cp. Qual è l'accordo?

Risposte:


50

installnon solo copia i file, ma modifica anche la proprietà e le autorizzazioni e, facoltativamente, rimuove i simboli di debug dagli eseguibili. Si combina cpcon chown, chmode strip. È uno strumento conveniente di livello superiore per realizzare una sequenza comune di compiti elementari.

Un vantaggio di installover cpper 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, cpaggiorna 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 .


Nota importante (per quanto posso capirlo) è che si combina anche rmcon cp. Ciò significa che può sovrascrivere i file in uso scollegandoli rmprima ( ). cpda solo darebbe un errore.
code_fodder

10

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.


9
Non è atomico. Atomico significa che non ci sono stati intermedi visibili ad altri processi. installfa 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.

3

Con il installcomando 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 cpallora devi farlo anche chownin questo scenario


1

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

Riferimenti


4
Come ho detto nella domanda, ho letto la pagina principale; mi ha lasciato non chiarito ciò che questo aggiunge alla funzionalità di cp.
azernik,

slm ha evidenziato la funzionalità specifica che distingue i due: è possibile impostare il proprietario, il gruppo e la modalità specifici per il file di destinazione con install, piuttosto che preservare le autorizzazioni esistenti come concp
Joshua Miller
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.