ubuntu ver.11 でのstack-ja

7 6月

新しくサーバーを用意することになって,ubuntu 10 をインストールしたら,マザーボード(Intel/インテル BOXDH61DLB3)のLAN機能を利用できなかった。付属のCDROMにドライバーがあって,何とか通信できるようになったが, ubuntu の自動updateの度に通信ができなくなる。何かと不便なので, ubuntu をver.11にしようと試みた。

LAN機能は最初から認識されていて,updateしても大丈夫である。

日本語環境のインストールが変更されていて,セットアップヘルパが無くなった。下記のサイトに従って作業した。

https://simple-note.appspot.com/publish/p15pY6

コマンドは下記。

$ sudo apt-get install texlive texlive-math-extra ptex-bin xdvik-ja
$ sudo apt-get install dvipdfmx cmap-adobe-japan1 ptex-jisfonts
 okumura-clsfiles jmpost jbibtex-base jbibtex-bin mendexk
$ sudo jisftconfig add

さて,stack-jaなどの設定である。stack-jaはstack 2.0をもとにしたもので,これは前と同じものを使用する。関係するアプリのバージョンは,少し変化していた。

maxima ver 5.24.0
gnuplot ver 4.4.3

これが関係したのか確認はしていないが,確認用のhelthcheck.phpで、例によってグラフが出ない。ただ今回は下記のように表示されていた。

STACK autogenerated plot

画像ファイルは/stack-ja/tmp/の中に大きさがゼロバイトのpngファイルができていた。
上記のメッセージは下記のファイルが作成している。

/stack-ja/maxima/stackmaxima.mac

まず、stackmaxima.macの中で画像作成用の一時ファイルの消去を止めた。
下記の部分が、gnuplotへのコマンドと一時ファイルの消去の部分である。tfnには一時ファイルのフルパス名が入る。

sysp:concat(GNUPLOT_CMD," ",tfn),
sysr:concat(DEL_CMD," ",tfn),
print(sysp),
system(sysp),
system(sysr),
simp:old_simp,

この中の system(sysr) をコメントアウトした。そうすると(それぞれの設定に依存するが,例えば)/www/stack/stacklocal/の中に

stackplot-????????-????????.plt

という名前のファイルが残される。?のところは数字が入る。これを上手く動いているサーバーのものと比べると、下記の行が余分に加わっている。

set term pop

これを削除するためにstackmaxima.macを書き換える。先に引用した部分に,下記のように追加する。

syspp:concat("/var/www/html/stack-ja/maxima/delSetTermPop.php"," ",tfn),
system(syspp),

sysp:concat(GNUPLOT_CMD," ",tfn),
sysr:concat(DEL_CMD," ",tfn),
print(sysp),
system(sysp),
system(sysr),
simp:old_simp,

delSetTermPop.php の中身は下記。つまり元の一時ファイルを読み込んで,一行消すだけだ。$argv[1]は起動時に渡すオプションのことで、ここでは一時ファイル名が入っている。

#!/usr/bin/php -q
<?php
$tmp = file_get_contents($argv[1]);
$tmp = ereg_replace("set term pop","",$tmp);
$pointer=fopen($argv[1], "w");
flock($pointer, LOCK_EX);
fputs($pointer, $tmp);
flock($pointer, LOCK_UN);
fclose($pointer);
?>

実効可能とすることを忘れない。これでグラフは表示される。

他には評価関数にエラーが出ていた。積分に関して、不定積分の判定でエラーが生じている。stackのバージョンを上げることが必要なのかもしれない。