2009-05-22 3 views
3

У меня есть игра, которая в настоящее время работает под Windows и Mac OS X, и я хотел бы сделать ее доступной под Linux. Портирование должно быть довольно простым, поскольку это игра на основе Java и использует портативные библиотеки, доступные на всех трех платформах.Как упаковать игру для Linux?

Трудная часть и причина этого вопроса заключается в ее упаковке, чтобы она работала как можно больше современных дистрибутивов Linux. Первичной целью будет Ubuntu 9.

Веб-сайт не является приемлемым способом, .tar.gz - последнее средство. Я бы предпочла пакет, который правильно определил зависимости (например, Java) и легко установил.

Мне также нужно иметь возможность создавать пакет под Windows, так как некоторые инструменты в моей цепочке сборки являются только для Windows.

+0

Последний веб-сайт позволяет использовать автономный режим. Это сделает его приемлемым? –

ответ

5

Начните с изучения того, как подобный проект достиг этого. Один из них, который приходит на ум, - Freecol, кросс-платформенная Java-игра. Их download page имеет довольно четкую информацию об установке его на нескольких платформах. Они также имеют пакеты, доступные на таких сайтах, как GetDEB для Ubuntu и PackMan для OpenSuse.

Вообще, если вы хотите, чтобы ударить, как много распределений, насколько это возможно, форматы, вы должны рассмотреть, (в грубом порядке важности):

  1. Ubuntu .deb (также создать хранилище, если вы можете)
  2. OpenSUSE .rpm или .ypm (1 клик установить)
  3. Fedora .rpm
  4. .tar.gz предварительно скомпилированных пакет

Th en построить из исходной версии, или бинарный установщик с наилучшим усилием. Наконец, посмотрите на другие популярные дистрибутивы, такие как Debian, Mandriva и BSD

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

(EDIT:. Лучше список, благодаря предложению Jonik в)

+0

Для ubuntu вы можете использовать стартовую панель для создания пакетов и легко создавать репозиторий. –

+0

Я бы добавил в список zip/gzip/bzip2 предварительно скомпилированный пакет (а не инсталлятор, заметьте, только простой архив, который нужно извлечь) в списке, по крайней мере выше, чем опция «построить из источника». (FreeCol - действительно хороший пример, и они делают именно это, даже предлагая как zip, так и gzip-флейворы.) Кроме этого, мне нравится этот ответ. – Jonik

1

Вы можете использовать систему deb для Ubuntu. Это поможет вам правильно определить зависимости.

Руководство по упаковке доступно here.

1

Хороший вопрос - я не знаю ответ (и я думаю, что нет простого, всеобъемлющего решения), но вот некоторые моменты, которые следует учитывать, с точки зрения пользователя Linux.

Я думаю, что .tar.gz (или .tar.bz2) не обязательно так плохо. Пользователи Linux привыкли к этому, и, например, многие коммерческие пакеты программного обеспечения распределены таким образом. Он часто использует графический установщик в стиле Windows, если основной задачей является просто извлечение файлов в определенном месте.

Некоторые (возможно, многие?) пользователи JRE устанавливаются вне системы управления пакетами, поэтому предложение только RPM или deb (которое зависит от наличия JRE, установленного как RPM или deb), может быть проблематичным. (Лично я предпочитаю иметь несколько версий JRE (на самом деле JDK), установленных под номером /usr/local/java.) Поэтому, по крайней мере, рассмотрите предложение пакета zip/gz/bz2 вместе с другими параметрами.

Также, чтобы узнать о создании пакетов RPM программного обеспечения Java, просмотрите JPackage.

1

Каждый дистрибутив может иметь собственные соглашения о том, где находятся общие файлы.
В Ubuntu обычные java-банки попадают в/usr/share/java. Такие вещи, как commons-cli и liblog4j, существуют. Если вы используете какой-либо из них, убедитесь, что ваш deb зависит от соответствующего пакета. Если библиотека использует outisde ваше приложение, но не в репозиториях Ubuntu, подумайте о том, чтобы положить его в свой deb и в зависимости от этого. Вам нужно будет создать папку для ваших конкретных баннеров игр в/usr/share/[name] /, а затем создать сценарий оболочки для запуска игры. Этот скрипт должен быть помещен в/usr/bin (или/usr/games) и быть исполняемым.

Не забудьте также зависеть от соответствующего пакета java (я предлагаю пакеты sun-java # -jre, потому что gjc - это дерьмо, а open-jdk пока не на 100% (по крайней мере METAL LaF FUBAR, я не знаю, о чем еще пока.)

2

Взгляните на ноль установка (http://0install.net/).

  • Любой пользователь может устанавливать программное обеспечение

Вы не должны быть администратору просто установить текстовый процессор [подробнее]

  • Любой человек может распространять программное обеспечение

Вам не нужно быть благословлен распределения (или кто-либо другой), чтобы быть частью нулевой установки; Система полностью децентрализованные [ещё]

  • Автоматические обновления

При наличии обновлений Нулевая Установка уведомит Вас [ещё]

  • Security

Если один пользователь загружает вредоносную программу, другие пользователи не затрагиваются; Пользователи могут обмениваться загрузками, не доверяя друг другу; Установка не выполняет какой-либо загруженный код; Цифровые подписи всегда проверяются перед новым программным обеспечением r

Смежные вопросы