2012-05-21 Mon
Cygwin の X が起動しない
仕事用の PC にインストールさせられている秘文というハードディスク全体を暗号化するソフトをアップグレードしたら、Cygwin の X Server が起動しなくなってしまった。「Fatal server error: Can't read lock file /tmp/.X0-lock」とかエラーメッセージを表示する。
Cygwin/X のサイトの FAQ を見ると /tmp/.X0-lock ファイルのアクセス権がおかしいせいだというようなことが書かれていて、 rm /tmp/.X0-lock をしてみろとある。しかし /tmp/.X0-lock ファイルはできていない。
tmp フォルダのアクセス権のせいかとも思って Windows のフォルダのセキュリティの設定とかもいじってみたのだが、それでもダメ。
先の FAQ にある Technical details をよくよく読むと、X Server はロックファイルを /tmp の下に一時的な名前で作成を試みて、それから適切な名前にリネームするとあった。そこでコマンドプロンプトから fsutil.exe でハードリンクを作ろうとしてみたら確かにエラーになる。
最終手段で -nolock オプションを指定して X Server を起動するようにしてみたが、なんとなく釈然としないなあ。
購入: 35人 クリック: 1,076回
2012-05-15 Tue
Cygwin の TeXLive の dvipdfmx が成功した
昨日の現象を検証するため、TeX Live をインストールしてみた。インストールするのに一時間以上かかった。ダウンロードだけでも1時間は必要だった。
例の Doxygen で生成した LaTeX ドキュメントの DVI ファイルを TeX Live の dvipdfmx で PDF に変換してみたところ、期待した通りに変換することができた。ps2pdf で変換した PDF よりも、なんかファイルサイズが小さいけど。
これはやはり、gs がおかしいのだろうか。と思って、TeX Live の gs を探してみたら \texlive\2011\bin\win32 の中には見つからない。どうも \texlive\2011\tlpkg\tlgs\bin の gswin32.exe もしくは gswin32c.exe がそうらしい。ということは、dvipdfmx の中から gswin32 を呼び出しているはず。
ちょっと興味が出て来たので、dvipdfmx を strings でダンプしてみた。ところが、gswin32 を呼び出している文字列が見つからない。もしかしたら、cfg ファイルかと思って探したら、\texlive\2011\texmf\dvipdfmx\dvipdfmx.cfg というのが見つかった。しかし、中を見てみたら gswin32 を呼び出してはいずに、rungs というコマンドになっている。確かに \texlive\2011\bin\win32\rungs.exe は存在する。
そういえば、Cygwin の dvipdfmx のエラーメッセージも rungs になっていたな。もちろん cygwin には rungs などない。試しに、Cygwin の dvipdfmx の cfg ファイル /usr/share/texmf/dvipdfmx/dvipdfmx.cfg をみてみると、こちらも rungs を呼び出すようになっているようだった。ということはここを gs を呼び出すようにすれば Cygwin でもOKなのか。というか、OKだった。
でも、cfg ファイルのコメントにも rungs を呼び出すようにしているとある。ちょっと不安だ。そこで、rungs のソースをみてみることにした。ソースは TUG の TeX Live の リポジトリにあった。でも、Master/bin/i386-cygwin/ の下だから Cygwin にあって、しかるべきだと思うんだけど。Setup.exe じゃなくて TeX Live のインストーラを使って Cygwin 版をインストールすればいいのだろうか。
rungs の中身にはパスが書かれていて、rungs.tlu を指していた。rungs.tlu は Lua で書かれているらしいけど、要は OS が Windows なら gswin32c をそうでなければ gs を呼び出すようになっていた。ということは cfg ファイルを上記のように変更するのでも問題はなさそうである。けど、 TeX Live のリポジトリから rungs.tlu をダウンロードしてくる方がもっといいかも。
2012-05-14 Mon
Cygwin の TeXLive の dvipdfmx が失敗する
Cygwin に TeXLive が提供されるようになって久しい。けど、最初の頃は platex コマンドがないじゃないかと思って ptetexwin.sourceforge.jp の pteTeX を使い続けていた。
でもよく見ると ptex コマンドはあるではないか。
これはどうしたことかと Setup.exe をこれまたよく見ると texlive-collection-langcjk というエントリがあるではないですか。これをインストールしてみると、ちゃんと platex や dvipdfmx なんかもそろっている。これでもう pteTeX には引退してもらっても大丈夫だということでアンインストールした。
ところが Doxygen で生成した LaTeX ドキュメントが dvipdfmx で pdf に変換できない。どうやらインクルード関係の図、Graphviz の dot で生成した eps を取り込もうとしているところでエラーになっている模様。別段 eps には日本語も日本語フォントも使っていないのになぜだろう。
試しにエラーメッセージに表示されている gs の起動パラメータをコマンドラインから与えてみると、正常に pdf へ変換している様子。どうにも解せない。
それはともかくとして、gs だけを ptetexwin.sourceforge.jp からダウンロードしてみたら、dvips と ps2pdf の組み合わせで pdf に変換できた。もちろん日本語も OK である。なぜなんだろう。
やっぱりおとなしく Windows 版の TeX Live インストーラでインストールすべきなのだろうか。
追記: というわけで TeX Live をインストールしてみた。→ Cygwin の TeXLive の dvipdfmx が成功した
2012-05-08 Tue
Perl 5.14 が Cygwin に入っていた
ちょっと前に、Perl で開発する仕事があった時のことです。
ターゲットマシンの Perl が 5.8 だったので、ちょっとした確認に使う手元の Cygwin の Perl のバージョンも合わせておきたいなと思い、Setup.exe で Perl の項目をクリックしてみたら、5.8.x はなかったものの、5.14.2-1 があるのを発見した。デフォルトは 5.10 なのに。
そこで興味本位にインストールしてみることにした。何ら新しい機能を使う目的も要求も欲求もないのだが。
しばらくは順調に使っていた。とはいえ Setup.exe のデフォルトが 5.10 なので、 Setup.exe を実行するたびに Perl の 5.14.2-1 を選択するようにしないと、バージョンが元に戻ってしまうのは面倒くさかったが。
そして、 Doxygen-Filter-Perl という Doxygen で Perl のソースを扱うためのスクリプトを導入しようとしたときのこと。CPAN でいくつかのモジュールをインストールする必要が出てきた。ところが、ダウンロードしたモジュールをコンパイルするところでエラーになってしまう。
いろいろ手を尽くして、Rebase したり、なんだりをしたが、結局 Perl を 5.10.x に戻したらうまくインストールできるようになった。


