Sho's website

素粒子論の数値計算の古い Tips

MacOSX 10.7 (Lion) への諸々の導入

2012年の6月,新しく発売された MacBookPro れってぃ〜〜〜なを買いました。導入の記録を書き残しておきます。

機種は MacBookPro with Retina Display (Mid 2012),OS は MacOSX 10.7 で,memory +8GB の変更をしています。

いつもの applications

  • Xcode 4.3.3 (via Mac AppStore)
  • Command Line Tools (via Xcode preference menu)
  • じゃば (Oracle)

10.7 では Command Line Tools というものが必須なようです。また,XCode が 4.3 ぐらいから gcc ではなく clang を使うようになったので,注意が必要です。以下のようにして "LLVM" (clang) が使われていることを確認できます。

$ <kbd>gcc -v</kbd>
<samp>Using built-in specs.
Target: i686-apple-darwin11
Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.9~22/src/configure --disable-checking --enable-werror --prefix=/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.9~22/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (<mark>LLVM</mark> build 2336.9.00)</samp>

Applications はいつもの通り。Firefox, Thunderbird, Dropbox, TotalTerminal, mi, Emacs, Diffmerge, Jabref, Inkscape, YoruFukurou, Limechat, Gyazo, Skype, Mathematica, Office。

Homebrew 経由で : gcc (gfortran) ほか

まず Homebrew を導入して,それから Homebrew 経由で古い gcc(物理の解析で必要となる)を入れました。以下のように古い gcc を導入し,

$ <kbd>brew tap homebrew/dupes</kbd>
$ <kbd>brew install apple-gcc42</kbd>
$ <kbd>brew untap homebrew/dupes</kbd>

それから /usr/local/bin の gcc-4.2 などへ gcc などという名前で symbolic link を張って, /usr/local/bin を /usr/bin より優先して読むように PATH を変更しました。

gcc を入れた後,homebrew からいろいろ導入しました: git, subversion, aspell, boost, cppunit, ghostscript, gnuplot, gsl, imagemagick, pcre, unrar, wget, zsh, zsh-lovers。

LaTeX (TeXLive 2011 + tlpTeXLive)

TeXLive 2011 を基盤として,pTeXLive を tlptexlive repository 2011 経由で導入しました。最新の tlptexlive repository は TeXLive 2012 を基盤としているので,以下の情報は既に obsolete な可能性があります。

Wiki に書かれているとおりの手法でうまくいきました。まずはいつものように TeXLive 2011 を導入して,次に

$ <kbd>tlmgr update --self --all</kbd>tlmgr repository add http://www.tug.org/~preining/tlptexlive/ tlptexlive</kbd>
$ <kbd>tlmgr --repository http://www.tug.org/~preining/tlptexlive update --all</kbd>
$ <kbd>tlmgr --repository http://www.tug.org/~preining/tlptexlive install pmetapost pxdvi uptex</kbd></pre>

です。xdvi の代わりに pxdvi を使わねばならないことに(いまさらですが)注意。

ROOT

以前MacOSX での ROOT の make は修羅の道です。と書いたアレですが,今回はなぜか一発でうまく行きました。

$ <kbd>./configure macosx64 --all</kbd>
$ <kbd>make</kbd>
$ <kbd>make install</kbd>

g77

未だに必要な g77。HPC for MacOSX から g77-intel-bin.tar.gz を導入しました。2006 年に作られた binary ですが,なんかまだ動くみたいですwww。

CERNLIB / ISAJET

さて,いつも最大の問題となる CERNLIB / ISAJET ですが,今回もやってくれました。homebrew から導入する imake は clang (LLVM) に対応していません。MacPorts から導入すれば何とかなるかもしれませんが。。。

いろいろ試行錯誤してみたのですが,どうやら無理っぽいので,あきらめて KEK の藤井さんによる HEP on X with APT/RPM を使うことにしました。

まず,instruction に従って APT/RPM on MacOSX を導入しました。どうやら /usr/osxws/ の中にいろんなものを構築するようですが,homebrew 一本にしたいのでここには path を通さないでおきました。で,

$ <kbd>/usr/osxws/bin/apt-get update</kbd>
$ <kbd>/usr/osxws/bin/apt-get cernlib cernlib-nypatchy

でしょぼしょぼと導入。あとは ISAJET ですが,こちらはいつものようにやればよかった。10.6 の方の設定とほぼ同じでした。

ISAJET to MacOSX 10.5 / 10.6

以下は,2010 年 8 月に MacOSX 10.5 + MacPorts 環境に導入したときの情報と,2012 年 3 月に MacOSX 10.6 + Homebrew-gfortran 環境に導入したときの情報です。固有の部分は特記してあります。

fsplit (for ISAJET)

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

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

ISAJET

2010 年 8 月 (10.5 + MacPorts) の時には何度も何度も失敗したが,気を取り直してやりなおしたらなぜかうまくいった。まぁよくわかりません。。。

2012 年 3 月 (10.6 + homebrew) にやったときには,Makefile の書き換えにちょっと試行錯誤が必要だったけど,まぁそれほど引っかからなかった。

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

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

