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
postinstdo seu pacote para definir a instalação do bit executável após . Adicione um comando ao script.postinstsemelhante 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.