En quoi install -c est différent de cp

20

Quelle est la différence entre install -c et cp? La plupart des installations ont tendance à utiliser install -c, mais à partir de la page de manuel, cela ne ressemble pas à quelque chose de différent de cp (sauf peut-être définir des autorisations). Quand dois-je utiliser install -c et quand cp?

sligocki
la source

Réponses:

18

Une différence significative est que cp tronque le fichier de destination et commence à copier les données de la source dans le fichier de destination.

installer, d'autre part, supprime d'abord le fichier de destination.

Ceci est important car si le fichier de destination est déjà utilisé, de mauvaises choses peuvent arriver à quiconque utilise ce fichier au cas où vous auriez cpun nouveau fichier par-dessus. Par exemple, l'écrasement d'un exécutable en cours d'exécution peut échouer. La troncature d'un fichier de données dans lequel un processus existant est occupé à lire / écrire pourrait provoquer un comportement assez étrange. Si vous supprimez simplement le fichier de destination en premier, comme le fait l'installation, les choses continuent comme d'habitude - le fichier supprimé n'est réellement supprimé que lorsque tous les processus ferment ce fichier.

non
la source
3
Bonne réponse. Mais voir aussi cp --remove-destinationdans GNU coreutils.
Peter Eisentraut du
7

Techniquement, la différence entre install -cet cpest installla définition des autorisations du fichier cible rwxr-xr-x. cppréserve les autorisations du fichier source moins l'umask. Ces comportements par défaut sont utiles dans différentes situations. Évidemment, avec toutes les options que les deux offrent cpet installde nos jours, les fonctionnalités ont convergé.

De nos jours, installest couramment utilisé dans les makefiles, cppartout ailleurs. Cette distinction est parfois utile car certains systèmes d'exploitation ou systèmes d'installation vous permettent de vous connecter au installprogramme pour enregistrer les packages installés. Les systèmes de gestion de paquets modernes rendent ce type de contenu obsolète, mais certaines personnes l'utilisent encore. En outre, la possibilité de définir les autorisations de fichier cible en même temps est très pratique.

Peter Eisentraut
la source
4

L' installutilitaire, à sa base, est une fantaisie cp. Mais en tant qu'outil spécifiquement installé, il contient quelques fonctionnalités qui cpne le font pas. Mon /usr/bin/installde GNU coreutils non seulement des copies, mais peut aussi changer perms / propriété comme des drapeaux arg (épargne chgrp, chown, chmodinvocations) une option pour les informations de débogage de bande (enregistrement d' une stripinvocation) et aussi quelques mojo pour des contextes SELinux.

Il fournit simplement des actions pratiques utiles pour les installations de logiciels. Aucun ne change la vie, tous sont utiles et rendent vos scripts plus propres.

Rich Homolka
la source