web-dev-qa-db-fra.com

Quel est le but de la commande 'install'?

J'ai vu la commande install utilisée dans de nombreux Makefiles, et son existence et son utilisation sont un peu déroutantes. D'après les pages de manuel, cela ressemble à une imitation de cp avec moins de fonctionnalités, mais je suppose qu'il ne serait pas utilisé à moins qu'il n'ait un avantage sur cp. Quel est le problème?

51
azernik

install copie non seulement les fichiers mais modifie également leur propriété et leurs autorisations et supprime éventuellement les symboles de débogage des exécutables. Il combine cp avec chown, chmod et strip. C'est un outil pratique de niveau supérieur qui accomplit une séquence commune de tâches élémentaires.

Un avantage de install sur cp pour installer 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 capacités, qui peuvent être considérées à la fois comme un avantage et un inconvénient. Lors de la mise à jour des exécutables, s'il existe des instances de cet exécutable, ils continuent de fonctionner sans être affectés. En revanche, cp met à jour le fichier en place s'il en existe un. Sur la plupart des variantes Unix, cela échoue avec l'erreur EBUSY¹ si la cible est un exécutable en cours d'exécution; sur certains, cela peut provoquer le plantage de la cible car elle charge dynamiquement des sections de code et la modification du fichier entraîne le chargement de code non logique.

install est 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 raisons historiques obscures .

Il fournit un moyen standardisé de manipuler la propriété et les autorisations d'un fichier ou d'un répertoire tout en copiant le fichier ou en créant le répertoire, en une seule commande.

10

Avec la commande install, nous pouvons copier un fichier avec les autorisations souhaitées

Exemple utilisé 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 avez copié à l'aide de cp, vous devez également chown dans ce scénario

3
Rahul Patil

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.

D'autres choses utiles telles que l'installation avec une propriété spécifique, des autorisations et la préservation des horodatages des fichiers d'origine peuvent également être obtenues en utilisant 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

0
slm