Лучший способ справиться с установкой зависимостей?

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

Предполагая, что все мои клиенты работают в Linux, является ли RPM-пакет, который просто устанавливает файлы зависимостей .so, в каталоги системных библиотек наилучшим маршрутом? Из того, что я читаю о RPM, это не совсем то, как они предназначены для использования. Я предполагаю, что то, что я ищу, является своего рода «установщиком» для Linux, но, возможно, такой вещи не существует.

Является ли лучший способ просто создать пакет, который включает в себя все соответствующие двоичные файлы (и лицензии, где это применимо) и содержит инструкции по установке?

1

Решение

У вас есть несколько вариантов:

  • статическое связывание (если лицензии в игре позволяют это)
  • поддерживать ряд дистрибутивов и предоставлять пакеты для всех из них (жизнеспособность зависит от того, кто ваши клиенты). Самый простой вариант для ваших клиентов, самый сложный для вас.
  • предоставить установщик, который устанавливает ваше приложение в автономной структуре dir в стиле Windows (например, /opt/myapp или же /home/someuser/myapp). Поместите общие библиотеки туда и начните через скрипт с LD_LIBRARY_PATH установить соответственно. Я видел этот вариант, используемый играми Loki, Adobe Reader, Google Earth и другими.

Не делайте:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]