tWAS V9.0.5 コマンドライン・インストールに思わぬ苦労をした理由

traditional WebSphere Application Server (tWAS) の導入に苦労したことは、これまでありませんでした。しかしある日、環境固有の問題に遭遇し、これまでとは異なる手順で導入する羽目になりました。
将来万一また同じ問題に遭遇したときのために、備忘録として残します。

(※コマンドラインだから苦労したというわけではなく、意外な原因で導入イメージが破損してました、という話です)

## tWASの導入の流れ
下記の手順でインストールします。

1. IBMのサイトから IBM Installation Manager(IIM), tWAS, IHS, Plugins, IBM JavaSDK, Fixpack(tWAS,IHS) のイメージをダウンロード
2. Linuxへバイナリモードで転送
3. Linux上でインストール・イメージを展開
4. IIMインストール
5. WAS/Java製品リポジトリが利用可能か確認
6. IIM で tWAS, tWAS Fixpack, JavaSDK を一括インストール
7. IIM で IHS, IHS Fixpack, JavaSDK を一括インストール
8. IIM で Plugins, IHS Fixpack, JavaSDK を一括インストール
9. IIM で Customization Toolbox をインストール


なかなか無いことですが、今回は 6.で失敗。

##導入時のエラーメッセージ
2020年7月時点最新の、tWASV9.0.5.4を入れます。
必要なメディアは、tWAS 9.0.5.1, Fixpack 9.0.5.4, IBM JavaSDK 8 の3つ。

```

[root@earlgrey /]# cd /opt/IBM/InstallationManager/eclipse/tools/
[root@earlgrey tools]#  ./imcl install com.ibm.websphere.BASE.v90 com.ibm.java.jdk.v8 \
>   -repositories /work/media/java,/work/media/was/was_9051_base,/work/media/was/was_905_fp4 \
>   -installationDirectory /opt/IBM/WebSphere/AppServer \
>   -sharedResourcesDirectory /opt/IBM/IMShared \
>   -installFixes all \
>   -acceptLicense
エラー: インストール中に以下のエラーが生成されました。
  CRIMC1029E エラー: リポジトリー /opt/IBM/IMShared への ファイル com.ibm.websphere.WAS.ejbdeploy_126_all.all_9.0.0.201605262313 の追加に失敗しました。
    CRIMC1085E エラー: 再開可能なダウンロードが /work/media/was/was_9051_base/files/com.ibm.websphere.WAS.ejbdeploy_126_all.all_9.0.0.201605262313.file で失敗しました。
      エラー: 2 回発生しました: 「ファイル com.ibm.websphere.WAS.ejbdeploy_126_all.all_9.0.0.201605262313」の取り出しに失敗しました。
        エラー: 「/work/media/was/was_9051_base/files/com.ibm.websphere.WAS.ejbdeploy_126_all.all_9.0.0.201605262313.file」を「/opt/IBM/IMShared/tmp/cicdip_root/v/md5/639831b25462edfd7b3be1a7655fa559_md5~172b4fcfdfcf77bd80a07dcd1d1dd5ca」にダウンロード中。
        エラー: 目次ダイジェストがダウンロードしたファイルのダイジェストと異なります。
        エラー: 「md5」ダイジェスト値が一致していません: [639831b25462edfd7b3be1a7655fa559] (実値) 対 [affbe0e642ef1204932343873512dcce] (予測値)。

```

「/work/media/was/was_9051_base/files」配下のファイルのmd5ダイジェスト値の不一致ということで、
疑わしいのは、tWAS 9.0.5.1 のイメージが壊れていそう。

## 問題判別の過程


### 可能性①：IBMサイトからのダウンロードの過程でtWAS 9.0.5.1 のイメージが壊れている？
同じイメージを使ってWindows環境にインストールしてみたら成功したので、この可能性は除外。

