Упаковку использовать для развертывания кроссплатформенности?

StackOverflow https://stackoverflow.com/questions/612987

Вопрос

В приложениях Windows, как правило, упакованы как MSI, в Redhat Linux как RPM, какой метод упаковки с открытым исходным кодом лучше всего использовать для развертывания приложений на всех платформах, включая разные версии unix и windows?

Содержимое будет включать в себя exe-файлы, двоичные файлы unix, файлы jav-jar, пользовательские данные и даже сценарии базы данных для запуска.

(я понимаю, что содержимое может отличаться в зависимости от целевой ОС, т. е. двоичные файлы будут разными, win exe против unix двоичных файлов и т. д., но, например, файлы конфигурации могут быть одинаковыми, а в случае java даже jar с байт-кодом)

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

Это было полезно?

Решение

У меня есть клиент, который использует IzPack для создания единого установщика (на основе Java), который устанавливает свое приложение в Windows, OS X и Linux.

http://izpack.org/

Другие советы

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

С CPack (поставляется с CMake ) вы можете создавать пакеты для Windows (с NSIS), Linux (rpm и deb) и OS X с " make package " ;. CMake также упрощает кроссплатформенное построение.

Образец вы можете посмотреть в AvoCPackc>> AvoCPackcma>

NSIS - это решение с открытым исходным кодом, которое, насколько я знаю, может создавать установщики которые работают как в Windows, так и в UNIX-лайках. Однако для развертывания программного обеспечения в Windows (особенно в корпоративных средах) MSI - это путь, а NSIS - скорее головная боль.

Поэтому я бы не советовал вам пытаться собрать один пакет / установщик для разных платформ. Скорее, как указал RibaldEddie, несколько пакетов: по одному для каждой платформы. Это также позволяет ограничить содержимое пакета файлами, относящимися к каждой платформе.

Если вы хотите поддержать упаковку для нескольких дистрибутивов, я бы предложил помочь упаковщикам для этих дистрибутивов; используйте своего рода хорошо известную систему сборки для своего программного обеспечения ( autotools или что-то вроде scons или waf ) и документируйте сборку, необязательно зависимости и т. д. довольно хорошо.

Таким образом, когда появятся упаковщик Debian, Ubuntu, Red Hat, SuSE, что угодно, они смогут создать пакет для вас. При желании вы можете включить шаблоны упаковки для одного или нескольких дистрибутивов в отдельное дерево VCS, которое доступно.

Если вы планируете упаковывать закрытое / проприетарное приложение для нескольких систем, вам, вероятно, лучше всего упаковать файл .tar.gz и задокументировать процесс его установки. Вы также должны убедиться, что используемый процесс сборки не внедряет информацию о пути в приложение, чтобы его можно было запускать в / opt , / usr или / usr / local , которые являются популярным выбором для стороннего дополнительного программного обеспечения.

BitRock InstallBuilder позволяет создавать установочные пакеты для каждой из упомянутых вами платформ (а также создавать RPM, DEB, пакеты и т. Д. Из одного файла проекта)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top