
搞過Linux下CAE軟件安裝的朋友應(yīng)該都有同感裝Abaqus有時(shí)候比跑一個(gè)非線性接觸分析還折磨人。尤其是一套老環(huán)境軟件是Abaqus 6.13系統(tǒng)是Ubuntu 16.04 LTS這倆組合放到今天來看既不是官方推薦搭配也過了商業(yè)軟件的技術(shù)支持期網(wǎng)上能找到的資料要么含糊其辭要么針對(duì)別的版本照著做往往卡在半路。我這套環(huán)境是我們計(jì)算工作站上的主力配置前前后后裝過三次踩了不少坑也把整個(gè)過程整理出了一套相對(duì)穩(wěn)定的流程。這篇博文主要解決這么幾個(gè)問題Ubuntu 16.04下Abaqus 6.13安裝前的系統(tǒng)依賴怎么準(zhǔn)備三個(gè)鏡像文件怎么按順序裝License服務(wù)怎么起以及裝完后CAE界面打不開這類高頻問題怎么處理。無論你是課題組管服務(wù)器的管理員還是自己筆記本上裝一套做作業(yè)的研究生照著這個(gè)流程走應(yīng)該能省下好幾個(gè)晚上的折騰時(shí)間。1. 項(xiàng)目概述與總體安裝思路1.1 為什么是Ubuntu 16.04和Abaqus 6.13先說點(diǎn)背景。Abaqus 6.13放到現(xiàn)在確實(shí)不算新版本但它在很多高校和工程單位里依然扮演著主力角色。原因也很簡(jiǎn)單不少課題組的老模型、子程序、前處理腳本都是基于6.13調(diào)通的換新版本意味著重跑驗(yàn)證、重編譯用戶子程序成本不低。再加上6.13對(duì)硬件要求友好哪怕是一臺(tái)幾年前的至強(qiáng)工作站跑中小規(guī)模模型也完全夠用。Ubuntu 16.04 LTS同樣是一個(gè)經(jīng)典的長(zhǎng)期支持版本。雖然它已經(jīng)過了官方維護(hù)期但因?yàn)閮?nèi)核版本和系統(tǒng)庫(kù)都比較“復(fù)古”反而跟Abaqus 6.13這種老軟件更合拍。實(shí)話說在Ubuntu 18.04或者20.04上裝6.13遇到glibc和libjpeg兼容性問題的概率要遠(yuǎn)大于16.04。如果你手頭正好是這套環(huán)境那這篇內(nèi)容就是為你準(zhǔn)備的。1.2 安裝前的準(zhǔn)備工作清單安裝之前有幾樣?xùn)|西必須提前準(zhǔn)備好缺一個(gè)都可能讓你中途卡住。第一是安裝包。Abaqus 6.13的Linux版本通常包含三個(gè)ISO鏡像文件分別對(duì)應(yīng)文檔、License服務(wù)和主程序。三個(gè)都要下載完整不要只拿一個(gè)主程序鏡像因?yàn)榘惭b程序在配置過程中會(huì)來回讀取不同鏡像的內(nèi)容。第二是許可證文件。如果你用的是正版站點(diǎn)許可證一般會(huì)有一個(gè)以.lic結(jié)尾的License文件里面記錄了服務(wù)器主機(jī)名和MAC地址。安裝前最好先確認(rèn)當(dāng)前機(jī)器的主機(jī)名和網(wǎng)卡MAC地址因?yàn)楹竺媾渲肔icense文件時(shí)要精確對(duì)應(yīng)。第三是系統(tǒng)用戶名。這一點(diǎn)非常關(guān)鍵Abaqus 6.13的安裝程序要求當(dāng)前用戶名必須以字母開頭且只能包含字母和數(shù)字。如果你現(xiàn)在的用戶名是像123abc或者user_01這種安裝程序會(huì)在第一步就報(bào)錯(cuò)終止。最好的做法是提前創(chuàng)建一個(gè)純字母用戶比如abquser整個(gè)安裝過程都在這個(gè)用戶下進(jìn)行。第四是磁盤空間。完整安裝Abaqus 6.13及其文檔大概需要7到9GB的空間安裝前用df -h確認(rèn)一下你的目標(biāo)分區(qū)剩余空間是否充足。1.3 安裝方案選型為什么選擇原生安裝有人可能會(huì)問既然老軟件在舊系統(tǒng)上裝起來這么麻煩為什么不直接用虛擬機(jī)裝Windows版本或者用Docker封裝一個(gè)環(huán)境我分別給過這兩條路后來又都放棄了。虛擬機(jī)方案最大的問題在于性能損耗尤其是Abaqus這種計(jì)算密集型的求解器在VirtualBox或VMware里跑CPU和內(nèi)存開銷會(huì)比原生環(huán)境高出不少。如果是做幾百萬自由度的大模型這個(gè)差距會(huì)非常明顯。至于Docker方案License服務(wù)和GUI的轉(zhuǎn)發(fā)配置并不簡(jiǎn)單而且6.13版本對(duì)GUI的依賴很強(qiáng)容器里做圖形界面轉(zhuǎn)發(fā)操作體驗(yàn)和穩(wěn)定性都很難讓人滿意。所以最靠譜的方案就是在Ubuntu 16.04上原生安裝讓Abaqus直接訪問硬件資源。雖然步驟多一些但一勞永逸后續(xù)使用體驗(yàn)也是三種方案里最好的。2. 系統(tǒng)依賴準(zhǔn)備與安裝腳本處理2.1 系統(tǒng)更新與軟件源配置拿到一臺(tái)剛裝完系統(tǒng)的Ubuntu 16.04第一步先把軟件源換到國(guó)內(nèi)鏡像然后做一次完整的系統(tǒng)更新。雖然這個(gè)步驟看起來跟Abaqus沒有直接關(guān)系但它決定了后續(xù)能不能順利裝上各種依賴包。軟件源的配置文件在/etc/apt/sources.list。我習(xí)慣先把原文件備份一份然后用sed把a(bǔ)rchive.ubuntu.com替換成鏡像站地址。這里以清華源為例替換后執(zhí)行sudo apt-get update sudo apt-get upgrade提醒一句如果這臺(tái)機(jī)器是單位的計(jì)算節(jié)點(diǎn)升級(jí)內(nèi)核前最好確認(rèn)一下其他計(jì)算軟件是否兼容。對(duì)于Abaqus而言內(nèi)核升級(jí)一般沒有影響但如果機(jī)器上裝了其他需要特定內(nèi)核模塊的軟件就要謹(jǐn)慎一些。2.2 安裝csh和基礎(chǔ)運(yùn)行庫(kù)Abaqus的安裝腳本是用C Shell腳本編寫的所以系統(tǒng)里必須要有csh。很多精簡(jiǎn)版或服務(wù)器版Ubuntu默認(rèn)沒有裝這個(gè)如果不提前裝好運(yùn)行安裝程序時(shí)會(huì)提示/bin/csh不存在安裝直接中斷。再一個(gè)容易出現(xiàn)問題的依賴是libjpeg相關(guān)庫(kù)。Abaqus的圖形界面和后處理模塊在運(yùn)行時(shí)會(huì)調(diào)用libjpeg來處理圖像數(shù)據(jù)缺少這些庫(kù)會(huì)導(dǎo)致CAE界面啟動(dòng)后崩潰或顯示異常。Ubuntu 16.04的軟件源里自帶這些包直接安裝就可以sudo apt-get install -y csh libjpeg62 libjpeg62-dev libmotif-dev另外如果你打算通過SSH遠(yuǎn)程跑Abaqus/CAE并用X11轉(zhuǎn)發(fā)圖形界面還需要安裝x11-apps和libxtst-dev這類X11相關(guān)包。雖然不裝也能啟動(dòng)但裝上后轉(zhuǎn)發(fā)穩(wěn)定性會(huì)好很多。2.3 修改Linux.sh腳本繞過版本檢測(cè)這是整個(gè)安裝流程里最容易被忽略、也最容易卡住的一步。Abaqus 6.13的安裝腳本Linux.sh里面內(nèi)置了對(duì)操作系統(tǒng)的檢測(cè)邏輯它會(huì)讀取/etc/redhat-release或/etc/SuSE-release來確定系統(tǒng)版本。偏偏它不認(rèn)識(shí)Ubuntu也沒有相應(yīng)的分支處理如果直接運(yùn)行腳本會(huì)報(bào)出“unsupported platform”之類的錯(cuò)誤。解決思路很簡(jiǎn)單讓腳本以為當(dāng)前系統(tǒng)是它支持的那個(gè)版本。具體做法是用root權(quán)限修改/etc/redhat-release和/etc/SuSE-release這兩個(gè)文件。如果系統(tǒng)里沒有這兩個(gè)文件就手動(dòng)創(chuàng)建sudo sh -c echo Red Hat Enterprise Linux Server release 6.0 (Santiago) /etc/redhat-release同理如果腳本還需要讀取/etc/SuSE-release也一并創(chuàng)建并把內(nèi)容寫成SUSE Linux相關(guān)的版本號(hào)。要注意安裝完成后最好把這兩個(gè)文件刪掉或還原為空文件以免影響后續(xù)其他軟件的安裝判斷。這個(gè)操作看起來有點(diǎn)“粗暴”但實(shí)際測(cè)試下來非常有效。Abaqus的安裝腳本主要靠這個(gè)判斷來加載對(duì)應(yīng)的系統(tǒng)庫(kù)路徑配置只要讓它識(shí)別成RedHat系統(tǒng)后面的安裝流程就會(huì)按預(yù)設(shè)路徑順利執(zhí)行。3. 分步安裝完整流程3.1 掛載鏡像與啟動(dòng)安裝程序準(zhǔn)備工作都完成后正式進(jìn)入安裝環(huán)節(jié)。先把三個(gè)ISO文件掛載到系統(tǒng)里。我用的是循環(huán)掛載方式以第一個(gè)鏡像為例sudo mkdir -p /mnt/abq1 /mnt/abq2 /mnt/abq3 sudo mount -o loop Abaqus.1.iso /mnt/abq1 sudo mount -o loop Abaqus.2.iso /mnt/abq2 sudo mount -o loop Abaqus.3.iso /mnt/abq3進(jìn)入第一個(gè)鏡像目錄找到啟動(dòng)腳本。通常路徑是cd /mnt/abq1 ls你會(huì)看到一個(gè)名為L(zhǎng)inux.sh的可執(zhí)行腳本或者在一個(gè)類似AM_DSY的目錄下找到它。找到后用bash直接執(zhí)行sudo bash Linux.sh啟動(dòng)后會(huì)出現(xiàn)一個(gè)圖形化的安裝引導(dǎo)界面。因?yàn)槭抢习姹窘缑娴姆直媛时容^低而且對(duì)高分屏的支持不太好這是正常的不影響安裝結(jié)果。安裝引導(dǎo)的第一個(gè)界面會(huì)讓選擇安裝類型常見的選項(xiàng)有Documentation、License和Product。建議的安裝順序是先裝文檔再裝License最后裝主程序。不要自作聰明去改變這個(gè)順序因?yàn)長(zhǎng)icense和主程序的安裝過程中安裝程序會(huì)主動(dòng)檢查文檔組件的安裝狀態(tài)。3.2 安裝Documentation組件選擇Documentation安裝項(xiàng)進(jìn)入后程序會(huì)要求設(shè)置文檔的安裝路徑。默認(rèn)路徑通常是/opt/abaqus/Documentation除非你的根分區(qū)空間緊張否則保持默認(rèn)即可。文檔安裝本身比較簡(jiǎn)單就是一個(gè)解壓復(fù)制的過程。安裝進(jìn)度條走完后程序會(huì)提示配置文檔訪問端口。這個(gè)配置決定后續(xù)在CAE界面中點(diǎn)擊Help時(shí)瀏覽器通過哪個(gè)端口訪問本地文檔服務(wù)。默認(rèn)端口是2080如果這個(gè)端口已經(jīng)被占用可以改成其他數(shù)值比如3080。我在實(shí)際安裝時(shí)遇到過一個(gè)問題文檔安裝完成后從CAE界面點(diǎn)擊Help無法打開對(duì)應(yīng)頁面。排查下來是文檔服務(wù)沒有啟動(dòng)。Abaqus的文檔服務(wù)是一個(gè)基于HTTP的輕量級(jí)服務(wù)安裝完成后需要在系統(tǒng)中手動(dòng)啟動(dòng)具體命令在安裝目錄下可以找到。不過這個(gè)不影響主程序的正常使用如果不需要在軟件內(nèi)直接查閱幫助文檔可以暫時(shí)跳過后面有空再補(bǔ)配置。3.3 安裝License服務(wù)并配置許可文件License組件的安裝是整個(gè)流程里技術(shù)含量最高的部分也是出錯(cuò)率最高的環(huán)節(jié)。選擇License安裝項(xiàng)后程序會(huì)先裝License服務(wù)的運(yùn)行程序然后進(jìn)入License文件的配置界面。配置界面上有幾個(gè)關(guān)鍵字段需要填主機(jī)名、MAC地址、端口號(hào)。主機(jī)名用hostname命令查看MAC地址用ifconfig或者ip addr查看。這里有一個(gè)很容易踩的坑Ubuntu下網(wǎng)卡名可能是ens33、eno1等不同網(wǎng)卡對(duì)應(yīng)不同的MAC地址填的時(shí)候一定要填和主機(jī)名匹配的那張網(wǎng)卡的地址最好就是默認(rèn)路由所在網(wǎng)卡的MAC。端口號(hào)默認(rèn)是27011這是Abaqus當(dāng)年使用的默認(rèn)許可證端口。如果不想用默認(rèn)端口要保證License文件和后續(xù)環(huán)境變量中使用的端口一致否則程序啟動(dòng)時(shí)找不到許可證服務(wù)。License文件配置完成后真正把服務(wù)跑起來才是關(guān)鍵。啟動(dòng)License服務(wù)前先確認(rèn)License文件路徑和內(nèi)容沒有語法錯(cuò)誤然后運(yùn)行啟動(dòng)命令。啟動(dòng)后立刻檢查服務(wù)狀態(tài)命令是ps -ef | grep lmgrd netstat -an | grep 27011如果發(fā)現(xiàn)lmgrd進(jìn)程不存在或者27011端口沒有監(jiān)聽基本上就是License文件寫錯(cuò)了最常見的問題是主機(jī)名和MAC地址不對(duì)或者端口號(hào)與License文件里的不一致。這時(shí)候不建議反復(fù)重啟服務(wù)先逐項(xiàng)核對(duì)License文件內(nèi)容確認(rèn)無誤后再啟動(dòng)。3.4 安裝Abaqus主程序License服務(wù)正常啟動(dòng)后回到安裝引導(dǎo)界面選擇Product安裝項(xiàng)。這時(shí)候安裝程序會(huì)檢測(cè)License服務(wù)的狀態(tài)檢測(cè)通過后進(jìn)入主程序的組件選擇界面。主程序組件包括Abaqus/CAE前后處理界面、Abaqus/Solver求解器、Abaqus/Explicit、Abaqus/Standard等。一般情況下全部勾選因?yàn)楹罄m(xù)做子程序開發(fā)時(shí)各個(gè)模塊都可能用到。如果你只需要跑求解器不關(guān)心前后處理可以只勾選必要的部分但我不建議這么做因?yàn)锳baqus各個(gè)模塊之間的調(diào)用關(guān)系比較緊密缺了某個(gè)組件可能在關(guān)鍵時(shí)刻報(bào)錯(cuò)。安裝路徑方面默認(rèn)是/opt/abaqus。6.13版本的主程序目錄結(jié)構(gòu)通常是/opt/abaqus/6.13-1里面會(huì)生成site、exec、cae、solver等子目錄。安裝過程中程序會(huì)要求再次指定License服務(wù)器的地址和端口這里填上你本機(jī)的主機(jī)名和剛才配置的端口即可。主程序的安裝耗時(shí)比較長(zhǎng)大概需要20到40分鐘取決于磁盤速度和CPU性能。安裝過程不要中斷也不要隨手關(guān)掉安裝終端否則可能出現(xiàn)半安裝狀態(tài)后面清理起來非常麻煩。4. 環(huán)境變量配置與驗(yàn)證運(yùn)行4.1 配置環(huán)境變量安裝完成后為了讓系統(tǒng)能找到Abaqus的可執(zhí)行文件和相關(guān)庫(kù)還需要配置環(huán)境變量。這一步被很多人忽略結(jié)果裝完之后在終端輸入abaqus提示command not found然后誤以為安裝失敗了。打開當(dāng)前用戶的.bashrc文件vim ~/.bashrc在文件末尾添加以下內(nèi)容export ABQ_ROOT/opt/abaqus/6.13-1 export PATH$ABQ_ROOT/cae/bin:$ABQ_ROOT/exec:$ABQ_ROOT/ams/bin:$PATH export LM_LICENSE_FILE27011localhost注意如果你的安裝路徑不是/opt/abaqus要把ABQ_ROOT改成實(shí)際路徑。配置完成后source ~/.bashrc然后驗(yàn)證一下環(huán)境變量是否生效which abaqus如果輸出里有abaqus的路徑說明環(huán)境變量配置成功。有一點(diǎn)需要特別說明環(huán)境變量最好配置在你自己使用的用戶下而不是配在root下。Abaqus安裝后不建議直接用root跑計(jì)算一方面權(quán)限管理混亂另一方面root環(huán)境下某些庫(kù)的加載路徑跟普通用戶不同容易出奇怪的問題。4.2 啟動(dòng)驗(yàn)證配置好環(huán)境變量后先做一次簡(jiǎn)單的驗(yàn)證。在終端輸入abaqus cae正常情況下CAE界面會(huì)彈出來第一次啟動(dòng)可能需要十幾秒耐心等待。啟動(dòng)后可以看到主窗口菜單欄和工具箱都能正常顯示說明核心安裝沒有問題。如果不需要打開圖形界面可以只做命令行驗(yàn)證abaqus verify -all這個(gè)命令會(huì)執(zhí)行Abaqus自帶的一套自檢程序包括求解器啟動(dòng)、臨時(shí)文件讀寫、許可證連接等。全部通過會(huì)顯示OK狀態(tài)有Failed項(xiàng)則說明對(duì)應(yīng)的環(huán)境有問題。我在實(shí)際測(cè)試中遇到過這樣的事abaqus cae能正常打開但abaqus verify里有個(gè)別check顯示FAILED原因是臨時(shí)目錄權(quán)限不對(duì)。Abaqus運(yùn)行時(shí)會(huì)在/tmp下創(chuàng)建臨時(shí)文件如果/tmp的sticky位被改動(dòng)過或者權(quán)限設(shè)置不當(dāng)就會(huì)導(dǎo)致自檢失敗。解決方法很簡(jiǎn)單把/tmp權(quán)限恢復(fù)為1777即可sudo chmod 1777 /tmp5. 常見問題與排查技巧實(shí)錄5.1 用戶名導(dǎo)致安裝中止這個(gè)坑我頭一次裝的時(shí)候踩得很徹底。當(dāng)時(shí)用的用戶名叫jsq_2020結(jié)果安裝程序在檢測(cè)用戶名階段直接報(bào)錯(cuò)退出連安裝引導(dǎo)界面都進(jìn)不去。后來查資料才發(fā)現(xiàn)Abaqus 6.13的安裝腳本對(duì)用戶名有嚴(yán)格的格式限制只接受字母開頭、由字母和數(shù)字組成的組合。解決辦法是新建一個(gè)合規(guī)用戶用這個(gè)用戶走完整套安裝流程sudo adduser abquser如果已經(jīng)部分安裝了建議把裝好的目錄整個(gè)刪掉再在新用戶下重新安裝不要混著來。混用用戶會(huì)導(dǎo)致后續(xù)文件權(quán)限混亂License服務(wù)和主程序可能因?yàn)闊o權(quán)訪問某些目錄而起不來。5.2 License服務(wù)起不來License啟動(dòng)失敗是幾乎所有安裝者都會(huì)遇到的問題。先看報(bào)錯(cuò)方式如果是命令行直接提示“l(fā)icense server could not start”或者“invalid license file”優(yōu)先檢查L(zhǎng)icense文件中的主機(jī)名和MAC地址。要注意的是License文件里寫的主機(jī)名必須和系統(tǒng)當(dāng)前的主機(jī)名完全一致包括大小寫。MAC地址則是網(wǎng)卡的物理地址格式是十二位十六進(jìn)制數(shù)每?jī)晌恢g用冒號(hào)分隔。有些人會(huì)把無線網(wǎng)卡的地址也列進(jìn)去這通常沒有必要填入有線網(wǎng)卡的地址就夠用了。另外確認(rèn)一下27011端口是否被其他程序占用netstat -an | grep 27011如果端口被占用要么換端口要么殺掉占用進(jìn)程。我曾遇到過一套環(huán)境里同時(shí)裝了舊版Fluent把27011端口占了導(dǎo)致Abaqus License一直起不來。排查這個(gè)費(fèi)了不少時(shí)間所以建議一開始就查端口。5.3 CAE界面黑屏或無法顯示CAE界面啟動(dòng)后黑屏或者直接報(bào)顯示相關(guān)的錯(cuò)誤這類問題在Ubuntu 16.04上不算少見。原因大多是OpenGL庫(kù)或顯卡驅(qū)動(dòng)不兼容。最簡(jiǎn)單粗暴的辦法是關(guān)閉Abaqus的硬件加速?gòu)?qiáng)制使用軟件渲染。Abaqus提供了環(huán)境變量來控制這一行為export ABAQUS_USE_OPENGL_SW1加了這個(gè)變量后CAE界面會(huì)強(qiáng)制走軟件層面的OpenGL渲染雖然放大縮小模型時(shí)的流暢度會(huì)有所下降但至少不會(huì)再黑屏。如果是遠(yuǎn)程SSH加X11轉(zhuǎn)發(fā)的方式運(yùn)行GUI這個(gè)變量基本是必須的。如果加了還是黑屏檢查一下系統(tǒng)里是否安裝了mesa-utils缺少這些庫(kù)也會(huì)導(dǎo)致OpenGL渲染失敗安裝后重啟CAE即可。5.4 安裝腳本無法識(shí)別安裝源有時(shí)候安裝程序會(huì)在中途提示找不到某個(gè)安裝包或文件檢查一下是不是三個(gè)鏡像沒有全部掛載。Abaqus在安裝不同組件時(shí)會(huì)切換到不同的鏡像比如裝Documentation時(shí)讀第一個(gè)ISO裝主程序時(shí)讀第二個(gè)。如果安裝程序找不到路徑它會(huì)彈出文件選擇窗口手動(dòng)把路徑指向?qū)?yīng)掛載點(diǎn)就行。還有一個(gè)小問題如果鏡像文件名包含空格或中文mount時(shí)最好重新命名成簡(jiǎn)潔的英文否則腳本處理路徑時(shí)可能出錯(cuò)。我一般習(xí)慣把鏡像改名為abq1.iso、abq2.iso這種格式不只為了腳本識(shí)別也方便后續(xù)管理。6. 安裝后的使用實(shí)踐總結(jié)環(huán)境裝好后實(shí)際使用中還是有一些小的習(xí)慣值得養(yǎng)成。首先啟動(dòng)License服務(wù)要做得像開機(jī)自啟一樣自然。每次重啟工作站后第一件事就是確認(rèn)License服務(wù)狀態(tài)輸入ps -ef | grep lmgrd如果沒有輸出就手動(dòng)啟動(dòng)License服務(wù)。雖然Abaqus的安裝程序理論上可以配置開機(jī)自啟但實(shí)測(cè)下來Ubuntu 16.04的systemd服務(wù)和老版本License腳本之間的兼容性并不完美自啟配置失敗的案例很多手動(dòng)啟動(dòng)雖然煩一點(diǎn)但勝在穩(wěn)定。其次建議在用戶主目錄下創(chuàng)建一個(gè)專門的工作目錄用來存放ABAQUS的臨時(shí)文件和計(jì)算模型。就像研究所有個(gè)清潔的實(shí)驗(yàn)室臺(tái)面一樣工作目錄整齊能讓后續(xù)調(diào)試和清理都輕松不少。最后想分享一個(gè)我自己的真實(shí)感受裝Abaqus 6.13的過程本質(zhì)上不是在裝一個(gè)軟件而是在摸清楚一個(gè)老牌商業(yè)程序面對(duì)新系統(tǒng)時(shí)需要哪些環(huán)境、哪些妥協(xié)。每一步報(bào)錯(cuò)背后幾乎都能找到一個(gè)對(duì)應(yīng)的系統(tǒng)兼容性問題把它當(dāng)成一次有趣的排障實(shí)驗(yàn)比單純?yōu)榱恕把b好”更有收獲。至少在我這三次安裝經(jīng)歷里第二次和第三次明顯比第一次從容得多因?yàn)橐呀?jīng)把各種報(bào)錯(cuò)信息都摸透了。希望這篇文章也能讓你少走一些彎路一次裝通。