- Linuxの立ち上げ
今回は、Ubuntu 20.04(デスクトップ版)をインストールしたので、その際に実際に行ったことなどを備忘録として残しておく。(Server版と悩んでいたが、スペックもそこまで悪くなく、GUIかCUIかの違いくらいしかないらしいので、操作がしやすいデスクトップ版を選んだ)
推奨される動作環境は、
・2 GHzのデュアルコアプロセッサ以上
・4 GBのメモリ
・25 GBのHDD空き容量
・DVDドライブもしくはUSBメモリ(OSインストール用のメディアとして利用)
・インターネット環境(あった方がいいが、なくてもインストールができる)
以下に手順を示す。
1. UbuntuのISOイメージファイルをダウンロード。ダウンロードは、このページのUbuntu Desktop 20.04 LTSと書かれた枠内のダウンロードボタンをクリック。
2. ダウンロードしたファイルを空のDVDorUSBメモリに書き込む。WindowsOSで書き込む場合、DVDに書き込むのは標準機能として備わっているので、.isoファイルを選択し書き込みを行う。USBメモリで書き込みを行う場合は、rufusと呼ばれるソフトをインストールし、これを開いてデバイスを選んだりイメージファイルを選んだりして、最後にスタートボタンを押す。するとUSBメモリに読まれる。
3. 作成したOSが入ったUSBメモリをPCに挿し、BIOS(UEFI)画面を起動させる。ブートの順番をUSBメモリを一番上にし、保存&終了して再起動する。これで次に立ち上がる時は、Ubuntuのインストーラが開くはず。
4. 後は、インストーラの指示に従って、順に必要事項を入力していく。こことこことこことここのページを参考にした。
※特にパーティションを決めるのがややこしかったので、このページを参考にして設定した。
5. 一通りインストールが終わったら、次は、最低限の初期設定を行う。主には以下の通り。(この設定はWSL(Windows Subsystem for Linux)の初期設定でも同様。ちなみに、WSLのインストール方法はこのサイトにまとめられていた)
// C/C++コンパイラ、Python3ヘッダファイル、ライブラリ、パッケージのインストール
$ sudo apt install build-essential python3-dev python-pip (devscripts)
$ sudo apt install libbz2-dev libdb-dev libreadline-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libsqlite3-dev libssl-dev zlib1g-dev uuid-dev tk-dev llvm xz-utils libxml2-dev libxmlsec1-dev (libtiff.so.5)(←ROOTの描写の際にエラーが出たのでこれもいるかも?)
// X window serverを動かすために必要なライブラリやパッケージ
$ sudo apt install x11-apps x11-utils x11-xserver-utils dbus-x11
(※X window serverの動作確認のために、$ xeyesをして目玉のウィンドウが表示されるか確認。表示されればOK(この時、X window systemはバックグラウンドで走らせておくこと!))
// cmake最新版、wget、curlのインストール(cmakeのインストール方法はページの下の方参照。)
$ sudo apt install wget curl
// ssh設定、ifconfigなど運用保守パッケージのインストール
$ sudo apt install openssh-server net-tools pciutils
// 不要なソフトウェアの削除(libreoffice, thunderbirdなど)
$ sudo apt purge libreoffice*
$ sudo apt purge thunderbird*
$ sudo apt -yV autoremove
$ sudo apt autoclean
※参考:LinuxのPDFビューアとして、デフォルトでevinceが入っているが、X window systemの環境によっては操作がしづらいことが起こる。(GUIのウィンドウが大きくならないなど。。。)
その時の代替ビューアとして、okularがある。evinceとそこまで変わらず今のところは使いやすさを感じている。
インストール方法は、sudo apt install okular, sudo apt install breeze-icon-theme, export QT_LOGGING_RULES='*.debug=false;qt.qpa.*=false'をターミナル上で打ち込めば終了。okular test.pdfなどとすれば、pdfファイルの閲覧が可能。
カーネルパニック(kernel panic)
これは、Ubuntuがフリーズし強制終了した後にRebootした際に表示された。この場合の対処法としては、現在使用しているカーネルとは異なるカーネルを使用し、パニックを起こしたカーネルを削除する。その際には、recovery modeで起動すればよい。これらは、こことここのページを参考にした。
Wine package
これは、UNIX系OSでWindowsのアプリケーションをネイティブ動作させるために作成されたプログラム。
これをインストールするのにかなり手こずったので、備忘録として残す(後日執筆予定。。。)
参考ページ1、2、3、4
大事なのは、wine-staging(テスト版→安定版(wine本体)にマージされていないbugfixや機能追加が含まれているらしい)をインストールすること!
- Homebrew
これは、MacOS用のパッケージ管理システム。普通はemacsなどのパッケージはサイトからダウンロード→インストールの順で行ったりするが、これを用いればソフトウェアやライブラリの導入をスムーズに行うことが出来る。
"パッケージ"とは実行ファイルや設定ファイル、ライブラリなどを一つのファイルとしてまとめたもの。また、パッケージ管理システムは、パッケージのインストールやアンイストールの作業をまとめて管理するもので、パッケージやライブラリの依存関係の管理が出来る。
パッケージ管理には、
1.バイナリを取得するもの
2.ソースコードを取得してビルドするもの
の二種類がある。Homebrewは自身のMacでビルドするので、自分のMacに最適化出来る特徴がある。
Homebrewについて、パッケージは/usr/localの中のCellarというディレクトリにインストールされる。そして、インストール時にbinにシンボリックリンクを作成する仕組みになっている。
・コマンドの本体 /usr/local/Cellar
・コマンドのエイリアス /usr/local/bin
本題のHomebrewについてだが、そもそも"brew"とは"醸造する"という意味あるので、"homebrew"とは「userが自らパッケージをビルドして使う」(ビールを自家醸造して保存・飲む)ことを意味してるらしい。
(だから、パッケージをインストールした時にビールのロゴが出てたのか笑)
つまり、手順(調理法formula)通りにパッケージをビルド(醸造)して保存(/usr/local/cellarに格納)して、使う(/usr/local/binにリンク)っていうことらしい。
インストールは以下のスクリプトをターミナル上で実行したらいい。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
基本的な使い方は、ここに丁寧にまとめられてた。
- Xcode
プログラムを動かす時に"コンパイル"という作業が必要になる。これをしておかないとプログラムを動かすことができない。そこで、コンパイラと呼ばれるソースコードをコンパイルしてくれるものが必要になってくる。
MacOSにおいて、Xcodeはプログラミング(例えばC、C++、Javaなど)のソースコードをコンパイルできる。
そこでXcodeを導入する。デフォルトではインストールされてないので、App StoreもしくはWebページから無料ダウンロードでインストールする。
ここを参考にしたらいいと思う。
なお、Xcodeを完全にアンインストールする際、ゴミ箱に捨てるだけでは関連ファイルなどが残った状態になる。
関連ファイルを含めて完全にアンインストールする場合は、以下のものを消す。
/Applications/Xcode.app(ディレクトリ)
nnn
/Library/Preferences/com.apple.dt.Xcode.plist(ファイル)
~/Library/Preferences/com.apple.dt.Xcode.plist(ファイル)
~/Library/Caches/com.apple.dt.Xcode(ファイル)
~/Library/Application Support/Xcode(ディレクトリ)
~/Library/Developer/Xcode(ディレクトリ)
~/Library/Developer/CoreSimulator(ディレクトリ)
- X Window System
X Window Systemとは、UNIX系OSで標準的にも用いられているウィンドウシステムであり、ほとんど唯一のGUI環境である。これの良い点は、リモートコンピュータで実行されているXアプリケーションをローカルコンピュータに表示する機能があること。OSごとに使用できるツールが異なるため、以下に列挙する。
※X Window Systemをインストールするだけでは動かず、DISPLAYの環境設定をする必要がある。これは、~/.bashrcにexport DISPLAYlocalhost:0.0と書き込み、source ~/.bashrcをする。
【XQuartz】
MacはUNIXと呼ばれるOSが裏で走っている。つまりMacOSも中身はUNIX。UNIXは基本的にコマンドで全て処理を行う。(CUI環境という)
逆にマウスなどを使って操作できるようにするために、X Window Systemと呼ばれるものがある。UNIXにX Window Systemを導入することで、マウスでフォルダを開いたり実行したりできるアプリが使えるようになる。(GUI環境という)
"X11"とは、X Window Systemのバージョンが11番目であるという意味。"XQuartz"はX11の代替のような気がする。
sshをした上で、画像を別ウィンドウで表示させる時にもXQuartzは使用される。通常、ssh サーバーID@ドメイン名のようにsshログインするが、ssh -XY サーバーID@ドメイン名とすることで例えば、emacsを使う際には別ウィンドウで開くことができる。この時、開くウィンドウがXQuartzから開かれる。
元々は、デフォルトでインストールされていたが、Mac OS X 10.8 Mountain Lionからデフォルトでインストールされなくなったため、XQuartzというアプリケーションをインストールする。インストール手順は以下の通り。
- こちらから.dmgファイルをダウンロード。
- インストーラに従い、XQuartzをインストール。このページは丁寧で分かりやすい。
- インストールが完了すると、/アプリケーション/ユーティリティ/にXQuartz.appが作成されるので、正常に動くか確認。
【XmingやVcXsrv】
XmingやVcXsrvは、オープンソースのWindow用Xサーバーである。Windowsで動作するXサーバーにはさまざまなものがあるが、これらは無償で利用できるというのが特徴である。
XmingとVcXsrvのダウンロードは、以下のURLからダウンロードできる。
Xmingのダウンロード先リンク
VcXsrvのダウンロード先リンク
- ROOT
ROOT(An object oriented framework for large scale data analysis)は、データ解析に用いるCAENが開発しているツールである。
コマンドライン上から、グラフなどを書くことができる。対応してるOSも幅広い。ROOTのダウンロードはここから。ソースファイルとバイナリーファイルがあり、バイナリーファイルをダウンロードするのが手っ取り早い。
海外のソフトであるため、マニュアルなどは全て英語なので、頑張って読む必要がある。
・ROOTのインストール方法:まず、適当なディレクトリでROOTのファイルをダウンロードする。(大体は/usr/local/の下にダウンロードする。)
CERNのページから自分の環境にあったバイナリーファイルをダウンロードする(Linux環境では、ディストリビューションやコンパイラのバージョンごとに異なっているので、合ったものをダウンロードする)。※ダウンロードはWebからでもいいし、コマンドライン上で
"curl -O https://root.cern/download/root_v6.22.02.Linux-ubuntu20-x86_64-gcc9.3.tar.gz"としても良い。
Mac環境でもOSのバージョンに合わせてダウンロードする。.dmgファイルは仮想ディスクイメージであり、.dmgファイルをダブルクリックすることで、解凍することができる。
.tar.gzファイルの解凍方法は、.tar.gzファイルがあるディレクトリのコマンドライン上でtar -xvf root_v6.22.02.Linux-ubuntu20-x86_64-gcc9.3.tar.gzなどtar.gzファイル名を入力すれば、解凍されrootの名前でディレクトリが作成される。
※root以下には、LICENSE・README・bin・cint・etc・fonts・icos・include・lib・macros・proof・test・tutorialsなどのディレクトリ(✳︎)がある。
上記に示したディレクトリらを見つけたら、自分のホームディレクトリに戻り、.bashrcよりパスを通す。
パスの通し方として以下の3行の内容を入力する。(.bashrcの編集には適当なテキストエディタを使うといい。)
export ROOTSYS=((✳︎)があるディレクトリまでの絶対パス)
export PATH=$PATH:$ROOTSYS/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ROOTSYS/lib
もしくは、
cd /usr/local/root
source bin/thisroot.sh
cd - > /dev/null
上の3行の入力が終了したらテキストエディタを閉じ、コマンドライン上でsource .bashrcとする。こうすることで、.bashrc内の設定ファイルが更新され、どのディレクトリからでもコマンドライン上で"root"と打てばrootが起動する。
※また、ROOTの使い方などで気になったことは次のページにまとめた。ROOTまとめ
【追記】PyROOTを使いたかったが、そのためには改めてsourceファイルからbuildする必要があった。これにめちゃくちゃ手こずったので備忘録としてここに残しておく。
なお、インストールした時の環境は、macOS Mojave 10.14.6, Xcode 11.3.1, cmake 3.16.5, make GNU Make 3.81であった。
1. sourceファイルをCERNのROOTの公式ページここからインストールしたいsourceファイルをダウンロードする。今回は、v6.20.00をダウンロードした。適当な場所で
curl -O https://root.cern/download/root_v6.20.00.source.tar.gz
とする。自分はホームディレクトリにダウンロードした。
2. 次に、sourceファイルをコンパイルする。これはCMakeで行う。v6.08.00以降はcmakeコマンドでビルドするのが推奨されているらしい。コンパイルやインストールは好きな場所でやっていいが、管理者権限を持っているならば、/usr/localにインストールのが標準的である。
$ cd /usr/local
$ sudo tar zxvf ~/root_v6.20.00.source.tar.gz
// これをすることで、カレントディレクトリに、root-6.20.00が作成される。
//次に以下の操作を行う。
$ sudo mkdir root-6.20.00/obj
$ cd root-6.20.00/obj
// これで、objディレクトリに移れた。objディレクトリでcmakeを行う。
3. 次にcmakeをするのだが、通常何もオプションなどをつけない場合、デフォルトではPython2がPyROOTの時に使えるようにビルドされる。しかし、Python2系はサポートが2020年4月に終了するため、Python3で使用できるようにしたい。そのためには、cmakeをする際にオプションをつけてビルドする必要がある。また発展的な機能であるminuit2を使用できるようにするため(Enabled supportに入っていない)に、これについてもオプションが必要。具体的には以下のようにする。
[2020/09/22追記]ROOTでFFT(高速フーリエ変換)(つまり、FFTのパッケージ)を使用しようとすると、通常では以下のようなエラーが出る。
Error in <TVirtualFFT::FFT>: handler not found
*** Break *** segmentation violation
このエラーをなくし正常にFFTを使えるようにするには、FFTW3というパッケージをインストールし、その上でROOTを再度ビルドする必要がある。具体的には以下のようにインストール&&ビルドを事前に行っておく。
1. http://www.fftw.org/download.htmlから、最新のfftw-x.x.x.tar.gzをダウンロード(x.x.xはバージョンを表す)
2. tar -xvf fftw-x.x.x.tar.gzでファイルを解凍(解凍場所はどこでも良いが、最終的には/usr/local/に置く)
3. cd fftw-x.x.x
4. ccmake .←これをやるとターミナルの画面が変わり、下の方に[c]configureなど色々表示されるが、やることは、[c]configureを2回押して、[g] generateを1回押すだけ。そうすると、which ccmakeとした際に、パスが出てこれば成功。
ここでccmakeとは、あまり詳しいことは分からないが、cmakeの上位互換のようなものっぽい。Macにはcmakeをインストールした際に同時にインストールされるようだが、少なくともUbuntuでは、cmakeのインストールの際にはccmakeは入らないので、別途インストールが必要(sudo apt install cmake-curses-gui)。
5. 最後に、.bashrcにexport FFTW3=/usr/local/fftw-x.x.x/として、パスを通しておく。
$ sudo cmake ../ -Dminuit2=ON -Dpython3=ON -DPYTHON_EXECUTABLE=/usr/local/bin/python3 -Dbuiltin_fftw3=ON
// -Dminuit2=ONでminuit2を、-Dpython3=ONでpython3を、-Dbuiltin_fftw3=ONでFFTW3を明示的に指定し、それぞれ使用できるようにする。
// また、-DPYTHON_EXECUTABLE=/usr/local/bin/python3は、python3のパスを指定している。このようにちゃんとパスを指定しないとうまくインストールできなかった。python3のパスは、which python3で確認可能。
// 色々表示された後、ターミナルの画面で、最後に以下のように表示されればcmakeは成功!
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/root-6.20.00/obj
↑このcmakeをする際に、例えばLinuxを入れたばっかでほとんどパッケージが入っていない場合、pyhon3はすでに入っているのに、Could NOT find Pythonなどと言われることがある。これは、おそらくcmakeに必要なパッケージが足りないからであると考えられる。
自分が経験した中で、具体的に入れないといけないパッケージは、以下の5つ。
- python3-dev
- libx11-dev
- libxpm-dev
- libxft-dev
- libxext-dev
4. 次にmakeコマンドで、青枠内に書かれているようにmakeを行う。※カレントディレクトリのままで。
このmakeはPCのCPUによるが、1時間くらいかかる。もし、途中でエラーが出てmakeが終了してしまったら、これまで作成したディレクトリを消し、もう一度sourceファイルを展開するところから始めたらうまくいくかもしれない。
左端の[??%]の数字が100%になればmakeは成功!最後は、以下のような表示になるはず。
$ sudo make -j 8
⋮
Scanning dependencies of target hist2workspace
[100%] Building CXX object roofit/histfactory/CMakeFiles/hist2workspace.dir/src/hist2workspace.cxx.o
[100%] Building CXX object roofit/histfactory/CMakeFiles/hist2workspace.dir/src/MakeModelAndMeasurements.cxx.o
[100%] Linking CXX executable ../../bin/hist2workspace
[100%] Built target hist2workspace
[100%] Built target onepcm
Scanning dependencies of target hsimple
[100%] Generating tutorials/hsimple.root
Processing hsimple.C...
hsimple : Real Time = 0.18 seconds Cpu Time = 0.14 seconds
(TFile *) 0x7fbdfb7798c0
[100%] Built target hsimple
[2021/11/16追記]
Xcodeを13.1にアップデートし、再度ROOT6.24.06をmakeしてインストールしようとしたところ、失敗。具体的には以下のようなエラーを吐いて途中終了。
CMake Error at /usr/local/root-6.24.06/obj/XROOTD-prefix/src/XROOTD-stamp/XROOTD-build-Release.cmake:49 (message):
Command failed: 2
'/Applications/Xcode.app/Contents/Developer/usr/bin/make'
See also
/usr/local/root-6.24.06/obj/XROOTD-prefix/src/XROOTD-stamp/XROOTD-build-*.log
make[2]: *** [XROOTD-prefix/src/XROOTD-stamp/XROOTD-build] Error 1
make[1]: *** [CMakeFiles/XROOTD.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
⋮
[ 29%] Completed 'OPENSSL'
[ 29%] Built target OPENSSL
make: *** [all] Error 2
→これはどうやら、OpenSSLのパッケージが不足していると出るらしい。
解決策は、OpenSSL-devをインストールしてXRootDのサポートを有効にするもしくはcmakeのビルド時にオプションとして、-Dxrootd = OFF -Dbuiltin_xrootd = OFFを追加すれば良い。
※原因は不明だが以下のようなエラーが出て、makeが途中で終了してしまう時がある。
/usr/bin/ld: /home/xxxx/.pyenv/versions/3.9.1/lib/libpython3.9.a(floatobject.o): relocation R_X86_64_PC32 against symbol `PyFloat_Type' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
-fPICオプションをつけて再コンパイルしろと言われているが、どうやらpythonのpathとしてpyenv経由で入れたpythonを指定した場合に起こるっぽい。
こうなった場合、pyenvでpythonをインストールする際に注意が必要で、以下のようにpyenvにオプションをつけてpythonをインストールすると、エラーを回避できた。
$ PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install -v --force 3.9.1
5. ここまで来れば、あとは.bashrcに以下の3行を記載して、source .bashrcをすれば良い。
cd /usr/local/root-6.20.00/obj
source bin/thisroot.sh
cd - > /dev/null
// 「1行目でROOTをビルドしたディレクトリに移動し、2 行目でその下にあるシェルスクリプトを読み込み、様々な環境変数を設定。最後に3行目でもともといたディレクトリに戻り、そのときに吐かれる余計な標準出力を/dev/null に渡し、ターミナルに何も表示させないようにする。」らしい。
以上で、ROOT_v6.20.00およびPyROOTが使えるようになったはず!
ROOTに関しては、ターミナルでrootとし、ちゃんと起動するか確認する。PyROOTについては、ターミナルでpython3として、
Python 3.7.6 (default, Dec 30 2019, 19:38:28)
[Clang 11.0.0 (clang-1100.0.33.16)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import ROOT as rt
>>>
のように、ROOTをimportした時にエラーが出なければ、PyROOTが使用可能となる。PyROOTの動作確認や練習は、これらのページ(山中さんのページ、Jupyter notebookでの使い方、ROOT公式ページ1、ROOT公式ページ2や東北大のページなど)を参考に、実際に動かしてみてちゃんと動くか確認するといいと思う。
ROOTのビルドでは、この資料(名古屋大学 奥村さん)がかなり参考になった。
- Geant4
モンテカルロ法を用いて、物質中における粒子の飛跡をシミュレーションするためのツール。CERNによって開発された。インストール方法を以下に示す。
【Mac編】
1. Homebrewを用いて、まずcmakeとqtもしくはX11(可視化用)をインストールする。
2. makeするため、ソースファイルを公式ページからダウンロードする。現時点(2021/04/16)では、最新は4.10.07.p01だった。インストール先は自由なようだが、/opt/geant4にインストールする。
$ sudo mkdir /opt/geant4
$ sudo chown [アカウント名]:staff /opt/geant4
(chownをしなければ、以後先頭にsudoをつければいい。)
$ cd /opt/geant4
$ mv ~/Download/geant4.10.07.p01.tar.gz ./
$ tar zxvf geant4.10.07.p01.tar.gz
$ mkdir geant4.10.07.p01-build geant4.10.07.p01-install/
//build用とinstall用のディレクトリを作成しておく。
3. cmakeを用いたコンパイル
$ mkdir geant4.10.07.p01-build/
$ cd geant4.10.07.p01-build/
$ cmake -DCMAKE_INSTALL_PREFIX=/opt/geant4/geant4.10.07.p01-install -DGEANT4_INSTALL_DATA=ON -DGEANT4_USE_QT=ON(or -DGEANT4_USE_OPENGL_X11=ON) /opt/geant4/geant4.10.07.p01
// オプションはどんなシミュレーションをするかで変わる。以下に列挙する。(-Dを先頭に書く。)
// -DCMAKE_INSTALL_PREFIX:Geant4のlibraryやinstallするためのpath(デフォルトは/usr/localらしい)。
// -DGEANT4_INSTALL_DATA:中性性などの追加の物理データをinstall(ON)。cmakeは2.8以上。
// -DGEANT4_USE_QT(or -DGEANT4_USE_OPENGL_X11):Qtの使用は前者、X11の使用はは後者を指定。(QtかX11はどちらかで良い。)
// 最後の引数(フラグなし)は、ソースディレクトリへのパス。
うまくいくと、以下のようになる。
-- Configuring download of missing dataset G4NDL (4.6)
-- Configuring download of missing dataset G4EMLOW (7.13)
-- Configuring download of missing dataset PhotonEvaporation (5.7)
-- Configuring download of missing dataset RadioactiveDecay (5.6)
-- Configuring download of missing dataset G4PARTICLEXS (3.1.1)
-- Configuring download of missing dataset G4PII (1.3)
-- Configuring download of missing dataset RealSurface (2.2)
-- Configuring download of missing dataset G4SAIDDATA (2.0)
-- Configuring download of missing dataset G4ABLA (3.1)
-- Configuring download of missing dataset G4INCL (1.0)
-- Configuring download of missing dataset G4ENSDFSTATE (2.3)
-- The following Geant4 features are enabled:
GEANT4_BUILD_CXXSTD: Compiling against C++ Standard '11'
GEANT4_USE_SYSTEM_EXPAT: Using system EXPAT library
GEANT4_USE_QT: Build Geant4 with Qt support
GEANT4_USE_QT3D: Build Geant4 Qt3D driver
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/geant4/geant4.10.07.p01-build
cmakeを実行すると、理由はよくわからないが以下のようなQt関連のエラーが出る時がある。
.
.
.
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found EXPAT: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/usr/lib/libexpat.tbd (found version "2.2.8")
CMake Error at cmake/Modules/G4InterfaceOptions.cmake:140 (find_package):
By not providing "FindQt5Core.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "Qt5Core", but CMake did not find one.
Could not find a package configuration file provided by "Qt5Core" with any of the following names:
Qt5CoreConfig.cmake
qt5core-config.cmake
Add the installation prefix of "Qt5Core" to CMAKE_PREFIX_PATH or set
"Qt5Core_DIR" to a directory containing one of the above files. If
"Qt5Core" provides a separate development package or SDK, be sure it has been installed.
Call Stack (most recent call first):
cmake/Modules/G4CMakeMain.cmake:64 (include)
CMakeLists.txt:51 (include)
-- Configuring incomplete, errors occurred!
See also "/opt/geant4/geant4.10.07.p01-build/CMakeFiles/CMakeOutput.log".
See also "/opt/geant4/geant4.10.07.p01-build/CMakeFiles/CMakeError.log".
上記のようなエラーが出たら、以下を.bashrcなどに書いておくと解決する。
export PATH=/usr/local/opt/qt@5/bin:$PATH
export LDFLAGS="-L/usr/local/opt/qt@5/lib":$LDFLAGS
export CPPFLAGS="-I/usr/local/opt/qt@5/include":$CPPFLAGS
export PKG_CONFIG_PATH=/usr/local/opt/qt@5/lib/pkgconfig:$PKG_CONFIG_PATH
// 最初、qt5のところをqtにしていたが、これではcmakeは失敗した。
// 【追記】どうやら、qt6ではインストール出来なさそう。上記のqt5はなぜか6.0.3であり、qt@5が5.15.2であった(/usr/local/Cellar/で確認ができる)。なので、qt5ではなく、qt@5とするべし!
4. ここまで来れば、あとはmakeでのコンパイルとインストール
$ make -j8
//一度目は以下のエラーが出て途中でコンパイルが終了した。
ld: warning: directory not found for option '-L/usr/local/opt/qt/lib:-L/usr/local/opt/gettext/lib'
[ 80%] Built target G4processes
make: *** [all] Error 2
このエラーは、上で書いたようにパスの指定でqt5としてると、qt6が使われることによるエラーだと思う。修正するとうまくいった。
.
.
.
[100%] Building CXX object source/CMakeFiles/G4physicslists.dir/physics_lists/lists/src/Shielding.cc.o
[100%] Building CXX object source/CMakeFiles/G4physicslists.dir/physics_lists/util/src/G4HadParticles.cc.o
[100%] Building CXX object source/CMakeFiles/G4physicslists.dir/physics_lists/util/src/G4HadProcesses.cc.o
[100%] Building CXX object source/CMakeFiles/G4physicslists.dir/physics_lists/util/src/G4PhysListUtil.cc.o
[100%] Building CXX object source/CMakeFiles/G4physicslists.dir/physics_lists/util/src/G4WarnPLStatus.cc.o
[100%] Linking CXX shared library ../BuildProducts/lib/libG4physicslists.dylib
[100%] Built target G4physicslists
キチンとコンパイルできたかはよく分からないが、特にエラーなども出ず上記のような感じで終われば完了。
次に以下のコマンドを実行。
$ make install
.
.
.
-- Installing: /opt/geant4/geant4.10.07.p01-install/share/Geant4-10.7.1/examples/.doxygen/.README.HowToNavigate.txt
-- Installing: /opt/geant4/geant4.10.07.p01-install/share/Geant4-10.7.1/examples/.doxygen/Doxymodules_field.h
-- Installing: /opt/geant4/geant4.10.07.p01-install/share/Geant4-10.7.1/examples/.doxygen/Doxymodules_radioactivedecay.h
-- Installing: /opt/geant4/geant4.10.07.p01-install/share/Geant4-10.7.1/examples/.doxygen/header.html
-- Installing: /opt/geant4/geant4.10.07.p01-install/share/Geant4-10.7.1/examples/.doxygen/.README.novice.txt
-- Installing: /opt/geant4/geant4.10.07.p01-install/share/Geant4-10.7.1/examples/.README.HowToRun
これでインストールが完了。
5. 環境設定
Geant4の実行ファイルは、/opt/geant4/geant4.10.07.p01-install/bin/geant4.shなので、これのパスを通す。
単純に、source /opt/geant4/geant4.10.07.p01-install/bin/geant4.shとしたのでは、以下のようなエラーが出た。
ERROR: geant4.sh could NOT self-locate Geant4 installation
This is most likely because you are using ksh, zsh or similar
To fix this issue, cd to the directory containing this script
and source it in that directory.
/usr/local/root
//文章的に、これはシェルにkshやzshを使ってたら出るよう。
//インストール時のログインシェルはzshだったので、多分そういうことだろう。
解決策としては、geant4.shがあるディレクトリまでcdをして、source geant4.shをしたらいいらしい。.zshrcには、
cd /opt/geant4/geant4.10.07.p01-install/bin/
source geant4.sh
と書いておけばいいだろう。(ただこう書いてしまうと、ターミナルを立ち上げるごとに/opt/geant4/geant4.10.07.p01-install/bin/にcdすることになるのでうざい。)
うざい場合は、面倒くさいけど毎回geant4を使うときに、cd /opt/geant4/geant4.10.07.p01-install/binとsource geant4.shをするのがいいかも。
【追記】.zshrcに書く場合は、以下のように書けばうまくいく。
cd /opt/geant4/geant4.10.07.p01-install/bin
source geant4.sh
cd - > /dev/null
6. おまけ(実行方法と動作確認。新しいページに分けて書くほどでもないので。)
6.1 まず適当なディレクトリで、examplesファイルをコピー。
$ cp -r /opt/geant4/geant4.10.07.p01-install/share/Geant4-10.7.1/examples/basic/B1 ./
6.2 build用のディレクトリを作成。
$ mkdir B1_build
6.3 cmakeとmake
$ cmake -DGeant4_DIR=/opt/geant4/geant4.10.07.p01-install/lib/Geant4-10.7.1 ../B1
.
.
.
-- Found OpenGL: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/OpenGL.framework
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/yoshikawa/g4work/B1_build
$ make -j 4
[ 37%] Building CXX object CMakeFiles/exampleB1.dir/exampleB1.cc.o
[ 37%] Building CXX object CMakeFiles/exampleB1.dir/src/B1DetectorConstruction.cc.o
[ 37%] Building CXX object CMakeFiles/exampleB1.dir/src/B1ActionInitialization.cc.o
[ 50%] Building CXX object CMakeFiles/exampleB1.dir/src/B1EventAction.cc.o
[ 62%] Building CXX object CMakeFiles/exampleB1.dir/src/B1PrimaryGeneratorAction.cc.o
[ 75%] Building CXX object CMakeFiles/exampleB1.dir/src/B1RunAction.cc.o
[ 87%] Building CXX object CMakeFiles/exampleB1.dir/src/B1SteppingAction.cc.o
[100%] Linking CXX executable exampleB1
ld: warning: directory not found for option '-L/usr/local/opt/qt@5/lib:-L/usr/local/opt/gettext/lib' //このようなものが出るが多分大丈夫
[100%] Built target exampleB1
6.4 makeが通ると、B4_buildディレクトリにexampleB1が作成されるのでこれを./exampleB1で実行。円柱と角柱みたいなもの、G4の文字が描かれたディスプレイが表示されればOK!マウスで360°動かせる。試しにIdle>に、順に/gun/particle gamma, /gun/energy 100 MeV, /run/beamOn 10 と入力すると、簡単な動作確認ができる。
【Linux編】
0. 基本的なインストールの仕方はMacの場合と同じ。準備として追加で必要なパッケージ(expat, libexpat1-dev, xrog-dev, freeglut3-dev, g++, qtbase5-dev, qttools5-dev-tools, qt5-default)をインストールしておく。
1. 複数人での使用を前提として、/optにインストールする。
ソースファイルを公式ページからダウンロードしておき、ディレクトリを作成し、ソースファイルの解凍などを行う。
$ sudo mkdir /opt/geant4
$ cd /opt/geant4
$ sudo mv ~/geant4.10.07.p01.tar.gz ./
$ sudo tar zxvf geant4.10.07.p01.tar.gz
$ sudo mkdir geant4.10.07.p01-install
$ sudo mkdir geant4.10.07.p01-build
$ cd geant4.10.07.p01-build
2. cmakeを用いたコンパイルおよびmake
$ sudo cmake -DCMAKE_INSTALL_PREFIX=/opt/geant4/geant4.10.07.p01-install -DGEANT4_BUILD_MULTITHREADED=ON -DGEANT4_INSTALL_DATA=ON -DGEANT4_USE_OPENGL_X11=ON -DGEANT4_USE_QT=ON /opt/geant4/geant4.10.07.p01
// Macの時と比べてこのオプション(→-DGEANT4_BUILD_MULTITHREADED=ON)が増えているが、これは複数のスレッドを使うというもので本格的なシミュレーションをするときは不可欠。
$ sudo make -jN(Nはコア数。スレッドではない。)
$ sudo make install
3. パスを通す。
source /opt/geant4/geant4.10.07.p01-install/bin/geant4.sh
- Emacs
マクロなどを書く際には、必ず何かしらのテキストエディタを用いて書くことになる。そこで、自分がテキストエディタとして使っているEmacsを紹介する。
おいおい書いていく...
忘れないうちにメモ。MacでEmacsを使っていて知ったことだが、C-z(Ctrlボタン+zを両方同時押し)で、Emacsの画面がDockにしまわれた。←これの恩恵をどこで受けるかはよく分からん。
- Vi/Vim
こちらもテキストエディタの一種であり、UNIX系のOSにはデフォルトで搭載されている。このエディタの特徴としては、操作の中でマウスを一切使用することなく全ての操作をキーボードだけで完結できるというもの。そのためには、ある程度のコマンドを覚えておく必要があり、最低限覚えておいたほうが良いコマンドを以下に列挙する。
(※開き方は、vi <開きたいファイルの名前>)
Vi/Vimにはモードという概念があり、最初にVi/Vimを起動するとノーマルモードが起動する。基本的にはノーマルモードからコマンドを打つことにより、それぞれのモードに移動して、作業を行う。共通していることとして、各モードからノーマルモードへはESCで切り替えが可能。
i:挿入モードに切り替え。基本的にこのモードでファイルの編集などを行う。(最終行に-- INSERT --が表示される。)
:w:変更内容を保存
:wq変更内容を保存して終了
:q!保存せずに終了
- Atom
テキストエディタとして、Atomというものがある、様々なパッケージを利用して、機能を拡張することができる。また、オープンソースであることから将来性がある。
具体的なインストール方法は、このサイトを参照するか、以下のようにしてインストールする。3行目まで行うとカレントディレクトリに.debのファイルができるので、それから4行目を行う。(インストール先は、Ubuntu 20.04.1である。ちなみにインストールするAtomのバーションはv1.50.0。参照)
$ sudo apt update
$ sudo apt -y install libgconf-2-4 gconf2-common git git-man liberror-perl
$ wget https://github.com/atom/atom/releases/download/v1.50.0/atom-amd64.deb
$ sudo apt install -y ./atom-amd64.deb
これでAtomがインストールできるので、ターミナルからatomと打てばatomが起動する。
- Maxima
代数計算をしてくれる便利なツール。インストールはこちらのサイトからできる。
圧縮ファイルを展開するとアプリケーションが生成されるので、そのまま/Applicationsにコピー。
/Applications/Maxima.app/binにパスを通しておけば、普通にターミナルからMaximaを利用することが出来る。パスを以下の通り。
export PATH=/Applications/Maxima.app/bin:$PATH
- gnuplot
2次元や3次元のグラフを作成するためのソフトで、フリーでダウンロードできるし、ちょっとしたグラフを表示させたいときなどに便利。
インストールは、Maximaの時のリンクから飛べる。Maximaと同様のやり方で、圧縮ファイルを展開し、/Applicationsにコピー。
ターミナルから"gnuplot"と打てば、gnuplotが使えるようにするために、/Applications/gnuplot.app及び/Applications/gnuplot.app/binにこの順番でパスを通しておく。
export PATH=/Applications/gnuplot.app:/Applications/gnuplot.app/bin:$PATH
グラフはX11へ出力されるが、X11は自動的に起動するので、事前に起動しておく必要はない。ただし、Mountain Lion以降のMacではX11は付属してないので、別途XQuartzのインストールが必要!
※自分はgnuplotが使えるが、gnuplotが開いた時"Terminal type is now 'x11'"と表示されているにも関わらず、plot sin(x)と打つと文字化けが起こり、グラフが表示されない。
→これは、gnuplotを開いてから"set terminal x11"と打てば直った。
- CMake
CMakeとは、C,C++,Fortranなどのプロジェクトのビルドをコンパイラに依存せず自動化するためのツール。本来プログラミング言語の仕様は、標準ライブラリとコンパイラの実装に依存するので、開発環境が違えば異なるソースコードを書く必要がある。異なるコンパイラでビルドするためには、開発環境に合わせてプロジェクトファイルを使い分ける必要がある。
そこで出てきたのがCMakeである。これは、CMakeLists.txtという設定ファイルを作成しておけば、そこからCMakeがサポートする任意のプロジェクトファイルを作成することができる。
CMakeのインストールは以下の通り
- 「Debian系OS : apt install cmake」
- 「macOS + brew : brew install cmake」
※ただし、最新版がインストールされるかは不明
1.について、UbuntuにCMakeをインストールするため、sudo apt install cmakeとからcmakeをインストールする方法。
(この方法でインストールされるのは最新版ではない可能性がある。。。)
⇒よって、最新版をインストールするために、手動でmakeしてインストールした。忘れないようにメモとして手順を以下に示す。
$ wget https://cmake.org/files/v3.18/cmake-3.18.1.tar.gz
$ tar -xvf cmake-3.18.1.tar.gz
$ cd cmake-3.18.1/
$ ./bootstrap && make && sudo make install
$ export PATH="/usr/local/bin:$PATH"
$ cmake
※ただし、ここで./bootstrap && make && sudo make installをしたら、最初errorが出てうまくできなかった。原因は、OpenSSL development packageがインストールされてないからとか?らしい。これをインストールするため./bootstrap ...をやる前に、
sudo apt install libssl-devをしておく!
Usage
cmake [options]
cmake [options]
cmake [options] -S <path-to-source> -B <path-to-build>
Specify a source directory to (re-)generate a build system for it in the
current working directory. Specify an existing build directory to
re-generate its build system.
Run 'cmake --help' for more information.
コマンドライン上でcmakeと打った時に、上記のようなUsage以下の表示が出ればきちんとインストールできている。
※ROOT6の最新版をインストールする時など、cmakeのバージョンが古いためerrorが出ることがある。そのため、cmakeを最新版にバージョンアップさせる方法を記載しておく。
まず、sudo apt purge cmakeで現在インストールされているcmakeをアンインストールする。その後は、上記の青枠内に記載しているのと同じ要領で、最新版のソースファイルをダウンロードし、makeするだけ。
2.について、 macOSでインストーラからインストールする方法
まず、このページからソースをダウンロードする。
ダウンロード終了後、tar.gzファイルを解凍すると、CMake.cppが生成される。CMake.cppを開き、メニューの"Tools"-->"How to Install for Command Line Use"を選択。
その後、ターミナルで環境変数を追加する。具体的には、
export PATH="/Applications/CMake.cpp/Contents/bin":$PATH
とする。これをやった後、cmake --versionと打ち、最新版になっていれば成功!
- make
makeに関する参考ページは、ここを参照すると分かりやすい。
- GitとGitHub
そもそもGitとは。。。?
→プログラムソースなどの変更履歴を管理する分散型のバージョン管理システムであり、もともとLinuxの開発チームが使用しており、それが徐々に世界中の技術者に広まったとのこと。
※最大の特徴は、分散型であるようにローカル環境(自分のPC)などに全ての変更履歴を含む完全なリポジトリの複製が作成されること!つまり、各ローカル環境がリポジトリのサーバーとなれる!!
Gitは、ローカル環境にもコードの変更履歴を保存(commit)できるので、リモートのサーバに常に接続する必要がない。よって、ネットに接続してなくても作業ができる。
またGitHubは、上記で示したGitの仕組みを利用して、世界中の人々が自分のコードなどを保存・公開することができるようになったWebサービスの名称。
Gitのインストール方法、使い方などはこのページを参考にした