概要
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
参考の修正履歴
- https://metacpan.org/changes/distribution/SQL-Translator#L77
- https://github.com/dbsrgits/sql-translator/commit/1fb4f40fa5d6b158b7241b01c41be3e2c1d8edad#diff-9738439aca40d63b897311c4de413a22
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