LoginSignup
6
0

More than 1 year has passed since last update.

Teradata Studio, Teradata Studio Express (Mac版) のインストール

Last updated at Posted at 2021-05-13

概要

Teradata Studio, Teradata Studio ExpressはTeradataデータベースを操作するGUIソフトウェアですが、そのMac版のインストーラにはやや問題があり、インストールが失敗することがあります。
私の経験したのは、適切なJavaプログラムを見つける仕組みの問題でした。
結局、インストールした .pkg ファイルを一度解凍して中のスクリプトを修正し、再度パッケージ化するという荒療治により解決することができました。この方法を紹介します。

参考:Studio Express Mac JDK installation issue | Teradata Forum

インストーラの取得

https://downloads.teradata.com からソフトウェアのインストーラをダウンロードします。

リンク切れの場合は検索すればすぐに見つかると思います。
Mac用には、.pkgファイルが用意されています。

インストーラが機能するかの確認

普通は.pkgファイルをダブルクリックしてウィザードに従っていれば完了なのですが、私の環境では失敗しました。
この失敗への対処を紹介します。

Javaのバージョンの確認

Teradata Studio (Express) は、Java Runtime Environmentのバージョン 1.8, 10, 11 のいずれかを必要とします。これが満たされないとエラーが生じます。悪いことに、たとえ指定のバージョンのJavaがインストールされていても、これが正しく検知されなければやはりエラーがでます。ですので、(1) 指定のJavaバージョンをインストールする (2) それが正しく検知されるようにスクリプトを書き換える、の2手順で対応します。

指定のJavaバージョンをインストールする

バージョン 1.8, 10, 11 のいずれかがインストールできれば良いのですが、ここでは AdoptOpenJDK をHomebrew経由でインストールする方法を紹介します。

brew tap AdoptOpenJDK/openjdk
brew install adoptopenjdk8

インストールが完了すると、/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java に、Javaプログラムがインストールされます。
下記はその確認コマンドです。

/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java -version 
# openjdk version "1.8.0_252"
# OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_252-b09)
# OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.252-b09, mixed mode)

このバージョンを既定にするには、~/.bash_profile に下記を記載します。

.bash_profile
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
PATH=${JAVA_HOME}/bin:${PATH}

次回以降Terminalを開き直すと、次のようになります。

which java
# /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java

参考:HomeBrew で AdoptOpenJDK をインストールしてみた(訂正版)| qiita

Javaバージョン判定のスクリプトの修正

残念ながら、指定のJavaバージョンをインストールして既定に設定したとしても、まだTeradata Studio (Express) のインストールは成功しません。中で動いているJavaバージョンの判定スクリプトがあまり頑健でないためです。
そこで、エラー解消のため、スクリプトを直接修正します。
以下では、Expressの場合のコマンドを例として示しますが、適宜 Teradata Studioに読み替えてください。

まず、インストールした.pkgファイルを解凍します。
コマンド最後のTSE.unpkgの部分は、解凍先フォルダで任意です。

pkgutil --expand TeradataStudioExpress.pkg TSE.unpkg

すると、Javaのバージョン判定をしているスクリプトが、TSE.unpkg/TeradataStudioExpComponent.pkg/Scripts/preinstall に見つかります(紛らわしいですが、TeradataStudioExpComponent.pkgはフォルダ名です)。
これは、以下のような短いPerlスクリプトです。

Scripts/preinstall
#!/usr/bin/perl
use strict;
use warnings;

my $javaversion = `java -XshowSettings:properties -version  > /tmp/javaver 2>&1`;
my $javaversionhelp = `grep "java.specification.version" "/tmp/javaver"`;
my ($jdk, $version) = split /\s*=\s*/, $javaversionhelp;
my $retval = 0;

if ( $version != 10 && $version != 1.8 && $version != 11 ) {    
        $retval=system("/usr/bin/osascript -e 'tell application \"Finder\"'  -e 'activate' -e 'display dialog \"Java Runtime Environment 1.8 or 10 or 11 is required and should be installed before installing Teradata Studio Express Application.\" buttons{\"OK\"} with title \"Teradata Studio Express Warning\"' -e 'end tell'") ;
    exit(-1);
}

exit(0);

読み解くと、次のような構成のようです。

  1. javaコマンドでバージョン情報を一時ファイルに書き出し
  2. 一時ファイルの該当箇所からバージョン番号を取得
  3. バージョンが 10, 1.8, 11 のいずれかでなければ、警告を出した上でエラー終了

さて、このプログラムが失敗する理由ですが、どうやら使っているjavaコマンドのパスが意図と違っているためです。これは、おそらく.bash_profileに記載した設定が反映されていないためです。したがって、既定バージョンを 1.8 にしたつもりでも、このプログラムではそう判定されません。

さて、プログラムの修正方法ですが、丁寧にやるなら、java コマンド部分をフルパス /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java に書き換えることです。
しかし、実際のところこのプログラムがしているのはバージョン判定だけで、インストール作業とは関係ないので、無条件でパスさせてしまえば良さそうです。
そこで、プログラムの冒頭を以下のように書き換えます。そうすると、常に成功してプログラムが終了するはずです。

Scripts/preinstallの冒頭
#!/usr/bin/perl
use strict;
use warnings;

exit(0);

上記の編集後、下記のコマンドでパッケージを再構築します。
新しくTSE.pkgが作られます。

pkgutil --flatten TSE.unpkg TSE.pkg

TSE.unpkgをダブルクリックしてウィザードに従うと、上手くいけばインストールが成功します。

プログラム実行時のJavaバージョンを設定

インストール時にはバージョン判定を回避することでパスさせましたが、ソフトウェア実行時には、正しく意図したバージョンのJavaを使わせる必要があります。そのためには、プログラムの設定ファイルを編集します(管理者権限が必要です)。
Vimを使っていますが、適宜別のエディタに読み替えてください。

sudo vim /Applications/TeradataStudioExpress.app/Contents/Info.plist

後半部分に 特定のJava version を指定するようにコメントされている部分があるので、そこへ下記を追加します。

Info.plist に追加
<string>-vm</string><string>/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java</string>

終わりに

以上で設定変更は終わりです。あとは、ランチャーから起動すればソフトウェアが使えるようになっていると思います。

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0