Open Source協議会 – IBM i 技術分科会では、「オープン・ソースの活用」をテーマに、毎年様々な研究を重ねてきました。
今回は、これまでIBM iに於ける、オープン・ソースの重要な核を担ってきた、「5733-OPS」ライセンスが、V7R4より提供中止となった事を受け、その代替え手段として「yum」の導入及び検証をテーマとしました。
IBM i でOSSを利用する際に避けて通れないテーマを、IBM i 技術者、オープン系技術者両方の観点から検証しています。
これまでIBM iによるOSSを活用してきた、若しくはこらから活用していきたいと、考えている方々は、是非当記事をご覧頂き、yumにより更にパワーアップされた、IBM iのオープン・ソース体感しては如何でしょうか?
前編記事はこちら
追記:2020年7月6日
yum最新情報(ACS) -OSS協議会 第15回 定期総会-の動画、および資料リンクを公開しました。
https://ah109sxyjk.smartrelease.jp/library/20200528_oss_yum_dl
著者プロフィール
株式会社中部システム
開発室 テクニカルアーキテクト
牛田 吉樹
1. 5733-OPS から yum への扉
2019年6月21日より出荷開始された IBM i V7R4。これに伴い、IBM iに於けるオープン・ソースの分野で、ある1つの大きな転換期を迎えた。 そう、ライセンスプログラム”5733-OPS”の提供廃止である。 このライセンス内のプロダクトは、長らく我々IBM iの技術者にとって、非常に画期的かつ刺激的であり、Technology Refresh(※以下TR)等で、新たなオプションのリリースがされた時はワクワクしたものである。 この”5733-OPS”の廃止と共に、IBM iのオープン・ソースへの扉は閉ざしてしまうのか? 答えは否である。オープン・ソースプロダクトの提供を”yum”に統合するというのが、最新IBM iの答えだ。
この”yum”だが、実はV7R3の時代にもTR5(2018年8月頃)として既に提供されている。従って”5733-OPS”は廃止だが、あくまでも”yum”への統合なのである。さて、この事を長年”5733-OPS”に慣れ親しんできた、我々技術者はどう考えれば良いのだろうか? 私個人の見解としては、”yum”という非常にポピュラーな手法に統一され、オープン・ソース利用の敷居が下がったと、肯定的に捉えている。我々の社内でも同様だが、”ライセンス導入”“、”PTF導入”となると、特定の管理者や業者が行う作業レベルというのが一般的である。特にユーザー企業ではその傾向にある。しかし、オープン・ソースを試用させたい、これからの技術者に限って、この作業を行える権限を持ち合わせていないという、ジレンマがあった。
このままでは、セミナー等でいくら良い話や夢のある話を聞いても、いつまでも絵に描いた餅である。 しかし、”yum”を使うとなれば、通常のRedHat系 Linuxを知る技術者であれば、当然のように、コマンドを使いこなす事が出来る。 またコマンドを知らない技術者でも、IBM i Access Client Solutions(※以下ACS)と言うGUIを使う手段も用意されている。 ”chroot”と”yum”を併用し、技術者個人の閉鎖環境を構築する事も可能だ。さぁ準備が整ったら、”5733-OPS”から”yum”へ移行し、オープン・ソースの扉を開けよう。
2. What’s yum?
”yum”とは、rpm(RedHat系 Linuxのソフトウェア・パッケージ)の導入を容易にし、またその導入を管理するツールである。
歴史としては、”Yello Dog Linux(※System Pで稼働)”のために作られており、Power PCとの繋がりも多少なりとあるようだ。
以下に”yum”の代表的な機能を挙げる。
- 利用可能なソフトウェアの確認
- ソフトウェアの導入
- ソフトウェア同士の自動依存解決
- ソフトウェアの更新状況の確認
- ソフトウェアの更新
- ソフトウェアの除去
パッケージ・マネージャで、ソフトウェアを管理する手法というのは、開発系技術者には非常にポピュラーな手法なため、特にこれからの技術者や、Linux経験がある技術者には、違和感なく馴染みやすいのではないだろうか?
代表的なパッケージ・マネージャは以下の通り。
- Ubuntu : apt (apt-get)
- Mac OS : homebrew , mac ports
- Node.js : npm
- Python : pip
- PHP : composer
3. yum の導入編
まず”yum”を導入するにあたり、ドキュメント等に明示的な記載はないが、IBM iでOSS使用する際に必要となる前提ライセンスは、導入しておく必要があるだろう。
ライセンスは以下の通り。
- 5770-SS1 33 PASE
- 5770-SS1 30 QSHELL
- 5770-DG1 *BASE IBM HTTP Server for i
- 5770-SC1 *BASE IBM Portable Utilities for i
- 5770-SC1 1 IBM OpenSSH、OpenSSL、zlib
“yum”自体のインストール所要時間は、30分程度で、ACSとCUIを使用した、2つの導入方法から選択可能となっている。
ACS 導入
ACSの場合、GUIを使用し、コマンドを使わずに導入する事が可能なため、yumコマンドの知識がない技術者でも用意にインストールが可能だ。我々社内のIBM i経験数ヶ月程度の技術者でも用意にインストールが可能であった。
以下に、ACSインストールの特徴を挙げる
- GUIによる容易な操作
- 全自動インストール
- yumコマンド知識がなくても、主要な機能は利用可能
- 導入PCにインターネット・アクセスを必要とする
注意点としては、導入作業に入る前に、最新のACSを導入しておく事が必要だ。かなり古いACSだと”yum”のインストール機能が存在しない、SSH接続の公開鍵認証が備わっていないなど、インストール時に必要な機能がない可能性がある為だ。
ACSインストール方法
- ACSを起動
- [ツール]→[オープン・ソース・パッケージ管理]を選択する
- [System]にIBM iのIPアドレスやDNS名を入力
- [User]、[Password]、[SSH Key]にIBM iの接続情報を入力
- [はい(Y)]をクリックしインストール続行
- しばらく待つとインストール完了
- インストール後はACSでパッケージの管理が可能
CUI導入
従来のCUIによる導入も可能だ。こちらも導入用スクリプトが用意されている為、ほぼ自動で導入が可能だ。ACSの場合は、導入用PCがインターネット接続を必要としたが、CUIの場合は、インストール用ファイルのダウンロードこそインターネット接続を必要とするが、インストール時にはオフラインによる作業が可能だ。社内において、インターネット接続に制限がある場合などは、CUIインストールが選択肢となるだろう。また、導入後のCUI操作も標準的な”yum”コマンドであるため、RedHat系Linuxに慣れ親しんだ技術者にとっては、違和感なく使う事が可能となっている。
以下に、CUIインストールの特徴を挙げる。
- オフラインによるインストール
- スクリプトによるほぼ自動インストール
- ”yum”の全コマンドを使用可能
- RedHat系 Linuxの知識がある技術者には、習得が用意
- 軽量、ネットワークが細くてもストレス・レス
ここでの注意点としては、まず初めに「”インストール用ファイル”を入手し、IBM i へアップロードする」という作業があるが、ファイル転送の手段に”バイナリ転送”が可能な方法(※FTPなど) を選択する事だ。この”インストール用ファイル”には、tarコマンドのバイナリが仕込まれており、うっかりACS等を使用してしまうと、バイナリ転送がされず、後段のインストール・スクリプトが正しく実行されないので、注意したい。
CUIインストール方法
以下の2つの導入用ファイルをダウンロードする。(インターネット接続が必要)
- ftp://public.dhe.ibm.com/software/ibmi/products/pase/rpms/bootstrap.sh
- ftp://public.dhe.ibm.com/software/ibmi/products/pase/rpms/bootstrap.tar.Z
- ダウンロードしたスクリプト・ファイルをIBMiへ転送
- 注意)バイナリー・データとして転送する事!
例)FTPの場合
C:\Users\QSECPFR>ftp ホスト名
ホスト名 に接続しました。
220-QTCP AT ホスト名.
220 CONNECTION WILL CLOSE IF IDLE MORE THAN 5 MINUTES.
ユーザー (ホスト名:(none)):QSECOFR
331 ENTER PASSWORD.
パスワード:
230 QSECOFR LOGGED ON.
ftp> bin
200 REPRESENTATION TYPE IS BINARY IMAGE.
ftp> put Desktop\bootstrap.sh /home/QSECOFR/temp/bootstrap.sh
200 PORT SUBCOMMAND REQUEST SUCCESSFUL.
150-NAMEFMT SET TO 1.
150 SENDING FILE TO /home/QSECOFR/temp/bootstrap.sh
226 FILE TRANSFER COMPLETED SUCCESSFULLY.
ftp: 3985746 バイトが送信されました 0.06秒 64286.23KB/秒。
- 5250画面のQSHコマンドで以下を実行
QSH CMD(‘touch -C 819 /tmp/bootstrap.log;/QOpenSys/usr/bin/ksh /tmp/bootstrap.sh > /tmp/bootstrap.log 2>&1′) - 環境変数PATHに「/QOpenSys/pkgs/bin」を追加
導入後の作業yumコマンド例
インストール…yum install パッケージ名
アップデート…yum update パッケージ名
アンインストール…yum remove パッケージ名
[パッケージ一覧]
インストール済…yum list installed
利用可能…yum list available
更新可能…yum list updates
インストールの詳細情報
これら”yum”の導入に関する主な情報は、BitbucketのIBM i サイトに掲載されている。
(https://bitbucket.org/ibmi/opensource/src/master/docs/yum/)
また、ファースト・ステップとして、「OSS協議会 IBM iのセミナー資料」にも日本語として、まとめられているので、是非ご活用頂きたい。
4. yum の運用
”yum”の導入が完了すると、運用フェーズにて、2つの選択肢が存在する。1つはデフォルトで用意されている、IBM公式リポジトリ(※リポジトリとはソフトウェア・パッケージが配置されているサイト)を利用し、インターネット接続により運用する方法だ。(※以下、グローバル運用)
以下に、グローバル運用の特徴を挙げる。
- インターネット上のリポジトリを利用する
- IBM iにインターネット接続と名前解決を必要とする
- FTPサイトのリポジトリが存在する場合は、ファイアウォールも考慮する必要がある
- ACS,CUI問わず利用可能
- 常に最新のパッケージである
- IBM公式リポジトリは、設定済みの為、用意に利用開始出来る
- デフォルト設定済みのIBMリポジトリ
/QOpenSys/etc/yum/repos.d/ibm.repo
[ibm]
name=ibm
baseurl=https://public.dhe.ibm.com/software/ibmi/products/pase/rpms/repo
enabled=1
gpgcheck=0
sslverify=0
しかし、この方法だと、IBM i自身が、インターネット接続や名前解決を必要とし、これらが利用できるケースは、IBM iユーザーでは稀だと思われる。そこで、もう1つの手段が、ローカル・リポジトリを構築する方法だ。(※以下、ローカル運用)
以下に、ローカル運用の特徴を挙げる。
- IBM iにインターネット接続も名前解決も必要としない
- 幾つかの手段から、ローカル・リポジトリの構築方法を選択する事が出来る
- yumコマンドに、リポジトリ構築補助ツールが備わっている
- 外部ネットワークの障害や速度に依存しない
- 更新情報を得るためには、外部リポジトリとの定期的な同期が必要
ローカル・リポジトリ構築手順
- IBM公式リポジトリより、以下を全て複製
https://public.dhe.ibm.com/software/ibmi/products/pase/rpms/repo/
※FTPやwgetを使用
- 複製したリポジトリをIFS上の任意のディレクトリに配置
- リポジトリ設定にローカル用のファイルを追加
- IBM公式リポジトリを無効にする
- リポジトリを確認
5. 代表的なソフトウェア
- R
- Midnight Commander
- Node.js 12
- vim
- jupter
Midnight Commander
jupter
6. 注意点
”yum”の初期導入時には、Python2、bash以外は導入されないため、”5733-OPS”相当で、必要なソフトウェアがある場合は、自身でインストールする必要がある。また、以下に挙げるソフトウェアは、yumで提供されていないため、最新バージョンへの移行や代替手段を検討する必要がある。
- Node.js 8 未満
- Orion
7. これまでとこれから
従来の”5733-OPS”の導入方法と比較すると、”yum”が以下に容易か、よく分かる。
ライセンス方式
- 前提ライセンス導入
- 前提PTF導入
- OPSライセンス導入
- OPSのPTFを導入
- OPSのPTFを適用
- OPSの個別PTFがあれば同様に適用
- 最新PTFの動向を注視
- 4~7を繰り返し
yum方式
- yum install パッケージ
- yum update パッケージ
特に従来の方法だと、ライセンス導入権限、PTFを入手可能な権限、適用権限など運用上、中々難しい面も多かった。しかし”yum”であれば、今回は割愛するが”chroot”運用などにより、個人環境を構築し、権限の面でも柔軟に対応が可能だ。また、IBMとRedHatが一緒になったという事も、”yum”パッケージのPower対応という事が、活発に行われるのでは無いかと、私個人としては期待している。ここ最近の”yum”パッケージの更新や、新規ライブラリの採用状況を注視していても、これまでのライセンス方式の提供のそれとは、明らかに違うスピード感で進んでいる様に感じる。プロダクトを提供する側もスピード感、メンテナンス性を重視し、これまでの特異なIBM iのライセンス、PTF提供という方式より、”yum”リポジトリを更新していく方が、最良と考えたのだろう。
最後に、IBM iのOSSの代表格である、PHPに関してビッグ・ニュースがあった。それは、これまで”Zend Server”のバンドルとして提供されてきたPHPが、コミュニティ版として”yum”で提供される事となったのである。このコミュニティ版PHPも”yum”というスピード感がなければ、実現し得なかったであろう。これも、ライセンス方式と同様に、Zend Server導入の敷居を高く感じていた、技術者には朗報だろう。
まだまだ、これから情報が変化する可能性はあるが、番外編として現状でのコミュニティ版PHPの導入を紹介して今回のyum検証報告を終わりとする。
8. 番外編 PHPコミュニティ版の導入
- コミュニティ版PHPリポジトリの追加
yum-config-manager --add-repo http://repos.zend.com/ibmiphp
- 導入対象のPHPパッケージをインストール
yum install php*(任意のパッケージやライブラリ)
※上記作業は、yumコマンドにPATHを通す事が前提
2020年2月5日 現在の最新版は、PHP 7.3.14 となっている