Compile o mesmo pacote fonte para diferentes distribuições baseadas em Debian

6

Eu gostaria de criar vários pacotes .deb da mesma fonte para diferentes versões e distros. Mesmo que o código-fonte seja exatamente o mesmo, alguns arquivos na pasta debian não podem ser compartilhados por causa da dependência e do nome da distribuição.

Então, eu quero fazer vários diretórios 'debian' para cada versão / distro e especificar onde procurá-lo quando o pacote for compilado. É possível?

Para sua informação, estou usando o comando debuild para construir o pacote .deb.

    
por xylosper 15.01.2015 / 19:41

2 respostas

4

Usar diferentes ramificações é uma abordagem, e posso sugerir edições para a resposta de @ mestia, se parecer apropriado (mas continue lendo ...).

Outra abordagem é manter arquivos diferentes lado a lado; veja Solaar para um exemplo disso.

Mas ambas as abordagens têm uma falha significativa: são inadequadas para pacotes no Debian ou no Ubuntu (ou provavelmente outros derivados). Se você pretende obter seu pacote em uma distribuição algum dia, você deve empacotá-lo de tal maneira que o mesmo conjunto de arquivos produza o resultado correto nas várias distribuições.

Para um exemplo disso, dê uma olhada em o pacote Debian para Solaar (completo divulgação: eu fiz a embalagem).

A idéia geral é perguntar ao dpkg-vendor qual é a distribuição; então para Solaar, que tem dependências diferentes no Debian e no Ubuntu, debian/rules tem

derives_from_ubuntu := $(shell (dpkg-vendor --derives-from Ubuntu && echo "yes") || echo "no")

e mais abaixo uma substituição para dh_gencontrol para preencher "substvars" conforme apropriado:

override_dh_gencontrol:
ifeq ($(derives_from_ubuntu),yes)
        dh_gencontrol -- '-Vsolaar:Desktop-Icon-Theme=gnome-icon-theme-full | oxygen-icon-theme-complete' -Vsolaar:Gnome-Icon-Theme=gnome-icon-theme-full
else
        dh_gencontrol -- '-Vsolaar:Desktop-Icon-Theme=gnome-icon-theme | oxygen-icon-theme' -Vsolaar:Gnome-Icon-Theme=gnome-icon-theme
endif

Isso preenche as variáveis apropriadas em debian/control :

Package: solaar
Architecture: all
Depends: ${misc:Depends}, ${debconf:Depends}, udev (>= 175), passwd | adduser,
 ${python:Depends}, python-pyudev (>= 0.13), python-gi (>= 3.2), gir1.2-gtk-3.0 (>= 3.4),
 ${solaar:Desktop-Icon-Theme}

e

Package: solaar-gnome3
Architecture: all
Section: gnome
Depends: ${misc:Depends}, solaar (= ${source:Version}),
 gir1.2-appindicator3-0.1, gnome-shell (>= 3.4) | unity (>= 5.10),
 ${solaar:Gnome-Icon-Theme}

Você pode usar o teste em debian/rules para controlar qualquer ação que você possa fazer em um makefile, o que significa que você pode combinar isso com arquivos alternativos e, por exemplo, vincular os arquivos apropriados antes de serem usados no pacote construir.

    
por 29.01.2015 / 20:57
1

Provavelmente você pode ir com git-buildpackage e manter os diferentes diretórios debian em diferentes ramificações.

    
por 15.01.2015 / 21:37