どせいたんさき。

ナスダヨー

iraf (64bit) でファイル操作をしようとすると ERROR: segmentation violation が出る件

問題

NOAO/IRAF V2.16 を Ubuntu 12.04 (64bit) にインストールして使っている.ecl シェルからファイル操作を試みると毎回 ERROR: segmentation violation がでて操作できない.例えば imdelete といったコマンドが動かなかったり imarith でファイルを上書きできなかったりするため大変困る.

解決方法

ecl 環境変数cache を正しく設定すれば動くようになった.ここの 2 ページ目に解決策が記載されていた.まずは show cache でただしいキャッシュ場所が表示されているか確かめる.ここでインストール時に設定した正しいキャッシュ用ディレクトリが設定されていないときは以下の手法で解決する可能性がある.自分の場合は /tmp// が設定されていた.これは正しい cache 位置ではないlogin.cl にそれらの設定が記載されているので訂正する.自分のインストールした環境だと以下の通り.

# LOGIN.CL -- User login file for the IRAF command language.

# Identify login.cl version (checked in images.cl).
if (defpar ("logver"))
    logver = "IRAF V2.16 March 2012"

set	home		= "/home/ohsawa/Products/iraf/"
set	imdir		= "/usr/local/share/iraf/imdirs/ohsawa/"
set	cache		= "/usr/local/share/iraf/cache/"
set	uparm		= "home$uparm/"
set	userid		= "ohsawa"

この状態で再起動したらきちんと imdelete が動いた.もし毎回 mkiraflogin.cl を生成しているならばもっと上位の設定ファイルを書きかえる必要があるかもしれない.