天天看点

在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地址不发生变化,就可直接使用此命令激活证书并使用

使用下面的文件进行测试,测试目录如下

使用下面的命令编译文件,结果如下(结果较长,只需关注结尾部分)

使用下面的命令执行文件,结果如下表明成功

继续阅读