NASA's HEASoft と CALDBのインストールログ

# はじめに

このページで、HEASoft の install のログについてメモを残しておきたいと思います。 xspec が python 対応したことで、微妙にハマることもありますので。

HEASoft って何？? という人は、

https://qiita.com/yamadasuzaku/items/3e38a716be280db66bdc

を一読ください。


# Ubuntu 

## heasoft 6.31.1 on Ubuntu 18.04.6 LTS

2023.6.22

``` bash:
# download and unzip 
mkdir -p $HOME/software/heasoft/ 
cd $HOME/software/heasoft/ 
tar -zxvf heasoft-6.31.1src.tar.gz

# $HOME/software/heasoft/heasoft-6.31.1/BUILD_DIR 以下へ移動する。

# set environments 
export CC=/usr/bin/gcc
export CXX=/usr/bin/g++
export FC=/usr/bin/gfortran
export PERL=/usr/bin/perl
export PYTHON=$HOME/anaconda3/bin/python

# make
./configure > config.out 2>&1
make > build.log 2>&1
make install 2>&1 | tee install.log
```

PATHの設定
``` bash:
# setup anaconda 2023.6.22                                          
PATH=$HOME/anaconda3/bin:$PATH

# 2023.6.22 setup 
export HEADAS=$HOME/software/heasoft/heasoft-6.31.1/x86_64-pc-linux-gnu-libc2.27
source $HEADAS/headas-init.sh

# CALDB
export CALDB=$HOME/xraydata/caldb
source $CALDB/software/tools/caldbinit.sh
```

## heasoft 6.32.1 on Ubuntu 18.04.6 LTS

2023.10.7

上記と同様で全くエラーが出ずにコンパイルできた。

## XRISM Software Build 8 on Ubuntu 18.04.6 LTS

2024.7.13

上記と同様で全くエラーが出ずにコンパイルできた。

## HEASOFT 6.34 (August 22, 2024)

https://heasarc.gsfc.nasa.gov/docs/software/heasoft/release_notes.html

2024.10.11 

上記と同様で全くエラーが出ずにコンパイルできた。

# Mac 

## HEASOFT 6.34 (August 22, 2024)

https://heasarc.gsfc.nasa.gov/docs/software/heasoft/release_notes.html

2024.10.11 

バイナリで動いた。ただし、

https://qiita.com/yamadasuzaku/items/3e38a716be280db66bdc

に記載の下記２点、

- 1 ./configure は必要
- 2 fv を実行時には、mac の`プライバシーとセキュリティ` から許可ボタンを押す

の２点を忘れないようにしましょう。

:::note alert 
ファイルをダウンロードするだけではないです。
https://heasarc.gsfc.nasa.gov/lheasoft/macos.html
B.2. Configure (Pre-Compiled Binaries)
は、バイナリの場合でも必要です。

例えば、heasoft-6.34/x86_64-apple-darwin23.2.0/BUILD_DIR 以下で、

``` bash:
./configure >& config.txt
```

を実行する必要があります。
:::

