install
oferece vários recursos além de copiar arquivos para um diretório.
- a opção
-s
remove a tabela de símbolos de um executável, economizando espaço - a opção
-m
define os bits de permissão. Os arquivos que estão no diretório do desenvolvedor foram criados sujeitos a umask, o que pode impedir que outros os executem.install -m 755 file1 /usr/local/bin
garante que todos possam executar o arquivo, o que é provável o que o desenvolvedor deseja para um arquivo em um diretório compartilhado. - as opções
-o
e-g
definem o proprietário e o grupo. Comcp
, o proprietário e o grupo do arquivo de destino seriam definidos como uid e gid de quem executou ocp
e, comcp -p
, o proprietário e o grupo do arquivo de destino seriam os mesmos que o arquivo no diretório de construção, nenhum dos quais pode ser o que o desenvolvedor deseja. O programawall
precisa estar no grupotty
, o programascreen
precisa ser o grupoutmp
, etc. - reduz o número de comandos que precisam ser colocados em uma receita do makefile.
install -s -m 755 -o root -g bin file1 file2 lib/* $(DESTDIR)
é mais sucinto que os quatro comandoscp
,strip
,chmod
echown
.
O último ponto de marcador é provável porque o comando install
foi inventado e porque muitos makefiles o usam.
Install
nem sempre é usado. Eu vi cp -r lib $(DESTDIR)/lib
quando há uma árvore inteira cheia de coisas para copiar e ./install.sh
se o desenvolvedor preferir usar um script personalizado. Muitos pacotes têm um install.sh
derivado daquele que vem com o X11, que é como install
, mas suporta a opção -t
(transform) para renomear os arquivos de destino de uma maneira específica.