Развертывание автономного скрипта Perl 6

Какова наилучшая стратегия развертывания сценария Perl 6, использующего внешние модули, такие как LWP::Simple?

Например, в Perl у нас есть PAR. Есть ли в Perl 6 возможность развернуть автономный скрипт, который пользователю нужно только запустить, не утруждая себя установкой Rakudo и внешних модулей Perl 6?


person smith    schedule 29.08.2016    source источник


Ответы (1)


Вы можете создать файл .jar, а затем использовать java для выполнения кода. Отсюда есть множество инструментов для преобразования .jar в двоичный файл (или .exe в Windows).

Синтаксис для этого:

perl6 --target=jvm  --output=your_file.jar your_file.pl6

Если бы этот сценарий был тривиальным

say "this is running as a .jar file"

Вы сможете запустить java -jar your_file.jar и получить

this is running as a .jar file

В macOS есть небольшая загвоздка, поскольку эта функция требует, чтобы вы собирали perl6 (Rakudo Star) с Java 1.7+ вместо системной Java Mac. По этой причине версия в вашей системе могла не поставляться с поддержкой JVM.

Если вы используете homebrew, вот что нужно сделать, чтобы это исправить:

  1. brew uninstall perl6
  2. brew tap homebrew/versions (чтобы можно было установить Java 1.7)
  3. brew install Caskroom/versions/java7 (установить Java 1.7)
  4. необязательно: откройте новую вкладку в терминале (вам нужно сделать это только в том случае, если по какой-то причине вы получите сообщение об ошибке, что Java 1.6 все еще используется.)
  5. brew install perl6 --with-jvm (сборка perl6 с поддержкой виртуальной машины Java)
person Daniel Lathrop    schedule 13.10.2016
comment
Вот некоторые изменения, произошедшие несколько лет спустя (2013 → 2016): появился инструмент NQP. чтобы сделать это, но я не уверен, что это работает. Сегодня возможно запускать Perl 6 в JVM (когда Rakudo соответствует бэкэнду JVM), но я не уверен, возможно ли в настоящее время создать автономный JAR. - person Tommy Stanton; 27.02.2019