Perl構築スクリプト
投稿:2019-06-19
VPSの移行にあたり、機能のための専用アカウントを機能の個数分作り、それぞれPerlbrewで最新版のPerlをインストール、 cpanmで必要なモジュールをCPANからインストールします。 2つ目のアカウントを準備したところで、コマンドの手打ちが面倒になり、手打ちそのままのスクリプトをいくつか作り、 どのスクリプトを実行すればよいか(どこまで処理が進んだか)も考えるのが面倒になってくると、スクリプトで判定させるようになりました。 結局、アカウントは11個作ることになりましたが、これらの3つのスクリプトで手軽に作業できました。
もう、ここから楽したくて(笑) sudoできるユーザーに置きます。 起動するとユーザー名とパスワードを聞いてくるので入力しておしまい。 wheelグループにも入れてsudoを使えるようにします。
#!/bin/bash echo -n "追加アカウント名:" read newuser echo -n "$newuser 確認[y/N]:" read confirm if [ "y" = "$confirm" ]; then sudo useradd -m $newuser sudo passwd $newuser sudo usermod --append --groups wheel $newuser else echo "キャンセルしました。" fi
ユーザーにログインして実行します。 ロケールに日本語を設定、Perlbrewをインストール、最新のPerl5.30をインストール、システムPerlからPerlbrewに切替、cpanmをインストールします。
#!/bin/bash if ! [ "ja_JP.utf8" = $LANG ]; then echo "LANG=ja_JP.utf8" >> ~/.bash_profile echo "Please, re-login." elif ! [ -e ~/perl5 ]; then curl -L http://install.perlbrew.pl | bash echo "source ~/perl5/perlbrew/etc/bashrc" >> ~/.bash_profile echo "再ログインしてください。" elif ! [ -e ~/perl5/perlbrew/bin/cpanm ]; then perlbrew install perl-5.30.0 perlbrew switch perl-5.30.0 perlbrew install-cpanm echo "再ログインしてください。" else echo "設定完了です。" fi
使うモジュールは大体同じなのでスクリプトにまとめ、機能の実行に不足のモジュールをスクリプトに追加していきます。 これは人によって別なモジュールのリストになりますね。 コメントの「普通に必要」以降はPerl -c (スクリプト)で実行前に未インストールを検知できたモジュールです。 「プラグイン」以降はPerl -cで検知できず(useしてない)モジュールだったので、Perlを実行して初めて気付きました。 なお、Mojoliciousを動かすアカウントでは、Mojoliciousやその関連モジュール用の別スクリプトを作りました。 1回しか使わなくても、自分が何をしたのか記録しておくと振り返ることができるので有用です。
#!/bin/bash # 普通に必要 cpanm AnyEvent::Twitter::Stream cpanm DateTime cpanm DateTime::Format::HTTP cpanm DateTime::Format::Strptime cpanm DBI cpanm Digest::SHA3 cpanm Encode::Argv cpanm Encode::Locale cpanm HTML::Form cpanm HTML::TreeBuilder cpanm JSON cpanm LWP::UserAgent cpanm Net::Twitter cpanm Protocol::WebSocket::Client cpanm Term::Screen cpanm Unicode::Japanese cpanm XML::TreePP cpanm YAML cpanm YAML::XS # プラグイン cpanm Config::Pit cpanm Crypt::Blowfish_PP cpanm Crypt::CBC cpanm DBD::mysql cpanm LWP::Protocol::https