install oferece vários recursos, além de copiar arquivos para um diretório.
- a
-sopção remove a tabela de símbolos de um executável, economizando espaço
- a
-mopçã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/bingarante 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
-oe -gdefinem 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 wallprograma precisa estar em grupo tty, o screenprograma precisa estar em grupo utmpetc.
- 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 installcomando foi inventado e por que muitos makefiles o utilizam.
Installnem sempre é usado, no entanto. Vi cp -r lib $(DESTDIR)/libquando há uma árvore inteira cheia de coisas para copiar e ./install.shse o desenvolvedor prefere usar um script personalizado. Muitos pacotes são install.shderivados do que acompanha o X11, que é parecido, installmas suporta uma -topção (transformação) para renomear os arquivos de destino de uma maneira especificada.