うちかわ(pariメンテナ)です

何やら変な(英語の)メールが来ていたので何かと思っていたら
こういうことだったのですね。

>>>>> From: TAKANO Yuji (たかのゆ〜じ) <[EMAIL PROTECTED]>
>>>>> Date: Wed, 12 Jul 2006 11:55:53 +0900

 > たかのです。こんにちは。
 > 
 >   必要に迫られて、p5-Net-SSH-Perl についていろいろ格闘してみまし
 > た。
 > 
 >   最近の ports で p5-Net-SSH-Perl の make が通らない件ですが、そ
 > こはかとなく原因が解りました。まぁ、一言で言うと p5-Math-Pari が
 > 参照する以下のファイルが存在していないからなんですが・・。
 > 
 > /usr/ports/math/pari-2.3.0/src/kernel/ix86/level0.h 
 > 

『なんでこんなところにp5-Math-Pari使っているの?』という感想が最初に
来ます。

理由 1 通常の利用であればgmpがあれば十分
理由 2 広い範囲のアプリケーションでDependしてよいほど信頼性は高くない
       今回の件もそうであるが過去にもPari本体は仕様をたびたび変えてい
       るし。私も迅速に対応できる程暇ではないこともある。
       (p5-Math-Pariについては私はそういうportsがあることは知らなかっ
       た)

Pariのオフィシャルサイト http://pari.math.u-bordeaux.fr/
===紹介文===
PARI/GP は幅広く使われている計算機代数システムで、整数論 (因数分解、
代数的数理論、楕円曲線等) における計算を高速に行なえるよう設計されて
います。そればかりでなく、行列、多項式、冪級数、代数的数などの数学的観
念の 計算のための便利な数多くの機能と、超越的な機能が含まれています。
PARI はまた、 高速計算用の C ライブラリとしても利用可能です。
===========

正直Pariにdependしてもらっても想定内なのはPariの非常に専門性の高い組み
込み関数を必要とする数学関係のアプリケーションぐらいです。
どれぐらい専門性が高いかというと私の場合8割ぐらいは聞いたことがない関
数で9割ぐらいはどのような使いかたをするか想像がつかないものです。
データタイプも半分ぐらいは怪しかったりします。
興味があったらマニュアルを眺めてみてもいいでしょう。

私は個人的には無限桁整数および比較的高速な28桁精度の浮動小数点計算ライ
ブラリとして使うことはありますが、baseシステムのように多数の人が使うア
プリケーションでdependして、いつも正常に動くことを期待されても困ります。
特に暗号化のような所では使ってほしくないです。

#整数論に強いので暗号化でよく使われるある種の概念が素直に書ける。
#使いたくなる気持ちはわからなくはないが

 >   どうやら pari-2.3.0 の場合には ix86/ の下には asm0.h しかあり
 > ません。それが原因で p5-Math-Pari の make が通らずに
 > p5-Net-SSH-Perl の make が止まってしまうようです。

これはPari/GPのメジャーバージョンがあがった事にMath::Pariの古い
バージョンが対応していないからです。最新のMath::Pariではこの点は
対応済のようなのでそちらに入れ換えてもらうのが筋です。
(最新はMath-Pari-2.010706)

2.010706:
        Better error message if ftp->quit fails; do it sooner.
        in uname: SunOS name 5.9 Generic_118558-26 sun4u sparc SUNW,Ultra-5_10
                allow for Generic* to be skipped (if 'sparc' present).
        Update find_machine_architecture() to 2.3.0 logic (so disable sparcv7).
        Append _64 to assembler architecture if needed.
        use strict in Makefile.PL.
        New function inline_headers2() in Math::BuildPari.
        Support 2.3.0 method of building pariinl.h, kernel.o, mpinl.o
                 - only in the case if no MakeLVL1.SH present.

ただし対応が中途半端のようでFreeBSD-i386では少なくともそのままでは
動きません。中をちゃんと見ていないので簡単に対応できるかどうかわかりま
せんがLONGの型の関係で引っかかるようです。

Pari.xs:
#ifdef LONG_SHORTER_THAN_IV
#  error "LONG_SHORTER_THAN_IV not implemented"

今回の件では少し調べた所
p5-Net-SSH-Perl : Math::PariはSSH2の対応に必要。ただの多倍長整数
                演算につかっているだけ

p5-Crypt-Random : なくても動く(と思う)
p5-Crypt-RSA    : わりと丹念にPariを使っている
p5-Crypt-Primes : Pariのデータ型を使っているRSAを使わないなら不要?

ということなのでRSAを使わず、かつSSH1でいいのであればp5-Math-Pariの
Dependを外してしまうことができそうです。
実際試してみた所、コンパイルはできます。動くかどうかはわかりません。

機能面でみれば高野さんの対応は不足な機能が発生しないので、現実的な
対応でしょう。
もう少し便利さを取るなら "pari-2.1"としてpari-2.1.7を復活させる
というのもありかもしれません。

正しいやりかたとするならばはMath-Pari-2.010706の"not implemented"
な部分を直すということになるでしょう。
--
 yoshiaki
 (う)  


メールによる返信