主要坑点: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已经停止维护,相当一部分源都炸了,还有很多存在版本维护问题

下面是一个可以正常使用的源,来自此博客,感谢作者
接下来要做的就是用上文的内容覆盖<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:填写一个大一点的数防撞
修改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地址不发生变化,就可直接使用此命令激活证书并使用
使用下面的文件进行测试,测试目录如下
使用下面的命令编译文件,结果如下(结果较长,只需关注结尾部分)
使用下面的命令执行文件,结果如下表明成功