irafには大抵の作業に必要なパッケージが入っているものであるが、なんらかの事情でデフォルトで入ってないパッケージが必要になった場合インストールするしかない。
例えば三色合成を行うためにはcolorというパッケージが必要であるが、三色合成は科学的に意味のある作業ではないためもともとは入ってない。なのでしかるべきwebサイトからとってきてインストールするわけだが、少々面倒だったので、メモ書きを残すことにした。
インストールしたpcは、vine linux4.0


!NEW!(2012/10/5)
新しくiraf ver2.1.6をインストールしようとしたら、外部パッケージのイン ストールがえらく簡単に出来るようになってたのでそちらのメモ(Macへのirafインストー ルメモの一番下)を参照した方がいいかも。
ただし、noaoが出してる公式(?)パッケージのみでcolorパッケージとかは無い。。。


☆colorパッケージのインストール

◎irafディレクトリの適当な場所にインストールパッケージの受け皿になるディレクトリを作る
こうした作業は必ずこうしろ!というものではなく全体として整合性がとれれば良いと思うのだが、とりあえず自分は
・/irafに新しくextern/colorという名のディレクトリ作成
$ su
# cd /iraf
# mkdir extern
# cd extern
# mkdir color

◎colorパッケージの入手及び展開
irafのcolorパッケージのページからひつようなものをダウンロードし、/iraf/extern/color/内で展開する。
・ダウンロード
上記サイトから適当な場所(自分は/home/ken/tmp)にcolor.tar.Zとcolor-bin.redhat.tar.gzをダウンロードする
・/iraf/extern/color/で展開
# tar xzf /home/ken/tmp/color.tar.Z
# tar xvzf /home/ken/tmp/color-bin.redhat.tar.gz

◎extern.pkgの編集
/iraf/iraf/unix/hlib/にextern.pkgというファイルあり中身は
# External (non core-system) packages. To install a new package, add the
# two statements to define the package root directory and package task,
# then add the package helpdb to the `helpdb' list.
                            
reset  noao     = iraf$noao/
task  noao.pkg    = noao$noao.cl
                          
#reset tables     = /iraf/extern/tables/
#task  tables.pkg  = tables$tables.cl
                          
reset  helpdb    = "lib$helpdb.mip\
             ,noao$lib/helpdb.mip\
#             ,tables$lib/helpdb.mip\
             "
keep
となっている。
これは後から入れたパッケージなどがどこにあるか?実行ファイルは何か?ヘルプはどこを参照するか?などを指定しているのでちゃんと書き換えないとインストールしたパッケージが上手く起動しない。(例えばtablesというパッケージはここには/iraf/extern/tables/というディレクトリにあるとかかれているが実際にはないので、iraf上でロードしてもエラーになってしまう)

・以下のようにcolorに関する記述を加える
# gedit extern.pkg &
# External (non core-system) packages. To install a new package, add the
# two statements to define the package root directory and package task,
# then add the package helpdb to the `helpdb' list.
                            
reset  noao     = iraf$noao/
task  noao.pkg    = noao$noao.cl
                          
#reset tables     = /iraf/extern/tables/
#task  tables.pkg  = tables$tables.cl
                          
reset  helpdb    = "lib$helpdb.mip\
             ,noao$lib/helpdb.mip\
             ,tables$lib/helpdb.mip\
             ,color$lib/helpdb.mip\
             "
reset color      = /iraf/extern/color/
task  color.pkg   = color$color.cl
keep

◎実行ファイルx_color.eをbin,redhat/からsrc/に移動
上記までの作業で、iraf上で
ecl> color
と打てばロードされるが、実行しようとすると、
ERROR: Cannot open connected subprocess (./x_color.e)
と表示されてしまう。
これは/iraf/extern/color/color.clの中で実行ファイルがcolorsrc$x_color.e(color/src/x_color.eと言う意味)と指定されているのにデフォルトではsrc/の中にx_color.eがないためである。
・・・color.cl

なので/iraf/extern/color/bin.redhat/の中からx_color.eを/iraf/extern/color/src/にコピーしてくる
# cd /iraf/extern/color/bin.redhat/
# cp x_color.e ../src/



以上で上手く動くはず!



