SolarSoftのメンテナンス@花山天文台

このページは、花山天文台のSolar SoftWare管理者用です。

作業は kipsup にユーザー yohkoh でログインして行う (rootで行わないこと!)

1. 設定ファイルのカスタマイズ@花山天文台

$SSW/site/setup/, $SSW/optical/hida/ 以下のファイルは常にバックアップを取っておくこと!!

現在花山天文台では $SSW の値は /opt/ssw$SSWDB の値は /opt/sswdb となっている。

原則として$SSW/gen/ 以下のファイルは変更せず、$SSW/site/ 以下のファイルを変更するようにする。変更してよいファイルは枠で囲っている。通常のcshスクリプトのように見えて、setenv以外の行が無視される設定ファイルがあることに注意。以下、SolarSoft 起動時にファイルが読み込まれる順に説明する。

source $SSW/gen/setup/setup.ssw とした時に読み込まれるファイル (読み込まれる順に記載)

あらかじめ $SSW 環境変数と $SSW_INSTR (省略時の値は gen) が設定されている必要がある。

1. $SSW/gen/setup/setup.ssw : SSWの環境変数設定設定スクリプト

2以下の各ファイルを読み込むcshスクリプト。最後にエイリアス sswidl, sswidlde を追加する。

2. $SSW/site/setup/setup.ssw_paths : サイト固有の path 設定ファイル

SolarSoft DataBase の場所を指す $SSWDB 環境変数、SOHOのデータの場所を指す$SOHO_DATA環境変数などをここで設定する。

このファイルはcshスクリプトのように見えるが、cshスクリプトではない。このファイルは $SSW/gen/bin/setenv_list2 により処理されるため、setenv 以外の行は無視される。複数のパスをカンマ区切りで記載した場合、存在するディレクトリのうち、最も左に書いたディレクトリが選ばれる。

3. $SSW/gen/setup/setup.ssw_env : SSWのグローバルな環境変数設定ファイル

SSWがサポートする全てのミッション ($SSW_MISSIONS 環境変数)、各ミッションに含まれる装置 ($SSW_SOHO_INSTR, $SSW_YOHKOH_INSTR 環境変数など)、SSWがサポートする全ての装置 ($SSW_INSTR_ALL 環境変数) などの重要な環境変数を設定するファイル。これらの環境変数は実際に対応する装置のファイルがインストールされているかに関わらず設定される。

このファイルは、$SSW/gen/setup/setup.ssw からは通常のcshスクリプトとして読み込まれるので全ての行が処理されるが、ssw_load_instr.prossw_instr_info.prossw_setup_windows.pro から読み込まれる際にはfile_setenvまたはset_logenvにより処理されるためSETENV 以外の行は無視される。

4. $SSW/gen/setup/setup.<MISSION>_env, $SSW/site/setup/setup.<MISSION>_env, ~/setup.<MISSION>_env: ミッションごとの環境変数設定スクリプト

ミッションごとに環境変数を設定するcshスクリプト。<MISSION>soho, yohkoh 等のミッション名。$SSW_INSTRの設定値に関わらず全てのミッションについて処理される。

カスタマイズするときは、$SSW/gen/setup/setup.<MISSION>_env ではなく $SSW/site/setup/setup.<MISSION>_env または ~/setup.<MISSION>_env (ユーザーごと) を編集する。

例えば、RHESSI level 0 データの場所を指す HSI_DATA_ARCHIVE 環境変数 を変更するときには、$SSW/gen/setup/setup.hessi_env は直接編集せず、$SSW/site/setup/setup.hessi_env にコピーしてから編集する。

4.1. $SSW/site/setup/setup.optical_env : 飛騨のデータ解析用プログラムの path 設定スクリプト

SSW_OPTICAL_INSTR, SSW_INSTR_ALL 環境変数に optical/hida を追加するためのcshスクリプト。

5. $SSW/site/setup/setup.ssw : サイト固有の環境変数設定スクリプト

