前段時(shí)間筆者因工作原因需要在自己的電腦上配置iraf環(huán)境,前后嘗試了多種方法都安裝不成功。后來師兄推薦使用Docker,筆者簡(jiǎn)單了解后(中間也踩了坑,折騰了很多細(xì)節(jié)),終于在自己的Macbook上安裝并配置好了iraf。
先說說安裝Docker之前的失敗經(jīng)歷吧:
一開始我計(jì)劃在macOS系統(tǒng)上用anaconda安裝pyraf以達(dá)到目的。然而過程并不順利,首先是網(wǎng)絡(luò)連接特別慢(因疫情原因在家辦公,民用網(wǎng)絡(luò)遠(yuǎn)不如單位的科技網(wǎng)),下載環(huán)境所需的包時(shí)經(jīng)常斷連。最終好不容易把所有環(huán)境配置所需的包下載完成后,筆者遇到了一個(gè)無解的問題:macOS 10.15 Catalina只支持64位程序,而iraf是32位的......
既然macOS 10.15無法運(yùn)行,筆者又不想回退系統(tǒng)(畢竟sidecar太香了),那就用Parallels Desktop跑Ubuntu系統(tǒng)總行了吧。實(shí)際情況并沒有想象中那么順利,先是遇到網(wǎng)絡(luò)問題無法下載某些包,后是用離線安裝的方式報(bào)出各種錯(cuò)誤,折騰一周依舊無果(菜是原罪),放棄。
最終,筆者選擇了Docker,配置好后發(fā)現(xiàn),這個(gè)方式非常簡(jiǎn)單方便。畢竟已經(jīng)有dalao直接上傳帶有iraf軟件包的鏡像文件,我們只需要做一個(gè)簡(jiǎn)單的配置就好。
首先要說明,筆者配置環(huán)境的機(jī)器是Macbook Pro 13-inch 2018,系統(tǒng)版本:macOS Catalina 10.15.3。
OK,咱們進(jìn)入正題。
首先,下載Docker客戶端,網(wǎng)址:Docker Desktop for Mac and Windows | Docker
安裝運(yùn)行后,在終端輸入以下命令拉取鏡像(因?yàn)槭峭鈬?guó)網(wǎng)站,速度可能比較慢,可自行搜索阿里云鏡像加速以提高下載速度):
docker pull michaelcs/astrocondairaf
該鏡像是michaelcs于三年前上傳至dockerhub,詳情請(qǐng)見:Docker Hub
拉取成功后,可用以下命令查看已存在的鏡像:
docker images
新建容器(-d代表后臺(tái)運(yùn)行容器并返回容器ID,-i代表以交互模式運(yùn)行容器,-t代表為容器重新分配一個(gè)偽輸入終端;/bin/bash表示制定終端類型;沒有參數(shù)-d的話,exit容器后就無法再次啟動(dòng)了,原因作者暫時(shí)沒弄明白;冒號(hào)部分是共享文件夾設(shè)置,冒號(hào)前面是主機(jī)共享文件夾地址,后面是容器內(nèi)地址):
docker run -dit -v /Users/xxx/workplace:/root/iraf/workplace michaelcs/astrocondairaf /bin/bash
用以下命令可以查看現(xiàn)有的容器:
docker ps -a
#輸出如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79c1cea5ccdf michaelcs/astrocondairaf "/usr/bin/tini -- /b…" 2 hours ago Up 25 minutes amazing_shirley
特別說明:由于作者為減小鏡像體積,故將vim等文本編輯器從鏡像中移除(然并卵,鏡像文件依舊很大,還增加了不必要的麻煩)。為了配置工作環(huán)境,我們可以在容器中配置好自己的工作環(huán)境后再保存為新的鏡像,以后用新的鏡像創(chuàng)建容器可以省去重新配置的麻煩。
我們剛才已經(jīng)創(chuàng)建了容器,并且通過命令看到該容器已經(jīng)在運(yùn)行了(STATUS 為 Up;若沒有運(yùn)行,狀態(tài)是Exited,則需要用命令:docker start ’容器ID’ 啟動(dòng)),輸入命令進(jìn)入容器:
docker attach ‘容器ID’ #ID只需要輸入前4位就可以啦~
#例如:
docker attach 79c1
進(jìn)入容器后,我們首先安裝vim(方便修改login.cl等文件):
apt-get update
apt-get install vim
進(jìn)入root文件夾并創(chuàng)建iraf文件夾,激活iraf27環(huán)境:
cd root
mkdir iraf
cd iraf
mkiraf
mkdir scripts #可以將腳本文件放到這個(gè)文件夾
接下來編輯login.cl文件:
vim login.cl
找到’List any packages you want loaded at login time, ONE PER LINE.’將以下內(nèi)容復(fù)制到該段并保存(筆者工作需要使用這些包,各位按需自行添加):
noao
digiphot
imred
crutil
spec
tv
onedspec
twodspec
ccdred
astutil
longslit
apextract
stsdas
kpnoslit
fitsutil
接下來去下載兩個(gè)文件,用于去除圖像中的宇宙線(若不需要用到可跳過)。進(jìn)入LA-Cosmic download,下載IRAF的Imaging Version和Spectroscopic Version,下載的文件名分別為lacos_im.cl和lacos_spec.cl,將這兩個(gè)文件放到/root/iraf/文件夾下。
進(jìn)入stsdas.cl目錄并編輯該文件:
cd /opt/conda/envs/iraf27/variants/common/iraf/stsci_iraf/stsdas/
vim stsdas.cl
將以下段復(fù)制進(jìn)stsdas.cl文件并保存:
task lacos_im = "/root/iraf/lacos_im.cl"
task lacos_spec = "/root/iraf/lacos_spec.cl"
OK,環(huán)境配置完成,要使用iraf,先用‘source activate iraf27’命令激活環(huán)境,然后在/root/iraf/目錄下輸入'cl'即可進(jìn)入iraf。
當(dāng)然,想省去下次使用新容器的麻煩,可以將本次配置好的容器保存成鏡像,今后用新鏡像創(chuàng)建的新容器都是保存好的配置。
將容器保存成鏡像的命令如下:
docker commit xxxxx yyyyy #其中‘xxxxx’是你要保存成鏡像的容器名稱,‘yyyyy’是你創(chuàng)建鏡像的名稱
#例如:
docker commit amazing_shirley astroiraf
docker images
# 輸出如下,astroiraf就是我們新建的鏡像。今后就可以用astroiraf新建容器啦!
REPOSITORY TAG IMAGE ID CREATED SIZE
astroiraf latest ad2f69ba3366 9 seconds ago 6.5GB
michaelcs/astrocondairaf latest fad12202adae 3 years ago 6.45GB
完成!又可以愉快地工作啦~
最后,文中若有說得不對(duì)的地方,歡迎各位dalao指出~