GNU/Linux >> Linux Esercitazione >  >> Linux

In che modo install -c è diverso da cp

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

install, invece, rimuove prima il file di destinazione.

Questo è significativo perché se il file di destinazione è già in uso, potrebbero accadere cose brutte a chiunque stia usando quel file nel caso tu cp un nuovo file sopra di esso. per esempio. la sovrascrittura di un eseguibile in esecuzione potrebbe non riuscire. Il troncamento di un file di dati su cui un processo esistente è impegnato a leggere/scrivere potrebbe causare un comportamento piuttosto strano. Se rimuovi prima il file di destinazione, come fa l'installazione, le cose continuano come al solito:il file rimosso non viene effettivamente rimosso fino a quando tutti i processi non chiudono quel file.


Tecnicamente, la differenza tra install -c e cp è quel install imposta i permessi del file di destinazione su rwxr-xr-x . cp conserva i permessi del file sorgente meno l'umask. Questi comportamenti predefiniti sono utili in diverse situazioni. Ovviamente, con tutte le opzioni che entrambi cp e install offerta al giorno d'oggi, le funzionalità sono convergenti.

Al giorno d'oggi, install è comunemente usato nei makefile, cp in qualsiasi altro posto. Questa distinzione è occasionalmente utile perché alcuni sistemi operativi o sistemi di installazione consentono di collegarsi al install programma 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 i permessi del file di destinazione nello stesso passaggio è molto comoda.


Il install utility, alla sua base, è un elegante cp . Ma essendo uno strumento specificamente installato, contiene alcune funzionalità che cp no. Il mio /usr/bin/install da GNU coreutils non solo copia, ma può anche cambiare perms/ownership come flag arg (salvando chgrp , chown , chmod invocazioni) un'opzione per rimuovere le informazioni di debug (salvando un strip invocazione) e anche qualche mojo per i contesti SELinux.

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


Linux
  1. Come installare Fail2Ban su CentOS 7

  2. Come catturare un file da Awk?

  3. Come installare Ubuntu dal file ISO?

  4. Come installare g++ su Ubuntu

  5. in che modo cp -f è diverso da cp --remove-destination?

Come installare Skype in Fedora 24

Come installare CouchPotato su Ubuntu

Come installare il software dal sorgente in Linux

Come installare VirtualBox in diverse distribuzioni Linux

Come rimuovere (^M) caratteri da un file in Linux

Come installare Monitorix su Ubuntu 16.04