HEASoft を Ubuntu 16.04 にインストール
HEASARC の HEASoft を Ubuntu 16.04 にインストールしました。
HEASARCのインストールアウトラインと、 Debian 系インストールマニュアルを参考にしました。 前者のほうが詳細なので基本的にそれを読めばあまり滞りなく進みます。
前提として、操作はすべて bash でおこなっています。
ソースをダウンロード
まずはソースをダウンロードします。 お誂えのバイナリをインストールしてもよいのですが、 最新のソースを自分でビルドするほうが心配が少ないと思います。
STEP 1 - Select the type of software:
SOURCE CODE DISTRIBUTION (Recommended):
のところで Source Code
のラジオボタンにチェックを入れると、
様々なアーキテクチャのリストが表示されます。
その中から自分の使いたいプラットフォームのものを選ぶことができます。
これはソースをダウンロードする上では不要な操作ですが、
HEASARC 側がユーザ統計をとるために用意しているものです。
全部入りソースをダウンロードするだけならページ上部にある
Complete HEASoft source code (all mission & general-use software)
というリンクを wget するなどしてダウンロードできます。
圧縮されたソースは2GB程度あるので、回線にもよりますがダウンロードには数時間かかります。 今回は2時間かかりました。
必要なパッケージをインストール
ソースをダウンロードしているあいだに、必要なパッケージをインストールしておきます。 Debian 系マニュアルにあるとおり、以下のコマンドでインストールすることができます。
$ sudo apt-get -y install libreadline6-dev $ sudo apt-get -y install libncurses5-dev $ sudo apt-get -y install xorg-dev $ sudo apt-get -y install gcc g++ gfortran $ sudo apt-get -y install perl-modules $ sudo apt-get -y install python-dev
Ubuntu 16.04 の場合、これらのうちのいくつかはすでにインストールされています。
ソースを解凍する
ソースのダウンロードが終わったら、それを解凍します。
$ gunzip -c heasoft6.21src.tar.gz | tar xf -
全部入りソースの圧縮ファイルをダウンロードした場合は上のようなファイル名です。 解凍には1分程度かかります。
ビルドの設定をする
解凍してできたディレクトリに入ります。
$ cd heasoft-6.21/BUILD_DIR/
いまから configure するのですが、Debian 系のマニュアルを読むと setenv
,export
コマンドでコンパイラのパスを丁寧に環境変数に設定しています。
この操作は必ずしも必要ではないですが、コンパイラが正常に参照されていないエラーが出た場合や、
独自にコンパイラを指定したい場合に行います。
bash では以下のコマンドで行います。
パスは環境によりますが、マニュアルにある以下のパスはすべて which
したときのパスと一致していました。
$ export CC=/usr/bin/gcc $ export CXX=/usr/bin/g++ $ export FC=/usr/bin/gfortran $ export PERL=/usr/bin/perl $ export PYTHON=/usr/bin/python
では設定をします。何もオプションをつけずに実行すると、heasoft は先ほど展開した heasoft-6.21
にインストールされます。インストール先は --prefix=インストールしたいディレクトリの絶対パス
で指定できます。
今回は /opt/heasarc/heasoft
にインストールすることにしました。ツールは
/usr/local/heasoft
などにインストールするのもありだと思いますが、
FHSに準拠するならば /usr/local
内にパッケージやベンダーごとのディレクトリをつくるべきではないそうです。
$ ./configure --prefix=/opt/heasarc/heasoft > config.out 2>&1 &
これは、 configure が標準出力するログをエラー含めて config.out に書き込んでいます。
末尾に&
がついているので、処理はバックグラウンドで走ります。
何が起きているか見たい場合は、以下のコマンドで config.out の末尾行を監視できます。
$ tail -f config.out
tail
コマンドは Ctrl+c で終了します。
configure が終わったあとに何かしらのコマンドを実行すると、直後に
[1] 終了 configure
のように表示されます。 設定が無事に終わったでしょうか? config.log の最終行が
configure: exit 0
であれば正常に終了したことを意味しています。 0以外で終了した場合は、 多分エラーがあります。 config.log を読みといて、調べてもわからなければヘルプに連絡することになると思います。
ビルドする
ビルドします。
$ make > build.log 2>&1 &
これも先ほどと同様に make の標準出力をログに残しつつバックグラウンドでコンパイルしています。
tail
でログを監視するのも同様にできます。
終わったら、エラーがないかチェックしましょう。
$ grep -G -e "\*\*\*" build.log | less
これは、ログ内で***
を含む行をless
に渡しています。
less
以外にもmore
など色々と読む手段はあるので好きな方法でやってください。
インストールマニュアルによれば、
char *** ...__PRETTY_FUNCTION__," ***...
という内容に言及したエラーは無視していいそうです。
インストールする
ビルドしたものを設置します。
今回は /opt/heasarc/heasoft
にインストールすることにしたので、
権限的に sudo
が必要でした。
$ sudo make install > install.log 2>&1 &
終わったら先ほど同様の方法でエラーを確認しましょう。 無事インストールできたら、インストール先は以下のようなディレクトリ構造になっています。
$ tree -L 1 /opt/heasarc/heasoft/ /opt/heasarc/heasoft/ ├── Xspec ├── attitude ├── demo ├── ftools ├── heacore ├── heagen ├── heasim ├── heatools ├── hitomi ├── image ├── integral ├── nustar ├── spectral ├── suzaku ├── swift ├── tcltk └── x86_64-unknown-linux-gnu-libc2.23 $ tree -L 1 /opt/heasarc/heasoft/x86_64-unknown-linux-gnu-libc2.23/ /opt/heasarc/heasoft/x86_64-unknown-linux-gnu-libc2.23/ ├── BUILD_DIR ├── bin ├── fguipfiles ├── headas-init.csh -> BUILD_DIR/headas-init.csh ├── headas-init.sh -> BUILD_DIR/headas-init.sh ├── help ├── include ├── lib ├── man ├── refdata ├── share ├── syspfiles └── xrdefaults
初期化
膨大なパスを通してくれるシェルスクリプトを実行します。以下の内容を ~/.bashrc
に記述します。
HEADAS=/opt/heasarc/heasoft/x86_64-unknown-linux-gnu-libc2.23 export HEADAS alias heainit=". $HEADAS/headas-init.sh" heainit
1行目でHEADASという変数にスクリプトがある場所を代入して、
2行目でそれを環境変数にし、
3行目では .
コマンドによって初期化スクリプトが設定する環境変数をカレントシェルでも使えるようにする、
という処理をエイリアス heainit
に設定しています。
これにより、ログオンしたら heainit
を実行すると適切なパスが設定されるようになっています。
しかしターミナルを起動するたびに必ずコマンドを打つのは不合理なので、
heainit
を実行してくれるよう4行目に書いています。
Done
以上でHEASoftのインストールは終わりです。