Seu script não está definido como executável; assim como um script não instalado pelo empacotamento, você precisa ter certeza de que ele tem o bit executável definido.
Você tem duas opções:
-
Ao criar o pacote, certifique-se de que seu script tenha o bit executável antes criando o pacote, executando isto em seu diretório de trabalho Antes construindo o pacote:
chmod +x /path/to/script.sh
OU ...
-
Use o script
postinst
do seu pacote para definir a instalação do bit executável após . Adicione um comando ao script.postinst
semelhante ao seguinte:chmod +x /usr/bin/myscript.sh
Para algumas das minhas coisas, eu uso os dois métodos apenas para ter certeza de que as coisas são executáveis. Isso introduz dores de cabeça às vezes, mas é melhor ter certeza do que não ter certeza. Pelo menos, na minha opinião.
Como o script não pode ser executado como myscript
, isso porque myscript
e myscript.sh
são objetos diferentes .
Se você quiser, faça o seguinte no script .postinst
do seu pacote:
ln -s /usr/bin/myscript.sh /usr/bin/myscript
... e, em seguida, supondo que você corrija o problema do bit executável, ele deve 'apenas funcionar' para ambas as versões que você estava tentando, tanto myscript.sh
como myscript
.
NO ENTANTO a maneira correta de fazer isso é, em vez disso, apenas empacotar o script como myscript
e não incluir a extensão do shell. Você deve incluir uma linha shebang no início ( #!
) indicando o intérprete a ser usado. Desde .sh
poderia ser qualquer coisa. Em seguida, configure o pacote para instalar apenas myscript
. Como o Muru afirmou, você deve evitar criar links no seu postinst, mas cabe a você o que você quer fazer. Existem muitas maneiras diferentes de atingir o seu objetivo, mas não uma orientação muito rigorosa na documentação do empacotamento.