Упаковку использовать для развертывания кроссплатформенности? - PullRequest
2 голосов
/ 05 марта 2009

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

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

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

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

Ответы [ 6 ]

5 голосов
/ 05 марта 2009

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

2 голосов
/ 05 марта 2009

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

Образец вы можете посмотреть в CMakeLists.txt и AvoCPack.cmake * в файле avogadro

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

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

http://izpack.org/

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

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

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

0 голосов
/ 12 сентября 2009

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

0 голосов
/ 05 марта 2009

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

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

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

...