☆stsdasパッケージのインストール
stsdasとは宇宙望遠鏡データの解析用のパッケージであるが、自身ときどきmaskがけでimfillタスクなどを使うのでインストールしといた。(くわしくはhttp://www.stsci.edu/resources/software_hardware/stsdas などを参照)
基本的にはcolorパッケージと大体一緒だが、stsdasだけでなくtablesパッケージも同時にインストールしなければいけない。更にhttp://co.maxwell.jp/?page=iraf%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EBを参考にやり方を以前と少し変えてみた。(結局Pythonコードのコンパイル以外以前とあまり変わらないっぽ。。。)

◎irafディレクトリの適当な場所(/iraf/extern/)にインストールパッケージの受け皿になるディレクトリを作る
$ su
# cd /iraf/extern/
# mkdir tables/
# mkdir stsdas/
権限の変更
# chown iraf.iraf tables stsdas

◎colorパッケージの入手及び展開
The Space Telescope Science Instituteのstsdasパッケージのページからひつようなものをダウンロードし、/iraf/extern/stsdas/,/iraf/extern/tables/内で展開する。

・ダウンロード
上記サイトから適当な場所(自分は/home/ken/tmp)にstsdas3.13.tar.gz,stsdas3.13.bin.redhat.tar.gz,tables3.13.tar.gz,tables3.13.bin.redhat.tar.gzをダウンロードする
・irafユーザーになる
# su iraf
・/iraf/extern/stsdasや/iraf/extern/tables/で展開
% cd /iraf/extern/stsdas/
% tar xvfz /home/ken/Downloads/stsdas3.13.tar.gz
(stsdas3.13.bin.redhat.tar.gzの解凍はbin.redhat内で!)
% cd bin.redhat/
% tar xvfz /home/ken/Downloads/stsdas3.13.bin.redhat.tar.gz

(tablesに関しても同様に)
% cd ../../tables/
% tar xvfz /home/ken/Downloads/tables3.13.tar.gz
% cd bin.redhat/
% tar xvfz /home/ken/Downloads/tables3.13.bin.redhat.tar.gz
・スーパーユーザーに戻る
% exit  (または、% su)

◎extern.pkgの編集
/iraf/iraf/unix/hlib/にextern.pkgがあるのでそれを以下のようにstsdasとtablesに関する記述を書き加える。
# emacs /iraf/iraf/unix/hlib/extern.pkg &
# External (non core-system) packages. To install a new package, add the
# two statements to define the package root directory and package task,
# then add the package helpdb to the `helpdb' list.
reset  noao       = iraf$noao/
task   noao.pkg    = noao$noao.cl
reset  tables      = /iraf/extern/tables/
task   tables.pkg    = tables$tables.cl
reset  stsdas      = /iraf/extern/stsdas/
task   stsdas.pkg   = stsdas$stsdas.cl
task   apropos     = stsdas$apropos.cl
reset  helpdb      = "lib$helpdb.mip\
                ,noao$lib/helpdb.mip\
                ,tables$lib/helpdb.mip\
                ,stsdas$lib/helpdb.mip\
                ,color$lib/helpdb.mip\
                "
reset color        = /iraf/extern/color/
task   color.pkg    = color$color.cl
keep


◎Python コードをコンパイルする
・irafユーザーになる
# su iraf
・Python コードのコンパイル % cd /iraf/extern/stsdas
% python python/compileall.py ./python
Listing ./python ...
Compiling ./python/compileall.py ...
Compiling ./python/print_asn.py ...
Compiling ./python/rnlincor.py ...
Compiling ./python/sexcatalog.py ...
Compiling ./python/sextractor.py ...
Compiling ./python/tran.py ...
Compiling ./python/tweak.py ...

% python python/compileall.py ./python/*

◎iraf上の設定
% xgterm &
~% cl
・iraf上でヘルプデータベースを構築する
ecl> softools
ecl> mkhelpdb helpdir=tables$lib/root.hd helpdb=tables$lib/helpdb.mip
ecl> mkhelpdb helpdir=stsdas$lib/root.hd helpdb=stsdas$lib/helpdb.mip
しかし自分はここで失敗した。。。
ヘルプが構築されなくても動作自体には問題なしと考えてほっとく

◎実行できない場合の対処法
上記までの作業で、iraf上で
ecl> stsdas
と打てばパッケージはロードされるが、imfillを実行しようとすると、
ERROR: Cannot open connected subprocess (./x_imgtools.e)
と表示されてしまう。

解決案1,微妙。。。
これは/iraf/extern/stsdas/pkg/toolbox/imgtools/imgtools.clの中で実行ファイルがimgtools$x_imgtools.eと指定されているのにデフォルトではその場所(/iraf/extern/stsdas/pkg/toolbox/imgtools)にx_imgtools.eがないためと考えた。
・・・imgtools.cl

なので/iraf/extern/stsdas/bin.redhat/の中からx_???.e(x_imgtools.eも含めて全部)/iraf/extern/stsdas/pkg/toolbox/imgtools/にコピーしてくる
# cp /iraf/extern/stsdas/bin/x_imgtools.e /iraf/extern/stsdas/pkg/toolbox/imgtools/


※imfillに限らず他のタスクでも"ERROR: Cannot open connected subprocess"となってしまうかもしれないが、実行ファイル(x_???.e)をしかるべき場所(しかるべき???.clに書かれてる)に移動させれば、基本的に問題ないはずです(たぶん)

解決案2,よりよい解決策!
stsdasのタスクを走らせる時、/iraf/extern/stsdas/内のbin.linux/を読み込みに行く初期設定になっているようだが、実際に色々(x_???.eとか)入っているのはbin.redhat/
なので、bin.linux/という空のディレクトリを削除して、binを読み込みに行くようにbin.linuxというシンボリックリンクを貼る。binは既にbin.redhatを読みに行くようにシンボリックリンクが貼ってあるので、これで正常動作するはず。
# cd /iraf/extern/stsdas
# rm -rf bin.linux
# ln -s bin bin.linux

(念のためbin.genericも同様にリンク貼っとく)
# rm -rf bin.generic/
# ln -s bin bin.generic


/iraf/extern/tables/でtablesについても同様の作業を行う。
# cd /iraf/extern/tables/
(デフォルトだとbinのリンクがbin.genericに貼られている(リンク確認は"ls -l"でできる)ので1から構成)
# rm bin
# ln -s bin.redhat bin
# ln -s bin bin.linux
# ln -s bin bin.generic

これで完璧に動くようになった!
確認した所、結局、stsdasもtablesもbin.linuxを読み込みにいくので、bin.linuxのシンボリックリンクを色々入ってるbin.redhatに貼るか、bin.redhatの中身をbin.linuxにコピーしてくるだけでよかったっぽい。(上記もbinを経由っさせているものの結局はそうなってる)

/iraf/extern/stsdas/pkg/toolbox/imgtools/imgtools.clの中で実行ファイルがimgtools$x_imgtools.eと指定されている問題についてはよく分からんが・・・




TOP画面に戻る