Como o install -c é diferente do cp


20

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

Respostas:


18

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

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

Isso é significativo porque, se o arquivo de destino já estiver em uso, poderão ocorrer coisas ruins para quem estiver usando esse arquivo, caso você tenha cpum novo arquivo sobre ele. por exemplo, sobrescrever um executável em execução pode falhar. Truncar um arquivo de dados em que um processo existente esteja ocupado lendo / gravando pode causar um comportamento bem estranho. Se você apenas remover o arquivo de destino primeiro, assim como a instalação, as coisas continuarão como o normal - o arquivo removido não será removido até que todos os processos fechem esse arquivo.


3
Boa resposta. Mas veja também cp --remove-destinationno GNU coreutils.
Peter Eisentraut

7

Tecnicamente, a diferença entre install -ce cpé que installdefine as permissões do arquivo de destino rwxr-xr-x. cppreserva as permissões do arquivo de origem menos as umask. Esses comportamentos padrão são úteis em diferentes situações. Obviamente, com todas as opções que ambos oferecem cpe installhoje em dia, as funcionalidades convergiram.

Atualmente, installé comumente usado em makefiles, em cpqualquer outro lugar. Essa distinção é ocasionalmente útil porque alguns sistemas operacionais ou sistemas de instalação permitem conectar-se ao installprograma para registrar os pacotes instalados. Os 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 da mesma maneira é muito conveniente.


4

O installutilitário, em sua base, é uma fantasia cp. Mas, como uma ferramenta especificamente instalada, ela contém alguns recursos que cpnão. Meu /usr/bin/installpartir coreutils GNU não apenas cópias, mas também pode alterar perms / propriedade como bandeiras Arg (poupança chgrp, chown, chmodinvocações) uma opção para informações tira depuração (salvando uma stripinvocação) e também algum mojo para contextos SELinux.

Ele apenas fornece ações de conveniência úteis para instalações de software. Nada muda a vida, todos são úteis e torna seus scripts mais limpos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.