Compila um pacote debian para o amd64 em uma máquina i386?

6

Eu tenho uma máquina robusta i386 ubuntu, e uma máquina robusta amd64 ubuntu. Eu quero compilar um pacote debian (a.k.a. deb) para a máquina amd64 no i386 (porque eu não tenho memória suficiente para compilar é rapidamente na máquina amd64). Se eu fizer um dpkg-buildpackage na máquina i386, ele produzirá um deb para i386, que não pode ser instalado na máquina amd64. Existe alguma maneira de compilar o deb para amd64 na máquina i386?

    
por Rory 09.05.2010 / 00:59

3 respostas

1

Então, existem algumas soluções para isso:

  • Configure um conjunto de ferramentas de compilação cruzada e use o dpkg-buildpackage regular para criar seu pacote. O problema é que criar um toolchain não é muito simples .
  • Use um chroot de 32 bits em sua máquina de 64 bits para compilar as coisas. Aparentemente, é o método mais recomendado. Esta postagem do blog tem um exemplo de compilação do kernel, mas é o mesmo processo para qualquer outro software.
por 18.04.2011 / 03:48
1

Provavelmente, é mais problemático do que valer tentar fazer uma compilação cruzada. Existem várias maneiras de emular sistemas de 64 bits em 32 bits, mas você pagará um preço de desempenho.

Se você está apenas fazendo um pouco disso, então eu diria que acione uma máquina de 64 bits na Amazon por algumas horas. Se você está fazendo muito isso, então talvez consiga alguns hardwares de 64 bits, ou talvez a AWS continue interessante, porque você só paga quanto você usa, e você pode acionar um farm quando você quiser.

Isso pode fornecer algumas ideias úteis: link

Esta lista de imagens de sistemas debian para várias arquiteturas e versões pode ser útil também: link

    
por 05.05.2014 / 18:24
0

Uma coisa que eu faço no Debian o tempo todo é usar um kernel de 64 bits com uma userland de 32 bits para o meu sistema normal, e então criar um chroot com o userland de 64 bits para construir pacotes amd64. A estrutura dos pacotes do kernel no Ubuntu é um pouco diferente, então eu não sei se isso é possível ou recomendável lá.

Além disso, a solução limpa é usar uma máquina virtual. O QEMU é a escolha óbvia, porque pode emular praticamente qualquer coisa (e é grátis). Você pode usar o qemubuilder (empacotado no Ubuntu) para integrar a compilação ao pbuilder. Isso pode ser um pouco difícil de configurar na minha experiência, mas pode valer a pena se você precisar fazer isso repetidamente. Para alguns pacotes, basta iniciar o QEMU e efetuar login manualmente.

Se você for muito aventureiro, também poderá tentar a compilação cruzada, mas isso é provavelmente muito mais difícil e não funciona com todos os pacotes. Procure o dpkg-cross para começar.

Ou que tal você criar um Personal Package Archive (PPA) no Launchpad e ter seu pacote autobuilt lá.

    
por 03.11.2010 / 09:49