Запускать приложение, созданное на Ubuntu, на CentOS

Относительно пункта 2: gnu sed по умолчанию использует GNU BRE . Чтобы использовать POSIX BRE , вы должны указать - posix

0
23.07.2016, 16:46
3 ответа

Это зависит от того, как было создано приложение и какие у него зависимости. Если он написан, например, на Python, он обычно может работать до тех пор, пока установлены совместимый интерпретатор Python и модули.

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

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

0
29.04.2021, 00:12

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

Чтобы быть уверенным, что приложение будет работать, оно должно работать в контексте ОС, для которой оно было построено. Один из самых простых способов сделать это - докер. Это немного сложное решение, но по сути оно позволит вам запускать одну ОС в другой. Таким образом, вы можете запустить контейнер ubuntu и поместить в него свое приложение.
Вы также можете просто настроить chroot Ubuntu и запустить там приложение. Это похоже на то, что делает докер, но намного легче.

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

0
29.04.2021, 00:12

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

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

Кроме того, хотя вы можете запускать приложений, существует проблема упаковки. Установка приложений вручную - это боль. Если вы не распространяете пакет RPM для CentOS и пакет deb для Ubuntu, вы оказываете своим пользователям медвежью услугу.

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

1
29.04.2021, 00:12

Теги

Похожие вопросы