Вопрос

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

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

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

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

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

Решение

Начните с рассмотрения того, как аналогичный проект достиг этого.Одно, что приходит на ум, это Фрикол, кроссплатформенная игра на основе Java.Их страница загрузки имеет достаточно четкую информацию по его установке на ряд платформ.У них также есть пакеты, доступные на таких сайтах, как ПолучитьDEB для Ubuntu и Пакмен для OpenSuse.

Как правило, если вы хотите охватить как можно больше дистрибутивов, вам следует рассмотреть следующие форматы (в примерном порядке важности):

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

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

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

(РЕДАКТИРОВАТЬ:Лучший список благодаря предложению Джоника.)

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

Посмотрите Нулевая установка (http://0install.net/).

  • Установить программное обеспечение может каждый

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

  • Распространять программное обеспечение может каждый

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

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

Когда обновления станут доступны, Zero Install уведомит вас[ подробнее ]

  • Безопасность

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

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

Имеется руководство по упаковке. здесь.

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

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

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

Кроме того, чтобы узнать о создании RPM-пакетов программного обеспечения Java, ознакомьтесь со статьей JПакет.

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

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

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