### 可能性②：SCP転送時のモード間違い？
よくあるのは、Linuxへ転送する時の転送モードがバイナリじゃなかったためにバイナリファイルである「*.file」が壊れてしまう事象。
今回ファイル転送にはバイナリを選択していることは確かなので、この可能性は除外。

一緒に転送した IHS / Plugins は問題なく導入できていることもまた、SCP転送に問題がなかったことの裏付けとなります。
厳密に考えていくとSCP転送ソフトの障害の可能性も否定できませんが、そんな問題があったら他で騒がれているはずなので、この可能性もいったん除外。

### 可能性③：Linux上で展開するタイミングでファイルが壊れた可能性
今使っているLinuxVMに導入されていたunzipコマンドを使って展開していましたが、この展開の過程でファイル破損が生じている可能性もあります。

通常、WAS導入時には、導入先サーバには圧縮形式のまま持っていき、導入先サーバで展開するのが普通です。そうしないとうまくいかないことも。
しかし今回は切り分けのため、Windows上で、7Zipという圧縮・展開ソフトを使って展開して、フォルダごと WinSCP を用いてバイナリモードでLinuxへ転送しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/468682/5d845385-76c1-9109-6cd3-c22b1fbd9645.png)

(※普通はzipごと導入サーバに転送します。切り分けのため、レアな手順をあえて試しています)

フォルダとして転送したリポジトリが、IIMに認識されているかを確認。→ 大丈夫そう

```
[root@earlgrey /]# cd /opt/IBM/InstallationManager/eclipse/tools/
[root@earlgrey tools]# ./imcl listAvailablePackages -repositories /work/media/java,/work/media/was_re/was_9051_base
com.ibm.java.jdk.v8_8.0.6010.20200421_1200
com.ibm.websphere.BASE.v90_9.0.5001.20190828_0616
```

導入実施。なんと、成功。。こんな変なインストール方法を実践したのは人生初です。。

```
[root@earlgrey /]# cd /opt/IBM/InstallationManager/eclipse/tools/
[root@earlgrey tools]# ./imcl install com.ibm.websphere.BASE.v90 com.ibm.java.jdk.v8 \
>   -repositories /work/media/java/8.0.6.11,/work/media/was/was.repo.90501.base,/work/media/was/was_905_fp4 \
>   -installationDirectory /opt/IBM/WebSphere/AppServer \
>   -sharedResourcesDirectory /opt/IBM/IMShared \
>   -installFixes all \
>   -acceptLicense
/opt/IBM/WebSphere/AppServer ディレクトリーに com.ibm.websphere.BASE.v90_9.0.5004.20200520_1523 がインストールされました。
/opt/IBM/WebSphere/AppServer ディレクトリーに com.ibm.java.jdk.v8_8.0.6011.20200618_0815 がインストールされました。

[root@earlgrey tools]# ./imcl listInstalledPackages
com.ibm.cic.agent_1.8.9004.20190423_2015
com.ibm.java.jdk.v8_8.0.6010.20200421_1200
com.ibm.websphere.IHS.v90_9.0.5001.20190828_0616
com.ibm.java.jdk.v8_8.0.6010.20200421_1200
com.ibm.websphere.PLG.v90_9.0.5001.20190828_0616
com.ibm.java.jdk.v8_8.0.6011.20200618_0815　　　　　　　 ← WASと一緒に導入したJava SDK 8.0.6.11
com.ibm.websphere.BASE.v90_9.0.5004.20200520_1523　　　　← WAS Base 9.0.5.4
[root@earlgrey tools]#
```

一応、versionInfo コマンドでも tWAS 9.5.0.4 導入済みとちゃんと認識されるかどうか確認。

