ルモーリン
ホーム 更新 Perl Sample ランドナー サービス 雑談 コースガイド 鉄ゲタ 自転車 Linux リンク 連絡先

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

Perl追加

ユーザーにログインして実行します。 ロケールに日本語を設定、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