天天看點

在Docker中安裝Centos6與VCS的踩坑記錄

主要坑點:Centos6換源,Snpslmd打更新檔

在Docker中安裝Centos6與VCS的踩坑記錄

感謝田佬的若幹幫助,<code>while (true) putchar('%');</code>

使用下面指令拉取

使用下面指令檢視是否成功

如果拉取成功,結果如下(IMAGE ID, CREATED, SIZE可能不同)

使用下面的指令運作

出現下面的結果表明成功運作(7fee4585addb為容器ID,可能不同)

以這種方式運作容器時,hostname和mac位址是不确定的(本地運作兩個容器,hostname和mac位址分别如下)

為事先指定hostname和mac位址,可以通過<code>--hostname</code>和<code>--mac-address</code>選項指定,下面的指令可以指定hostname為<code>Tadokoro</code>,mac位址為<code>02:42:AC:11:45:14</code>

檢視容器的hostname和mac位址,此時為指定的内容

需要注意的是,hostname可以随便寫,但mac位址不能太離譜,否則會出錯

在Centos6中執行下面的指令

得到的結果如下

這是因為Centos6已經停止維護,相當一部分源都炸了,還有很多存在版本維護問題

在Docker中安裝Centos6與VCS的踩坑記錄

下面是一個可以正常使用的源,來自此部落格,感謝作者

接下來要做的就是用上文的内容覆寫<code>etc/yum.repos.d/CentOS-Base.repo</code>,下面是若幹方法

最蠢的方法,清空CentOS-Base.repo後,使用echo指令逐行追加,筆者這麼幹了好久

清空CentOS-Base.repo後,使用系統自帶的vi編輯,筆者一度不知道有vi這東西

本地準備好CentOS-Base.repo,拷貝進目标容器,覆寫舊CentOS-Base.repo

直接curl位址,然後重定向給目标檔案CentOS-Base.repo

再次執行<code>yum update</code>,結果正确

執行<code>yum install gcc</code>

在使用VCS編譯時,需要用到

在給snpslmd打更新檔的時候,需要用到

執行<code>yum install gcc-c++</code>

執行<code>yum install redhat-lsb</code>

在使用lmgrd時,需要用到

安裝封包件樹如下,其中scl_v2018.06_windows.exe和scl_keygen.zip無需拷貝進Docker

計劃安裝目錄為<code>/home/synopsys</code>,友善起見,将上述檔案也置于home下,Docker内檔案樹如下

在<code>/home/synopsysInstaller</code>中,為SynopsysInstaller_v5.0.run添權重限

執行<code>SynopsysInstaller_v5.0.run</code>,位址填寫<code>/home/synopsys</code>

在<code>/home/synopsys</code>中,執行installer,發現在root模式下使用<code>-install_as_root</code>選項也無法正常啟動

為此,需要建立一個使用者并切換到此使用者

在此使用者下執行installer,安裝SCL,發現權限不足

切換到root使用者,為synopsys檔案夾添權重限

執行installer,安裝SCL,Site ID number無關緊要

執行installer,安裝VCS,Site ID number同樣無關緊要

需要說明的是,安裝過程中會額外詢問是否需要Docs+SmartSearch,如果不需要,目錄可以随便寫,Do you wish to install的時候不寫yes即可

執行installer,安裝Verdi,Site ID number同樣無關緊要

最後回到root使用者,把沒用的安裝檔案清理一下,此外,之後沒有usr使用者什麼事了

在Windows下啟動scl_keygen.exe并填寫内容,再點選Generate生成Synopsys.dat

HOST ID Daemon:填寫去掉冒号的mac位址

HOST ID Feature:填寫去掉冒号的mac位址

HOST Name:填寫hostname

Port:填寫一個大一點的數防撞

在Docker中安裝Centos6與VCS的踩坑記錄

修改Synopsys.dat第二行,添加SCL的目錄

将證書檔案分别放到<code>/home/synopsys/vcs/license</code>和<code>/home/synopsys/verdi/license</code>

切換到<code>/home/synopsys/scl/2018.06/linux64/bin</code>,執行下面的指令

在筆者使用的Ubuntu20.04中,這樣可以成功激活證書,結果如下(結果較長,隻需關注結尾部分)

在Docker環境下,這樣往往會失敗,失敗時結果如下(結果較長,隻需關注結尾部分)

對上述問題,可建立gen-snpslmd-hack.c處理(檔案名無所謂),内容如下

使用下面的指令編譯上面的檔案,完成後的目錄如下

檢視一下之前的打開的lmgrd是否已經關閉,如果沒有關閉使用lmdown關閉

再使用下面的指令重新激活證書,結果如下(結果較長,隻需關注結尾部分),出現如下結果表明激活成功(對于這個問題的解決參考了此貼,感謝作者)

将下面的内容追加到<code>/root/.bashrc</code>檔案中即可,如采用了不同的安裝路徑,則需修改下文中的路徑,如采用了不同的hostname,則需修改下文中的LM_LICENSE_FILE

使用下面的指令使新增的環境變量生效

此後再次需要激活證書時(如重新開機容器後),隻要使用下面的指令即可,此外,可根據需要制作鏡像,從鏡像運作容器時隻要保證hostname和mac位址不發生變化,就可直接使用此指令激活證書并使用

使用下面的檔案進行測試,測試目錄如下

使用下面的指令編譯檔案,結果如下(結果較長,隻需關注結尾部分)

使用下面的指令執行檔案,結果如下表明成功

繼續閱讀