Criando vários pacotes para implementação em diferentes versões do Ubuntu

6

Eu preciso criar debs para o Ubuntus Lucid. Eu sei que posso configurar VMs / chroots, etc para fazer uma distribuição por compilação, mas existe um mecanismo da minha máquina Oneiric para fazer algo como :

ubuntu-dpkg-buildpackage --distro=Lucid e ter um Lucid deb ser gerado?

Como uma nota rápida, isso é para pacotes internos e, portanto, não pode ser usado no Launchpad ou em qualquer lugar.

    
por Paul Nathan 14.02.2012 / 01:52

1 resposta

6

Não existe uma solução de comando único para fazer isso, mas as ferramentas definitivamente existem para torná-lo relativamente indolor:

  • debootstrap pode criar uma instalação minimalista e intocada do Ubuntu em um diretório independente
  • schroot permite gerenciar vários chroots, mantendo-os limpos para uso posterior
  • mk-schroot pode ser usado para automatizar a configuração e o gerenciamento do schroot
  • Dado um arquivo .dsc (gerado com debuild -S ), sbuild irá chroot no seu chroot original, instalará todos os pacotes dependentes e construirá suas fontes.

isso é basicamente o que os servidores de construção da barra de ativação usam para criar pacotes de código-fonte e colocá-los no repositório do Ubuntu.

Em geral, usar um chroot primitivo é uma boa prática, pois garante que o pacote não dependa de qualquer configuração personalizada em sua máquina de construção.

O processo de instalação envolve a criação de um novo schroot para cada versão do Ubuntu que você deseja segmentar. Isso é bastante simples: use mk-sbuild para criar um novo chroot. Algo parecido com isso é o que você quer:

mk-sbuild --arch=amd64 --name=lucid lucid

Isto irá guiá-lo para criar um chroot chamado 'lucid-amd64', e imprimirá as seguintes informações úteis quando for feito:

Done building lucid-amd64.

 To CHANGE the golden image: sudo schroot -c lucid-amd64-source -u root
 To ENTER an image snapshot: schroot -c lucid-amd64
 To BUILD within a snapshot: sbuild -A -d lucid-amd64 PACKAGE*.dsc

Então, assim que seus chroots forem configurados, o processo de construção será:

  1. No diretório de nível superior do seu pacakge de origem, debuild -S para criar um pacote de origem, incluindo <package>_<version>.dsc
  2. Execute a construção: sbuild -A -d lucid-amd64 ../<package>_<version>.dsc

Para mais informações, as páginas de manual para mk-sbuild , schroot , sbuild , debootstrap e debuild são bastante abrangentes. O link tem boas informações sobre como construir e configurar os chroots. Além disso, há # ubuntu-devel no irc.freenode.net se você precisar de uma mão.

    
por Jeremy Kerr 14.02.2012 / 02:53