Fluentdで利用しているGemのアップデートを、下記のように行うことが多いですが、
確認すると、古いバージョンが、残っていました。
/usr/lib64/fluent/ruby/bin/gem update
# ls -1 /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/
aws-sdk-1.7.1
aws-sdk-1.8.1.1
aws-sdk-1.8.2
aws-sdk-1.8.3.1
...
古いバージョンは必要無いため、最新のバージョンのみを残し、他は削除したいところです。
そこで、その方法を今回はご紹介します。
下記コマンドを実行することで目的を達成できます。
# yes | /usr/lib64/fluent/ruby/bin/gem cleanup
...
Attempting to uninstall aws-sdk-1.7.1
Successfully uninstalled aws-sdk-1.7.1
Attempting to uninstall aws-sdk-1.8.1.1
Successfully uninstalled aws-sdk-1.8.1.1
Attempting to uninstall aws-sdk-1.8.2
Successfully uninstalled aws-sdk-1.8.2
...
実行後、次のように最新のバージョンのみが残ります。
# ls -1 /usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems/
aws-sdk-1.8.3.1
...
上記を踏まえ、アップデートスクリプトを下記のように修正してみました。
suz-lab-centos-ami:
suz-lab-centos-ami/bin/update-fluent
#!/bin/sh
set -e
trap 'echo "NG: $?"' ERR
service td-agent stop
/usr/lib64/fluent/ruby/bin/gem update 2>&1 | logger -s -t ${0##*/}
yes | /usr/lib64/fluent/ruby/bin/gem cleanup 2>&1 | logger -s -t ${0##*/}
service td-agent start
exit 0