Carton でモジュールをインストールしようとした話
まだ書きかけでした.
モジュールをインストールしようとした
carton 環境を作った
やること
- plenv のインストール = ~/.plenv 配下
動機
モジュールをインストールしたい. できるだけインストール先がわかりやすく, 指定も楽な方がよい.
最近のことがわからない.
- Windows でも実施する
- Strawberry Perl だと cpanm までは入っている
- plenv を使おう
- System でもいいけど,root じゃない人も居るし,環境を隔離したい(~/.plenv 削除すれば全部消えるとか)
- rbenv を使ってたりするし.こっちでいいか.
- install-cpanm サブコマンドがある.
- 普通にインストールしてる
- cpanm / perl-carton なんすかね?
- cpanm 単体でやろうとしたけど,@INC の指定がよくわからなかった
- perl-carton なら簡単なんすかね
- carton exec でやるのもいい.
- できるだけローカルディレクトリで済ませたかった.(インストール先が理解しやすいと良い)
- vendor/bin/carton で済むなら,それがいい.→ deployment の機能?
- ./cpanm はできる.
- fatpack がわかってない.これかな? Carton::Doc::Fatpack - Fatpack carton executable into vendor/bin - metacpan.org
- carton fatpack は,vendor/bin/carton を作る.deployment 用
- carton はglobal に入れるのが普通なんすかね
- Carmel - CPAN Artifact Repository Manager - metacpan.org の方がいいんすかね? まだ EXPERIMENTAL ですね.
install-cpanm 補足
$ tail -2 ~/.plenv/libexec/plenv-install-cpanm curl ${PLENV_INSTALL_CPANM} -L http://cpanmin.us/ | plenv exec perl - ExtUtils::MakeMaker App::cpanminus plenv rehash
インストール
plenv のインストールは簡単です
コピペだけしとくと
$ git clone git://github.com/tokuhirom/plenv.git ~/.plenv $ git clone git://github.com/tokuhirom/Perl-Build.git ~/.plenv/plugins/perl-build/
.bashrc や .zshrc に以下を追加
export PATH="$HOME/.plenv/bin:$PATH" eval "$(plenv init -)"
で,Perl をインストールして使えるようにする.と
$ source ~/.zshrc $ plenv install -l|tail -1 5.23.9 $ plenv install 5.23.9 $ plenv global 5.23.9 $ perl -V|head -1 Summary of my perl5 (revision 5 version 23 subversion 9) configuration:
cpanm を使う
$ plenv install-cpanm $ where cpanm <HOME>/.plenv/shims/cpanm $ rehash $ cpanm -V|head -1 cpanm (App::cpanminus) version 1.7040 (<HOME>/.plenv/versions/5.23.9/bin/cpanm)
perl-carton を使う
$ cpanm Carton $ rehash $ where carton <HOME>/.plenv/shims/carton $ carton -v carton v1.0.22
モジュールをインストールする
$ edit cpanfile $ cat cpanfile requires 'HTTP::Server::Simple' $ carton // インストールされる
動作確認
$ carton exec ./a.pl // HTTP::Server::Simple を使ったもので. @INC 指定していない $ cat a.pl #!/usr/bin/env perl use strict; use warnings; use utf8; { package A; use strict; use warnings; use utf8; use base qw(HTTP::Server::Simple::CGI); sub handle_request { my ($self, $cgi) = @_; my $a = $cgi->param('a') || 'none'; print "Hello World ", $a; } 1; } my $server = A->new(); $server->run();
LINK
- GitHub - tokuhirom/plenv: Perl binary manager - plenv
- GitHub - tokuhirom/Perl-Build - perl-build
- GitHub - miyagawa/cpanminus: cpanminus - get, unpack, build and install modules from CPAN - cpanm
- GitHub - perl-carton/carton: Bundler or pip freeze for Perl - carton
- Tatsuhiko Miyagawa's blog — miyagawa/cpan-module-bootstrap - deployment carton bootstrap 的な話
- 1.3 Cartonによるアプリケーションの実行環境の構築 : Practical Modern Perl (仮) - モダンっぽい記事
- Perlはもう古い、これからはDocker - ゆううきブログ - Dockerfile で carton インストールまで.かなり削られていて読み易い
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,伊藤直也,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/08/21
- メディア: 大型本
- この商品を含むブログ (2件) を見る
- 作者: 牧大輔
- 出版社/メーカー: 翔泳社
- 発売日: 2009/02/10
- メディア: 大型本
- 購入: 25人 クリック: 534回
- この商品を含むブログ (108件) を見る