はじめに
IBM i はRPM(RedHat Package Manager)をサポートしています。Yumを使ってPythonやNode.js、Rといった多様なオープンソースをIBM i 上で利用できます。
しかし、RPMでモジュールをインストールするというのは、インターネットに接続していることが前提の仕組みです。でもIBM iってほとんどのケースでインターネットに接続してないですよね?実はこの点を解決する機能がIBM iユーザーにはお馴染みのACSに実装されています。
ACSを経由して、インターネットに接続したPCからIBM i にRPMパッケージを送り込むことができるのですが、オープン系エンジニアにとっては、ACSを毎回使うのは面倒(!?)ではないでしょうか。そこで、LinuxライクにSSHでYumでいつでもオープンソースを入れられるようにYumリポジトリ―をオフライン化する方法を試したいと思います。
目的
この記事のゴールは、
「インターネットに接続されていないIBM i で、Yum(CUI)を使ったオープンソース管理を実現する」
です。
検証環境
- IBM i 7.5 on PowerVS
- ACS 1.1.9.0
- Cliet to Site VPN越しにIBM i にアクセス(VPNはVPCがGW)
- IBM i 自体はインターネットへの疎通なし
- PC(ACS)からSSHアクセスを許可
手順
ACSを開いて、[アクション] メニューから [管理] -> [オープン・ソース・パッケージ管理] を開きます。
システム: IPアドレス or ホスト名
ユーザー: SSH アクセスするUSRPRF
と、パスワードもしくはSSH鍵を指定します。(IBM i のSSHはQSECOFRはデフォルトでは許可されてないので、別ユーザーが推奨)
オープン・ソース・パッケージ管理画面の[ユーティリティー]メニューから[オフライン使用のためにリポジトリ―を複製] を開きます。
いくつか設定項目ありますが、今回はデフォルトのまま進めました。
画面中央にあるリポジトリ―の複製 ボタンで開始します。
全部複製するまでにはそれなりの時間がかかります。ネットワーク環境に依存しますが、試した際には20分くらいかかりました。
あまり参考にならないかもしれませんが、リポジトリ複製中のPCのスループットは50Mbps程度がMAXでした。
複製完了時点のIBM i 側のディレクトリサイズは約 3 GBでした。
(/QOpenSys/QIBM/UserData/rpm_repos/ibm の容量)
オフラインでYumを使う
リポジトリが複製できた後は、インターネットに接続していないIBM iにsshアクセスしてyumコマンドによるパッケージ管理ができるようになります。
Trouble Shooting
オフラインリポジトリ―を作成したのに、インターネット上のリポジトリにアクセスしようとしてyum installが失敗することがあります。そういったときには、ACSの[ユーティリティー]メニューの
- Clear Metadata
- Rebuild RPM Database
を実行すると機能するようになるかもしれません。
最後に
オープンソースツールをいつ使いたくなるかはわからないので、IBM iの初期セットアップ時に最新のパッケージでオフラインリポジトリーを作成しておくと良いかもしれません。