CERN = CERN
F77 = gfortran
CERNDIR = /usr/local/cern/2006/ # don't forget the backslash
PDFLIB = PDFLIB
FSPLIT = fsplit
YPATCHY = $(CERNBIN)nypatchy

10.6 + Homebrew-gfortran の時には,以下のように Makefile を設定した。

CERN = CERN
CERNDIR = /usr/local/cern/2006/ # don't forget the backslash
CERNBIN = $(CERNDIR)bin/
CERNLIB = $(CERNDIR)lib/
F77 = gfortran
FFLAGS = -c -O -fno-automatic
PDFLIB = PDFLIB
RANLUX = RANLUX
FSPLIT = fsplit
LINK = $(F77)
LFLAGS = -L$(CERNLIB) -lpdflib804 -lmathlib -lkernlib
YPATCHY = $(CERNBIN)nypatchy

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にすれば解決します。

その他

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

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

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

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=&quot;gcc-4.0&quot;
export CXX=&quot;g++-4.0&quot;
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 &lt;&lt;EOF | /usr/bin/iconv -f UTF-8 -t UTF-8-MAC | mksymlink $OPENTYPE を,
cat &lt;&lt;EOF | /usr/bin/iconv -f EUC-JP -t UTF-8-MAC | mksymlink $OPENTYPE
# にする

CERNLIB(2006) to MacOSX from source

For MacOSX 10.5

これは 2010 年 8 月に MacOSX 10.5 でやったときの記録です。MacOSX 10.6 上でやった,2012 年 3 月の記録も参照ください。

手持ちの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で確認。

  • gmakeはOSXに最初から入ってた。(/usr/bin/make) make --versionすればgmakeだとわかる。ここで,ln -s /usr/bin/make /usr/local/bin/gmakeとalias代わりのsymbolic linkを張った。
  • cpp・arも/usr/bin/に入ってる。
  • imake・makedependは /usr/X11/bin/ にあるはず(Xcodeに入ってる)。
  • Fortran and C compilersは,GCC4.5をMacPortsから入れた。port search gccで探して,sudo port install gcc45でOK。
  • ちなみにMacPortsから入れたGCCは /opt/local/bin/gcc-mp-4.5 みたいな変な場所/変な名前になっているので,/usr/local/bin/ あたりに "-mp-4.5"を外した名前でsymbolic linkを貼っておくと便利。すなわちcd /usr/local/bin;sudo ln -s /opt/local/bin/*-mp-4.5 .; for i in *-mp-4.5; do; sudo mv $i ${i%-mp-4.5}; doneみたいなおぞましいことをする。
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/

For MacOSX 10.6 / HomeBrew

これは 2012 年 3 月の情報です。

我々は,MacPorts を廃絶して homebrew を使うべきであります。

というわけで MacOSX 10.6 (SnowLeopard) + homebrew の環境に,CERNLIBを入れた。Installation manualを参考にした。

MacOSX 10.5 + MacPorts でやったときとの違い

基本的には,ほとんど 前回と同様に出来ました。

  • Xcode と homebrew を導入。C compilers は,XCode そのまま。gfortran は homebrew 経由で入れました。(それが幸福への道です。)
  • g77 は不要でした。
  • その他 (gmake, cpp, ar, imake, makedepend) は前回と同じ。
  • make bin/kuipc のときに error となったので, src/packlib/kuip/kuip/kstring.h の24行目付近にあった #ifndef 文を消してみたら,なんかうまく動きました。
  • その他 nypatchy も含めて同様に install できました。

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&amp;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&amp;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:
  &quot;_EVP_CIPHER_CTX_key_length&quot;
  &quot;_X509_NAME_hash_old&quot;
  &quot;_EVP_CIPHER_CTX_block_size&quot;
  &quot;_EVP_CIPHER_key_length&quot;
  &quot;_asn1_const_Finish&quot;
  &quot;_ASN1_const_check_infinite_end&quot;
ld: symbol(s) not found

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

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

Undefined symbols:
  &quot;_inflateEnd&quot;
  &quot;_inflateInit_&quot;
  &quot;_deflate&quot;
  &quot;_deflateEnd&quot;
  &quot;_deflateInit_&quot;
  &quot;_zError&quot;
  &quot;_inflate&quot;
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 とともに生きよう!!!

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:

./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
~:&gt; <kbd>tar zxvf paco-2.0.6.tar.gz</kbd>
~:&gt; <kbd>cd paco-2.0.6</kbd>
paco-2.0.6:&gt; <kbd>./configure</kbd>
paco-2.0.6:&gt; <kbd>make</kbd>
paco-2.0.6:&gt; <kbd>sudo make install</kbd>
paco-2.0.6:&gt; <kbd>sudo make logme</kbd>
# <strong>Use paco instead of &quot;make install&quot;</strong>
~:&gt; cd gsl-1.12
gsl-1.12:&gt; <kbd>./configure</kbd>
gsl-1.12:&gt; <kbd>./make</kbd>
gsl-1.12:&gt; <kbd>sudo paco -lD make install</kbd>
# and so on...