Como eu crio um deb multiplay?

1

Estou tentando fazer um pacote que será instalado no Ubuntu 12.04 - 13. * em 1386 e amd64. Eu descobri que no amd64 a única diferença é que eu preciso instalar as bibliotecas de 32 bits. Dependendo do ia32-libs funciona quando o sistema tem (mesmo que seja um exagero), mas 13. * não tem sequer esse pacote. Portanto, estou tentando instalar através da extensão ': i386'. Quando eu faço sudo apt-get install blah:i386 ...etc funciona bem.

O seguinte arquivo de controle produz a mensagem: "Dependência não satisfiable: libgcc1: i386" em 12.04.

Package: foo
Version: 1.0-1
Section: base
Priority: optional
Maintainer: [email protected]
Architecture: all
Depends: libgcc1:i386, gcc-4.6-base:i386, libstdc++5:i386, libstdc++6:i386, libsasl2-2:i386, libgstreamermm-0.10-2:i386, libfreetype6:i386,
 libfontconfig1:i386, libX11-6:i386, libXrender1:i386, libice6:i386, libxext6:i386, libsm6:i386
Description: foo is awesome
 Foo is really awesome
Installed-Size: 71140

Portanto, como alguns outros lugares dizem, eu fiz o seguinte arquivo de controle:

Package: foo-amd64
Version: 1.0-1
Section: base
Priority: optional
Maintainer: [email protected]
Architecture: amd64
Depends: foo, libgcc1:i386, gcc-4.6-base:i386, libstdc++5:i386, libstdc++6:i386, libsasl2-2:i386, libgstreamermm-0.10-2:i386, libfreetype6:i386,
 libfontconfig1:i386, libX11-6:i386, libXrender1:i386, libice6:i386, libxext6:i386, libsm6:i386
Description: foo is awesome
 Foo is really awesome
Installed-Size: 71140

Package: foo
Version: 1.0-1
Section: base
Priority: optional
Maintainer: [email protected]
Architecture: i386
Depends: gksu
Multi-Arch: foreign
Description: foo is awesome
 Foo is really awesome
Installed-Size: 71140

Este arquivo de controle não será compilado, já que recebo a seguinte mensagem de erro: dpkg-deb: error: parsing file 'foo/DEBIAN/control' near line 25 package 'foo': several package info entries found, only one allowed . Como faço isso corretamente?

EDIT: Este pacote não vem com a fonte. Ele vem com binários de 32 bits compilados, daí a necessidade de depender da versão de 32 bits das bibliotecas.

    
por chacham15 26.12.2013 / 18:57

1 resposta

0

Você não precisa criar um nome de pacote separado para obter o multiarch. Basta digitar:

Package: foo-amd64
Version: 1.0-1
Section: base
Priority: optional
Maintainer: [email protected]
Architecture: any
Multi-Arch: same
Depends: foo, libgcc1, gcc-4.6-base, libstdc++5, libstdc++6, libsasl2-2, libgstreamermm-0.10-2, libfreetype6,
 libfontconfig1, libX11-6, libXrender1, libice6, libxext6, libsm6
Description: foo is awesome
 Foo is really awesome
Installed-Size: 71140

Isso deve construir os pacotes amd64 e i386, dependendo da sua variável de ambiente de criação. Existem várias maneiras de converter seus pacotes em multiarch se você usar as receitas :

% bl0ck_qu0te%

Existem mais exemplos no link de implementação do pacote Debian. Você também pode usar lithian para garantir que seu pacote esteja completamente em conformidade.

    
por Braiam 26.12.2013 / 19:25