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. Это приведет к установке всех файлов в указанный каталог, при этом установленные файлы всё равно будут считать, что они находятся (будут находиться) в /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–2023 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.38.0/perlos400