install
não apenas copia arquivos, mas também altera sua propriedade e permissões e, opcionalmente, remove símbolos de depuração dos executáveis. Combina cp
com chown
, chmod
e strip
. É uma ferramenta conveniente de nível superior que realiza uma sequência comum de tarefas elementares.
Uma vantagem install
mais cp
para instalar executáveis é que, se o alvo já existir, ele remove o arquivo de destino e cria um novo. Isso elimina todas as propriedades atuais, como listas e recursos de controle de acesso, que podem ser vistas tanto como positivas quanto negativas. Ao atualizar os executáveis, se houver instâncias em execução desse executável, eles continuarão sendo afetados. Por outro lado, cp
atualiza o arquivo no local, se houver um. Na maioria das variantes do Unix, isso falha com o erro EBUSY¹ se o destino for um executável em execução; em alguns casos, pode causar falha no destino porque carrega seções de código dinamicamente e a modificação do arquivo faz com que o código sem sentido seja carregado.
install
é um comando BSD (adicionado em 4.2BSD , ou seja, no início dos anos 80). Não foi adotado pelo POSIX.
¹ “Arquivo de texto ocupado”. Nesse contexto, "arquivo de texto" significa "arquivo executável binário", por obscuras razões históricas .
Gilles 'SO- parar de ser mau'
fonte
rm
junto comcp
. Isso significa que ele pode sobrescrever arquivos que estão em uso, desvinculando-os (rm
) primeiro.cp
sozinho daria um erro.Ele fornece uma maneira padronizada de manipular a propriedade e as permissões de um arquivo ou diretório enquanto copia o arquivo ou cria o diretório, em um único comando.
fonte
install
faz uma cópia seguida por chown e chmod, todos os syscalls separados e não usa renomear no lugar (pelo menos a partir do coreutils 8.13 a versão GNU não). Se você presumir que tudo acontece atomicamente, poderá ter uma surpresa desagradável.Com o
install
comando podemos copiar o arquivo com as permissões desejadasExemplo que é usado principalmente durante a configuração do LDAP
Isso nos economiza
chown ldap. /var/lib/ldap/DB_CONFIG
, se você copiou usandocp
, também precisachown
nesse cenáriofonte
Veja a página de manual para
install
:excerto
Outras coisas úteis, como instalar com propriedade específica, permissões e preservar os registros de data e hora dos arquivos originais, também podem ser obtidas com o uso de
install
.Referências
fonte
install
, ao invés de apenas preservar as permissões existentes como comcp