23 votes

En quoi install -c est-il différent de cp

Quelle est la différence entre install -c y cp ? La plupart des installations ont tendance à utiliser install -c mais de la man page il ne semble pas que ça fasse quelque chose de différent que cp (sauf peut-être la possibilité de définir également des autorisations). Quand dois-je utiliser install -c et quand cp ?

23voto

nos Points 4038

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

install, en revanche, supprime d'abord le fichier de destination.

Ceci est important car si le fichier de destination est déjà utilisé, de mauvaises choses pourraient arriver à la personne qui utilise ce fichier si vous cp un nouveau fichier par-dessus. Par exemple, écraser un exécutable en cours d'exécution peut échouer. Tronquer un fichier de données dans lequel un processus existant est occupé à lire/écrire pourrait provoquer un comportement assez bizarre. Si vous supprimez d'abord le fichier de destination, comme le fait install, les choses se poursuivent normalement - le fichier supprimé ne l'est pas tant que tous les processus ne l'ont pas fermé.

5 votes

Bonne réponse. Mais voir aussi cp --remove-destination dans GNU coreutils.

1 votes

Je suis un peu choqué que le défaut de cp soit de tronquer au lieu de remplacer le fichier de destination. N'est-ce pas un comportement par défaut dangereux en général ?

0 votes

Génial - merci, @PeterEisentraut, je n'étais pas au courant de ce drapeau.

10voto

Peter Eisentraut Points 7030

Techniquement, la différence entre install -c y cp c'est que install définit les permissions du fichier cible à rwxr-xr-x . cp préserve les permissions du fichier source moins le umask. Ces comportements par défaut sont utiles dans différentes situations. Évidemment, avec toutes les options que les deux cp y install Aujourd'hui, les fonctionnalités ont convergé.

De nos jours, install est couramment utilisé dans les makefiles, cp partout ailleurs. Cette distinction est parfois utile, car certains systèmes d'exploitation ou d'installation vous permettent de vous brancher sur l'interface de l install pour enregistrer les paquets installés. Les systèmes modernes de gestion des paquets rendent ce type de programme obsolète, mais certaines personnes l'utilisent encore. En outre, la possibilité de définir les autorisations du fichier cible en une seule fois est très pratique.

4voto

Lark Points 1640

El install l'utilité, à sa base, est une fantaisie cp . Mais en tant qu'outil spécifiquement destiné à l'installation, il contient quelques fonctionnalités qui sont les suivantes cp ne le fait pas. Mon /usr/bin/install de GNU coreutils ne se contente pas de copier, mais peut également modifier les perms/propriétés en tant que drapeaux d'arg (sauvegarde de chgrp , chown , chmod ), une option permettant de supprimer les informations de débogage (ce qui permet de sauvegarder une strip ) et aussi un peu de mojo pour les contextes SELinux.

Il fournit simplement des actions pratiques utiles pour l'installation de logiciels. Aucune ne change la vie, toutes sont utiles, et rendent vos scripts plus propres.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X