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.