какой язык (python / perl / tcl) в linux не нужен для установки сторонних библиотек?

1

При развертывании java-приложения на linux нам не нужно ничего устанавливать, все сторонние библиотеки - это jar файлы, и мы обновляем classpath только в файле script. Но java нуждается в jre, который довольно большой.

Итак, есть ли другой язык, поддерживаемый linux, может это сделать? По умолчанию наш сервер поддерживает только perl/python/tcl, не доступен gcc, вздох.

Теги:
tcl

5 ответов

10

Perl 5 имеет PAR и PAR::Packer. PAR концептуально похож на JAR файл (это zip файл из одного или нескольких модулей). PAR::Packer делает еще один шаг: он объединяет все, что вам нужно, чтобы запустить программу в один исполняемый файл. PAR::Packer для исполняемых файлов не требуется даже Perl 5, установленный в целевой системе.

  • 0
    спасибо, час! Но Perl ... действительно мой последний выбор, если нет других, потому что мне это кажется немного неясным.
  • 3
    @Wind SC Как это может быть темнее, чем JAR? Это та же основная концепция.
Показать ещё 4 комментария
4

perl, python и tcl могут запускать сторонние библиотеки без их установки, которые вам наиболее удобны с

tcl имеет starkits и starpacks

perl рассматривается в другом ответе

python имеет eggs и freezepy2exe для окон)

  • 0
    Как я могу сделать это в Python? Есть ли способ упаковать все в один файл? как банка.
  • 0
    @Wind SC больше Tcl человек, но яйца, кажется, то, что вы хотите
Показать ещё 1 комментарий
3

Приложения Tcl могут быть объединены в однофайльный исполняемый файл со всеми включенными зависимостями. Я использовал их для нескольких приложений. Вы можете создавать однофайловые исполняемые файлы для Linux, Windows и OSX.

От http://www.equi4.com/starkit/:

A Starkit - это механизм упаковки для предоставление приложения в автономный, без установки и очень портативный способ. Имя приходит от того, чтобы основываться на StandAlone Runtime, называемый Tclkit.

Старкит создает иллюзию "файловая система в файле" - на снаружи, это один файл, но код приложения продолжает видеть полный каталог скриптов, расширения, пакеты, изображения и любые другие файлы, в которых он нуждается. Starkits может быть мультиплатформенным. А также они могут быть записаны в силу лежащей в основе базы данных Metakit.

  • 0
    Следует отметить, что вы можете загружать двоичный код расширения из starkit, что позволяет очень легко доставлять целые сложные приложения без каких-либо шагов установки (или отдельных библиотек, которые в действительности являются «толстыми» с поддержкой многих различных архитектур). Единственный раз, когда он не прозрачен, это когда API, которому вы хотите передать данные, принимает только имя файла; это меньшинство, но включает в себя execve() ...
2

В Linux вы должны использовать формат дистрибутива (DEB, RPM,...) для развертывания приложений. Менеджеры пакетов, включенные в дистрибутивы, могут автоматически обрабатывать зависимости.

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

  • 0
    спасибо Филипп DEB / RPM - хорошее решение, поэтому для нашей SA может быть очевидна зависимость, но нам нужно, чтобы приложение могло само обновляться без помощи SA, включая стороннюю используемую библиотеку. На самом деле наша цель - ненавязчивая система, не зависящая от уровня ОС.
  • 1
    @Wind К сожалению, Perl может быть универсально доступен, но многие из наиболее полезных модулей CPAN не доступны (на ум приходит List :: MoreUtils ), так что вы либо будете ограничены основными функциями, либо будете использовать PAR в качестве Chas. говорит.
Показать ещё 2 комментария
0

Наткнулся на это вчера: http://code.activestate.com/recipes/497000-build-a-compressed-self-extracting-executable-scri/

На странице показано, как очень легко превратить zip файл, содержащий скрипты python, в исполняемый файл.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню