Masteries

技術的なことや仕事に関することを書いていきます.

plenvでインストールしたPerl環境を固定(?)できる「plenv-lock」書いた

以前, 「最近のplenv/Cartonの運用」というエントリで, plenvで管理しているPerl環境について, App::cpanminusとCartonをインストールした段階で書き込み禁止にしてしまって, それ以降余計なモジュールをインストールすることを防ぐ, みたいな話をしました.

papix.hatenablog.com

このへん, いい感じに操作したい! という気持ちが高まったので, plenv-lockというplenvのプラグインを書いてみました.

github.com

使い方

$ mkdir -p $PLENV_ROOT/plugins
$ git clone git@github.com:papix/plenv-lock.git $PLENV_ROOT/plugins/plenv-lock

こんな感じでインストールしてあげて...

$ plenv lock 5.24.1

とすれば, plenvでインストールした5.24.1の環境がロックされます. 解除するときは,

$ plenv unlock 5.24.1

という感じです.

仕組み

内部的には, ロック/アンロックの対象となるPerl環境がインストールされているディレクトリに対して, findで全てのディレクトリを見つけ出し, その全てにchmodを使って書き込み権限を落とす/付与する, という形で実装しています. 以前はchflagsで実装していましたが, find + chmodにすることで, MacだけでなくLinuxなどでも使えるようになった, と思います(試してはいない).

ちなみにこのアイデアは id:aereal さんから頂きました. ありがとうございました.

まとめ

plenv-lockという, plenvのプラグインを書きました. かなりニッチなプラグインではありますが, 興味があれば(Perl環境をロックする, という運用? とあわせて)試してみて頂けると嬉しいです.