Como a instalação é diferente do cp? [duplicado]

15

Como install é diferente de uma cópia simples, cp ou dd ? Eu acabei de compilar um pequeno utilitário e quero adicioná-lo a /usr/sbin para que ele fique disponível através da minha variável PATH . Por que usar um contra o outro?

    
por tarabyte 27.07.2015 / 19:50

3 respostas

15

Para "instalar" um binário compilado a partir da fonte, a melhor prática seria colocá-lo sob o diretório:

/usr/local/bin

Em alguns sistemas que o caminho já está em sua variável PATH, se não você pode adicioná-lo adaptando a variável PATH em um dos arquivos de configuração do seu perfil ~/.bashrc ~/.profile

PATH=${PATH}:/usr/local/bin

dd é uma ferramenta de cópia de baixo nível que é usada principalmente para copiar blocos de tamanho exato da fonte, o que poderia ser, por exemplo, um arquivo ou um dispositivo.

cp é o comando comum para copiar arquivos e diretórios também recursivamente com a opção -r e preservando as permissões com a opção -p .

install é basicamente semelhante a cp , mas fornece adicionalmente a opção de definir as propriedades do arquivo de destino diretamente, sem a necessidade de usar chmod separadamente.

cp de seus arquivos para /usr/local/bin e adapte a variável PATH , se necessário. Isso é o que eu faria.

    
por 27.07.2015 / 20:18
7

Instale cópias de arquivos com o modo padrão 755.

A instalação pode ser configurada para definir o proprietário ou grupo de um arquivo e / ou o modo de um arquivo.

A instalação pode ser configurada para fazer backup do arquivo original antes de ser substituído.

    
por 27.07.2015 / 20:16
2

A principal diferença entre install e cp é que, se o arquivo de destino já existir, install o desvincula primeiro.

Essa diferença não é apontada nas páginas de manual. As coisas listadas nas outras respostas também importam - ambos os programas têm opções diferentes, e também o GNU install tem opções diferentes do BSD install , então os Makefiles portáveis são limitados a um subconjunto comum.

Por que desvincular (o que também pode ser feito por rm antes de cp ) é importante? Se você tiver um arquivo com dois hardlinks e modificá-lo usando um dos hardlinks, ele também será modificado em outro lugar no sistema de arquivos. Mas se você remover primeiro um dos hardlinks e substituí-lo pelo arquivo modificado, o outro local manterá a versão original.

O cenário mais provável é que você atualize um programa ou uma biblioteca enquanto estiver em uso. Se o binário for desvinculado primeiro, ele não afetará o programa em execução. Aqui está uma boa postagem com mais detalhes: link

    
por 28.10.2015 / 18:58