SSWデフォルトの環境変数を上書きする際などに用いるcshスクリプト。

6. $SSW/site/setup/setup.<INSTR>_paths, <観測装置のディレクトリ>/setup/setup.<INSTR>, <観測装置のディレクトリ>/setup/setup.<INSTR>_env, $SSW/site/setup/setup.<INSTR>, $SSW/site/setup/setup.<INSTR>_env, ~/setup.<INSTR>, ~/setup.<INSTR>_env: 観測装置ごとの環境変数設定ファイル・スクリプト

<INSTR>sxt, sot 等の観測装置・パッケージ名。$SSW_INSTR で指定された観測装置・パッケージのみ、その装置・パッケージの設定ファイルが処理される。各ディレクトリの setup.<INSTR>_env は、setup.<INSTR> が存在しない場合のみ読み込まれる。

$SSW/site/setup/setup.<INSTR>_pathssetenv_list2 で処理される設定ファイル。その他のファイルはcshスクリプト。

$SSW_INSTR に gen が含まれていない場合、$SSW_INSTR の先頭に gen が挿入される。

7. その他のスクリプト

最後に、$SSW/gen/setup/setup.ssw_device, $SSW/site/setup/setup.ssw_device, ~/setup.ssw_device (プリンタ・テープドライブ等のデバイスの設定スクリプト。花山では未使用), $SSW/gen/setup/setup.ssw_alias, $SSW/site/setup/setup.ssw_alias, ~/setup.ssw_alias (エイリアスの設定スクリプト)の各cshスクリプトが処理される。

sswidl ($SSW/gen/setup/ssw_idl) を実行したときに読み込まれるファイル (読み込まれる順に記載)

sswidlde ($SSW/gen/setup/ssw_idl/ssw_idlde) の場合も同様。

1. $SSW/gen/setup/ssw_idl : sswidl起動スクリプト

環境変数 $SSW_INSTR で指定された装置・パッケージごと(genを含む)$SSW/<MISSION>/<INSTR>/idl/atest:+$SSW/<MISSION>/<INSTR>/idl (irisのように1ミッション=1装置の場合は、$SSW/<INSTR>/idl/atest:+$SSW/<INSTR>/idl) を $IDL_PATH に順番に追加する。

IDLのバッチファイルを ~/ssw_idl.<PID> (<PID>ssw_idlのPID) という名前でユーザーのホームディレクトリに自動生成(後述)し、$IDL_STARTUP 環境変数の値ににこのバッチファイルを設定し、IDLを起動する。IDLは起動時に$IDL_STARTUP 環境変数で指定されたバッチファイルを実行する。

環境変数 $IDL_DIR が設定されていない場合自動設定を試みるが、最近のIDLのデフォルトのインストールパスではうまく動かない(Cannot find idl directory - (IDL_DIR)というエラーメッセージが表示されてssw_idlが起動しない)ので、あらかじめ $IDL_DIR を前もってどこかで設定しておく。

2. $SSW/site/setup/ssw_motd : 起動メッセージファイル

ssw_idl 開始直後(IDL起動前)にコンソールに表示されるユーザー向けのメッセージを書くファイル。ただし、すぐに大量の起動メッセージにより画面外に流されてしまうため、多分誰も読んでくれない。

3. ~/ssw_idl.<PID> : IDL起動時に実行されるIDLバッチファイル (自動生成)

毎回起動時に自動生成される。ssw_idlのPIDが末尾につく。ssw_idlが正常終了した場合自動的に削除されるが、異常終了すると残ってしまうことがある。sswidlde利用時の場合のファイル名は~/ssw_idlde.<PID>となり、正常終了時でも自動的に削除されない。

中身は以下のファイルを結合したもの:

gen と各装置の IDL_STARTUP$SSW_INSTR で指定された順に結合される(必ずしもgenが先頭になるとは限らない)。$SSW_INSTRgen が含まれていない場合、$SSW_INSTR の先頭に gen が挿入されるため、$SSW/gen/setup/IDL_STARTUP は必ず含まれる。

