Quel est le but de la commande 'install'?


49

J'ai vu la installcommande utilisée dans beaucoup de Makefiles, et son existence et son utilisation prêtent à confusion. Dans les pages de manuel, cela ressemble à un imitation de cpmoins de fonctionnalités, mais je suppose que cela ne sera pas utilisé à moins que cela présente un avantage cp. Quel est le problème?

Réponses:


50

installnon seulement copie des fichiers, mais modifie également sa propriété et ses autorisations et supprime éventuellement les symboles de débogage des exécutables. Il combine cpavec chown, chmodet strip. C'est un outil pratique de niveau supérieur qui accomplit une séquence commune de tâches élémentaires.

Un des avantages de installl' cpinstallation des exécutables est que, si la cible existe déjà, elle supprime le fichier cible et en crée un nouveau. Cela supprime toutes les propriétés actuelles, telles que les listes de contrôle d'accès et les fonctionnalités, qui peuvent être considérées à la fois comme des avantages et des inconvénients. Lors de la mise à jour des exécutables, s’il existe des instances de cet exécutable, elles ne sont pas affectées. En revanche, cpmet à jour le fichier en place s’il en existe un. Sur la plupart des variantes d'Unix, l'erreur EBUSY¹ échoue si la cible est un exécutable en cours d'exécution; sur certains, la cible peut tomber en panne car elle charge les sections de code de manière dynamique et que la modification du fichier entraîne le chargement de code non sensé.

installest une commande BSD (ajoutée dans 4.2BSD , c’est-à-dire au début des années 1980). Il n'a pas été adopté par POSIX.

¹ “Fichier texte occupé”. Dans ce contexte, «fichier texte» signifie «fichier exécutable binaire», pour des raisons historiques obscures .


La note importante (pour autant que je puisse le comprendre) est qu’elle se combine également rmavec cp. Cela signifie qu'il peut écraser les fichiers en cours d'utilisation en les dissociant d'abord ( rm). cpseul donnerait une erreur.
code_fodder

10

Il fournit un moyen normalisé de manipuler la propriété et les autorisations d'un fichier ou d'un répertoire lors de la copie du fichier ou de la création du répertoire, en une seule commande.


9
Ce n'est pas atomique. Atomique signifie qu'il n'y a pas d'états intermédiaires visibles par d'autres processus. installfait une copie suivie par chown et chmod, tous les appels système séparés, et n'utilise pas renommer en place (du moins à partir de coreutils 8.13, la version GNU ne le fait pas). Si vous supposez que tout se passe de manière atomique, vous pourriez avoir une mauvaise surprise.

3

Avec la installcommande, nous pouvons copier le fichier avec les autorisations souhaitées

Exemple qui utilise principalement lors de la configuration de LDAP

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

Cela nous évite de faire chown ldap. /var/lib/ldap/DB_CONFIG, si vous copiez en utilisant cpalors vous devez également chowndans ce scénario


1

Voir la page de manuel pour install:

$ man install

extrait

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.

Vous pouvez également utiliser d'autres éléments utiles, tels que l'installation avec une propriété spécifique, des autorisations et la conservation des horodatages des fichiers d'origine 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

Références


4
Comme je l'ai dit dans la question, j'ai lu la page principale; cela ne m'a pas éclairé sur ce que cela ajoute à la fonctionnalité de cp.
azernik

slm a mis en évidence la fonctionnalité spécifique qui différencie les deux: vous pouvez définir un propriétaire, un groupe et un mode spécifiques pour le fichier de destination avec install, plutôt que de simplement conserver les autorisations existantescp
Joshua Miller
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.