[ Only in Japanese ]

Physics ~ぶちゅりのばしょ~

TeXLive を日本語対応にして MacOSX Snow Leopard に入れた話

2011年ですので,TeX といえば TeXLive 2011 です。

TeXLive もだいぶ国際化が進んだらしく,日本語も普通に使う限りは不自由なく使えるとのことですが,しかしみしょは普通に使わないので,TeX Live 2011 への追加日本語 patch を用いてちゃんと日本語化しなければなりません。

Debian では,この patch は何も問題なく入ったのですが,MacOSX Snow Leopard では普通には入らなかったので,ここに手法を書き残しておきます。ちなみに Mac 用の TeX の方が簡単に入りますが,意識の高い人たちは力強く生きてゆきましょう。

なお,以下は tl11supp-111023.tar.xz に基づいています。これよりも新しい version が出てますので,それらを使うときには以下の調整がなくてもうまく行くかもしれません。

注意すべきは以下の 3 点だけです。(これを知っていれば簡単だけれど,気づくのは相当難しい。。。)

XeTeXFontMgr_Mac 周辺で error → 古い SDK を使いましょう

普通にやると XeTeXFontMgr_Mac XeTeXFontMgr_Mac のあたりで error が出ます。これは gcc-4.2 が悪さをしているらしいので,古い gcc-4.0 を使うとうまく行くらしいです。具体的には,patch 実行前に次のようにするとうまく行きました。

export SDK_ROOT=/Developer/SDKs/MacOSX10.5.sdk/
export CC="gcc-4.0"
export CXX="g++-4.0"
fontconfig の付近で error → fontconfig の使用を強制的に抑制しましょう

#ifdef HAVE_FONTCONFIG は TRUE を返すのですが,fontconfig を使うと失敗します。というわけで,#ifdef HAVE_FONTCONFIG の部分を全部削除しちゃいましょう。

HAVE_FONTCONFIG による判定は日本語 patch の中にしか存在しないので,日本語 patch の中の #ifdef HAVE_FONTCONFIG から対応する #fi までを全部消せばよいです。

Font を link するときの文字 encoding を修正すると幸せになります

たいしたことではないのですが,僕の環境では,scripts/fontlink.sh の一部をを以下のように修正する必要がありました。

# 元々の行→ cat <<EOF | /usr/bin/iconv -f UTF-8 -t UTF-8-MAC | mksymlink $OPENTYPE を,
cat <<EOF | /usr/bin/iconv -f EUC-JP -t UTF-8-MAC | mksymlink $OPENTYPE
# にする

CERNLIB(2006) to MacOSX 10.5 from source

これは 2010 年 8 月の情報です。

手持ちのMacOSX 10.5 (Leopard)に,CERNLIBを入れた。Installation manualを参考にした。

事前準備

言うまでもないことだけど,OSXで作業する上ではXcodeとMacPortsは不可欠なので,適当にinstallしておく

あとg77が必要だったので適当に探して何も考えずにroot dir.に放り込んだ。

必要なものの確認

imake, makedepend, gmake, cpp, the Fortran and C compilers, and the archiver arが必要とのことなので,とりあえずwhichで確認。

Cernlib

本体のinstall。Cernlibのdocumentを参考にした。

sudo mkdir -p /usr/local/cern
sudo chown misho: /usr/local/cern
cd /usr/local/cern
wget http://cernlib.web.cern.ch/cernlib/download/2006_source/tar/2006_src.tar.gz
wget http://cernlib.web.cern.ch/cernlib/download/2006_source/tar/include.tar.gz
tar zxvf 2006_src.tar.gz
tar zxvf include.tar.gz
export CERN=/usr/local/cern
export CERN_LEVEL=2006
export CERN_ROOT=/usr/local/cern/2006
export CVSCOSRC=/usr/local/cern/2006/src
export PATH=/usr/local/cern/2006/bin:$PATH
cd $CERN_ROOT
mkdir -p build bin lib build/log
cd $CERN_ROOT/build
$CVSCOSRC/config/imake_boot
make bin/kuipc
make scripts/Makefile
cd scripts
gmake install.bin
cd $CERN_ROOT/build
gmake

