Perl
SQL

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