Как мне распространять предварительно собранный модуль perl, и какую версию perl я собираю? - PullRequest
4 голосов
/ 05 марта 2010

Это, вероятно, вопрос из нескольких частей. Справочная информация: у нас есть собственная (c ++) библиотека, которая является частью нашего приложения, и нам удалось использовать SWIG для создания оболочки Perl для этой библиотеки. Теперь мы хотели бы распространять этот модуль perl как часть нашего приложения.

Мой первый вопрос - как мне распространять этот модуль? Существует ли стандартный способ упаковки предварительно собранных модулей Perl? Я знаю, что для дистрибутива ActiveState есть ppm, но мне также нужно распространять его для систем Linux. Я даже не уверен, какие файлы требуются для распространения, но я предполагаю, что это файлы в формате pm и т. Д., Как минимум.

Мой следующий вопрос - похоже, мне может понадобиться собрать проект модуля для каждой версии perl, которую я хочу поддерживать. Как мне узнать, для каких версий Perl мне следует создавать? Существуют ли какие-либо стандартные рекомендации ... или, что еще лучше, способ создать пакет, который будет работать с несколькими версиями perl?

Извините, если мои вопросы не имеют смысла - я довольно новичок в аспектах скомпилированного модуля perl.

УТОЧНЕНИЕ: базовый скомпилированный источник проприетарный (закрытый источник), поэтому я не могу просто отправить исходный код и соответствующие артефакты make для пакета. Хотел бы я, но в этом случае этого не произойдет. Таким образом, мне нужна разумная схема для упаковки готовых двоичных файлов для моего модуля.

Ответы [ 2 ]

2 голосов
/ 21 марта 2010

Я присматриваю за DBD :: Informix, одним из модулей драйвера базы данных Perl, который работает с DBI (интерфейс базы данных Perl). Базовые библиотеки, используемые для подключения к IBM Informix Dynamic Server (IDS), являются проприетарными, но сам код DBD :: Informix - нет. Я распространяю этот код на CPAN, точно так же, как любой другой модуль Perl. Люди могут загрузить этот источник и (при условии, что на их компьютере установлен Informix ClientSDK - а также Perl, DBI и т. Д.), Они могут собрать DBD :: Informix для работы с установленным Perl.

Я бы настоятельно рекомендовал вам сделать так, чтобы ваш код интерфейса Perl был доступен в исходном виде, даже если библиотека, с которой он взаимодействует, является проприетарной. Это позволяет людям устанавливать код с любой версией Perl, которая у них есть, без необходимости устранения несоответствий.

Если вы все еще хотите обеспечить бинарную поддержку, вам нужно будет решить, какие платформы вы хотите поддерживать, и собрать модуль со стандартной версией Perl для каждой такой платформы. Это становится грязным. Вам нужен доступ к экземпляру каждой машины. Конечно, виртуальные машины делают это проще, но это все еще непросто, и количество платформ и версий только растет. Но вам все равно нужно поддерживать людей, которые не используют стандартную версию Perl на своем компьютере - поэтому интерфейс оболочки Perl должен быть предоставлен в исходной форме.

1 голос
/ 05 марта 2010

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: У меня практически нет опыта создания бинарных пакетов, которые можно легко установить. Поэтому я делаю этот пост CW, чтобы другим было проще добавлять свои советы.

Вы должны сделать дистрибутив доступным в исходной форме, чтобы его можно было скомпилировать в каждой системе с учетом специфики этой системы. Мне очень нравится Module :: Build для этой цели.

Для пользователей ActiveState в Windows вы, вероятно, захотите иметь четыре или шесть PPM в зависимости от того, хотите ли вы поддерживать 5.6. Упакуйте 32-битные и 64-битные версии для каждого из 5.6, 5.8 и 5.10. Используйте версию mingw, которую вы можете установить, используя ppm, чтобы скомпилировать модули для сохранения двоичной совместимости.

Другой вариант - использовать PAR :: Packer и распространять ваше приложение в архиве PAR. В этом контексте PAR :: WebStart может быть полезным, хотя я не пробовал. Однако в прошлом я успешно пользовался архивами PAR.

...