In che modo install -c è diverso da cp


20

Qual è la differenza tra install -c e cp? La maggior parte delle installazioni tende a usare install -c, ma dalla pagina man non sembra che faccia qualcosa di diverso da cp (tranne forse impostare le autorizzazioni). Quando dovrei usare install -c e quando cp?

Risposte:


18

Una differenza significativa è che cp tronca il file di destinazione e inizia a copiare i dati dall'origine nel file di destinazione.

install, d'altra parte, rimuove prima il file di destinazione.

Ciò è significativo perché se il file di destinazione è già in uso, potrebbero accadere cose brutte a chiunque stia usando quel file nel caso in cui ci sia cpun nuovo file sopra di esso. ad esempio, la sovrascrittura di un eseguibile in esecuzione potrebbe non riuscire. Troncare un file di dati su cui un processo esistente è impegnato a leggere / scrivere potrebbe causare comportamenti piuttosto strani. Se rimuovi prima il file di destinazione, come fa l'installazione, le cose continuano in modo molto simile al normale: il file rimosso non viene effettivamente rimosso fino a quando tutti i processi non lo chiudono.


3
Buona risposta. Ma vedi anche cp --remove-destinationnei coreutils GNU.
Peter Eisentraut,

7

Tecnicamente, la differenza tra install -ce cpè che installimposta le autorizzazioni del file di destinazione su rwxr-xr-x. cpconserva le autorizzazioni del file di origine meno umask. Questi comportamenti predefiniti sono utili in diverse situazioni. Ovviamente, con tutte le opzioni che entrambe offrono cpe installoffrono oggigiorno, le funzionalità sono convergenti.

Al giorno d'oggi, installè comunemente usato nei makefile, cpovunque. Questa distinzione è talvolta utile perché alcuni sistemi operativi o sistemi di installazione consentono di agganciarsi al installprogramma per registrare i pacchetti installati. I moderni sistemi di gestione dei pacchetti rendono questo tipo di obsoleto, ma alcune persone lo usano ancora. Inoltre, la possibilità di impostare le autorizzazioni del file di destinazione nello stesso modo è molto conveniente.


4

L' installutilità, alla base, è una fantasia cp. Ma come strumento specificamente installa, contiene alcune funzionalità che cpnon lo fanno. Il mio /usr/bin/installda coreutils GNU non solo copie, ma anche in grado di cambiare permanenti / proprietà come bandiere Arg (risparmio chgrp, chown, chmodinvocazioni) l'opzione di informazioni di debug striscia (salvataggio di stripun'invocazione) e anche qualche mojo per contesti SELinux.

Fornisce solo azioni utili utili per le installazioni di software. Nessuno sta cambiando la vita, tutti sono utili e rendono i tuoi script più puliti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.