Posted at

EC2(Amazon Linux)にSQL::Translatorをインストール


概要

Amazon LinuにSQL::Translatorをyumでインストールするとバージョンが古く、

思わぬ不具合に遭遇したので別の方法でインストールする。


主にハマった問題

MySQLにおいてON UPDATEが解釈できずスカラーリファレンスに化けてしまう。

(この問題自体は 0.11019 2014-09-02 で解決済み)

+ DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

- datetime on update SCALAR(0x3333b68) NULL DEFAULT CURRENT_TIMESTAMP


参考の修正履歴


yum で入れた場合のバージョン

$ sudo perl -MSQL::Translator -e 'print $SQL::Translator::VERSION'

0.11016
$ yum list | grep perl-SQL-Translator
perl-SQL-Translator.noarch 0.11016-1.2.amzn1 @amzn-main


環境


  • Amazon Linux AMI 2018.03.0.20180811 x86_64 HVM GP2

  • Amazon Linux AMI 2017.03.1.20170623 x86_64 HVM GP2

Amazon Linux 2 AMI 2.0.20181114 x86_64 HVM gp2だとyum listでperl-SQL-Translator上がってこない。


手順


開発関係のパッケージをインストール

$ sudo yum install gcc gcc-c++ perl perl-devel

$ sudo yum groupinstall "Development tools" でもいいかも?


yumでインストールしてしまっている場合は削除する

$ sudo yum remove perl-SQL-Translator.noarch


cpanmのインストール

$ curl -L https://cpanmin.us | perl - --sudo App::cpanminus


sudoでcpanmを使えるようにする

上記コマンドでインストールすると /usr/local/bin/ にスクリプトが配置される。

このままだとsudoのPATHが通っていないのでsecure_pathをいじるか、secure_pathが通っている場所にシンボリックリンクを貼る必要がある。

今回はsecure_pathを変更する。

$ sudo visudo

- Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

+ Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin


SQL::Translatorのインストール

$ sudo cpanm SQL::Translator -n

$ sudo perl -MSQL::Translator -e 'print $SQL::Translator::VERSION'
0.11024