macOS 設定 Tips

LXPLUSにケルベロス認証ログイン

まず、~/.ssh/config(configがなければ作成)に以下を追記。

Host lxplus*
  User [user name]
  Hostname %h.cern.ch
  GSSAPIAuthentication yes
  GSSAPIDelegateCredentials yes

次に、以下を/etc/krb5.conf(krb5.confがなければ作成)に書くと、RHEL8/9系のCERNのマシンにkinit後パスワードなしログインができる。

[libdefaults]
  default_realm = CERN.CH
  default_etypes = aes256-cts-hmac-sha1-96 aes256-cts aes128-cts des3-cbc-sha1 des-cbc-md5 des-cbc-crc
  forwardable = true

チケット入手には以下。

kinit [user name]
#ローカルユーザ名とリモートユーザ名が同じ時は、
kinit
#で良い。

LINUXのBoot Diskを作成

まず、Disk UtilityでUSBキーをフォーマット

diskutil eraseDisk MS-DOS ALMA9_4 /dev/disk4
#"ALMA9_4"と"/dev/disk4"は適宜変更
sudo umount -fv /Volumes/ALMA9_4/
#次にddで書き込むためにアンマウントする。
#diskutil unmountDisk /dev/disk4だと、Volumeの認識外しとともに、/dev/diskXの認識も外すので不可。
sudo dd if=~/Downloads/AlmaLinux-9.4-x86_64-minimal.iso of=/dev/rdisk4 bs=16m
#/dev/disk4ではなくて/dev/rdisk4とするのがポイント。
#/dev/rdisk4はシーケンシャルアクセス用のデバイスになっているので速い。

OpenGateのGeant4をインストール(macOS 15.2 (24C101))

python3.13にopengateが対応していないので、pyenvでpythonのバージョンを該当ディレクトリでのみ3.12に下げて、venvで使う。 参考URL: https://pypi.org/project/opengate/

まずpyenvをbrewでinstallする。
# brew install pyenvだとvirtualenvのpluginが入らなくて上手くいかない。
brew install pyenv-virtualenv
# 下記を設定できるように.bashrcや.zshrcに追記する。
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# 切り替えられるバージョンを確認
pyenv versions
# 切り替えたいバージョンがpyenv用にinstallされていなければ、以下のコマンドで探してインストールする。
pyenv install -l
pyenv install 3.12.8
# 該当venvを設定するディレクトリで以下のコマンドを実行して、そのディレクトリでのみpythonのバージョンを変えられる。
pyenv local 3.12.8
# pythonのバージョンが下がったら、下記コマンドでopengateをvenv環境にインストールする。
python -m venv opengate_env
source opengate_env/bin/activate
python3 -m pip install opengate
# pyenvで入れたpythonにはsetuptoolsが無いため、下記コマンドでインストール。
python3 -m pip install setuptools

# opengateで書いた検出器の絵を出したければpyvistaが必要。
python3 -m pip install pyvista
# opengateがちゃんと動くかどうかを下記コマンドで試す。
opengate_tests

本家Geant4をインストール(macOS 15.2 (24C101))

本家geant4も使えるようにする。 参考サイト: http://geant4-dna.in2p3.fr/styled-6/styled-12/index.html

# 依存関係を解消
brew install qt@5
brew install xerces-c

# QtのPATHを通す。<version>は適宜変更。
# デフォルトではbrewは/usr/local/以下にインストールする。
# 場所が分からなければ "brew info qt@5" などで調べると良い。
# (brew install qt@5 を実行した際に、下記のものをzshrcなどに足せという丁寧な説明が出ているので参考にすると良い)
export PKG_CONFIG_PATH=/opt/homebrew/Cellar/qt@5/<version>/lib/pkgconfig/
export PATH=/opt/homebrew/Cellar/qt@5/<version>/bin:$PATH

# geant4をダウンロード。特定のversionに変更。
cd /path/to/somewhere
git clone https://gitlab.cern.ch/geant4/geant4.git geant4_src
cd geant4_src
git checkout v11.3.0
cd -

# ビルドするディレクトリを作成し、cmakeする。
# (インストールするディレクトリやxerces-cのバージョンは適宜置き換える)
mkdir geant4_build
cd geant4_build
cmake \
-DCMAKE_INSTALL_PREFIX=/path/to/somewhere/geant4_v11.3.0 \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DGEANT4_USE_GDML=ON \
-DGEANT4_BUILD_MULTITHREADED=ON \
-DXERCESC_ROOT_DIR=/opt/homebrew/Cellar/xerces-c/<version> \
-DGEANT4_USE_QT=ON \
-DGEANT4_INSTALL_EXAMPLES=ON \
-DGEANT4_INSTALL_DATA=ON \
-DGEANT4_USE_SYSTEM_EXPAT=OFF \
-DGEANT4_BUILD_TLS_MODEL=auto \
../geant4_src

# コンパイルしインストールする。
time cmake --build . --target install -- -j8

# geant4用のsetup.shを作成して、以下の内容を書く。
cd /path/to/somewhere/geant4_v11.3.0/bin
source geant4.sh
export G4COMP=~/work/ResearchesAssistProf/Geant4/geant4_v11.3.0/lib/Geant4-11.0.0
export CMAKE_PREFIX_PATH=$G4COMP
alias comp='cmake -DGeant4_DIR=$G4COMP -DGEANT4_BUILD_MULTITHREADED=ON'
cd - >> /dev/null

# geant4を使用したアプリケーションを作る場合には以下を実行する。
source /path/to/somewhere/setup.sh

# Exampleの実行
mkdir /path/to/somewhere/myexample
cd /path/to/somewhere/myexample
cp -r ../geant4_v11.3.0/share/Geant4/examples/basic/B4 ./
mkdir B4-build && cd B4-build
comp ../B4 #setupで設定したcmakeのalias
make -j8

# 実行してみる。
cd B4a
./exampleB4a
(GUIが立ち上がったら、下部Session:に"/control/execute run1.mac"などと入力し実行すると、カッコいいイベントディスプレイが見れる)

# CERN ROOTと一緒にコンパイルしてみる。
# cmake プロジェクトにROOTを足すには、ソースコードのディレクトリにあるCMakeFile.txtに以下を追加/追記する。
#----------------------------------------------------------------------------
# Added to use ROOT libralies
find_package(ROOT REQUIRED)
include_directories(${ROOT_INCLUDE_DIRS})
# 元々あるはずのtarget_link_librariesに${ROOT_LIBRARIES}を足す。
target_link_libraries(exampleB4d PRIVATE ${Geant4_LIBRARIES} ${ROOT_LIBRARIES})
# 例えば上記のようになるはず。
# 全てのライブラリが${ROOT_LIBRARIES}に含まれているわけではないので、稀に
find_package(ROOT REQUIRED COMPONENTS RIO Net)
# のように個別に足す必要がある。参考URLは以下。
https://root.cern/manual/integrate_root_into_my_cmake_project/