Agrupamento de dependências com scripts shell

1

Os scripts de shell geralmente dependem de ferramentas que podem não estar instaladas no computador dos usuários. Para contornar esse problema, muitos scripts têm vários fallbacks.

O IMO fazendo essas coisas só leva a códigos complexos, e não é incomum encontrar um grande pedaço do script dedicado apenas a razões de compatibilidade.

Por que as dependências não podem ser incluídas no script? O script pode incluir esses programas (como uma seção compactada anexada, como makeself ) e simplesmente usá-los durante a execução?

Para esclarecer, é claro que isso não se aplica a coisas como wget e curl ; o código para cada um seria mínimo nesse caso. Estou falando de scripts que envolvem GUIs, e há muito código para suportar tais programas ( zenity / yad / xdialog etc.), que envolvem sintaxes muito diferentes.

Existe uma razão pela qual o acima não é feito?

    
por user2064000 14.07.2014 / 18:47

1 resposta

6

Is there a reason why the above isn't done?

Os scripts do shell são portáteis porque usam um interpretador de tempo de execução. As ferramentas que você usou como exemplos, em particular ferramentas de GUI, não são. Isso significa que você terá que ter uma versão separada para Linux / x86, Linux / x86-64, Linux / armel, Linux / armhf, OSX / x86-64, OpenBSD / mipsel e qualquer outra plataforma na qual você deseje executar isso.

Além disso, a versão normal compilada de tais coisas depende de bibliotecas compartilhadas. Se você realmente não quer se preocupar com dependências, mas você quer incluir SomeGUIApp , você precisará de uma versão estaticamente compilada, ou então (6 == 2 * 3) para incluir essas dependências, e suas dependências, e ... 1 De qualquer forma, este é o ponto em que você vai perceber o que você achava que era "apenas 5 mb" vai acabar como centenas. Dê uma olhada no seu consumo de memória agora mesmo; se é uma área de trabalho GUI normal fazendo coisas normais, a maior parte é daquelas bibliotecas GUI, etc.

Como usuário linux de longo prazo, geralmente deploro coisas que incluem binários por causa de todos os erros que podem ser cometidos com as coisas genericamente compiladas. Eu só vou realmente usá-los se não houver outra escolha (ou, claro, eles vieram da distro).

Agora imagine se todos fizessem isso. Preciso de 15 cópias de SomeGUIApp no meu sistema? É muito melhor listar as coisas como um pré-requisito - se eu não tiver, posso conseguir - que me forneça mais uma cópia de algo que eu já possuo.

1. Talvez o ponto seja: você tem que desenhar a linha em algum lugar, então por que não desenhar no original?

    
por 14.07.2014 / 19:33