3.1. $SSW/gen/setup/IDL_STARTUP: グローバルなIDL起動ファイル

$SSW_CONTRIBUTED!path の先頭に挿入する。

ssw_addmm_gen を呼び出し、$SSW_INSTR 変数に含まれる観測装置が所属するミッション(MISSION)ごとに、!path に$SSW/<MISSION>/gen/idl/ を追加し、$SSW/<MISSION>/setup/IDL_STARTUP を実行する。
stereo, vobs, radio, optical, solarb, hinode, so が対象。soho, yohkoh, sdo はここでは対象外であることに注意。

3.2. $SSW/<MISSION>/<INSTR>/setup/IDL_STARTUP, $SSW/<INSTR>/setup/IDL_STARTUP: 各観測装置のIDL起動ファイル

各装置のためのさまざまな!pathや環境変数が設定される。依存関係にあるパッケージの設定が追加される場合もある。

sdo/aia, sdo/eve, sdo/hmi それぞれのIDL_STARTUP 中で、!path$SSW/sdo/gen/idl が追加される。

3.3. $SSW/gen/setup/setup.sswdb_env: Yohkoh関連のデータベースの場所を設定する

~/ssw_idl.<PID> (元ファイルは $SSW/gen/setup/IDL_STARTUP) から ssw_setsswdb_gen 経由で参照される。

3.4. $SSW/site/setup/IDL_STARTUP: サイト固有のIDL起動ファイル

$SSW/site以下にあるサイト固有のファイルだが、デフォルトで重要な処理が入っているので変更する際は注意

$SSW_INSTRに、soho, yohkoh の装置(ミッション名でも装置名でも可)が含まれている場合には、$SSW/soho/gen/idl, $SSW/spartan/idl または $SSW/yohkoh/gen/idl, $SSW/yohkoh/ucon/idl, $SSW/spartan/idl!path に追加する。

アップデート時に用いられるファイル

1. $SSW/site/setup/setup.ssw_upgrade : SSWアップデート対象を指定

このファイルの SSW_INSTR から始まる行で列挙された装置が、go_update_ssw.pro による更新対象となる。(ssw_upgrade.pro を直接利用する場合には無視される)

デフォルトでは存在しないので $SSW/site/setup/setup.ssw_upgrade_template をコピーして編集する。

$SSW_INSTRhidaを追加しないこと。もし追加した状態でアップデートを実行すると、$SSW/optical/hidaが削除されてしまう。

2. $SSW/site/setup/setup.sswdb_upgrade : SSWDBアップデート対象を指定

go_update_ssw.pro, sswdb_upgrade.pro による更新対象とするデータベースを指定する。親子関係にあるデータベースを両方とも指定すると、ファイルのダウンロードが複数回行われてネットワーク帯域と時間の無駄なので、どちらか一方のみ指定する。(例: soho/gensoho/gen/spice の両方を指定すると、soho/gen/spice 以下のファイルは2回ダウンロードされるので、soho/gen のみを指定する)

デフォルトでは存在しないので $SSW/site/setup/setup.sswdb_upgrade_template をコピーして編集するか、SolarSoft Data Base (SSWDB) Configuration Form で作成することができる。

その他

1. $SSW/site/setup/ssw_site.config : インストール時に用いられた config ファイル

インストール時の設定が記載されている。インストール完了後は不要。

2. $SSW/site/setup/setup.ssw_env : サイト固有の環境変数設定ファイル

現在、Unix系OSでは原則として利用されない。Windows上でのSolarSoft起動時 ($SSW/gen/idl/ssw_system/IDL_STARTUP_WINDOWS.pro->ssw_setup_windows.pro)のみ利用されるように見える。set_logenv (またはfile_setenv)により処理されるためSETENV 以外の行は無視される。

