install
oferece vários recursos, além de copiar arquivos para um diretório.
- a
-s
opção remove a tabela de símbolos de um executável, economizando espaço
- a
-m
opção define os bits de permissão. Os arquivos localizados no diretório do desenvolvedor foram criados sujeitos à sua 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 provavelmente é 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. Com cp
, o proprietário e o grupo do arquivo de destino seriam definidos como uid e gid de quem executou o cp
, e com cp -p
, o proprietário e o grupo do arquivo de destino seriam os mesmos do arquivo no diretório de construção, nenhum dos quais pode seja o que o desenvolvedor deseja. O wall
programa precisa estar em grupo tty
, o screen
programa precisa estar em grupo utmp
etc.
- reduz o número de comandos que precisam ser colocados em uma receita de makefile.
install -s -m 755 -o root -g bin file1 file2 lib/* $(DESTDIR)
é mais sucinto do que os quatro comandos cp
, strip
, chmod
, e chown
.
O último marcador é provavelmente o motivo pelo qual o install
comando foi inventado e por que muitos makefiles o utilizam.
Install
nem sempre é usado, no entanto. Vi cp -r lib $(DESTDIR)/lib
quando há uma árvore inteira cheia de coisas para copiar e ./install.sh
se o desenvolvedor prefere usar um script personalizado. Muitos pacotes são install.sh
derivados do que acompanha o X11, que é parecido, install
mas suporta uma -t
opção (transformação) para renomear os arquivos de destino de uma maneira especificada.