```
[root@earlgrey ~]$ cd /opt/IBM/WebSphere/AppServer/bin
[root@earlgrey bin]$ ./versionInfo.sh
WVER0010I: Copyright (c) IBM Corporation 2002, 2012; All rights reserved.
WVER0012I: VersionInfo レポーター・バージョン 1.15.1.48、日付 2/8/12

--------------------------------------------------------------------------------
IBM WebSphere 製品インストール状況レポート
--------------------------------------------------------------------------------

日時 2020/07/30 15:18:23 JST におけるレポート

インストール
--------------------------------------------------------------------------------
製品ディレクトリー                /opt/IBM/WebSphere/AppServer
バージョン・ディレクトリー            /opt/IBM/WebSphere/AppServer/properties/version
DTD ディレクトリー              /opt/IBM/WebSphere/AppServer/properties/version/dtd
ログ・ディレクトリー               /var/ibm/InstallationManager/logs

製品リスト
--------------------------------------------------------------------------------
BASE                     インストール済み
JAVA8                    インストール済み

インストール済み製品
--------------------------------------------------------------------------------
名前                IBM WebSphere Application Server
バージョン             9.0.5.4
ID                BASE
ビルド・レベル           f5042020.01
ビルド日              5/20/20
パッケージ             com.ibm.websphere.BASE.v90_9.0.5004.20200520_1523
アーキテクチャー          x86-64 (64 bit)
インストール済みフィーチャー    WebSphere Application Server traditional
                  EJB 3.0 より前のモジュール用の EJBDeploy ツール
                  組み込み可能 EJB コンテナー
                  スタンドアロンのシン・クライアントおよびリソース・アダプター

インストール済み製品
--------------------------------------------------------------------------------
名前          IBM SDK, Java Technology Edition, Version 8
バージョン       8.0.6.11
ID          JAVA8
ビルド・レベル     pxa6480sr6fp11-20200602_01
ビルド日        06/02/20
アーキテクチャー    x86-64 (64 bit)

--------------------------------------------------------------------------------
インストール状況レポートの終了
--------------------------------------------------------------------------------
[root@earlgrey bin]$
```

tWAS 9.5.0.1 / Fixpack 9.5.0.4 いずれも問題なく導入されていそうです。


## 原因(推測)
たまたま使っていたLinuxのunzipコマンドとWASのzipファイルとの相性がよくなかったようです。
(他ファイルは問題なく展開できるので、今回は本当に運が悪かったとしか... )

## 回避策
他の圧縮・展開ソフトウェアを用いてzipファイルを展開する。

## 補足：今回使っていたunzipコマンド

このunzipコマンドに問題がある、と言いたいわけではありません。
実際、他のzipファイルも多々展開・圧縮していますが過去問題が起きたことはありませんでした。
他の要因もあわせての複合要因で、このunzipコマンドで展開したtWAS導入イメージが壊れてしまったのか、
めぐり合わせなのか、自分の過去の行いに問題があったのか、、根本原因まではわかりませんが、回避策がわかったので私としてはこれで解決です。

```
[root@earlgrey tools]# yum whatprovides unzip
読み込んだプラグイン:fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Determining fastest mirrors
 * base: ftp.yz.yamagata-u.ac.jp
 * extras: ftp.yz.yamagata-u.ac.jp
 * updates: ftp.yz.yamagata-u.ac.jp
unzip-6.0-21.el7.x86_64 : A utility for unpacking zip files
リポジトリー        : base

unzip-6.0-20.el7.x86_64 : A utility for unpacking zip files
リポジトリー        : @anaconda
```

## tWAS コマンドライン導入の参考資料

コマンドラインでWASを導入する手順はこのあたりの資料を参考にしています。
WAS 9.0.5 KnowledgeCenter[コマンド行を使用した製品オファリングのインストール]
https://www.ibm.com/support/knowledgecenter/ja/SSEQTP_9.0.5/com.ibm.websphere.installation.base.doc/ae/tins_installation_cl.html
WAS V9.0のサイレントインストールとAnsibleでの自動化
https://qiita.com/sotoiwa/items/299a04103624dd3c046a
WAS ND v9 Traditional をコマンドラインで入れてみた
https://qiita.com/shimauma_Zzzzz/items/5b6a90e908778082b08e