はじめに
自分のmacではperlを使うにあたりplenvを使用しているので、
アプリやらサービスやらのディレクトリ内のperlバージョンはplenvで管理・固定しています。
モジュールはそんなに気にしていなかったのですが、
モジュール管理としてちょいちょいcarton使うことがあったので一連のメモを残しておきます。
アジェンダ
- plenvいれる
- cartonいれる
1. plenvいれる
これは別途記事があるのでそちらを参考にしてみてください
→【perl】plenvでperl x cpanm x carton環境を作る - mac編
2. cartonいれる
1のplenvとcpanmまで入っていたらあとはすぐですが、
こんなながれでやります
- plenv経由のcpanmでcartonインストール
- plenv経由のcartonコマンドでcpanfileを指定してモジュールインストール
- plenv rehash
plenv経由のcpanmでcartonインストール
※ plenv管理化のディレクトリに移動 $ cd plenv管理化のディレクトリ ※ cartonで必要らしい $ plenv exec cpanm Module::Install ※ plenvのcpanm経由でCartonインストール $ plenv exec cpanm Carton ※ 試しに打ってみる ※ 当然まだcpanfile作ってないので怒られる $ plenv exec carton Can't locate cpanfile: (cpanfile)
plenv経由のcartonコマンドでcpanfileを指定してモジュールインストール
※ cpanfile作る $ echo "requires 'Task::Plack';" > cpanfile ※ carton経由でcpanfileのモジュール(今回はplack)いれる $ plenv exec carton install ※ 無駄にもう一度叩いてみる ※ 入ってるよと教えてくれる $ plenv exec carton install Installing modules using /Users/hoge/apps/sample-app/cpanfile Complete! Modules were installed into /Users/hoge/apps/sample-app/local ※ すばらしい!
補足
cpanfileの記述に関してはこのあたりが詳しいですね。
plenv rehash
plenv rehash
は新しいperlバージョンやモジュールをインストールしたらそれを認識?させるためのものです。
plenvを介してcpanmを実行した場合は勝手に呼ばれるもんだと思っていたんですが、
自前で打たないと効かなかったのでそんなときはplenv rehash
を実行します。
$ carton exec plackup -bash: carton: command not found $ plenv rehash ※ 当然までだ作ってないのでアプリケーションがないと怒られるものの ※ cartonコマンド自体は動く $ carton exec plackup Error while loading /Users/hoge/apps/sample-app/app.psgi: No such file or directory at (eval 9) line 4.
参考 : plenv環境下でcpanmを使ってモジュールを導入した後にrehashを忘れて辛い
参考
ほとんどまんま使わせてもらっちゃいましたがこちらとても参考になりました!thx!
まとめ
今までサボってたけどcartonとかもちゃんと勉強せねば(><)