これと、[`fv`](https://heasarc.gsfc.nasa.gov/ftools/fv/) を使う場合は、

:::note alert

mac のバイナリを使う場合に、`wish` の開発元を検証できないため開けません、などのエラーメッセージが出て、`fv` などが使えない場合があります。 

wish というのは、`heasoft/heasoft-6.33.1/x86_64-apple-darwin21.6.0/bin/wish` に入っていて、

https://www.tcl.tk/man/tcl8.6/UserCmd/wish.htm

という、昔の GUI を `fv` が使ってるためだと思います。コマンドラインには、

``` bash:
heasoft/heasoft-6.34/x86_64-apple-darwin23.2.0/bin/fv: line 23: 30357 Killed: 9               $FV/bin/wish $FITSVIEWER_LIBRARY/fvInit.tcl -- "$@"
```

というエラーがでます。

解決方法は簡単で、mac のシステム設定 --> プライバシーとセキュリティ を確認し、`fv`を実行すると`許可する`というボタンが生成するので、それを押します。`wish`以外にもいろんなライブラリが許可されてないので、なんども `fv` を実行して許可します。

:::

:::note alert

なぜか、`birby`が残っています。。これは、

``` bash
heasoft-6.34/x86_64-apple-darwin23.2.0/BUILD_DIR]
configure:    operator_path="/Users/birby"
configure.in:    operator_path="/Users/birby"
``` 

の中に含まれる仮のユーザー名なのですが、これは特に configure のオプションで変更するわけではないはずです(私の理解ですが)。

これが残っているせいで、

``` bash:
otool -L `which ftselect`                                        
/Users/syamada/work/software/heasoft/heasoft-6.34/x86_64-apple-darwin23.2.0/bin/ftselect:
	@rpath/libhdinit_6.34.dylib (compatibility version 0.0.0, current version 0.0.0)
	@rpath/libhdutils_6.34.dylib (compatibility version 0.0.0, current version 0.0.0)
	@rpath/libape_2.9.dylib (compatibility version 0.0.0, current version 0.0.0)
	/Users/birby/heasoft-6.34/heasoft-6.34/x86_64-apple-darwin23.2.0/lib/libcfitsio.10.dylib (compatibility version 11.0.0, current version 11.0.0)
	@rpath/libreadline.8.dylib (compatibility version 8.2.0, current version 8.2.0)
	@rpath/libhdio_6.34.dylib (compatibility version 0.0.0, current version 0.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1345.100.2)
```
:::

のように、`/Users/birby/` 以下にある `libcfitsio.10.dylib` を読もうとして、当然ないのでコケます。コケない場合もあって、動的に`LD_LIBRARY_PATH`などから `cfitsio`を探してきて、偶然動くこともあるかと思います。対策としては、

https://qiita.com/yamadasuzaku/items/2804e1d14fa0f2de48e8

の記事にあるように、`install_name_tool` で、`libcfitsio.10.dylib` の設定を手動で変更することです。

あるいは、`/Users/birby/heasoft-6.34/` というディレクトリを生成し、そこにシンボリックリンクを貼ることです。

### 2024.10.28 追記

`xspec` を bash から動かすときに、bash から動かすと環境変数の問題で、birby 問題が再発することが判明。下記の２つで対処した。。

(1) `libcfitsio.10.dylib` 

`libcfitsio.10.dylib` は cfits I/O の枯れたライブラリのはずなので、何でも大丈夫だと思うので、えいやっと、`install_name_tool` で、`heasoft-6.33.1`の`libcfitsio.10.dylib`にリンクをつけることにした。

``` bash:
 install_name_tool -change /Users/birby/heasoft-6.34/heasoft-6.34/x86_64-apple-darwin23.2.0/lib/libcfitsio.10.dylib /Users/syamada/work/software/heasoft/heasoft-6.33.1/x86_64-apple-darwin21.6.0/lib/libcfitsio.10.dylib  /Users/syamada/work/software/heasoft/heasoft-6.34/x86_64-apple-darwin23.2.0/bin/xspec
 ```

(2) homebrew 対策

上の対応だけだと、下記のエラーがには対応できない。

``` bash:
 dyld[18251]: Library not loaded: /Users/birby/homebrew/opt/gcc/lib/gcc/current/libgcc_s.1.1.dylib
```

これは、バイナリを生成した人が、`homebrew/opt`を使ってるのだが、これらのパスの移植ができていない。

諦めて、`/Users/birby/homebrew/opt/gcc/lib/gcc/current` を生成し、そこにシンボリックリンクを貼ることにする。

``` 
cd /Users/birby/ # なければ無理やり作成
sudo mkdir -p homebrew/opt/gcc/lib/gcc/current 
locate libgcc_s.1.1.dylib # 自分の環境でのファイルを探す
sudo ln -s /usr/local/Cellar/gcc/14.1.0/lib/gcc/current/* . #　リンクを貼る
``` 

これで、bash script からも xspec は動いた。(2024.10.28の話)

### 2025.6.6 追記

Apple M4 で HEASoft 6.35.1 のバイナリを動かすのはちょっとトリッキーなので別の記事にまとめました。

https://qiita.com/yamadasuzaku/items/b959e237ba90211ff98a

ソースコードについては、酒井くんの記事を

https://qiita.com/yusuke_s_yusuke/items/b6154c79900e718214b3

# CALDB の インストール

CALDBはダウンロードして PATH を通すだけであるが、マニュアルがわかりにくい。
静的なファイルなので、OSにも依存しないから、Macでダウンロードしてサーバーにコピーでもokです。

1. CALDB の環境変数の場所を決める
    1. 毎回全てのCALDBの更新をする必要はないが、古いものを維持したい場合はディレクトリを分けるなどの工夫が必要。
    2. 例えば、xraydata/caldbdir/20241014 など、更新した日付のディレクトリとして、CALDBの環境変数を設定するなど
    3. 例えば、`export $CALDB=$HOME/xraydata/caldbdir/20241014`

2. CALDB gen の設定 
    1. cd $CALDB 
    2. wget https://heasarc.gsfc.nasa.gov/FTP/caldb/data/gen/goodfiles_gen.tar.Z .
3. CALDB software の設定
    1. mkdir -p $CALDB/software/tools 
    1. cd $CALDB/software/tools 
    3. wget https://heasarc.gsfc.nasa.gov/FTP/caldb/software/tools/caldb_setup_files.tar.Z .
    4. tar -zxvf caldb_setup_files.tar.Z
    5. ファイルの確認
:::note info
software
└── tools
    ├── alias_config.fits
    ├── caldb.config
    ├── caldb_setup_files.tar.Z
    ├── caldbinit.csh
    └── caldbinit.sh
:::

これで、基本的なソフトウェアが設定されるはずです。

次に、ミッション依存の CALDB をインストールします。

https://heasarc.gsfc.nasa.gov/docs/xrism/calib/

から、gen, xrism_gen, resolve, xtend, の CALDBファイルをダウンロードします。

``` bash: 
wget https://heasarc.gsfc.nasa.gov/FTP/caldb/data/xrism/gen/goodfiles_xrism_gen_20240315.tar.gz . 
wget https://heasarc.gsfc.nasa.gov/FTP/caldb/data/xrism/resolve/goodfiles_xrism_resolve_20240815.tar.gz . 
wget https://heasarc.gsfc.nasa.gov/FTP/caldb/data/xrism/xtend/goodfiles_xrism_xtend_20240815.tar.gz . 
wget https://heasarc.gsfc.nasa.gov/FTP/caldb/data/gen/goodfiles_gen_20240822.tar.Z . 
``` 

ダウンロードしたら、`cd $CALDB` で、ファイルを展開するだけで ok です。

ログインシェルに応じて、下記を追記して、`caldbinit.sh` を実行します。

``` bash:.zshrc
export CALDB=$HOME/xraydata/caldbdir/20241014
source $CALDB/software/tools/caldbinit.sh
```

## CALDBが正しくインストールされていることを確認する。

下記のチェックを行い、エラーがないことが確認できればokのはず。

``` bash:
caldbinfo                                                                                        [~/work/software]
Mode (BASIC or INST)
 
Name of Mission[XRISM] 
Name of Instrument[RESOLVE] 
 ...  using gpcaldbinfo 1.0.0
 ** caldbinfo 1.0.2
 ...  using infocaldb   1.0.1
 ...... environ-var/logical CALDB defined
 .........   CALDB path = /Users/syamada/work/software/caldbdir/20241014
 ... environ-var/logical CALDBCONFIG defined
 ...   CALDBCONFIG file = /Users/syamada/work/software/caldbdir/20241014/softwar
     e/tools/caldb.config
 ...... environ-var/logical CALDBALIAS defined
 .........   CALDBALIAS file = /Users/syamada/work/software/caldbdir/20241014/so
           ftware/tools/alias_config.fits
 ...... CALDB is configured for the RESOLVE instrument onboard XRISM
 ......... Cal Index File: /Users/syamada/work/software/caldbdir/20241014/data/x
           rism/resolve/caldb.indx
 ......... Instrument directory: /Users/syamada/work/software/caldbdir/20241014/
           data/xrism/resolve
 ... CALDB appears to be set-up & accessible
 ** caldbinfo 1.0.2 completed successfully
 ```