さらにnypatchyを入れる。

cd ~
mkdir tmp
cd tmp
wget http://cernlib.web.cern.ch/cernlib/download/2006_source/tar/nypatchy_boot.tar.gz
tar zxvf nypatchy_boot.tar.gz
cd p5boot/p5lib
gfortran -c *.f
ar cr libp5.a *.o
cd ../
gfortran -o nypatchy nypatchy.f p5lib/libp5.a $CERN_ROOT/lib/libkernlib.a
mv nypatchy $CERN_ROOT/bin/

ISAJET to MacOSX 10.5

これは 2010 年 8 月の情報です。

fsplit (for ISAJET)

fsplitが必要なので,どこかからがんばって手に入れてください。

僕はGoogleで探して,適当なsourceを見つけてgccでcompileして,/usr/local/binに置きました。

ISAJET

これを入れようとして何度も何度も失敗したが,気を取り直してやりなおしたらなぜかうまくいった。Computer怖い。

cd ~
mkdir isajet_tmp
cd isajet_tmp
wget http://www.nhn.ou.edu/~isajet/isared.tar.gz
wget http://www.nhn.ou.edu/~isajet/Makefile
wget http://www.nhn.ou.edu/~isajet/isajet.car
vi Makefile  # CONFIGURATION : SEEBELOW
gunzip isared.tar.gz
make isatools
make

途中でMakefileを以下のように書き換えた。

ISAJET to CentOS 5.2

これは 2008 年 12 月の情報であり,おそらく既に obsolete ですが,備忘のため残しておきます。

ISAJET という program を導入するときに,こいつが依存しているCERNLIBというlibraryが,超不親切設計で,導入に大変苦労したので,導入手法を書き残しておきます。っていうかINSTALL MANUALぐらい作ってくれよ……。

今回僕は,CERNLIB 2006年版(最新版)とISAJET 7.78を,CentOS 5.2に導入しました。導入時には,manualの他に,以下のweb pageを参考にしました。

wgetのURLや,directoryの位置(export含む)は適宜変更して下さい。

Motif関連の導入

なんかよくわからないのですが,Motif関連のものが要るらしいので,それっぽいものを全部installしました。lesstifだけで良いのかもしれません。

$ sudo yum install openmotif

$ sudo yum install openmotif-devel

$ wget http://downloads.sourceforge.net/lesstif/lesstif-0.95.0.tar.gz?modtime=1149940333&big_mirror=1

$ tar zxvf lesstif-0.95.0.tar.gz

$ cd lesstif-0.95.0

$ ./configure

$ make

$ sudo make install

fsplitの導入

fsplitというprogramも必要です。適当にGoogleから探してきて,導入しました。

$ wget http://www.microcosmos.co.jp/download/FreeSoft/fsplit.tar.gz

$ tar zvxf fsplit.tar.gz

$ cd fsplit

$ make

$ sudo make install

Xbaeの導入

途中で「Xbaeが無いよ」と怒られたので導入しましたが,導入してもやっぱり怒られました。CERNLIBの方のbugなのかもしれません。要らないかも。

$ wget http://downloads.sourceforge.net/xbae/xbae-4.60.4.tar.gz?modtime=1148919782&big_mirror=0

$ tar zxfv xbae-4.60.4.tar.gz

$ ./configure

$ make

$ sudo make install

CERNLIBの導入

通常のsoftwareではmake installの時に,compileした(実行時に必要な)filesが適切な場所に導入されます。しかし,CERNLIB(およびISAJET)は通常のprogramとは異なり,installする時にtemporaryのつもりで利用したdirectoryに,そのまま実行用のfilesが置かれるようです。そこで,いきなり/cern/2006にsourceを展開することにしました。

