Como é que o install -c é diferente do cp

18

Qual é a diferença entre install -c e cp? A maioria das instalações tendem a usar o install -c, mas a partir da página man não parece que ele faz algo diferente do cp (exceto talvez permissões de set). Quando devo usar install -c e quando cp?

    
por sligocki 06.01.2011 / 17:43

3 respostas

17

Uma diferença significativa é que o cp trunca o arquivo de destino e começa a copiar os dados da fonte para o arquivo de destino.

install, por outro lado, remove o arquivo de destino primeiro.

Isso é significativo porque se o arquivo de destino já estiver em uso, coisas ruins podem acontecer com quem estiver usando esse arquivo caso você cp um novo arquivo sobre ele. por exemplo. sobrescrevendo um executável que está em execução pode falhar. Truncar um arquivo de dados que um processo existente está ocupado lendo / gravando pode causar um comportamento bastante estranho. Se você apenas remover o arquivo de destino primeiro, como ocorre com a instalação, as coisas continuarão muito parecidas com as normais - o arquivo removido não será realmente removido até que todos os processos fechem esse arquivo.

    
por 06.01.2011 / 21:34
7

Tecnicamente, a diferença entre install -c e cp é que install define as permissões do arquivo de destino como rwxr-xr-x . cp preserva as permissões do arquivo de origem menos o umask. Esses comportamentos padrão são úteis em diferentes situações. Obviamente, com todas as opções que os produtos cp e install oferecem atualmente, as funcionalidades convergiram.

Hoje em dia, install é comumente usado em makefiles, cp em qualquer outro lugar. Essa distinção é ocasionalmente útil porque alguns sistemas operacionais ou sistemas de instalação permitem que você conecte-se ao programa install para registrar os pacotes instalados. Sistemas modernos de gerenciamento de pacotes tornam esse tipo de obsoleto, mas algumas pessoas ainda o usam. Além disso, a possibilidade de definir as permissões do arquivo de destino de uma só vez é muito conveniente.

    
por 06.01.2011 / 21:30
4

O utilitário install , em sua base, é uma fantasia cp . Mas como uma ferramenta especificamente instala, ela contém alguns recursos que cp não possui. Meu /usr/bin/install do GNU coreutils não apenas copia, mas também pode alterar perms / ownership como arg flag (salvando chgrp , chown , chmod invocations) uma opção para remover informações de depuração (salvando uma invocação strip ) e também algum mojo para os contextos do SELinux.

Ele apenas fornece ações de conveniência úteis para instalações de software. Nenhum está mudando a vida, todos são úteis e tornam seus scripts mais limpos.

    
por 06.01.2011 / 20:24