DEB installer - Verificações de dependência

3

Usando uma ferramenta de geração de instalação de terceiros, criei um pacote .deb para meu aplicativo.

Existem várias dependências que precisam estar presentes no sistema operacional Linux do usuário para que meu aplicativo seja executado corretamente. Especificamente, "make" e várias bibliotecas ".so", como libgcc.so , libc.so etc.

Nem todos os nossos usuários do Ubuntu podem ter exigido dependências instaladas antes de executar o meu instalador de pacotes.

Esta ferramenta de instalação de terceiros que eu usei, gera pacote DEB, mas não inclui verificações de dependência.

Como membros da comunidade Ubuntu, você poderia comentar como um pacote .DEB personalizado sem verificações de dependência pode ser recebido por usuários Linux-Ubuntu?

É aceitável o suficiente entregar o .deb para um aplicativo personalizado que não verifica as dependências? Ou é incomum o suficiente para "irritar" os usuários do Linux?

    
por user98662 19.10.2012 / 02:02

2 respostas

1

Aviso: Isso é quase idêntico ao meu outra resposta .

Como o seu programa não gera informações de dependência, vamos adicioná-lo a nós mesmos. Por exemplo, você precisará editar a linha que começa com Depends: no formato:

 Depends: package1, package2|package3

se você precisar do pacote 1 e do pacote 2 ou do pacote 3 .

Abra gedit ou nano e cole:

#!/bin/bash

if [[ -z "$1" ]]; then
  echo "Syntax: $0 debfile"
  exit 1
fi

DEBFILE="$1"
TMPDIR='mktemp -d /tmp/deb.XXXXXXXXXX' || exit 1
OUTPUT='basename "$DEBFILE" .deb'.modfied.deb

if [[ -e "$OUTPUT" ]]; then
  echo "$OUTPUT exists."
  rm -r "$TMPDIR"
  exit 1
fi

dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN

if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
  echo DEBIAN/control not found.

  rm -r "$TMPDIR"
  exit 1
fi

CONTROL="$TMPDIR"/DEBIAN/control

MOD='stat -c "%y" "$CONTROL"'
vi "$CONTROL"

if [[ "$MOD" == 'stat -c "%y" "$CONTROL"' ]]; then
  echo Not modfied.
else
  echo Building new deb...
  dpkg -b "$TMPDIR" "$OUTPUT"
fi

rm -r "$TMPDIR"

Igual ao arquivo como debedit.sh e torne-o executável com chmod +x debedit.sh .

Em seguida, execute debedit.sh deb_file_output.deb para o arquivo e edite a linha correta (ou adicione-a). Salve e, em seguida, use o arquivo .deb recém-criado para distribuir.

Fonte: link

    
por hexafraction 19.10.2012 / 02:07
0

Uma resposta já diz como adicionar dependências, tentarei responder sua pergunta sobre a percepção de DEBs sem verificações de dependência:

Existem dois motivos para os arquivos DEB (neste contexto e como eu vejo):

  1. Forneça uma combinação de "tar", "make" e "make install". Com isso quero dizer que o software vem em um único arquivo, como outro software vem em um arquivo tar e pode ser instalado com um único comando, como outro software, que geralmente vem com um script de instalação. Portanto, aunpack <packagename>.tar.gz; cd <packagename>; make; make install pode ser substituído por dpkg -i <packagename>.deb .
  2. Certifique-se de que, por meio de dependências e testes anteriores com a versão do SO, tudo esteja funcionando e que tudo possa ser gerenciado (instalado, desinstalado) sem problemas.

Enquanto o comando em 1) é ligeiramente mais curto que sua alternativa, é do meu ponto de vista não vale a pena e apenas o ponto 2) torna útil um pacote deb.

SO: se você quiser criar um pacote DEB, você precisa cuidar de ambos: verificações de dependência e testes com a versão do sistema operacional. Se você não incluir verificações de dependência ou testes, seus usuários (Ubuntu ou Debian) ficarão muito desapontados. Criar um pacote de DEB sem verificações de dependência é como fazer batota, fazendo com que o usuário acredite que você fez algo por eles que não fez.

Meu conselho seria: se você não quiser adicionar as verificações manualmente, não gere um pacote DEB. Forneça uma linha curta de informações que diz algo como "Instalar o software executando install.sh". Então os usuários sabem o que esperar.

    
por xubuntix 20.10.2012 / 08:36