$ mkdir -p /cern/2006

$ cd /cern/2006

$ wget http://cernlib.web.cern.ch/cernlib/download/2006_source/tar/2006_src.tar.gz

$ wget http://cernlib.web.cern.ch/cernlib/download/2006_source/tar/include.tar.gz

$ tar zxvf 2006_src.tar.gz

$ tar zxvf include.tar.gz

$ export CERN=/cern

$ export CERN_LEVEL=2006

$ export CERN_ROOT=/cern/2006

$ export CVSCOSRC=/cern/2006/src

$ export PATH=/cern/2006/bin:$PATH

$ cd $CERN_ROOT

$ mkdir -p build bin lib build/log

$ cd $CERN_ROOT/build

$ $CVSCOSRC/config/imake_boot

$ gmake bin/kuipc

$ gmake scripts/Makefile

$ cd scripts

$ vi Makefile # INSTPGMFLAGSの-sを削除

$ vi $CVSCOSRC/packlib/kuip/code_motif/iconwidget.c

ここで,38行目付近の "void _XmDrawShadow ();" をcomment-outする。

#ifndef __APPLE__
   //void   _XmDrawShadow ();
#endif

$ gmake install.bin

$ cd $CERN_ROOT/build

$ gmake

複数回実行した場合,xsneut95.datへのsymbolic linkが既に存在する,と怒られる場合がある。

その場合はrm $CERN_ROOT/lib/xsneut.95.datするとよい。

$ mkdir -p $CERN_ROOT/share/lib

$ cp $CVSCOSRC/geant321/data/xsneut95.dat $CERN_ROOT/share/lib/.

引き続き,nypatchyを追加する。

$ cd ~

$ wget http://cernlib.web.cern.ch/cernlib/download/2006_source/tar/nypatchy_boot.tar.gz

$ tar zxvf nypatchy_boot.tar.gz

$ cd p5lib

$ g77 -c *.f

$ ar cr libp5.a *.o

$ cd ../

$ g77 -o nypatchy nypatchy.f p5lib/libp5.a $CERN_ROOT/lib/libkernlib.a

$ mv nypatchy $CERN_ROOT/bin/

ISAJETの導入

ようやく本番。とりあえず,~/Isajetに入れることにした。

$ cd ~

$ mkdir Isajet

$ cd Isajet

$ wget http://www.hep.fsu.edu/~isajet/isajet.car

$ wget http://www.hep.fsu.edu/~isajet/Makefile

$ wget http://www.hep.fsu.edu/~isajet/isared.tar.gz

$ vi Makefile

僕は以下のように設定した。その他の設定も含めて,きちんと設定しましょう。

  • CERN = CERN
  • CERNDIR = /cern/2006/ # don't forget the backslash
  • PDFLIB = PDFLIB
  • FSPLIT = fsplit
  • LFLAGS = -L$(CERNLIB) -lpdflib804 -lmathlib -lkernlib
  • YPATCHY = $(CERNBIN)nypatchy

$ gunzip isared.tar.gz

$ make isatools

$ make

        ___

      /      \

   /          \

  /   ⌒   ⌒   \

  |  /// (__人__) ///  | 

. (⌒)              (⌒) グッ v

./ i\            /i ヽ

l___ノ            ヽ___i

ROOT to MacOSX 10.5 / Debian Lenny

MacOSX 10.5 - Binaryを使ったときの話

これは 2010 年 8 月の情報です。

5.27/04を入れた。Sourceからmakeしようと思ったら,cint/cint/lib/dll_stl/rootciint_vectorのあたりで謎のerrorが生じたので,あきらめてMacOSX用のbinaryを使った。

展開して,/usr/local/root/にドカンと置いて,あとは

