を使用している場合は、およびスイッチを使用して、その場所cpanm
でモジュールを強制的に再構築できます。local::lib
-L
--reinstall
list_modules | cpanm -L ~/perl5 --reinstall
wherelist_modules
は、モジュールの名前を にフィードするスクリプトです( へのオプションcpanm
もあります)。このスクリプトは、上記の @ikegami のようなものか、(ただし、古いモジュールのみをリストする) のようなものです。これは、最近私にとってほとんどうまくいったハックな試みです(注:池上の方がおそらく優れています)-失敗した場合、またはスクリプトが認識しないモジュール名を指定した場合、続行し、何も壊していないようです(ただし、バックアップを作成します) ):-f
cpanm
cpan-outdated
cpanm
cpanm
cd $PERL_LOCAL_LIB_ROOT
perl -MFile::Find -MConfig -E'
find {
wanted => sub {
$mod = $_ if /\.pm\z/;
$mod =~ s/lib\/perl5\/auto\/.*//g;
$mod =~ s/lib\/perl5\/\Q$Config{archname}\E\/.*//g;
$mod =~ s/lib\/perl5\///g;
push @mods, $mod unless $mod =~ /^$/;
},no_chdir=>1
},"lib/perl5"; @modhash{@mods}=(); say for sort keys %modhash '
File::Find
で見つかった場所と内容を変更することでwanted()
、別のモジュールのリストを にフィードできますcpanm
。XS を使用するインストール済みモジュールの再構築を強制できるようにする内部 or がcpan
あればいいのですが。そのようなことはありますか?cpanm
_method
-switch
local::lib
それはcpanm
、carton
(そしてnode.js
ツールnpm
が実際に動作しているのを見て)、より多くのlocal::lib
ベースのインストールを行うように促しました. 現在、perl ( ) に同梱されている CORE バンドルの「CPAN クライアント」もcpan
、より自動化され、使いやすくなっているようです。local::lib
システムを使用しながら、perl
システム レベルの特権なしで独自のモジュール スタックを管理できるので、私は本当に気に入っています。perlbrew
ただし、 「非システム」(「ローカル」) を実行する場合は、変更とアップグレードの管理が全体的に簡単になりますperl
。もちろん、これを行うことができ、まだなどがあります。モジュールのディレクトリまたはアプリケーション固有のスタックを管理します。local::lib
carton
1)。アップグレードを行う別の方法はperllocal
、現在インストールされているモジュールのリストを生成するために使用することです ( NBperllocal.pod
が信頼できる/有用な状態に保たれているかどうかは完全にはわかりません)。[編集:実際には、現在インストールされているモジュールのリストではなく、インストールされているモジュールの履歴perllocal
を保持します。これをフィルタリングするか、一連のモジュール バージョン全体を次々と再インストールすることになります!)。この perlmonks ノードは、 http : //www.perlmonks.org/? node_id=483020 をクリーンアップする方法を示しています。履歴を残すことを好みます。]perllocal.pod
perllocal.pod
への入力を解析するにcpanm
は、ファイルを検索して一致するものを配列に保存し、それらを 2 で分割して配列要素からハッシュを作成します ( key,value,key,value
)。最近のインストールとバージョン番号はファイル内で小さいため、モジュール名をキーとしてハッシュを作成し、後のエントリで値を更新できます。
perl -ne 'push @arr, grep {defined}
(/\A=head2.*:\s+C<Module>\s+L<(.*)\||.*C<VERSION:\s(.*)>\Z/msx); }{
%h = map{ split/,/,$_,2 } @arr; print "$_\@$h{$_}\n" for keys %h' perllocal.pod
(注: これはエラー チェックではありません - のエントリには、データやその他の奇妙な点perllocal.pod
が欠けていることがあるので注意してください。)VERSION
2)。しかし、この方法は、ilmari が IRC の #perl-help で言及したシェル スクリプトと比べると見劣りします。それは使用します
-あなたが本当に持つ必要がjq
あるコマンドラインユーティリティ(この後もっと欲しくなるでしょう)。モジュールのインストールに使用したことがある場合は、ファイルが作成されています。それを利用して、現在のモジュールのセットを再インストールするためにフィードするリストを作成できます。cpanm
install.json
cpanm
find ~/perl5/ -name install.json -exec jq '.name + "@" + .version' {} +
非常に高速で、非常にシンプルで、モジュールを再構築するために自己インストールcpanm
を使用する方法と組み合わせることができます。curl
3)。perlbrew
Perl インストールの管理に使用している場合は、すべてのモジュールをあるバージョンから別のバージョンに簡単にコピーして再インストールできます。perl
チッ!