Wie unterscheidet sich install -c von cp?

20

Was ist der Unterschied zwischen install -c und cp? Die meisten Installationen tendieren dazu, install -c zu verwenden, aber in der Manpage klingt es nicht so, als würde es etwas anderes als cp tun (außer vielleicht Berechtigungen setzen). Wann sollte ich install -c und wann cp verwenden?

sligocki
quelle

Antworten:

18

Ein wesentlicher Unterschied besteht darin, dass cp die Zieldatei abschneidet und beginnt, Daten von der Quelle in die Zieldatei zu kopieren.

install hingegen entfernt zuerst die Zieldatei.

Dies ist insofern von Bedeutung, als wenn die Zieldatei bereits verwendet wird, schlimme Dinge passieren können, wenn Sie cpeine neue Datei darauf ablegen. zB kann das Überschreiben einer laufenden ausführbaren Datei fehlschlagen. Das Abschneiden einer Datendatei, in die ein vorhandener Prozess gerade liest / schreibt, kann zu einem ziemlich seltsamen Verhalten führen. Wenn Sie nur die Zieldatei zuerst entfernen, wie dies bei der Installation der Fall ist, werden die Vorgänge weitgehend normal fortgesetzt. Die entfernte Datei wird erst dann tatsächlich entfernt, wenn alle Prozesse diese Datei schließen.

nos
quelle
3
Gute Antwort. Aber siehe auch cp --remove-destinationin GNU Coreutils.
Peter Eisentraut
7

Technisch gesehen besteht der Unterschied zwischen install -cund cpdarin, dass installdie Berechtigungen der Zieldatei auf festgelegt werden rwxr-xr-x. cpErhält die Berechtigungen der Quelldatei abzüglich der Umask. Diese Standardverhalten sind in verschiedenen Situationen nützlich. Offensichtlich mit allen Optionen , die beide cpund installbieten heute haben die Funktionalitäten konvergiert.

Heutzutage wird installes cpüberall sonst in Makefiles verwendet . Diese Unterscheidung ist gelegentlich nützlich, da Sie sich bei einigen Betriebssystemen oder Installationssystemen in das installProgramm einhängen können , um die installierten Pakete zu registrieren. Moderne Paketverwaltungssysteme machen diese Art von veraltet, aber einige Leute verwenden sie immer noch. Auch die Möglichkeit, die Zieldateiberechtigungen auf einmal festzulegen, ist sehr praktisch.

Peter Eisentraut
quelle
4

Das installDienstprogramm an seiner Basis ist eine Phantasie cp. Da ein Tool jedoch speziell installiert wird, enthält es einige Funktionen, die cpdies nicht tun . Meine /usr/bin/installvon GNU coreutils nicht nur Kopien, sondern kann auch perms / Eigentum als arg Flags (Speicher ändern chgrp, chown, chmodAnrufungen) eine Option , um Streifen Debug - Informationen (Speicher einen stripAufruf) und auch einige mojo für SELinux Kontext.

Es bietet lediglich praktische Aktionen für die Installation von Software. Keiner ist lebensverändernd, alle sind nützlich und machen Ihre Skripte sauberer.

Reiche Homolka
quelle