CPAN 最速検索を自サーバにコピーってみた

最速インターフェース研究会 :: CPAN最速検索 で http://cpan.ma.la/ を知って以来、cpan を貪るときには、いつも CPAN 最速検索を使っていました。

たまにリリースされているはずのモジュールが見つからないことには気がついてましたが、そんなもんかな・・・程度にしか思っていなかったんです。よくよく考えてみると、いつからかわからないけど・・・おそらく辞書データ( http://cpan.ma.la/list )の更新とかが、旨くいっていないっぽいんだろうなぁ〜と・・・。Mouse とかリスト上にみつからないし。

こりゃ困った。コレなしでは生きていけない体になっているし、幸い作者のブログに

例によって放置してしまうかもしれないので、引き継ぎたい方や改造したい方がいればどうぞご自由に。

とあるので、自分用にサーバに、まるごとコピってみました。Ajax で使うための辞書データ生成は perl でさっくりとでっち上げました。公開されていない perl 部分以外は、まるっとコピーしただけですが、これで満足しているので、これ以上のメンテは予定してません・・・。

http://www.drk7.jp/pub/js/cpanmala/

- スポンサーリンク -

えーっと・・・まぁ CPAN 最速検索がどういうものかってのは、最速インターフェース研究会 :: CPAN最速検索 を観て頂ければOKとして、データ生成の perl プログラムは晒しておきますので、ご自分のサーバでやりたい方は、どうぞご自由にお持ち下さい。


CPAN 最速検索の設置手順書

  1. http://cpan.ma.la/index.html を保存する。 ここから保存もできます。
  2. http://cpan.ma.la/ie_xmlhttp.js を保存する。 ここから保存もできます。
  3. データ生成スクリプト makedic.pl を作成する。 ここから保存もできます。
    #!/usr/local/bin/perl
    
    use strict;
    use warnings;
    use LWP::Simple;
    
    my $source = get("http://www.perl.com/CPAN/modules/02packages.details.txt");
    my $fh;
    open $fh, '>', '02packages.details.txt' or die;
    print $fh $source;
    close $fh;
    
    my @packages;
    my @dists;
    my %dists;
    open $fh, '<', '02packages.details.txt' or die;
    while (<$fh>) {
        chomp;
        my ( $package, $ver, $dist ) = $_ =~ /^(.+?)\s+(.+?)\s+(.+)$/;
        next unless $package;
        next if $package =~ /:$/;
    
        unless ( $dists{$dist} ) {
            $dists{$dist} = $package;
            push @dists, $package;
        }
        push @packages, $package;
    }
    close $fh;
    
    open $fh, '>', 'list' or die;
    print $fh join( "\n", @packages );
    close $fh;
    
    open $fh, '>', 'dist' or die;
    print $fh join( "\n", @dists );
    close $fh;
    
  4. 自サーバの適当なディレクトリに設置して、makedic.pl を実行する。02packages.details.txt と list と dist ってファイルが生成される。02packages.details.txt は http://www.perl.com/CPAN/modules/02packages.details.txt そのもの。list と dist は CPAN 最速検索が Ajax 経由でデータロードするファイル。
  5. http://あなたのドメイン名/設置したディレクトリ/index.html で動きます。後は make.pl をバッチで一日に1回くらい走らせておけば良いと思います。

いやぁ〜これで最新のモジュールも、馴染んだインタフェースで検索できるようになってよかったです。

それにしても、コレはこういうモンだと思いこんでいましたが、思いこみは恐ろしいですね。それが正しいと信じ込んでしまいますから。思いこみのせいで日々いろんなところで失敗してます。はい。(┳ω┳)

- スポンサーリンク -