export ROOTSYS=/usr/local/root
export PATH=$ROOTSYS/bin:$PATH
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
export DYLD_LIBRARY_PATH=$ROOTSYS/lib:$DYLD_LIBRARY_PATH
export SHLIB_PATH=$ROOTSYS/lib:$SHLIB_PATH
export LIB_PATH=$ROOTSYS/lib:$LIB_PATH
export PYTHONPATH=$ROOTSYS/lib:$PYTHONPATH
export MANPATH=$ROOTSYS/man/man1:$MANPATH

みたいなものを,.zshenvに書き加えた。

MacOSX 10.5 - Source から install したときの話

これは 2011 年 1 月の情報です。ROOT は比較的よく更新されているので,既に obsolete な可能性があります。Version 番号に注意してください。

MacOSXでのROOTのmakeは修羅の道です。Binaryを使うことを強く推奨します。

今回は,MacOSX 10.5.6 (Leopard; 32bit)ROOT 5.28.00をmakeしました。大量にハマったので書き残しておきます。OpenSSLはMacPortsから導入したものを利用しました。versionは1.0.0でした。

まずはdownloadして展開。ここで,32bit Macを使っている場合にはArchitectureをmacosxと明示しないといけない。


tar zxvf root_v5.28.00.source.tar.gz
cd root
./configure macosx

さもなくば,-m64 option付きでcompileされてしまい,


ld warning: in /opt/local/lib/gcc45/libstdc++.dylib, file is not of required architecture
ld warning: in /opt/local/lib/gcc45/libgcc_ext.10.5.dylib, missing required architecture x86_64 in file
ld warning: in /opt/local/lib/gcc45/gcc/i386-apple-darwin9/4.5.2/libgcc.a, file is not of required architecture
...
make: bin/rmkdepend: Command not found
make: *** [cint/cint/src/g__cfunc.o] Error 127

となる。こうなってしまったらtarの展開からやり直す。

ところで,このように設定しても,net/xrootd/src/xrootd/GNUmakefileの中身はARCH=x86_64_macosxになってしまう。気になるのであればARCH=macosxに変更する。

そしてそのまま進むと,もしかしたら


XrdCryptosslX509.cc: In member function 'bool XrdCryptosslX509::IsCA()':
XrdCryptosslX509.cc:572:75: error: invalid conversion from 'unsigned char**' to 'const unsigned char**'
XrdCryptosslX509.cc:572:75: error:   initializing argument 2 of 'BASIC_CONSTRAINTS* d2i_BASIC_CONSTRAINTS(BASIC_CONSTRAINTS**, const unsigned char**, long int)'

と言われるかもしれない。これ,OpenSSLのversion検知に失敗しているのが原因。#define R__SSL_GE_098というC macroを定義してやればよいので,vi net/xrootd/src/xrootd/src/XrdCrypto/GNUmakefileとして,CRYPTOSSLEXTRACFLAGS = -DOPENSSL_NO_KRB5 -DPERL5 $(SSLEXTRACFLAGS)の末尾にoption -DR__SSL_GE_098を付け加えてやればよい。

そしてそのまま進むと,もしかしたら


Undefined symbols:
  "_EVP_CIPHER_CTX_key_length"
  "_X509_NAME_hash_old"
  "_EVP_CIPHER_CTX_block_size"
  "_EVP_CIPHER_key_length"
  "_asn1_const_Finish"
  "_ASN1_const_check_infinite_end"
ld: symbol(s) not found

と言われるかもしれない。これはおそらくmakeが間違ったOpenSSLを使っているのが原因。なので,configureに--with-ssl=/opt/local (MacPortsからのOpenSSLを使っている場合)としてやればよい。このときmakeは途中から再開してやればよい。(make distclean-xrootd)

そしてそのまま進むと,もしかしたらlibz周りのerror


Undefined symbols:
  "_inflateEnd"
  "_inflateInit_"
  "_deflate"
  "_deflateEnd"
  "_deflateInit_"
  "_zError"
  "_inflate"
ld: symbol(s) not found

がくるかもしれない。これはlibzがうまくlinkされていないことが問題なので,どのcommandでerrorが起きているかを特定し,最初の方 (-oの前とか) に-lzを追加すれば良い。commandの特定にはmake 2>/dev/nullが便利。

