######################################## macOS 設定 Tips ######################################## LXPLUSにケルベロス認証ログイン ================================= まず、~/.ssh/config(configがなければ作成)に以下を追記。 .. code-block:: Host lxplus* User [user name] Hostname %h.cern.ch GSSAPIAuthentication yes GSSAPIDelegateCredentials yes 次に、以下を/etc/krb5.conf(krb5.confがなければ作成)に書くと、RHEL8/9系のCERNのマシンにkinit後パスワードなしログインができる。 .. code-block:: [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 チケット入手には以下。 .. code-block:: shell kinit [user name] #ローカルユーザ名とリモートユーザ名が同じ時は、 kinit #で良い。 GitLab runner上でCERN .CHにケルベロス認証 =========================================== keytabの作成に関する大きな罠があるのでハマった。 参考URL: https://community.cloudera.com/t5/Community-Articles/quot-kinit-Preauthentication-failed-while-getting-initial/ta-p/346998 .. code-block:: # Lxplus上でKeytab fileを作成する kinit # チケットを入手 klist # チケットの確認 ktutil # ktutilのプロンプトに入るのでを置き換えて以下のコマンドを打つ ktutil: addent -password -p @CERN.CH -k 1 -e aes256-cts-hmac-sha1-96 -s "" Password for @CERN.CH: ktutil: addent -password -p @CERN.CH -k 1 -e aes128-cts-hmac-sha1-96 -s "" Password for @CERN.CH: ktutil: write_kt .keytab ktutil: quit # は"CERN.CH<@cern.chのメールアドレスの前に付くfirstname.lastnameの文字列>"(例:CERN.CHjohn.doe)? # 調べる方法もトリッキーだが、上記のaddentの-sオプションなしで作った適当なkeytabファイルを使って、 KRB5_TRACE=/dev/stdout kinit -kt .keytab | grep salt # のコマンドで調べられる。 # 作成したkeytabファイルが有効かどうかは、以下のコマンドで調べられる。 kinit -kt .keytab # kinit: Pre-authentication failed: Invalid argument while getting initial credentialsなどのエラーが出なければOK。 この.keytabファイルをgitlabの各プロジェクトのSettings->CI/CD->Variablesに登録したい。 "Add variable"からFileをアップロードできるはずだが、なぜかuploadボタンが見当たらないので、base64で一旦エンコードしてからgitlab runner上でkeytabに戻す。 .. code-block:: shell # 下記のeos_accessを参考に.gitlab-ci.ymlをgitプロジェクトに作成する。 # https://gitlab.cern.ch/gitlabci-examples # base64 -w 0 .keytabで得られる長い文字列をKRB5_KEYTAB_B64というvariableとして登録。 # 悪用されないようにこの変数はVisibility属性を"Masked"にしておくこと。 # 以下が.gitlab-ci.ymlの例。 myjob (k8s): tags: # Make your job be executed in a shared runner that has EOS mounted # by providing the 'k8s-eos' or 'eos' tags - k8s-eos script: ###! Set up your kerberos credentials - echo "Decoding keytab file" - echo "$KRB5_KEYTAB_B64" | base64 -d > /tmp/krb5.keytab - chmod 600 /tmp/krb5.keytab - kinit @CERN.CH -k -t /tmp/krb5.keytab ###! access your EOS user space or project ###! Access your personal folder - ls /eos/user// ###! Access the project you have access to - ls /eos/project// # Build->PipelinesからCIの結果を確認して、問題がないか確認。 LINUXのBoot Diskを作成 ================================== まず、Disk UtilityでUSBキーをフォーマット .. code-block:: 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はシーケンシャルアクセス用のデバイスになっているので速い。 CERN ROOTをビルド ================================== 適当なバージョンのROOTのソースコードをどこかにダウンロードしておく。 PyROOTを有効化させたものを作る。 .. code-block:: # まずは任意のpythonバージョンで、仮想環境を作ってnumpyがあるとcmakeに認識させる準備。 # このvenvはbuild用なので、実際のプロジェクト毎のvenvは好きなように別途作れば良い。 python3 -m venv build_python_env source build_python_env/bin/activate python3 -m pip install numpy # MathMoreを有効化させるためにgslをbrewからインストール。 brew install gsl # インストール先の指定などに用いる環境変数をセットしてcmake。 export ROOTINSTALL=/Users//local/ROOT_CERN/root-6.36.06-py312 #任意の場所に変更。 export PYEXE="$(which python3)" cmake ../root_src -DCMAKE_INSTALL_PREFIX="$ROOTINSTALL" -DPython3_EXECUTABLE="$PYEXE" -Dpyroot=ON # Makeしてinstallする。 cmake --build . -j $(sysctl -n hw.ncpu) cmake --install . # 使用するときは都度下記コマンドで有効化すると環境を汚さない。 source /Users//local/ROOT_CERN/root-6.36.06-py312/bin/thisroot.sh OpenGateのGeant4をインストール(macOS 15.2 (24C101)) =================================================== python3.13にopengateが対応していないので、pyenvでpythonのバージョンを該当ディレクトリでのみ3.12に下げて、venvで使う。 参考URL: https://pypi.org/project/opengate/ .. code-block:: まず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 26.2) =================================================== 本家geant4も使えるようにする。 参考サイト: http://geant4-dna.in2p3.fr/styled-6/styled-12/index.html .. code-block:: # 依存関係を解消 brew install qt brew install xerces-c # QtのPATHを通す。は適宜変更。 # デフォルトではbrewは/usr/local/以下にインストールする。 # 場所が分からなければ "brew info qt" などで調べると良い。 # (brew install qt を実行した際に、下記のものをzshrcなどに足せという丁寧な説明が出ているので参考にすると良い) export PKG_CONFIG_PATH=/opt/homebrew/Cellar/qt//lib/pkgconfig/ export PATH=/opt/homebrew/Cellar/qt//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.4.0 cd - # ビルドするディレクトリを作成し、cmakeする。 # (インストールするディレクトリやxerces-cのバージョンは適宜置き換える) mkdir geant4_build mkdir /path/to/somewhere/geant4_v11.4.0 #インストール先も事前に作成 cd geant4_build cmake -S ../geant4_src -B .\ -DCMAKE_INSTALL_PREFIX=/path/to/somewhere/geant4_v11.4.0 \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DGEANT4_USE_GDML=ON \ -DXERCESC_ROOT_DIR=/opt/homebrew/Cellar/xerces-c/ \ -DGEANT4_USE_QT=ON \ -DGEANT4_INSTALL_EXAMPLES=ON \ -DGEANT4_INSTALL_DATA=ON \ -DGEANT4_USE_SYSTEM_EXPAT=OFF \ -DGEANT4_BUILD_TLS_MODEL=auto # コンパイルしインストールする。 time cmake --build . --target install -- -j$(sysctl -n hw.ncpu) # geant4用のsetup.shを作成して、以下の内容を書く。 cd /path/to/somewhere/geant4_v11.4.0/bin source geant4.sh export G4COMP=/path/to/somewhere/geant4_v11.4.0/lib/Geant4-11.4.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.4.0/share/Geant4/examples/basic/B4 ./ mkdir B4-build && cd B4-build comp ../B4 #setup.shで設定したcmakeのalias make -j$(sysctl -n hw.ncpu) # 実行してみる。 cd B4a ./exampleB4a #(GUIが立ち上がったら、下部Session:に"/control/execute run1.mac"などと入力し実行すると、カッコいいイベントディスプレイが見れる) ./exampleB4a run1.mac #(とするとbatch modeで起動。GUIが立ち上がると基本的に遅いので、/run/beamOn 100程度に留めるが吉。Qtのメモリ漏れが酷いのが致命的。) # CERN ROOTと一緒にコンパイルしてみる。 # (v11.4.0では、ROOTをthisroot.shで設定してからcompすると下記の手順は不要っぽい?) # 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/