Como construir e publicar binários para várias distribuições Debian / Ubuntu?

4

Para um software proprietário, gostaria de criar e publicar várias versões de software para várias distribuições. Por exemplo. 1.0, 1.1 e ambas as versões para squeeze, wheezy e preciso.

As compilações são executadas automaticamente em máquinas diferentes e produzem arquivos .deb específicos da distribuição. Específico da distribuição de forma que eles estejam vinculados a versões de bibliotecas específicas da distribuição. Por exemplo. OpenSSL 0.9.8 para squeeze, 1.0.1 para wheezy. No entanto, esses pacotes são criados usando o mesmo número de versão e nome do pacote. É isso que provavelmente é a causa do problema a seguir.

Atualmente estou usando o reprepro com o comando includedeb para adicionar os binários ao repositório. Isso funciona bem, até eu adicionar a mesma versão de pacote criada para uma segunda distribuição.

Publicar para o Squeeze é bom

# reprepro -b ./repo --outdir ./wwwpub/repo includedeb squeeze /path/to/sqeezepackages/packagename-1.0.deb

Mas, em seguida, publicando a mesma versão do software criado no wheezy, a publicação de wheezy falha:

# reprepro -b ./repo --outdir ./wwwpub/repo includedeb wheezy /path/to/wheezypackages/packagename-1.0.deb 
/path/to/wheezypackages/packagename-1.0.deb: component guessed as 'main'
ERROR: '/path/to/wheezypackages/packagename-1.0.deb' cannot be included as 'pool/main/p/packagename/packagename_1.0_all.deb'.
Already existing files can only be included again, if they are the same, but:
md5 expected: e7df7cd2ca07f4f1ab415d457a6e1c13, got: 0fa924209085a5713f79e6a30649455f
sha1 expected: 947b41827bbac414baddf0648b9abecaad8de4fe, got: 1be168ff837f043bde17c0314341c84271047b31
sha256 expected: a883dafc480d466ee04e0d6da986bd78eb1fdd2178d04693723da3a8f95d42f4, got: a93dbf1e95ddc4cfa84e9cd3cfa6c9e0e14affd79812abde4bca688224430a65
size expected: 1234, got: 1235
There have been errors!

Assumo que minha compilação precisa de um número de versão exclusivo para cada distribuição.

  • Qual é a maneira mais fácil de realizar isso?
  • Como adiciono isso ao número da versão atual? É aconselhável usar algo como 1.1~wheezy , 1.1+wheezy , 1.1-1 (incrementando), 1.1+deb6 etc.? Como o jessie está chegando e gostaria que o sistema reconhecesse isso durante dist-upgrades, acho que usar o nome da distribuição não funcionará, pois j vem antes do w e será reconhecido como mais antigo por APT.
  • Uma vez determinado como construir o número da versão; Como adiciono isso ao meu ferramental? Eu acho que preciso de heurística nos arquivos debian/control para ter o número da versão específico para a distribuição na qual ele é construído. E para o changelog eu terei que invocar dch para cumprir com esse número de versão também.
por gertvdijk 07.04.2014 / 14:53

1 resposta

0

Eu pessoalmente faria apenas um arquivo por distribuição.

Isso resolveria seu problema e teria o benefício de cada arquivo ser menor. (mais rápido para baixar e analisar por clientes)

    
por 25.07.2016 / 09:11