perlos400
СОДЕРЖАНИЕ
НАЗВАНИЕ
perlos400 - Версия Perl 5 для OS/400
Этот документ нуждается в обновлении, но мы не знаем, что в нём должно быть. Пожалуйста, отправляйте комментарии на https://github.com/Perl/perl5/issues.
ОПИСАНИЕ
Этот документ описывает различные особенности операционной системы IBM OS/400, которые повлияют на компиляцию и/или выполнение версии Perl 5 (далее просто Perl).
Наиболее простой способ построения Perl для OS/400 — использование среды PASE (Portable Application Solutions Environment). Для получения дополнительной информации см. http://www.iseries.ibm.com/developer/factory/pase/index.html. Эта среда позволяет использовать API AIX при программировании и предоставляет среду выполнения, которая позволяет AIX-бинарникам выполняться непосредственно на PowerPC iSeries.
Компиляция Perl для OS/400 PASE
Рекомендуемый способ компиляции Perl для OS/400 PASE — это компиляция исходного кода Perl 5 (версия 5.8.1 или выше) под AIX.
Секрет в том, чтобы передать специальный параметр скрипту Configure при его выполнении на AIX:
sh Configure -DPASE ... По умолчанию каталог установки Perl в PASE — /QOpenSys/perl. Его можно изменить, если необходимо, с помощью параметра Configure -Dprefix=/some/dir.
Начиная с OS/400 V5R2, компилятор IBM Visual Age поддерживается в OS/400 PASE, поэтому можно создавать Perl непосредственно на OS/400. Однако более лёгкий способ — компиляция в AIX, как описано выше.
Если вы не хотите устанавливать скомпилированный Perl в AIX в каталог /QOpenSys (для его упаковки перед копированием в PASE), вы можете использовать параметр Configure: -Dinstallprefix=/tmp/QOpenSys/perl. Это заставит команду «make install» установить всё в этот каталог, при этом установленные файлы по-прежнему будут считать, что они находятся (будут находиться) в /QOpenSys/perl.
Если вы производите компиляцию непосредственно в PASE, пожалуйста, выполните компиляцию в каталоге /QOpenSys, так как Perl лучше работает на файловой системе с различением регистров.
Установка Perl в OS/400 PASE
Если вы компилируете на AIX, просто выполните «make install» на коробке AIX. После завершения установки архивируйте каталог /QOpenSys/perl. Передайте архивный файл на OS/400 с помощью FTP, используя следующие команды:
> binary
> site namefmt 1
> put perl.tar /QOpenSys После этого просто запустите оболочку PASE и распакуйте архивный файл.
Если вы компилируете в PASE, то вам нужно будет только выполнить «make install».
По умолчанию путь к бинарному файлу perl — /QOpenSys/perl/bin/perl. Необходимо создать символическую ссылку /QOpenSys/usr/bin/perl на этот файл, чтобы не пришлось изменять ваш путь.
Использование Perl в OS/400 PASE
Perl в PASE можно использовать так же, как и Perl в AIX.
Скрипты, начинающиеся с #!/usr/bin/perl, должны работать, если /QOpenSys/usr/bin/perl является символической ссылкой на ваш бинарный файл perl. Это не будет работать, если вы выполняете setuid/setgid или у вас установлена переменная среды PASE_EXEC_QOPENSYS="N". Если у вас V5R1, вам необходимо получить последние PTF для этой возможности. Скрипты, начинающиеся с #!/QOpenSys/perl/bin/perl, всегда должны работать.
Известные проблемы
При компиляции в PASE команда «oslevel» отсутствует. Поэтому вы можете создать скрипт под названием «oslevel», который выводит уровень AIX, поддерживаемый вашей версией среды выполнения PASE. Если вы не уверены, обратитесь к документации или используйте «4.3.3.0».
Если у вас есть тестовые сценарии, которые не проходят, проверьте существование файлов очереди. Возможно, тестовый сценарий пытается использовать системный вызов, который не реализован в PASE. Чтобы избежать SIGILL, попробуйте установить переменную среды PASE_SYSCALL_NOSIGILL или создайте обработчик для SIGILL. Если вы можете компилировать программы для PASE, запустите скрипт конфигурации и отредактируйте config.sh, если вам будет предложено.
Если вы хотите удалить fchdir(), который не реализован в V5R1, просто измените строку, которая говорит:
d_fchdir='define'
на
d_fchdir='undef'
а затем скомпилируйте Perl. В местах, где используется fchdir(), есть альтернативы для систем, в которых fchdir() недоступен.
Perl в среде ILE
Существует порт Perl для среды ILE. Однако этот порт основан на довольно старой версии Perl, Perl 5.00502 (август 1998 г.). (По состоянию на июль 2002 года последняя версия Perl — 5.8.0, а даже 5.6.1 была выпущена в апреле 2001 г.). Если вам нужно запустить Perl в среде ILE, вам может потребоваться этот более старый порт: http://www.cpan.org/ports/#os400. Обратите внимание, что любая версия Perl, более поздняя, чем 5.00502, не была перенесена в ILE.
Если вам нужно использовать Perl в среде ILE, вы можете рассмотреть возможность использования Qp2RunPase() для вызова версии Perl в PASE.
АВТОРЫ
Jarkko Hietaniemi <jhi@iki.fi> Bryan Logan <bryanlog@us.ibm.com> David Larson <larson1@us.ibm.com>
© 1993–2021 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.36.0/perlos400