J'ai vu dans de nombreux endroits d'occasion install -d
Pour créer des répertoires et install -c
Pour copier un fichier. Pourquoi ne pas utiliser mkdir
et cp
? Y a-t-il un avantage à utiliser install
?
Cela dépend de ce que vous faites.
La commande install
est normalement utilisée dans les scripts d'installation fournis avec des packages et un code source pour installer un binaire à votre système. Il peut également être utilisé pour installer tout autre fichier ou répertoire. En plus de -d
et -c
options que vous avez -m
Pour spécifier les nouvelles autorisations du fichier à installer, vous n'avez donc pas à faire un cp
et un chmod
pour obtenir le même résultat. Par exemple:
install -m644 "$srcdir/$pkgname-$pkgver-linux64" "$pkgdir/opt/$pkgname"
Vous avez aussi des options -g
et -o
Pour définir le groupe cible et le propriétaire, respectivement. Cela évite les appels distincts à chown
. En général, en utilisant install
raccourcit votre script et le rend plus concis en effectuant la création de fichiers, la copie, le réglage du mode et les éléments associés dans une commande au lieu de plusieurs.
Pour référence, voir man install
. Pour l'utilisation, jetez un coup d'œil à tout script d'installation expédié avec un package code source .
"Installer" combine généralement les actions suivantes:
Il suit donc une approche UNIX qu'un outil doit être effectué pour une seule action complète d'installer un fichier créé par un outil de construction à son emplacement de travail.
Le concept complet que j'ai décrit est mis en œuvre dans les systèmes BSD (dans la version dit "xinstall"); Je traite ici le mode "Copie sûre" (nouvelle version avec Atomic Renaming) comme vital pour cela. Les systèmes Linux (de Coreutils) manquent cette partie importante et sont sujets aux races entre la suppression et la réouverture par un processus de spectateurs; Mais cela aurait pu être couvert par des gestionnaires de colis.
Outre les descriptions précédentes ici sur l'utilisation, il existe une différence de niveau bas entre cp
et install
, au moins sur Linux. Si la copie sur un fichier existant, cp
écrase l'inode existant du fichier, tandis que install
crée toujours une nouvelle inode pour le même nom de fichier.
Cela fait une différence lors de l'installation d'une nouvelle version d'un binaire exécutant. Utiliser cp
provoque une erreur eBusy, tandis que install
réussira. Le binaire exécuté utilisera toujours l'ancienne version, mais la nouvelle version est utilisée si le programme est redémarré.
Si le répertoire en question existe déjà:
mkdir -p
va essayer de définir les bits de propriété et de mode de fichiersinstall -d
n'essaiera pas de définir les bits de propriété de propriété et de fichierCeci est pour mkdir
et install
de GNU coreutils . Ils utilisent tous les deux le même make_dir_parents
fonction, mais avec le preserve_existing
Le paramètre est défini sur false
ou true
, respectivement.