3. $SSW/optical/hida/* : 飛騨のデータ解析用プログラム

飛騨の共通解析用ツールを置く。現在はメンテナンスされていないので、利用する際は要注意。

2. 起動用スクリプト

ユーザーの利便性のため、SSW 起動用スクリプト SSWidl と IDLDE(開発環境)版のSSW 起動用スクリプト SSWidlde を用意している。各マシンの /opt/bin に置く。歴史的経緯とユーザーの利便性のため、sswidlidlh コマンドで SSWidl が、sswidlde コマンドで SSWidlde が起動される。

SSWidlの中身は以下のようになっている。

#!/bin/csh

if (! $?IDL_DIR)   setenv IDL_DIR   /opt/idl/idl
if (! -x "$IDL_DIR/bin/idl") then
        echo incorrect value for IDL_DIR environment variable.
        exit
endif

if (! $?SSW)       setenv SSW   /opt/ssw
if (! -f "$SSW/gen/setup/setup.ssw") then
        echo incorrect value for SSW environment variable.
        exit
endif

if (! $?SSW_INSTR) then
        setenv SSW_INSTR "aia hmi sot xrt eis iris secchi lasco eit hessi xray spex chianti"
endif

source $SSW/gen/setup/setup.ssw

onintr -
sswidl $argv[*]

SSWidldeの中身は以下のようになっている。

#!/bin/csh

if (! $?IDL_DIR)   setenv IDL_DIR   /opt/idl/idl
if (! -x "$IDL_DIR/bin/idlde") then
	echo incorrect value for IDL_DIR environment variable.
	exit
endif

if (! $?SSW)       setenv SSW   /opt/ssw
if (! -f "$SSW/gen/setup/setup.ssw") then
	echo incorrect value for SSW environment variable.
	exit
endif

if (! $?SSW_INSTR) then
	setenv SSW_INSTR "aia hmi sot xrt eis iris secchi lasco eit hessi xray spex chianti"
endif

source $SSW/gen/setup/setup.ssw

onintr -
$SSW/gen/setup/ssw_idlde $argv[*] &
set pid=$!
wait
set temp_startup=~/ssw_idlde.$pid
if (-e $temp_startup) rm -f $temp_startup

$IDL_DIR 環境変数を起動スクリプト中で設定していることに注意。

sswidl を起動する直前で onintr - としているのは、ユーザーがSSW使用中に Ctrl + C を押下すると、ユーザーがログアウトした後もIDLのプロセスがバックグラウンドで残り続けてライセンスを浪費するという現象が発生していたため。(Ctrl + C で idl の親プロセスの SSWidl が終了した結果、孤児になりバックグラウンドで実行中のidlに対しては、ログアウト・回線切断時にも SIGHUP が送出されない)

特定のバージョンのIDL上でSSWを起動する SSWidl85 (IDL 8.5を利用)~SSWidl90 (IDL 9.0を利用)、SSWidlde85SSWidlde90 などもある。

/opt/etc/profile.d/idl.sh, /opt/etc/profile.d/idl.csh でIDLの一般的な環境設定を行っている。例えば、IDLが用いるスレッド数(IDL_CPU_TPOOL_NTHREADS)を各マシンのNUMAノードごとの物理コア数に設定している。

3. SSW, SSWDB をまとめて update

2019年8月からアップデートにFTPを使えなくなったので、それ以降一度もSSWのアップデートを行っていない場合には、以下の操作を行う前にあらかじめ SSWのダウンロードページからアップグレード用スクリプトをダウンロードし実行することで、ssw_upgrade.pro 等をwget対応版に更新しておく必要がある。

以下のファイルでアップデート対象を指定する。

$SSW/site/setup/setup.ssw_upgrade : SSWアップデート対象を指定

$SSW/site/setup/setup.sswdb_upgrade : SSWDBアップデート対象を指定

IDLで以下のコマンドを実行する。

IDL> .run go_update_ssw

go_update_ssw は、setup.ssw_upgrade を読み込み SSW_INSTR 環境変数をセットした上で、ssw_upgrade.prosswdb_upgrade.pro を呼び出している。

ssw_upgrade.pro を直接実行した場合には、実行の時点での SSW_INSTR 環境変数の値が使われる。(setup.ssw_upgrade は参照されない)

パーミッションが 444 (書き込み保護)などのファイルや、更新日時が未来となっているファイルがあると、当該ファイルは以後更新されない場合があるので修正しておく。また、他のユーザーが読み込み不可、または書き込み可能となっているファイル・ディレクトリがあれば、ついでにパーミッションを修正しておく。

現在のssw_upgrade.pro では、シンボリックリンクは考慮されくなったため、アップデート前にローカルのシンボリックリンクは削除しておくほうが安全かもしれない。latestfile -> oldfile.dat というシンボリックリンクがサーバー・ローカルの両方にあったとして、サーバー側のシンボリックリンクが latestfile -> newfile.dat と変更された場合、ローカルでは oldfile.dat の内容が newfile.dat の内容に置き替わってしまう可能性がある。(具体例としては $SSW/stereo/gen/data/spice/other/bc_mpo_fcp_latest.bsp)

SSW treeの外を指しているシンボリックリンク (例: $SSW/soho/gen/data/attitude/nominal_roll_attitude.dat -> ../../../../../soho/public/data/ancillary/attitude/roll/nominal_roll_attitude.dat) は削除しておく。リンク切れの無効なシンボリックリンクは find $SSW -xtype l で探すことができる。

cron で自動的に実行する

$SSW/gen/bin/ssw_batch go_update_ssw $SSW/site/logs/update_ssw.log

4. SSW の手動 update

IDL でパラメータなしで
IDL> ssw_upgrade,/spawn
を実行すれば SSW_INSTR 環境変数で指定された観測装置・パッケージのファイルをアップデートしてくれる。(setup.ssw_upgrade は参照されない)

$SSW_INSTRhidaを追加しないこと。もし追加した状態でアップデートを実行すると、$SSW/optical/hidaが削除されてしまう。

特定の観測装置・パッケージみ更新するには
IDL> ssw_upgrade,/装置・パッケージ名,/spawn

とする。(例えば、ssw_upgrade,/psp,/spawn)

観測装置・パッケージを追加

IDL> ssw_upgrade,/装置・パッケージ名,/spawn
とする。例えば、IRIS の場合、
IDL> ssw_upgrade,/iris,/spawn

観測装置名・パッケージ名の一覧は SSW INSTALLATION FORM か、setup.ssw_env を参照。

ファイル数が多いと時間がかかるので、SSW INSTALLATION FORMでInstallation Type = Upgrade Exsisting とし、追加する装置・パッケージにチェックを入れてダウンロードしたスクリプトを用いて、インストールするほうが早いかもしれない。このインストールスクリプトはhttps://soho.nascom.nasa.gov/solarsoft/offline/swmaint/tar/からtarファイルをダウンロードして展開しているので、手動でダウンロードと展開を行ってもよい。(ssw_ssw_site.tar.Zを上書きで展開してしまうと、ローカルでカスタマイズした設定が消えてしまうので注意)

追加後は $SSW_INSTR 環境変数に装置・パッケージ名を追加する。

$SSW/site/setup/setup.ssw_upgrade の編集も忘れずに。

手動でミラーリング

ミラー先: 花山 ミラー元: https://soho.nascom.nasa.gov/
gen $SSW/gen/ /solarsoft/gen/
binaries $SSW/packages/binaries/ /solarsoft/packages/binaries/
soho $SSW/soho/ /solarsoft/soho/
yohkoh $SSW/yohkoh/ /solarsoft/yohkoh/
他の観測装置・パッケージについても同様

例えば次のようにして同期を行う:
wget -np -nH -N -r -l inf -P /opt/ssw/gen --cut-dirs=2 https://soho.nascom.nasa.gov/solarsoft/gen/
wget -np -nH -N -r -l inf -P /opt/ssw/hinode/xrt --cut-dirs=3 https://soho.nascom.nasa.gov/solarsoft/hinode/xrt/

$SSW/site/ 以下にはカスタマイズされた設定ファイルが保存されているので、同期してしまわないよう注意。

5. SSWDB の手動 update

IDL でパラメータなしで
IDL> sswdb_upgrade,/spawn
を実行すれば $SSW/site/setup/setup.sswdb_upgrade に記載されたデータベースをアップデートしてくれる。

特定のデータベースのみをアップデートするときは
IDL> sswdb_upgrade,['ydb','tdb'],/spawn
などとする。

観測装置を追加

IDL> sswdb_upgrade,'データベース名',/spawn

今後の自動アップデートの対象に加えるため、$SSW/site/setup/setup.sswdb_upgrade の編集も行う必要がある。

全てのデータベースの一覧は SolarSoft Data Base (SSWDB) Configuration Form を参照。インストールに必要な容量(日々増加する)はsswdb_sizes.datで確認する。

手動でミラーリング

ミラー先: 花山 ミラー元: https://soho.nascom.nasa.gov/
TRACE $SSWDB/tdb/ /sdb/tdb/
HESSI $SSWDB/hessi/ /sdb/hessi/
SOHO $SSWDB/soho/ /sdb/soho/
STEREO $SSWDB/stereo/ /sdb/stereo/
Hinode $SSWDB/hinode/ /sdb/hinode/
GOES $SSWDB/goes/ /sdb/goes/
ACE $SSWDB/ace/ /sdb/ace/
IRIS $SSWDB/iris/ /sdb/iris/
Yohkoh & GOES $SSWDB/ydb/ /sdb/ydb/
他のデータベースについても同様

例えば次のようにして同期を行う:
wget -np -nH -N -r -l inf -P /opt/sswdb/stereo --cut-dirs=2 https://soho.nascom.nasa.gov/sdb/stereo/

6. SolarSoftのユーザー設定

現在の花山・飛騨の環境ではSSW環境変数は自動的に設定されるため、一般ユーザーは明示的に指定する必要はない。

SSW_INSTR 環境変数で、対象とする観測装置・パッケージ名を指定する。シェルの設定ファイル (cshの場合 ~/.cshrc)で、SSW_INSTR 環境変数に、必要な観測装置の名前を指定する。

例: setenv SSW_INSTR "sot xrt eis iris aia hmi"

SSW_INSTR 環境変数で gen を省略すると、先頭に書いたものとして扱われる。

必要以上に装置を登録しすぎると、ファイル・サブルーチン・関数の名前が衝突する可能性が高まる。登録する装置は必要最小限にしておき、用途に応じて切り替えるとよい。衝突しているファイル名の一覧は check_conflict で出力できる。

名前の衝突により、IDL標準ライブラリやユーザーのライブラリ関数を使えない場合の対処法として、sswidl (ssw_idl) を実行する際に ahead オプションをつけることで、IDL標準ライブラリとユーザーのライブラリの優先順位を高くすることができる。

衝突の例として、IDL 8.0 でIDL標準ライブラリに追加された plot 関数 ($IDL_DIR/lib/graphics/plot.pro) と $SSW/soho/mdi/idl/egse/plot.pro はファイル名が同じなので、SSW_INSTR 環境変数で mdi を有効にしていると、そのままでは前者の plot 関数を利用できない。

~/.cshrcの編集が終わったらsource ~/.cshrcを実行することで新しい設定を反映する。

花山・飛騨でのSolarSoftの起動コマンドはsswidlSSWidlidlhのいずれか。現在はこれらの動作は同一となっている。

IDLDE版SolarSoftの起動コマンドはsswidldeまたはSSWidlde。これらの動作は同一となっている。

SolarSoft起動後に装置を追加するには ssw_path,/trace,/sot などのようにする。

Last update : 2024/01/24