2010年9月2日 星期四

SAC installation on Linux and MacOSX

先前我一直沒有寫一篇如何在linux上安裝Seismic Analysis Code(SAC)的筆記,是因為在sac的網站上已經有很詳細的說明。下載下來的sac都已經是可以直接執行的binary,所以幾乎沒有任何問題。由於最近開始練習使用Mac來做日常工作,我想日後如果想在MacOSX上面跑sac的使用者也可以依此參考,因此寫下這篇簡單的sac on mac筆記。

在linux上,只要確定你安裝的linux是x86還是x86_64的版本即可。假設將sac解壓縮到/opt,則只需要在~/.profile裡設定幾個環境變數即可:

export SAC=/opt/sac
export SACLIB=$SAC/lib
export SACAUX=$SAC/aux
export PATH=$PATH:$SAC/bin
如果是csh的愛好者,你的環境變數應該長得像這樣:
setenv SAC /opt/sac
setenv SACLIB $SAC/lib
setenv SACAUX $SAC/aux
set path = ( $path $SAC/bin )

在MacOSX上,你也應該下載一個適合自己版本的sac來用。我的MacOS是Leopard(10.5),是64位元的版本,intel的cpu,可以執行x86或是x86_64的binary,不過當我設定好環境變數之後,敲入sac卻有錯誤訊息:

dyld: Library not loaded: /opt/local/lib/libSM.6.dylib
Referenced from: /opt/sac/bin/sac
Reason: image not found
Trace/BPT trap
dylib我不知道是什麼,不過看前面libSM.6我猜應該是缺乏動態函式libSM,所以dylib應該是dynamic library的意思,在linux相當於少了libSM.6.so的意思。知道少了這個lib,在linux只要用套件管理程式裝起來就可以了。但是在mac並沒有套件管理程式,該怎麼做呢?

為了解決這個問題,我們必須裝上MacPorts,這是一個開放原始碼的軟體,他收集了很多開放原始碼的程式,像是在linux世界裡常見的gedit,gimp等等的程式,可以透過MacPorts移植到MacOS上使用。但是,這些套件都是原始碼,他會下載原始碼到你的電腦上並自動編譯、安裝,所以會非常耗時;建議晚上安裝,早上起來就好了。

但是要安裝MacPorts,則必須要有gcc、make這些工具。而這些工具都是由xcode來的。也就是說,你必須先安裝xcode,才能有gcc,才能安裝MacPorts,才能安裝libSM.6.dylib,才能順利執行sac。

大部分安裝好MacOSX之後是不會有xcode的,你必須從安裝光碟裡去選擇並安裝xcode。安裝完xcode之後,你就有fortran, c, c++, python, Java等編譯器可以使用。接著下載給Snow Leopard(10.6), Leopard(10.5)以及Tiger(10.4)的MacPorts安裝檔來安裝。

安裝完成後,你的shell應該就能找到port這個指令。由於我不清楚mac如何更改default shell為tcsh,所以奉勸還是忘記有tcsh這類shell吧。安裝好之後,都是用port指令當做mac的套件管理程式。
更新MacPorts並且更新套件庫索引:

sudo port selfupdate
尋找套件名稱:
port search foo
安裝套件:
sudo port install foo
移除套件:
sudo port uninstall foo
回到我們的問題本身--套件的關鍵字是libSM,因此我們透過search找到的套件名稱為xorg-libsm,因此只需要輸入:
sudo port install xorg-libsm
再次執行sac,就可以快樂的在MacOSX上使用sac。

更舊版本的Mac恐怕需要更舊版本的sac才行--我所測試的sac版本為101.4。希望本文能對於Mac的使用者有所助益。

Share

沒有留言:

張貼留言