ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Ubuntu 16.04安装Abaqus 6.13实战:依赖库与兼容性排坑指南

Ubuntu 16.04安装Abaqus 6.13实战:依赖库与兼容性排坑指南 讲实话在 Ubuntu 16.04 LTS 上装 Abaqus 6.13是我这几年干过最磨人的软件部署工作之一。Abaqus 6.13 是 2013 年左右的东西Ubuntu 16.04 是 2016 年的系统中间隔了好几个库版本迭代默认编译器从 GCC 4.8 换到 GCC 5Motif 图形库改版连 libstdc5 这种老古董都从软件源里消失了。偏偏很多课题组和企业还在用 6.13 的老模型、老脚本迁移成本高只能硬着头皮在新系统上装旧软件。这篇记录不是官网那种下一步下一步的傻瓜指引而是把我在这台机器上踩过的坑、补过的依赖、排过的错全部摊开讲。适用对象也很明确拿到正版授权文件、准备在 Linux 工作站上部署 Abaqus 的仿真工程师或者想把 Windows 上的老模型迁到 Ubuntu 下跑的同学。文末的高频报错对照表建议先存下来后面大概率用得上。1. 这套组合的真正难点官方不支持的发行版与缺库三件套1.1 为什么 6.13 与 16.04 会互相看不顺眼Abaqus 6.13 的 Linux 版本官方支持的是 Red Hat Enterprise Linux 5/6 和 SUSE Linux Enterprise 11/12 这一系Ubuntu 根本不在官方兼容性列表里。这带来最直接的问题安装器不会帮你自动装好运行库你必须在装软件之前就把系统环境伪装成它能接受的样子。更麻烦的是依赖库的差异。Abaqus 6.13 的 CAE 界面用的是老式 Motif 图形库求解器则依赖老版本的 C 标准库。Ubuntu 16.04 软件源里这些库要么版本过新要么直接下架。我把它总结成缺库三件套libstdc.so.5GCC 3.3 时代的 C 标准库16.04 默认只有 libstdc.so.6GCC 5 提供两者 ABI 不兼容老程序在缺库状态下会报error while loading shared libraries。libXp.so.6X Printing 扩展库从 Ubuntu 15.04 左右开始就不再提供。Abaqus 6.13 运行时会引用它少了它 CAE 直接起不来。libXm.so.4Motif 库OpenMotif 在新版系统里改成了 libXm.so.4但 Abaqus 6.13 需要的是特定符号版本光有库还不行还得版本对上。如果只是主程序是 64 位也就算了偏偏 Abaqus 6.13 的安装器、License 工具链里还有 32 位组件所以系统还必须开启 i386 多架构支持。这一步不做后面不管装什么都是报错。1.2 需要提前准备的安装材料与授权文件在动手前先把这些东西确认清楚能避免一半的返工Abaqus 6.13 安装光盘或 ISO 镜像。一般有两张卷第一卷是核心求解器 CAE第二卷是附加产品。两个都要下载完整只挂第一卷后期扩展模块会缺。正版 license 文件.lic或.dat。如果是浮动网络授权还需要知道 license 服务器的端口和主机名通常默认端口是 27011。系统 root 权限或 sudo 权限。Abaqus 装到/var、/usr/local这种系统路径下面普通用户没有写权限。至少 15GB 可用磁盘空间其中/tmp最好留出 5GB 以上。解压安装包时需要临时空间不够会莫名其妙失败。显示器或者可用的 X11 转发环境。虽然求解器可以纯命令行跑但安装向导是图形界面的没有图形环境会卡在启动那一步。这些材料齐了之后再开始装依赖。顺序千万不要反过来我见过有人先跑安装器再补库结果安装器起不来还以为是自己系统坏了。2. 装前准备启用 i386 架构与手工补齐旧库2.1 先确认系统版本和架构别凭感觉装依赖之前先花一分钟确认当前系统环境lsb_release -a uname -alsb_release -a看发行版版本uname -a看内核架构。正常的 Ubuntu 16.04 LTS 64 位系统会显示x86_64。如果你的机器是 32 位老系统那安装思路完全不同直接参考 32 位场景处理。另外用free -h看一下内存Abaqus 安装过程虽然不看内存但后面跑模型时内存不足会极其痛苦建议至少 8GB。2.2 开启 i386 多架构并更新软件源Ubuntu 从 14.04 之后默认不启用 i386 软件源手动把架构加上sudo dpkg --add-architecture i386 sudo apt-get update这步执行完可以用dpkg --print-foreign-architectures确认是否出现i386字样。如果还是空说明没加进去再执行一次sudo dpkg --add-architecture i386。为什么要这么早做因为后面安装的 32 位库libX11-6:i386、libxtst6:i386等全部依赖这个软件源配置。如果跳过这步直接apt-get install xxx:i386会报 Unable to locate package 之类非常误导人的错误。2.3 批量安装常见依赖库在 16.04 上大部分基础库依然可以直接从软件源安装只是要记得带上:i386后缀的版本。下面这组命令覆盖了 Abaqus 6.13 常见依赖sudo apt-get install -y \ libc6:i386 libstdc6:i386 \ libx11-6:i386 libxext6:i386 libxmu6:i386 libxt6:i386 libxtst6:i386 \ libjpeg62:i386 libncurses5:i386 \ libgfortran3 libgfortran3:i386 \ openjdk-8-jre \ tcsh ksh逐一说明用途libc6、libstdc6是基础运行环境两个架构都必须有libx11、libxext、libxmu、libxt、libxtst是 X11 图形界面相关库Abaqus CAE 是 X11 程序缺了任何一个都会启动报错libjpeg62是老版本 JPEG 库部分后处理组件会引用libgfortran3是 Fortran 运行时求解器的用户子程序编译需要它openjdk-8-jre是给安装向导用的Abaqus 6.13 的安装器是 Java 写成没有 Java 环境安装器直接起不来。tcsh和ksh是因为 Abaqus 自带的一些脚本比如abaqus make、子程序编译脚本内部用 C Shell 或 Korn Shell 编写少了它们某些功能会报 command not found。这些包装完后再搜索一下有没有libmotif4或libxm4可用apt-cache search motifUbuntu 16.04 的 universe 源里有libmotif-common、libmotif4一类的包装不上也无妨后面我们还需要手动处理老库。2.4 手工安装绝版旧包libstdc5、libxp6、libmotif 系列这是整个依赖准备阶段最重要的一步。Ubuntu 16.04 官方源里已经找不到libstdc5和libxp6这两个包必须从 Ubuntu 14.04 时代的老源里把.deb文件下载下来手动安装。我当时的做法是在packages.ubuntu.com上找到 14.04 版本对应的文件下载 amd64 和 i386 两份。文件名大致如下libstdc5_3.3.6-30ubuntu0.14.04.1_amd64.deb libstdc5_3.3.6-30ubuntu0.14.04.1_i386.deb libxp6_1.0.2-2ubuntu1_amd64.deb libxp6_1.0.2-2ubuntu1_i386.deb下载后直接安装sudo dpkg -i libstdc5_3.3.6-30ubuntu0.14.04.1_amd64.deb sudo dpkg -i libstdc5_3.3.6-30ubuntu0.14.04.1_i386.deb sudo dpkg -i libxp6_1.0.2-2ubuntu1_amd64.deb sudo dpkg -i libxp6_1.0.2-2ubuntu1_i386.deb如果dpkg报依赖错误多半是libc6、libgcc1版本太新导致版本检查不过。这种时候不要--force-all硬装容易把系统搞坏。更好的办法是用--force-depends只绕过依赖检查sudo dpkg -i --force-depends libstdc5_3.3.6-30ubuntu0.14.04.1_amd64.deb装完验证一下ls -l /usr/lib/x86_64-linux-gnu/libstdc.so.5 ls -l /usr/lib/x86_64-linux-gnu/libXp.so.6能列出文件就说明库已经就位。还要确认 32 位版本的libstdc.so.5在/usr/lib/i386-linux-gnu/下也存在因为安装器里某些组件是 32 位。Motif 库的情况复杂一些。如果你在软件源里装到了libmotif4检查一下有没有/usr/lib/x86_64-linux-gnu/libXm.so.4。如果系统里只有一个比较新的 Motif 版本Abaqus 可能还是报符号错误那就要手动把libXm.so.4做个软链指向可用版本或者使用老版本 Motif 的.deb。这一步不同机器差异很大原则就是缺什么补什么版本别太激进。3. 主程序安装从 ISO 到可执行 abaqus 命令3.1 挂载安装镜像与确认安装器依赖装齐后开始挂载安装介质。我手头是 ISO 文件直接用 loop 设备挂载sudo mkdir -p /mnt/abaqus_dvd1 sudo mount -o loop Abaqus613-1.iso /mnt/abaqus_dvd1 cd /mnt/abaqus_dvd1看到根目录下有setup文件和1、2等目录。setup就是安装脚本。在执行之前检查一下执行权限ls -l setup chmod x setup还需要确认 Java 环境能正常使用。Java 装好之后简单的验证方式是java -version能打印出版本号再继续。3.2 启动安装向导与系统检查直接运行sudo ./setup如果没有图形界面会报DISPLAY is not set错误。本地终端一般没问题远程 SSH 登录的话需要带 X11 转发或者在能显示图形的终端里执行export DISPLAY:0 sudo ./setup安装向导是 Java 图形界面启动后依次会看到欢迎页、许可类型选择等。如果这步卡住先把 X11 相关库再补一遍尤其注意libxtst6:i386是否存在——Java 图形界面经常死在这个库上。3.3 组件选择与安装目录规划安装向导里会问 License 配置这一步在后面专门讲。这里重点说组件和目录。组件选择项一般包括Abaqus/CAE、Abaqus/Standard、Abaqus/Explicit、Abaqus/Viewer等。简单建议是只做结构分析就装Standard做冲击、碰撞还要装Explicit需要前处理建模就装CAE一切齐全就全选。默认勾选的那些基本够用不需要刻意去掉。安装目录方面默认路径通常是/var/DassaultSystemes/SIMULIA/Abaqus64 位版本默认装到对应架构目录。个人建议保持默认路径不要为了看着清爽改到/opt/abaqus613之类的位置——Abaqus 内部很多脚本引用默认路径改路径虽然能跑但后期升级补丁、集成第三方求解器时容易出幺蛾子。如果你确实想改记得把路径里的空格、中文全部避开。3.4 应对Unsupported Platform的检查因为 Ubuntu 不在官方支持列表安装器有时会在系统检查阶段弹Unsupported Platform或This operating system is not supported的警告。出现这个提示并不意味着完全不能装安装器多半只是发个警告选 Continue 或 Yes 继续即可。如果安装器直接中断退出就需要查安装日志确认是卡在系统检查还是卡在库检查。日志一般写到/tmp目录下的InstallAnywhere相关文件用tail -f边跑边看日志是排查这类问题的有效手段。把日志中标记为ERROR的那一行拿出来搜通常能找到缺失的库名或者 Java 组件名。3.5 安装完成后的目录结构安装完成后Abaqus 的命令通常在这几个位置/var/DassaultSystemes/SIMULIA/Abaqus/Commands/abaqus /var/DassaultSystemes/SIMULIA/Abaqus/6.13-1/Commands目录里是全局命令入口6.13-1目录里是实际程序文件包括exec、site、CAEresources等子目录。site目录下的custom_v6.env文件是 Abaqus 运行时读取的自定义环境文件后面配置临时目录、内存、许可证时都会用到它。安装完不要急着重启系统先把命令行入口软链清理一下。有时系统里已经存在其他版本的 Abaqus 命令软链会冲突可以用sudo update-alternatives --config abaqus来切换或者手动调整Commands目录下的链接。4. License 与用户环境让求解器和 CAE 都能正确找到授权4.1 理解 Abaqus 的授权类型Abaqus 6.13 的授权基于 FlexLMFlexNet Publisher平时我们说的license其实分两种形式节点锁定Node-locked单机授权license 文件安装在本地授权绑定当前机器的 MAC 地址或 HostID。浮动授权Floating licenselicense 装在服务器上客户端通过网络去取授权客户端只需要配置server_host和端口号。大多数高校和企业的设备是后者所以本文重点讲浮动授权下的配置。单机授权其实更简单只需要把 license 文件路径写进环境变量。4.2 服务端FlexLM 守护进程配置如果你手头的是浮动授权 license 文件第一步是在服务器上启动 FlexLM 的守护进程。Abaqus 6.13 安装盘中自带lmgrd和相关的 license 工具一般位于第二张卷或者产品附加工具里。服务端的标准流程是把授权文件比如abaqus613.lic放到一个固定目录比如/usr/local/flexlm/licenses/。编辑授权文件确认第一行SERVER后面的主机名和 HostID 与服务器匹配。启动lmgrd/usr/local/flexlm/bin/lmgrd -c /usr/local/flexlm/licenses/abaqus613.lic -l /var/log/flexlm.log启动后检查日志看到类似lmgrd: License server started和Abaqus daemon started就算成功。需要注意Abaqus 的守护进程文件名可能是abaqus而不是通用的msc之类具体以你的 license 文件里VENDOR那行写的是什么为准。这里要强调没有正版授权文件后面所有配置都无从谈起。授权是商业软件的合法使用前提本文也不涉及任何绕过授权验证的操作。4.3 客户端设置 license 相关环境变量在主程序所在的机器上需要让 Abaqus 知道去哪里找 license。核心环境变量有两个ABAQUSLM_LICENSE_FILEAbaqus 主程序优先读取的变量格式为27011license_server_host。LM_LICENSE_FILEFlexLM 通用变量格式相同部分附加组件会读这个变量。比如 license 服务器 IP 是192.168.1.100端口是27011在客户端~/.bashrc里写入export ABAQUSLM_LICENSE_FILE27011192.168.1.100 export LM_LICENSE_FILE27011192.168.1.100仅仅设置环境变量还不够还要把 Abaqus 的Commands目录加入 PATHexport PATH/var/DassaultSystemes/SIMULIA/Abaqus/Commands:$PATH改完后执行source ~/.bashrc这样在任何目录下直接敲abaqus都能调用到主程序。4.4 使用自定义环境文件增强可用性Abaqus 安装目录下site/custom_v6.env是全局默认环境文件里面可以写一些运行时参数。我们一般会改几个点# scratch 目录求解过程会写大量临时文件 import os os.environ[ABAQUS_SCRATCH] /scratch/abaqus_tmp # 内存使用上限单位 MB memory 4096 # 多核 CPU 数量 cpus 8如果当前用户没有该文件的写权限可以在用户主目录下创建自己的abaqus_v6.envAbaqus 会优先读取当前目录下和用户目录下的配置。这个灵活性在被多用户共用的工作站上尤其重要——系统管理员配置全局普通用户配置个人。5. 启动验证打开 CAE 和提交一个简单作业5.1 用版本信息命令做快速体检装完先别急着开 CAE先用命令行验证安装完整性。执行abaqus informationrelease正常会输出类似Abaqus 6.13-1的版本信息。如果提示找不到命令说明 PATH 没配好。再执行abaqus informationsystem该命令会列出当前系统信息、环境变量、可用的库文件等。输出末尾若出现大段ERROR例如缺少某个.so说明还有依赖没补齐回到第 2 节补库。还可以跑abaqus verify -all做全面自检该命令会测试求解器、CAE、文档等模块耗时几分钟到十几分钟不等。5.2 CAE 图形界面验证命令行自检通过后启动图形界面abaqus cae第一次启动可能比较慢界面加载大概 30 秒到 1 分钟。能进入主窗口就算基本成功。如果启动过程卡在ABAQUS/CAE waiting for an event或者直接闪退多半是 Motif/OpenGL 相关库的问题。常见处理是先用abaqus cae -noGUI测试命令行组件能否运行再用abaqus cae -mesa切换软件渲染模式排除显卡驱动问题。abaqus cae -mesa-mesa选项会强制用 Mesa 软件渲染能绕过专业显卡驱动在 Linux 下的各种光栅化兼容问题。如果你的工作站用的是老 NVS 或 Quadro 显卡-mesa几乎是 CAE 正常显示的唯一可靠方案。5.3 命令行无界面求解验证没有图形环境也能跑求解。准备一个最简单的输入文件test.inp内容是一个单位立方体的静力分析然后执行abaqus jobtest inputtest.inp求解过程会在屏幕上滚动输出迭代信息完成后当前目录下会生成test.odb、test.sta、test.dat等结果文件。用abaqus viewer可以打开 ODB 后处理或者用 Python 脚本读取结果。这一步验证的意义在于CAE 界面就算有问题求解器是好的还能用命令行配合 Python 脚本做批处理分析不至于把整个工作站卡在 等 CAE 正常 这一步上。6. 踩坑实录安装与运行阶段的高频报错解法6.1 安装器无法启动 / Java 崩溃现象执行sudo ./setup后没有图形界面弹出终端里报Exception in thread main java.lang.UnsatisfiedLinkError或者libXtst.so.6: cannot open shared object file。原因安装器是 32 位 Java 程序找不到 32 位 X 库。Ubuntu 16.04 默认只有 64 位库里需要装对应的:i386版本。解决回到第 2.3 节确保libxtst6:i386、libx11-6:i386、libxext6:i386都安装了。装完重新启动安装器不要重启系统一般就能正常弹窗。6.2 找不到 libXm.so.4 / libXp.so.6现象启动 CAE 时报error while loading shared libraries: libXm.so.4: cannot open shared object file或者 libXp.so.6 类似。原因Motif 库版本不匹配或缺失libXp.so.6则是整个包都从软件源里消失。解决libXp.so.6用手工下载的旧版.deb安装libXm.so.4优先从软件源安装libmotif4装完后确认软链存在sudo ln -sf /usr/lib/x86_64-linux-gnu/libXm.so.4 /usr/lib/x86_64-linux-gnu/libXm.so.3有些老版本程序写死了libXm.so.3的文件名做软链就能骗过去。注意这里的软链映射方向要看实际运行库需求别把版本关系搞反。6.3 error while loading shared libraries: libstdc.so.5现象abaqus命令启动时直接报缺少libstdc.so.5这是最典型的老库缺失错误。原因编译 Abaqus 6.13 时用的是 GCC 3.3其 ABI 生成的程序需要libstdc.so.5而 Ubuntu 16.04 只有.so.6。两个库不兼容不是简单做软链就能解决的软链到 .so.6 大概率会直接段错误。解决安装第 2.4 节提到的libstdc5旧包且 amd64 和 i386 两个版本都要装。装完后用ldd检查ldd /var/DassaultSystemes/SIMULIA/Abaqus/6.13-1/exec/abaqus | grep not found这条命令能把缺失的库都列出来比闷头试错高效得多。6.4 CAE 打开后黑屏 / 无响应现象命令行启动后进程在跑界面不出来或者卡在灰色窗口CPU 占用忽高忽低。原因显卡驱动与老式 OpenGL 渲染不兼容。现代 Linux 桌面默认启用合成器composting而 Abaqus 6.13 的 OpenGL 渲染路径比较老容易冲突。解决优先用-mesa启动。有条件的话在启动前临时关闭桌面合成或者切换到 Xorg 会话而不是 Wayland 会话。Ubuntu 16.04 默认是 Xorg影响不大但如果是其他新版本系统这一步会很重要。然后建议export ABAQUS_USE_X111该变量在某些场景下能强制 CAE 使用 X11 后端渲染。6.5 多版本冲突与环境变量覆盖现象机器上原来装了 Abaqus 2016装完 6.13 后敲abaqus调用的还是旧版本。原因两个版本的Commands目录都写进了 PATH并且安装较晚的版本没有自动覆盖全局软链。解决用which abaqus查看实际调用的路径。如果指向旧版本手动调整 PATH 顺序或使用update-alternatives管理软链sudo update-alternatives --install /usr/bin/abaqus abaqus /var/DassaultSystemes/SIMULIA/Abaqus/Commands/abaqus 613之后用update-alternatives --config abaqus切换默认版本。多版本共存时site 目录下的custom_v6.env也会互相干扰不同版本用不同的用户环境文件比较稳妥。最后聊点实际经验。整个安装过程中最耗时间的往往不是安装本身而是缺一个库—报错—搜索—补库—再报错的循环。后来我养成了一个习惯在跑安装器之前先用ldd把所有可执行文件过一遍把缺失的依赖一次补齐效率反而更高。如果你所在团队经常要在 Ubuntu 上部署这类官方不支持的老软件建议把常用旧库的.deb包存到本地仓库别每次都去老源里翻。另外千万别忽略ABAQUS_SCRATCH临时目录的配置。Ubuntu 的/tmp默认挂载在内存盘上模型一大临时文件直接把内存写满求解器毫无预兆地崩溃。把 scratch 指到一个独立的机械硬盘或 SSD 分区能省很多烦心事。这篇记录基于 Ubuntu 16.04 LTS 的实操经验方法对后续 Abaqus 6.14 甚至部分 2016 版本同样有参考价值。环境不同细节会有些出入但只要抓住依赖库先行、授权配置紧跟、命令行优先验证这条主线就不会翻车。
返回列表