これで多分makeは上手く行く。しかし成功したやつを実行すると,


 *** Break *** bus error

===========================================================
There was a crash (#5 0x00924b57 in SigHandler ()).
This is the entire stack trace of all threads:
===========================================================

Thread 1 (process 41586 thread 0x10b):
#0  0x95057189 in wait4 ()
#1  0x95054cd4 in system$UNIX2003 ()
...
===========================================================
The lines below might hint at the cause of the crash.
If they do not help you then please submit a bug report at
http://root.cern.ch/bugs. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#8  0x03d76d18 in _XReply ()
#9  0x03d5bc9c in XAllocColor ()
#10 0x0407edbb in find_useable_visual ()
#11 0x0407f8fd in query_screen_visual_id ()
===========================================================

となってruntime errorで死ぬ。これは,X関係のlibraryが正しい場所から読み取られていないことが原因。(MacPortsからのXのlibraryと,MacOSX本来のlibraryとが衝突している。)というわけで,configureに--with-x11-libdir=/opt/local/lib/ --with-xpm-libdir=/opt/local/lib/ --with-xft-libdir=/opt/local/lib/ --with-xext-libdir=/opt/local/lib/ --with-opengl-libdir=/opt/local/libを追加して最初からやり直す。

以上で僕は上手く行きました。みなさまの健闘をお祈りします……。

Debian Lenny の場合

これは 2011 年 2 月の情報です。ROOT は比較的よく更新されているので,既に obsolete な可能性があります。Version 番号に注意してください。

Debian では,もちろん synaptic package manager を使って導入してもいいのですが,version が若干古かったので,source から導入してみました。今回は,Debian (lenny)ROOT 5.28.00をmakeしました。

tar zxvf root_v5.28.00.source.tar.gz
cd root
./configure
make
sudo make install

人類の勝利です!!!! Mac を廃絶し,Debian とともに生きよう!!!

PGS4をmakeするときにハマりやすいこと

これは 2011 年 1 月の情報です。

PGS4という,あまりprettyでもgoodでもないsimulation softwareを導入するときにはわりと注意しなければならないことが多い。僕も2週間ぐらいハマったのでここに書き残しておく。

Filenameの大文字と小文字について

PGS4は,Linux版・MacOSX版・Cygwin版の3つが配布されている。実はMacOSX版とLinux版の違いは,./Makefile に指定されているFortran compilerがgfortrang77か,というだけの違いしかない。というか,MacOSX版とCygwin版は,Filenameの大文字/小文字がおかしい。

というわけで,自分でmakeしたい人は,Linux版をDownloadして,./Makefileを書き換えましょう。

Fortran Compilerについて

PGS4は,Linuxでgfortranを使ってmakeしようとするとコケる。具体的には,最後のexamples/olympicsをmakeするときに

----- Now compiling examples/olympics -----
 
gfortran -g -fno-automatic -o examples/olympics examples/pgs_olympics.f  \
            -L./lib -lpgslib  -ltauola  -lpythia -lherwig  \
            -lstdhep -lexthep -lFmcfio  ; chmod +x examples/olympics
./lib/libstdhep.a(heplst.o): In function `heplst_':
ccj5hgyP.f:(.text+0x2a): undefined reference to `s_wsfe'
ccj5hgyP.f:(.text+0x46): undefined reference to `do_fio'
ccj5hgyP.f:(.text+0x4b): undefined reference to `e_wsfe'
ccj5hgyP.f:(.text+0x6e): undefined reference to `s_wsfe'
(中略)
cc1Awlbm.f:(.text+0x16f): undefined reference to `s_wsfe'
cc1Awlbm.f:(.text+0x174): undefined reference to `e_wsfe'
cc1Awlbm.f:(.text+0x191): undefined reference to `s_stop'
collect2: ld returned 1 exit status
chmod: cannot access `examples/olympics': そのようなファイルやディレクトリはありません
make: *** [examples/olympics] エラー 1

となって破滅する。

原因は実は単純で,PGS4のmakeのときに,内部でStdHEPのmakeを実行しているのだが,そこで使われているcompiler (./src/stdhep-dir/src/stdhep_Archで指定されている)と,ここでのcompiler(./Makefile)とが食い違っているため。

というわけで両方をgfortranにすれば解決します。

Herwig++ to CentOS 5.2

これは 2008 年 6 月の情報であり,既に obsolete である可能性があります。

Install

必要なものは,以下の3つ。(括弧内は2008年6月24日現在の最新版)

まずGSLを

$ ./configure

$ make

$ su

# make install

し,次にThePEGについても同様のことをやったら

./setupThePEG.bin --init --exitonerror -L../lib -r ThePEGDefaults.rpo ThePEGDefaults.in /home/misho/Archives/ThePEG-1.2.0/src/.libs/lt-setupThePEG.bin: error while loading shared libraries: libgsl.so.0: cannot open shared object file: No such file or directory

make[1]: *** [ThePEGDefaults.rpo] エラー 127

と帰ってきて涙目wwwwwwwwwww。

この原因は,どうやらGSLが/usr/local/lidにinstallされ,ThePEGのmake時にそれを探しに行けなかったためのようです。っていうかCentOSとDebianは,/usr/local/libを検索pathに入れないのね。というわけで,/usr/local/libも検索対象に含めることに。

まずvi /etc/ld.so.confとして,ld.so.confの末尾に/usr/local/libなる行を追加。

$ su - # 次にその結果を反映させる。

# ldconfig

# exit

$ make clean # そしてmake

$ ./configure

$ make

$ su

# make install

結果,成功!

        ___

      /      \

   /          \

  /   ⌒   ⌒   \

  |  /// (__人__) ///  | 

. (⌒)              (⌒) グッ v

./ i\            /i ヽ

l___ノ            ヽ___i

Herwig++についても同様に

$ ./configure

$ make

$ su

# make install

とすれば大丈夫でした。規定値では全部/usr/localにinstallされます。

Manualで予習

arXiv:0803.0883からHerwig++のdocumentをdownloadして印刷。そしていま眺めているところです。

Reinstall the newest versions

研究室の都合で環境を再構築しなおさなければならなくなったので,また手順をまとめてみる。

We need following four softwares (Latest version on 2009.6.13):

Here, you have to download ThePEG from Herwig Wiki, not from ThePEG official site(This is too old.)

The installation is as usual: configure, make, make check, and make install, but for Herwig's configuration, you have to specify the directories where you have installed other programs:

Herwig++-2.3.2:> ./configure --with-thepeg=/usr/local --with-gsl=/usr/local --with-clhep=/usr/local
Note

When you are to install some softwares from its source, PACO-pacKAGE oRGANIZER- may make you happy. This will help you to maintain your installed packages. Simple instructions are on the Web. Google "paco linux", or so.

In this time, I used paco as follows:

# Install PACO
~:> tar zxvf paco-2.0.6.tar.gz
~:> cd paco-2.0.6
paco-2.0.6:> ./configure
paco-2.0.6:> make
paco-2.0.6:> sudo make install
paco-2.0.6:> sudo make logme
# Use paco instead of "make install"
~:> cd gsl-1.12
gsl-1.12:> ./configure
gsl-1.12:> ./make
gsl-1.12:> sudo paco -lD make install
# and so on...

その他

FeynMPにSUSY particleを追加などしたもの

俺はFeynman DiagramでもLaTeXで書いちまう男なんだぜ!!

というわけでFeynMPを,SUSYで現れる超対称粒子にも対応させたものを作ってみたので置いておく。 具体的には,gauginoを書くときに必要なplain_wiggly_arrow line styleを追加して,あとaliasesを大量に追加した。詳細についてはみしょの2009年6月6日の日記を参照のこと。