Я делаю пакеты Ubuntu из исходного кода геологической программы. Я могу создавать пакеты deb на своем ПК, а также Launchpad может создавать двоичные пакеты для 32-битных ОС.
Я заметил странное поведение Launchpad. Он делает как разработку (libfoo-dev), так и разделяемую библиотеку (libfoo) из загруженного исходного кода для i386, хотя он делает только двоичный пакет для amd64 из того же кода. Просматривая журналы сборки i386 и amd64 , я обнаружил, что для amd64 вызывается debian/rules binary-arch
вместо debian/rules binary
. Это заставляет мой источник не создавать пакет разработки для amd64.
Как я могу решить эту проблему? Журналы сборки и источники пакетов доступны в ppa:soroush-r/geopsy-deb
, если вы хотите посмотреть.
Архитектурно-независимые пакеты (где Architecture: all
установлено в debian/control
) построены только на одной архитектуре, которая является i386 для Ubuntu. Только пакеты, зависящие от архитектуры, построены на всех других архитектурах. Вот почему debian/rules binary
вызывается на i386, а debian/rules binary-arch
на amd64, armhf и powerpc.
Вы установили Architecture: all
для своих пакетов -dev. Это правильно, если пакет -dev одинаков для каждой архитектуры. Вы увидите, что пакет .deb заканчивается _all.deb вместо _amd64.deb или _i386.deb. _All.deb будет построен на i386, но также будет использоваться на amd64.
Вы должны изменить архитектуру пакета -dev на Architecture: any
в debian/control
, если вам нужен другой контент для пакета amd64 -dev. Если пакет -dev должен иметь идентичное содержимое на amd64, чем на i386, все работает правильно, и у вас не должно возникнуть проблем.