【Linux】ubuntu20.04安装ansys2023r1教程--超详细

news2024/11/17 9:48:56

在这里插入图片描述

一、安装包及其和谐文件

在这里插入图片描述

双击挂载

在这里插入图片描述

在这里插入图片描述

二、在ubuntu上安装依赖项

执行命令sudo apt install build-essential xterm libmotif-dev libxtst-dev libxt-dev libzip-dev libxmu-dev tcl tk lsb csh xfonts-75dpi xfonts-100dpi wine

在这里插入图片描述
弹出一个提示,需要去下载一个171MB的压缩包,然后解压后占用982MB的存储,询问是否继续。我们这里再执行y。
在这里插入图片描述
在这里插入图片描述

三、安装进行ing

下面的安装过程是以时间为顺序铺排,采用SSQ的和谐版本。

下面的安装过程,不是说真的就没有错误,我把我出现的错误全部集成到本文的第五章了。因为linux系统和windows系统不一样,它里面很多动态库,需要用户自己安装。因此不同用户的linux系统,存在的环境可能存在巨大的区别,这样也就导致报错几乎不可能一样。

如果你出现了相关错误,请跳转至本文的第五章,如果发现没有你出现的错误,那只有去网上查找了。

因为在安装license manager的时候,总是出现一些动态库文件没办法找到的问题。之后我就没打算先安装这个,我怀疑是否需要先安装Ansys Products,再安装license manager呢。结果表明,当我这样做之后,那些动态库文件没找到的错误并没有迎刃而解,而且中途还多了一个端口占用的错误,所以并不建议大家先安装Ansys Products。

3.1 同意条款和设置安装目录

挂载之后的目录如下所示。

在这里插入图片描述

执行命令sudo bash ./INSTALL来启动安装脚本。注意一定要添加sudo,这是借用管理员身份的命令,这样你作为普通账户才有权力在/usr/目录(共享目录)中写入文件。

单击Install Ansys Products。

在这里插入图片描述

安装目录,就默认的就好,因为linux系统没有所谓的C盘的概念,只有系统盘和数据盘的概念。usr是共享目录,像ansys这种软件最好安装在共享目录中,不同账户能够顺利访问。因此点击下一步。一般来说要勾选create the /ansys_inc目录的符号链接,因为这样访问要方便一些。但是请务必记住这个是符号链接,不是说这个目录真正就存储在这个位置。

在这里插入图片描述

3.2 设置许可证服务器

在这里插入图片描述
这里如果不勾选跳过,并且还不填hostname会警报。勾选跳过之后,这两个端口就不会被占用,后面安装license manager的时候就不会报错端口已被占用。

在这里插入图片描述
如果你是先安装Ansys License Manager,那么你就不需要跳过。而如果你是先安装ansys products,我建议你跳过。不跳过的话,将hostname设置成localhost,端口就保持默认。

3.3 选择安装产品和设置CAD几何接口

一般用户,没特殊要求,安装默认产品选项即可。不放心也可以安装全部。

在这里插入图片描述
这里直接选择跳过CAD几何接口配置,因为不是重要选项,不影响ansys仿真的运行。后面也很好配置。
在这里插入图片描述
在这里插入图片描述
开始安装啦!!!

在这里插入图片描述

linux系统下安装速度比win系统快多了,才十分钟就结束了。继续点击下一步

在这里插入图片描述
安装完成了!!!最后点击exit退出就好!

在这里插入图片描述

四 和谐与软件实测

接着,我们执行和谐步骤。

4.1 安装之前跳过的License Manager

因为后面需要启动目录/usr/ansys_inc/shared_files/licensing/tools/bin/linx64中的ansyslmcenter,但是我发现这个目录里压根就没有此文件。我推测是因为没有安装ANSYS License Manager 2023R1 Linux64,毕竟之前我是跳过了这个的安装。当时我安装的时候一大堆动态库找不到,之后就选择先安装ANSYS Products 2023R1 Linux64试试。

具体细节你们去章节5.5-章节5.7看吧,那里有艳丽的鲜花和宝蓝色大海!!!对了也要看看第五章节的开头哦!有一个对依赖项安装的总结,我就不在这里啰嗦了。

4.2 覆盖ansys_inc文件夹

打开安装包目录下的_SolidSQUAD_文件夹,我们双击那个压缩文件,可以看到里面的文件情况,明显这是一个和谐文件,虽然没有crack的名称。

在这里插入图片描述
在目录_SolidSQUAD_中右键Open in Terminal,执行命令tar zxvf _SolidSQUAD_.tar.gz来解压和谐压缩包。

在这里插入图片描述

我们先用下面的命令来修改ansys_inc的权限,使这个文件夹的权限是所有用户(因为你不止一个人要用这个软件嘛,这个usr是共享目录)。这里可能啰嗦了一下,上面可能已经提到过改这个文件夹的权限,所以这里极可能啰嗦了,但是为了避免有些人忘记权限以至于可能带来问题,所以还是…

sudo chmod -R 777 /usr/ansys_inc

在这里插入图片描述
下面命令就是将和谐文件夹内的所有文件复制到usr目录了。因为我这里的shell是进入到目录了,所以前面那个路径不用写全。

cp -R ansys_inc/* /usr/ansys_inc

在这里我还是提一嘴,你安装完Ansys products之后,在主目录/的下面有两个ansys_inc,一个在主目录上,一个在usr目录中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个ansys_inc其实是一个符号链接,源头是/usr/ansys_inc。从它的图标右上角有一个箭头符号,也大概可以猜测出来这玩意是链接。

所以,你们一定要注意,不要复制错了,不是复制到/目录(主目录)中。

4.3 配置许可证和相关许可服务器

既然上面的License Manager安装好了,那么我们就可以看到ansyslmcenter了。

因为我是

在相应目录中执行命令./ansyslmcenter,发生了端口占用错误。

cqu@cqu-X12DPi-N-T-6:/usr/ansys_inc/shared_files/licensing/tools/bin/linx64$ ./ansyslmcenter 
ERROR: Could not start Tomcat because required port 1084 is in use.

我看看是否权限升为超级用户(也即win下常常称呼的管理员账户),再执行会不会情况有所好转。

cqu@cqu-X12DPi-N-T-6:/usr/ansys_inc/shared_files/licensing/tools/bin/linx64$ sudo ./ansyslmcenter 
ERROR: Could not open http://localhost:1084/ANSYSLMCenter.html?sBuildDate=20221016
Please make sure Firefox (/usr/bin/firefox) is installed or point directly to http://localhost:1084/ANSYSLMCenter.html?sBuildDate=20221016 using your favorite browser.

上面命令sudo ./ansyslmcenter的输出表明bash脚本没发现我安装了firefox浏览器,所以没打开。但是其实我已经安装了这个浏览器,那么接下来怎么解决呢?

很简单!它都把那个访问链接发出来了,我们直接打开火狐浏览器(其他浏览器理论上也可以),输入不就行了嘛!最终,我们成功进入了相关页面,是不是很惊喜和意外。注意一定要是执行ansyslmcenter之后进入这个网址,不然你点击那些图标可能会一直转圈圈,刷新不出来结果。

在这里插入图片描述
单击左边的Get System Hostid Information,发现并不能顺利提取出Hostid。

在这里插入图片描述
按照提示点击View License Management Center Log,警报Error: Cannot run program “/usr/ansys_inc/shared_files/licensing/linx64/lmutil”:error=2,No such file or directory。

在这里插入图片描述
然而,我通过命令ls /usr/ansys_inc/shared_files/licensing/linx64/能看到那个目录下的lmutil文件。

在这里插入图片描述
接下来还是跳转到本文章节5.8,我们解决一下lmutil文件执行不成功的错误。

解决之后,我们提取到了hostid,再去软件安装包和谐目录中修改license.txt文件,将其中的SERVER localhost后面的一串字符改成上面复制的id。你可以用更符合win用户习惯的gedit来搞,也可以用更偏向于linux用户的vi编辑器来搞。

修改完license.txt文件之后,又出事了!我在Add a License File中,选择license.txt文件后,它导不进去。

在这里插入图片描述
并且每次启动之后过一段时间,就会断开。

在这里插入图片描述
第二次启动时,又弹出老错误。

在这里插入图片描述
于是乎,我想着要不在/usr/bin/中创建一个firefox的软链接,免得它总是连接不上火狐浏览器。

在这里插入图片描述
创建完后,我再去执行命令sudo ./ansyslmcenter就不会有那个报错了。

但是仍然还是导入不了license.txt文件,最后我怀疑是火狐浏览器的问题,就去下载了一个Chrome浏览器。

在谷歌浏览器,轻轻松松就导入了。这个license.txt你可以直接放在ansys_inc文件夹下,再导入,也可以直接导入破解文件夹里的;但是你一定要导入修改hostid之后的。这里我们导入之后点击左边的INSTALL LICENSE FILE。

在这里插入图片描述

轻轻松松就安装好了,左边有一个给我们安全感的勾勾。

在这里插入图片描述
接着我们点击View FlexNet Licenses的时候,就可以正常看到证书文件里的内容。

在这里插入图片描述
并且我们点击那个检验是否破解成功最重要的View Status/Start/Stop License Manager按钮时,也可以看到三个成功的running。

在这里插入图片描述
虽然经历上面这些步骤,我们和谐成功,但是不代表能用。我们接下来进入软件实测环节。

4.4 测试Ansys Workbench

运行命令sudo /usr/ansys_inc/v231/Framework/bin/Linux64/runwb2启动workbench。

虽然最后有图形界面,但是启动的终端上也蹦出几个错误,并且WB图形界面上左边的部件没有显示完全。

本文第五大章主要是解决license manager安装的错误,对于软件的products和license manager已经安装完毕之后的错误,就写在第四章正文吧,因为这些错误更常出现一些。

4.4.1 动态库/usr/lib/dri/swrast_dri.so链接找不到,无法启动swrast

这里的错误是:

libGL error:MESA-LOADER:failed to open swrast:/usr/lib/dri/swrast_dri.so
Can not open shared object file:No such file or directory

在这里插入图片描述
很明显,这往往就是我们在章节5.6-5.7所提到的动态库缺失错误。

我们通过sudo locate swrast_dri.so来查找这个文件是否存在。可以看到在目录/usr/lib/x86_64-linux-gnu/是有这个的,只不过没在要求的目录/usr/lib/dri/中。

在这里插入图片描述
本来我想的是把那个swrast_dri.so文件复制进/usr/lib/dri/目录,但是在复制的时候我发现/usr/lib/dri不是目录,而是一个文件!

在网上查询的时候,我发现在Ubuntu和其他Linux发行版上,/usr/lib/dri目录通常存放Direct Rendering Infrastructure(DRI)的驱动模块。DRI是Linux 和 UNIX 系统上的一种提供硬件加速3D渲染的框架。它允许应用程序直接访问显卡硬件资源,以提高图形渲染性能。

这个目录中的文件通常是以_dri.so结尾的共享库,它们是各种显卡厂商(如Intel、NVIDIA和AMD)的硬件加速驱动。各个驱动模块支持不同的图形硬件,以便在运行 3D 图形应用程序(如游戏、CAD工具和科学可视化软件)时提供最佳性能。

在某些系统中,这些驱动模块可能位于/usr/lib/x86_64-linux-gnu/dri 或类似的目录中,而不是/usr/lib/dri。在这种情况下,/usr/lib/dri可能不存在或链接到实际驱动模块所在的目录。

根据上面我查到的资料,我有点确信这个/usr/lib/dri文件其实就是一个错误,因为它并没有指向那个目录。我应该将它删掉,而创建一个指向/usr/lib/x86_64-linux-gnu/dri的符号链接。

执行命令sudo rm -rf /usr/lib/dri之后,我们就删除了这个奇怪的文件。

再执行命令ln -s /usr/lib/x86_64-linux-gnu/dri /usr/lib/dri就创建了指向真正DRI驱动模块目录的链接,之后再执行wb启动命令,就没有那个错误了。

4.4.2 动态库libstdc++.so.6太旧,不适配GLIBCXX_3.4.26

但是,还没结束呢。又蹦出新错误:

libGL error: MESA-LOADER: failed to open swrast: /usr/ansys_inc/v231/Framework/bin/Linux64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /usr/lib/dri/swrast_dri.so) (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)

在这里插入图片描述
还是老问题,我已经在章节5.6-5.7提到过怎么解决这类错误。
首先执行命令strings /usr/ansys_inc/v231/Framework/bin/Linux64/libstdc++.so.6 | grep GLIBC,我们可以得到这个链接库是否支持GLIBCXX_3.4.26。
在这里插入图片描述
从上面的输出我们可以看出,这个动态链接库最多支持25,不支持26。

所以我们需要从网上下载或者在本地找一个更高的libstdc++.so.6版本,理论上高一个版本就可以兼容了。

于是直接执行命令sudo locate libstdc++.so.6,我们可以在/usr/lib/x86_64-linux-gnu/目录中找到一个libstdc++.so.6.0.28版本。

直接用命令复制到ansys的那个动态链接库目录。

cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28 /usr/ansys_inc/v231/Framework/bin/Linux64/

然后删除原来的版本不够高的libstdc++.so.6动态库文件(这不是符号链接)。

sudo rm -rf /usr/ansys_inc/v231/Framework/bin/Linux64/libstdc++.so.6

重新构建指向高版本动态库的符号链接。

sudo ln -s /usr/ansys_inc/v231/Framework/bin/Linux64/libstdc++.so.6.0.28 /usr/ansys_inc/v231/Framework/bin/Linux64/libstdc++.so.6

再启动wb,我们可以看到终端现在终于不弹出任何错误了。

------------备注一下-----------

非常奇怪,在我解决章节4.5.2问题之后,启动Wb又会提示那个libstdc++.so.6太旧不适配GLIBCXX_3.4.29,这里就不啰嗦了,你们可以类比方法,直接去看4.5或者就照着上面找最新动态库的方法就行。

4.4.3 workbench启动之后左边模块显示不全,许可证未设置正确

就是左边还是没显示全?很多模块都没有,例如fluent、icem-cfd。看来那个许可证及其服务器相关设置,我还是没有搞定啊!不过我并没有气馁。

在这里插入图片描述
刚开始我在想是不是HOSTID的问题,因为上面可以提取到3个ID,选哪个其实是不确定的。

当我重新更改license.txt中的hostid,以及重新在Add a License File里面装载时,最后当然也在View Status/Start/Stop License Manager里成功看到3个running。

之后再去重新启动wb,还是老样子,左边模块一个没加一个没减。

后来,我不得不怀疑另一个我之前常常打交道的老朋友——位于View Status/Start/Stop License Manager目录下的ansyslmd.ini文件。

在这里插入图片描述
因为我记得之前看到它的第一行默认是被注释掉的,我心想为啥要注释呢?难道这一行的server可以不启用?
在这里插入图片描述
不妨将下面的第一行的#号删掉,这样第一行就没被注释了,这样端口1055的服务器就生效了。

在这里插入图片描述
再回过头启动wb,我发现模块终于显示齐全了!

在这里插入图片描述
一共能提取到三个hostID,任意选一个其实都可以。我做了对比实验,当我选第二个hostID的时候,ansyslmd.ini第一行注释掉,结果wb不显示全模块。

保持上面设置,只消除ansyslmd.ini的第一行注释,最后可以显示wb的所有模块。

再保留上面设置,只更改hostID变量为第一个,也可以显示wb的所有模块。所以hostID选哪个理论上是都可以的,不是说一定要选第一个,而是第一个大家普遍更倾向于选择而已。

4.5 测试ICEM CFD

4.5.1 libstdc++.so.6太旧不适配GLIBCXX_3.4.26

这里的错误,本质上和上面4.4.2章节的一样,是因为找不到/usr/ansys_inc/v231/icemcfd/linux64_amd/lib/目录下的一个标准库,而这个库文件又跟swrast驱动的启动相关,所以就打不开那个驱动。

libGL error: MESA-LOADER: failed to open swrast: /usr/ansys_inc/v231/icemcfd/linux64_amd/lib/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /usr/lib/dri/swrast_dri.so) (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: swrast

同样,我们先通过命令ls -l | grep libstdc++查看一下/usr/ansys_inc/v231/icemcfd/linux64_amd/lib/目录下存在哪些libstdc++文件。

在这里插入图片描述

因为之前在wb测试环节,我们知道libstdc++.so.6.0.28可以适配GLIBCXX_3.4.26,所以直接将前面找到的动态库文件复制到ICEM动态库文件目录中。

cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28 /usr/ansys_inc/v231/icemcfd/linux64_amd/lib/

然后删除原来的版本不够高的libstdc++.so.6动态库文件(这不是符号链接)。

sudo rm -rf /usr/ansys_inc/v231/icemcfd/linux64_amd/lib/libstdc++.so.6

重新构建指向高版本动态库的符号链接。

sudo ln -s /usr/ansys_inc/v231/icemcfd/linux64_amd/lib/libstdc++.so.6.0.28 /usr/ansys_inc/v231/icemcfd/linux64_amd/lib/libstdc++.so.6

再启动ICEM,又弹出了不能适配GLIBCXX_3.4.29的错误,简直绝了!

4.5.2 libstdc++.so.6太旧不适配GLIBCXX_3.4.29

报错如下图所示。

在这里插入图片描述

那么也就是说libstdc++.so.6.0.28不能适配GLIBCXX_3.4.29。

本来我是有libstdc++.so.6.0.30的,在那个/usr/lib/x86_64-linux-gnu/目录里。但是因为误操作rm命令,把libstdc++.so.6.0.30删了,所以不管是updatedb、locate还是apt、apt-get命令,我全部用不了。

接下来,我分享一个不用apt或apt-get命令下载软件包并且完成安装的办法。

还是去Ubuntu官方软件包网站(https://packages.ubuntu.com/),我们可以搜到libstdc++.so.6.0.30动态库存在于软件包libstdc++6中,网址是https://packages.ubuntu.com/jammy/libstdc++6。

在下载libstdc++6那里,点击amd64架构。

在这里插入图片描述
弹出来直接下载deb的页面,这里注意你直接单击它是不能成功下载的。你需要右键这个链接,然后单击save link as…选项,再点击右上角的save就可以保存到本地了。

在这里插入图片描述
在这里插入图片描述
接着通过命令sudo dpkg -i libstdc++6_12.1.0-2ubuntu1~22.04_amd64.deb安装这个下载到本地的包。

在这里插入图片描述
安装完毕后,我们通过命令sudo updatedb更新一下文件目录索引库,然后执行命令locate libstdc++.so.6.0.30命令查找,发现此库已经安装至本地目录/usr/lib/x86_64-linux-gnu/中。

在这里插入图片描述

接着我们cd到这个目录,查看一下libstdc++.so.6.0.30是否支持GLIBCXX_3.4.29。

在这里插入图片描述
在这里插入图片描述
由上图可以看到,这个30的动态库,完美支持GLIBCXX_3.4.29。

那就通过命令删除

cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30 /usr/ansys_inc/v231/icemcfd/linux64_amd/lib/

然后删除原来的版本不够高的libstdc++.so.6动态库符号链接。

sudo rm -rf /usr/ansys_inc/v231/icemcfd/linux64_amd/lib/libstdc++.so.6

重新构建指向高版本动态库的符号链接。

sudo ln -s /usr/ansys_inc/v231/icemcfd/linux64_amd/lib/libstdc++.so.6.0.30 /usr/ansys_inc/v231/icemcfd/linux64_amd/lib/libstdc++.so.6

最后通过命令ls -l | grep stdc++.so.6查看一下那个目录是否存在指向libstdc++.so.6.0.30的符号链接。

在这里插入图片描述

OK,存在,我们再启动ICEM,不能适配GLIBCXX_3.4.29的错误没了!

4.5.3 “font screen14” and “BadShmSeg”

关于这个问题,非常棘手!主要看can’t load font screen14, using variable和X Error of failed request: BadShmSeg (invalid shared segment parameter)那里。

cqu@cqu-X12DPi-N-T-6:/usr/ansys_inc/v231/icemcfd/linux64_amd/lib$ sudo /usr/ansys_inc/v231/icemcfd/linux64_amd/bin/icemcfd
ICEM_ACN is "/usr/ansys_inc/v231/icemcfd/linux64_amd".
Hallo root.
ANSYSLIC_DIR is set to /usr/ansys_inc/shared_files/licensing
LD_LIBRARY_PATH is "/usr/ansys_inc/v231/icemcfd/linux64_amd/lib:/usr/ansys_inc/v231/icemcfd/linux64_amd/bin:/usr/ansys_inc/v231/icemcfd/linux64_amd/dif/iges:/usr/ansys_inc/v231/icemcfd/linux64_amd/../../Framework/bin/Linux64:/usr/ansys_inc/v231/icemcfd/linux64_amd/../../tp/IntelCompiler/2019.3.199/linx64/lib/intel64:/usr/ansys_inc/v231/icemcfd/linux64_amd/../../tp/qt_fw/5.9.6/Linux64/lib:/usr/ansys_inc/v231/icemcfd/linux64_amd/../../tp/hdf5/1_10_5/linx64/lib".
args = 
Window information: depth = 24
                    class = 4
visual depth = 24 class = 4
can't load font screen14, using variable
Graphics system = OglDL
X Error of failed request:  BadShmSeg (invalid shared segment parameter)
  Major opcode of failed request:  130 (MIT-SHM)
  Minor opcode of failed request:  3 (X_ShmPutImage)
  Segment id in failed request:  0x4c008c3
  Serial number of failed request:  14109
  Current serial number in output stream:  14110
Exit from ICEM CFD

对于前者,显然是字体问题。

网上有很多答案,有些建议安装t1-xfree86-nonfree ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac字体库,以及xfonts-75dpi xfonts-100dpi字体库。

t1-xfree86-nonfree:非自由Type 1字体,来自于XFree86项目。
ttf-xfree86-nonfree:非自由TrueType字体,来自于XFree86项目。
ttf-xfree86-nonfree-syriac:非自由的叙利亚TrueType字体,来自于XFree86项目。
xfonts-75dpi:75dpi(点/英寸)的X11字体。
xfonts-100dpi:100dpi(点/英寸)的X11字体。

下面这几行代码源自于一个很经典的CFD-online讨论帖:https://www.cfd-online.com/Forums/ansys-meshing/89147-error-when-starting-icem-cfd-ubuntu-print.html

其中xfs xfstt是Ubuntu20.04搜不到的,目前我没找到替代方案。其他行的代码都是可以有效执行的。XFS是一种高性能的日志式文件系统,最初由Silicon Graphics, Inc.(SGI)为IRIX操作系统开发。后来,XFS被移植到Linux操作系统,并成为许多Linux发行版支持的文件系统之一。XFS文件系统被设计用于大容量存储、高吞吐量和高并发访问场景。xfstt是一个名为X Font Server for TrueType Fonts的软件,它是一个X字体服务器,用于为X Window系统提供TrueType字体。在某些情况下,它可以用于提供字体服务。所以XFS为啥要安装,我也不是很清楚。而xfstt在Ubuntu20.04中是没办法用apt或apt-get直接安装的。

在执行安装软件包的代码之前,先用sudo apt update更新一下软件包的索引库,避免没有安装最新的软件包。

sudo apt get install xfs xfstt

下面的命令是安装上面提到的五款字体
sudo apt install t1-xfree86-nonfree ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac
sudo apt install xfonts-75dpi xfonts-100dpi 

下面是添加xx目录到X11字体路径的命令
你可以用xset q来查看x11字体路径有哪些
也可以用man xset查看xset命令的使用手册
xset +fp /usr/share/fonts/X11/75dpi/
xset +fp /usr/share/fonts/X11/100dpi/

如果上面这几条命令,执行之后还不能解决,那么你试试安装libmotif3、libmotif4字体。但是可能是因为ubuntu20.04相对网上现有答案创建时的版本太新,导致这两个包没办法安装。

有些人建议用libmotif-dev和libmotif-common替代。所以尝试一下执行下列命令:

sudo apt get install libmotif-dev libmotif-common

上面这些字体都完毕之后(xfs、xfstt没有成功安装),我还是没办法解决错误。

有没有可能不是字体的问题呢?因为这个是秒闪退,不像大多数人字体出问题时至少还能进icem的软件桌面。当然也有可能是因为我禁用了nouveau驱动的问题,因为当时在安装英伟达驱动的时候,安装教程博主建议是禁掉这个驱动,这样安装顺利一些。

所以,不妨大胆怀疑是后面那个BadShmSeg的问题。如果BadShmSeg问题解决不了,我们再排查一下nouveau驱动问题。

MIT-SHM(MIT共享内存)扩展允许X服务器和客户端之间通过共享内存进行高效通信,但在某些情况下,可能会导致问题。

为了解决这个问题,可以尝试禁用MIT-SHM扩展。

我们首先尝试一下添加环境变量可否解决。

方法是在当前终端中执行。

export QT_X11_NO_MITSHM=1

然后再重新启动icem,如果能成功启动,那么你需要将这个环境变量正式添加到环境变量配置文件中,以后启动icem不需要每次都去添加这个变量,方便快捷一些。

如果不能成功启动,那么我们用另一种方法去禁用MIT-SHM扩展

首先通过命令新建或编辑一个conf文件。

sudo vi /etc//etc/X11/xorg.conf.d/disable-shm.conf

往里面添加下面3行内容,保存并退出。

Section "Extensions"
    Option "MIT-SHM" "Disable"
EndSection

最后,重启计算机,使得这个更改生效。
对于禁用MIT-SHM扩展的操作,不需要执行sudo update-initramfs -u命令。update-initramfs命令主要用于更新内核映像,它在更新驱动程序、内核模块或与引导过程相关的设置时非常有用。在上面这种情况,所做的更改与X11配置有关,而不涉及内核映像,所以不需要更新initramfs

对于没有出现这个错误的用户,能不禁用就不禁用,因为禁用MIT-SHM扩展可能会影响某些应用程序的性能,前面不是说了它可以允许X服务器和客户端之间通过共享内存进行高效通信嘛。

接着回到现场,如何确定我们是否已经成功禁用MIT-SHM扩展呢?xdpyinfo是一个X11实用程序,用于显示有关X服务器的信息。

执行命令xdpyinfo,找到名为“extensions”的部分。在这个部分,可以看到X服务器支持的所有扩展。如果禁用MIT-SHM扩展操作生效,应该不会在此列表中看到“MIT-SHM”。如下图所示,我已经看不到“MIT-SHM”了,说明禁用成功。

接着,因为重启了电脑,所以又遇到本文5.7章节的问题,我们去再次激活一下许可证,然后执行命令sudo /usr/ansys_inc/v231/icemcfd/linux64_amd/bin/icemcfd启动icem。

终端现在除了那个加载不成功screen14字体的错误,其他错误已经没了。

在这里插入图片描述
最重要的是,现在icem已经不闪退了,使用起来很正常。

在这里插入图片描述
至于说上面的"Could not initialize spaceball"是一个关于ICEM CFD无法识别或初始化3D鼠标(SpaceMouse或SpaceBall)的错误消息。SpaceBall是一种允许用户在3D空间中自由导航的输入设备。ICEM CFD和其他类似的建模软件通常支持这种设备,以提高用户在处理复杂数字模型时的工作效率。如果没有连接SpaceBall或SpaceMouse设备,这个错误消息可以忽略,因为它不会影响ICEM CFD的正常功能。

我还在网上搜到了相关设备的实物图,如下图所示,就是一个提高三维设计工作的设备,看来完全没必要关注这个错误。

在这里插入图片描述

4.6 测试Geometry、Meshing和Fluent

上面的Geometry其实就是DesignModeler,因为Linux ansys目前还不支持SpaceClaim,你没办法选择,双击进去默认就是DesignModeler。

测试的时候是正常的,能正常创建平面;右边是蓝色的,表示界面正常。
在这里插入图片描述

但是如果你右边界面是不正常的全白色。下面的截图取之硫酸亚铜在优酷发的视频。

在这里插入图片描述
你可能需要添加一下LD_LIBRARY_PATH环境变量的路径,添加啥路径呢,以2023R1为例,添加/usr/ansys_inc/v231/Framework/bin/Linux64/Mesa/。这里我参考了硫酸亚铜大神在优酷发的视频(以前下载到本地保存的)。

具体操作如下:

找到你linux电脑上的ansys安装路径中的Mesa目录,将这个路径复制一下。

在这里插入图片描述
然后,通过命令sudo vi /etc/bash.bashrc编辑全局环境变量配置文件。

在里面添加一行export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/ansys_inc/v231/Framework/bin/Linux64/Mesa/,这行代码表示将这个路径添加到环境变量最后面。

在这里插入图片描述

接着新建一个终端启动wb,或者通过命令source /etc/bash.bashrc来将环境变量载入当前终端后再启动wb。启动的时候要加-oglmesa参数,也即使用命令sudo /usr/ansys_inc/v231/Framework/bin/Linux64/runwb2 -oglmesa来启动。

这样DM的界面就正常了。下面的截图取之硫酸亚铜在优酷发的视频。

在这里插入图片描述
好了,那么我们利用DM建一个长方体,如下图所示。

在这里插入图片描述
保存之后,回到WB,可以看到geometry打勾勾了。

在这里插入图片描述
接着去meshing模块画网格。

在这里插入图片描述
保存之后,update一下meshing模块,使这个模块也打勾勾。

在这里插入图片描述
再去fluent模块,勾选双精度,并行核5核,其他默认。

在这里插入图片描述
可以看到模型都是正常显示。

在这里插入图片描述
我们就设置一个初始化500K,就开始计算,计算完毕后查看一下云图,很正常。
在这里插入图片描述
那么做CFD,常用的几个模块就测试完毕了。

五、不断解决错误,最终实现和谐

下面错误的出现时间顺序说明:
我分别在两台Ubuntu20.04系统上进行了安装。

第一台上出现了5.1-5.3这三个典型错误,第二台出现了5.4-5.x的错误。

5.1和5.2是执行安装命令sudo bash ./INSTALL后发生。
5.3是许可证未设置正确后的workbench的启动。

5.4未安装ANSYS Products时安装ANSYS License Manager出现的动态库缺失错误(前篇)
5.5已安装ANSYS Products时安装ANSYS License Manager出现的服务器运行终止不了、端口占用错误
5.6是已安装ANSYS Products时安装ANSYS License Manager出现的动态库缺失错误(中篇)
5.7是对安装ANSYS License Manager出现动态库缺失错误解决方案的优化(后篇)

从5.4-5.7这几个章节,直接把需要安装的依赖项或软件包总结出来分享给大家。你们需要执行命令,那么这个ANSYS License Manager的安装基本就不是问题了!!!

sudo apt install libldap-2.4-2 libgssapi3-heimdal libkrb5-26-heimda libasn1-8-heimdal libwind0-heimdal libhx509-5-heimdal

5.8是在安装完ANSYS License Manager之后,启动ansyslmcenter,并不能成功提取到Hostid的问题

5.9是我全部安装完之后,因为需要重启计算机,更新某一项设置,发现许可证服务器需要重新启动。

5.10是我在第一台Ubuntu上安装ansys2023R1的时候出现的问题,当时就剩icem是没配置好的,因为在安装第一台的时候不是很熟悉动态库缺失问题和nouveau驱动禁用方法,所以就搁置了,后来才找到解决办法。

5.1 缺乏依赖项libxcb-xinerama0

执行命令sudo bash ./INSTALL。

报错:Cannot execute the installer due to missing prerequisites:
libxcb-xinerama0。

在这里插入图片描述
接着执行sudo apt install libxcb-xinerama0,我们需要安装这个库。

在这里插入图片描述

5.2 缺少Qt XCB插件或环境变量未正确设置

再次执行命令sudo bash ./INSTALL

在这里插入图片描述

GPT说“这个错误通常是由于缺少Qt XCB插件或环境变量未正确设置导致的”。并推荐了以下方法。

  1. 确保安装了必要的库和依赖项:在终端中执行sudo apt-get install libxcb-xinerama0命令(如果使用Ubuntu或Debian等基于Debian的系统)。
  2. 设置QT_QPA_PLATFORM_PLUGIN_PATH环境变量:执行 export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms(如果使用Ubuntu或Debian等基于Debian的系统)。请注意,路径可能因发行版而异,具体取决于您所使用的操作系统和Qt版本。解释一下:这里的/usr是指Unix Shared Resources(共享资源)目录,一般来说就是跟根目录/(也称为“根分区”或“根挂载点”) 一样,如果你没有将/usr挂载在其他硬盘中。

很显然,第一步在第一次执行软件安装命令报错后,我就已经完成了。所以就是想看看第二步,因为第二步是设置环境变量,肯定需要这个目录存在,我在GUI界面上没看到这个目录,所以怀疑没有安装这个所谓的QT依赖。

首先试试sudo apt-get remove --purge qt5-default命令卸载,弹出的提示(Package 'qt5-default’is not installed,so not removed)表明系统中确实没有这个依赖项。

在这里插入图片描述
接着执行命令sudo apt-get install qt5-default
在这里插入图片描述
提示需要下载14.7MB的压缩包,解压后占用79.6MB空间,询问是否继续。当然是y啦!

安装成功了。

在这里插入图片描述
接着执行安装命令sudo bash ./INSTALL,又弹出这个错误。

在这里插入图片描述

这次我安装qt依赖项后,可以看到x86_64-linux-gnu中有qt5这个目录了,逐一点进去也发现了plugins目录。

在这里插入图片描述
接着我将这个环境变量设置了一下
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms

在这里插入图片描述
发现还是不行。

于是我怀疑是不是不能在xshell中执行安装命令,必须去GUI桌面执行。

接着为了尽可能少出错误,我打开root账户的桌面,进入到相应目录后,执行命令sudo bash ./INSTALL

在这里插入图片描述
瞬间就进入了ansys的安装界面。

在这里插入图片描述

5.3 启动workbench(无ansys system)

执行命令sudo /usr/ansys_inc/v231/Framework/bin/Linux64/runwb2就可以启动workbench。

当然,你也可以不用完整路径去启动,你通过cd进入到/usr/ansys_inc/v231/Framework/bin/Linux64/目录,然后执行命令sudo ./runwb2或者sudo bash ./runwb2也可以打开。

注意一定不能是在那个/usr/ansys_inc/v231/Framework/bin/Linux64目录里面直接用命令runwb2启动,会弹出runwb2: command not found的错误。

在这里插入图片描述
我们可以在help菜单——About Ansys Workbench中查看许可证授权情况。

在这里插入图片描述
可以看到,看上去是全部授权,看上去是和谐成功了。

在这里插入图片描述
但是——workbench中的ansys system缺失,而component system中很多模块都没有。

我网上查询一番,其实是没有和谐成功,许可证没有设置好。

设置方法详见上文的第四章节。

在这里插入图片描述
你主要是需要进入/ansys_inc/shared_files/licensing/tools/bin/ansyslmcenter中,打开那个web设置页面,进行获取HOSTID、对许可证文档的HOSTID进行更改、许可证文件进行添加等操作。

5.4 安装license Manager出现libxxx.so动态库缺失

这是第二台Ubuntu系统了,第一台因为有其他人在用,我不方便解决问题,所以转到第二台上进一步操作。

按照SSQ提供的和谐步骤,我需要首先安装license Manager,但是我安装的时候出现了一大堆动态库缺失的问题。下图只是其中一次,缺失的是动态库libldap-2.4.so.2。

在这里插入图片描述
像这种动态库缺失的问题,不管你是在安装过程发生的,还是在启动软件时发生,还是在使用软件进行模拟计算时发生的,都是一样的解决方法与套路。

在网上有一篇文章写得贼好——【超详细教程】解决libxxx.so: cannot open shared object file: No file or directory(https://blog.csdn.net/m0_37605642/article/details/130068402)。

对于【cannot open shared object file:No file or directory】问题,本质上就是动态库缺失或版本不新,也可能是因为环境变量路径缺失,或者没有权限访问动态库存储的路径。

首先考虑添加环境变量路径,其次你可以用locate命令查找系统中是否存在该动态库,然后将动态库复制进去一份,再建立一个软链接即可。

按上面的方法弥补动态库缺失之后,再次安装,又弹出另一种动态库libgssapi.so.3的缺失,麻了…

在这里插入图片描述

我刚开始一个一个去添加到动态库目录中,后来担心这是一个无底洞,看有没有其他方法去避免。我想到——看是否先安装Ansys products,就会解决这个问题呢?

于是我开启了本文的第3.1章节中对Ansys products的安装。

5.5 再装license Manager出现Tomcat服务器占用

这次是在安装完ansys products之后,因为没有发现ansyslmcenter的存在,我返过头来安装license Manager。

这次我发现没有动态库错误了,可能不是解决了,而是说这个Tomcat服务器占用(或者说是端口占用)的问题发生在前,把动态库缺失错误掩盖了。

在安装ANSYS License Manager 2023R1 Linux64的时候,我出现了如下错误

在这里插入图片描述
我们通过命令sudo /usr/ansys_inc/v231/licensingclient/linx64/LicensingSettings打开许可证设置窗口。将那个Enabled按钮由绿色调至灰色。也即使这个许可失效,使它不工作。

在这里插入图片描述

Disable之后,/usr/ansys_inc/shared_files/licensing目录下的ansyslm那一行被注释掉了。

在这里插入图片描述
但是我设置之后,发现还是蹦出端口占用错误。

于是乎,我又找到/usr/ansys_inc/shared_files/licensing目录,发现里面有两个脚本文件存在启用/停止许可证服务器的功能,这是从名字和执行脚本后的提示看出来的。

在执行这两个脚本的停止功能后,即使是用管理员身份停止,最后也还是无济于事。

在这里插入图片描述
再执行上面的操作之后,我心想要不试试“重启大法”?于是乎,我重启后再安装,就没有这个错误了,又回到了动态库缺失错误。

所以——动态库缺失错误并没有通过安装Ansys Products解决,而是被掩盖了,其实它在后面才会发生。

其实除了重启大法能解决这个端口占用错误外,我还有一个必杀技(自信满满,因为没试)。下面讲步骤!

先是用命令ps aux | grep tomcat找到tomcat服务器的进程ID(15465),

在这里插入图片描述
接着用命令sudo kill -9 15465强制杀掉这个进程。这样应该就可以了!!!(当然只是猜想,我重启再安装的时候,就没提示占用了,所以并没有验证这个方法;可能是重启解决的,也可能是之前的两个脚本停止命令加上重启解决的)

5.6 继续装license Manager出现的其他动态库缺失错误

从章节5.5可以看出,我逃不过这个一步步去弥补动态库缺失的过程。

于是乎,总结一下我一共往里面补了多少动态库吧!!

除开章节5.4里说的libldap-2.4.so.2、libgssapi.so.3,还有随后出现的libkrb5.so.26、libasn1.so.8、

弥补的方法,遵从一个套路步骤。

首先,用命令sudo updatedb更新一下目录索引库。

接着用命令sudo locate libxxx.so.xx.x来查找系统中是否已经存在这个动态库文件,如果存在就用命令cp existing_lib_file_path /usr/lib/x86_64-linux-gnu/复制到动态库文件共享库/usr/lib/x86_64-linux-gnu/。

复制的时候,注意要遵从规范——先复制动态库源文件,然后创建动态库源文件的符号链接。

以下面的libkrb5.so.26动态库为例,先执行命令cp /snap/firefox/1232/usr/lib/x86_64-linux-gnu/libkrb5.so.26.0.0 /usr/lib/x86_64-linux-gnu/,再执行命令ln -s /usr/lib/x86_64-linux-gnu/libkrb5.so.26.0.0 /usr/lib/x86_64-linux-gnu/libkrb5.so.26构建符号链接。

在这里插入图片描述
解决libasn1.so.8缺失错误时,我发现即使将这个动态库放到/usr/lib/x86_64-linux-gnu/也还是会报错缺失这个库。

在这里插入图片描述

2023/06/21 20:04:57  *** UPDATING SITE PREFERENCES (PRODUCT ORDER), IF REQUIRED...
2023/06/21 20:04:57  ...ERROR: Attempt to run the following command failed with exit code 127 and process status 0:
                        "/usr/ansys_inc/shared_files/licensing/linx64/ansysli_util" -updatesiteprefs 
                     
2023/06/21 20:04:57     ---------------------- Start of update site preferences (product order) processing output ----------------------
                        /usr/ansys_inc/shared_files/licensing/linx64/ansysli_util: error while loading shared libraries: libasn1.so.8: cannot open shared object file: No such file or directory
2023/06/21 20:04:57     ---------------------- End of update site preferences (product order) processing output ------------------------

                     ...ERROR: The automatic updating of any existing site preferences (product order) failed. If site preferences have not been set on this
                        license server machine, you may ignore this error. If site preferences have been set or you're not sure, please refer to the following
                        Troubleshooting section in the ANSYS Licensing Guide for additional details:
                        License Manager Installation's Licensing Configuration Step to Update Site Preferences (Product Order) Failed

步骤都是一样,为啥就这个库不同凡响呢?记得之前有一个文章是在说有些动态库如果版本低,没办法支持一些工具的运行。文章链接如下:如何解决version `GLIBCXX_3.4.29‘ not found的问题。但是这篇文章说的是GLIBCXX这种工具,是系统普遍的存在,而不像ansysli_util这种冷门程序中的工具。

我用命令strings /usr/lib/x86_64-linux-gnu/libkrb5.so.26 | grep ansys,不会有任何输出,结果也在我预料之中。

虽然逻辑上按照上面添加动态库的方式,按道理不会出错。但是还是出错了,不妨尝试一下往环境变量LD_LIBRARY_PATH上添加路径/usr/lib/x86_64-linux-gnu/。

就写入全局环境变量吧,并且要是/etc/bash.bashrc文件。因为/etc/profile是登录shell会话时才会执行,而/etc/bash.bashrc文件不是登录shell会话也会执行。登录shell会话的意思是说重启或开启系统时启动第一个Terminal会话时的登录账户,而非登录shell会话则是已经启动系统之后,因为之前新建会话已经登录过了,所以后面再新建Terminal会话时就不会登录,这时候就不会执行/etc/profile了,只是说还保留登录时记录的/etc/profile文件信息。

我们输出/etc/bash.bashrc文件的环境变量信息,给大家看看我的设置,主要看最后一行。

cqu@cqu-X12DPi-N-T-6:~$ cat /etc/bash.bashrc 

xxx上面无关自定义环境变量的部分就省略了...

export LD_LIBRARY_PATH=/usr/local/cuda-11.5/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

之后再新建一个会话,通过命令echo $LD_LIBRARY_PATH来查看环境变量是否设置正确。可以看到里面有相关目录。

在这里插入图片描述

然后进入到安装包目录,重新用sudo bash ./INSTALL来启动安装脚本。结果,出乎意料,仍未成功。

革命尚未成功,同志仍需努力!我有点怀疑是系统里的已经有的这个动态库存在故障(也可能是不兼容),于是在网上不经意间发现了更好的解决这里动态库缺失问题的方案。此处请转至下一章节,以示对这种方案的礼仪!

5.7 在Ubuntu官网上找动态库对应的软件包

上面章节提到动态库libasn1.so.8缺失,用系统中其他软件中包括的同名动态库无法弥补的问题。笔者选择在网上找一个已经编译好的动态库(本人菜鸟,不知道怎么编,能有现成的更好你说是不是)。

非常幸运的是,我发现在Ubuntu软件包官网(https://packages.ubuntu.com/)上可以搜到前面提到的所有缺失的动态库文件。

以libasn1.so.8动态库为例,我们在上面那个Search package directories的搜索框输入libasn1.so.8,然后搜索。

在这里插入图片描述
在结果中,我们看到各种架构的libasn1.so.8动态库文件,因为笔者用的平台是AMD64架构,所以就选择了最后一个,我们也可以看到目录/usr/lib/x86_64-linux-gnu/libasn1.so.8非常对的上。

在这里插入图片描述
发现这一点,我们也可以看到这个软件包的名称是libasn1-8-heimdal,点进去看这个软件包的主页,又可以发现这个软件包的不同架构下的文件列表。

在这里插入图片描述
我们点进AMD64架构,就可以看到这个软件安装包通过命令sudo apt install libasn1-8-heimdal来安装之后,软件包管理器会将这些动态库文件或其他文件放在哪些目录。

在这里插入图片描述
我通过上述安装命令,以及命令ls -l /usr/lib/x86_64-linux-gnu/ | grep libasn显示那个目录的所有libasn动态库,执行命令stat /usr/lib/x86_64-linux-gnu/libasn1.so.8.0.0来查看这个动态库是否是安装libasn1-8-heimdal软件包的时候覆盖的。通过上图可以看到change时间是我安装软件包的那个时间节点,所以可以明确这个动态库是更新了。

再返过头继续安装license Manager,又发生动态库libhcrypto.so.4的缺失。

在这里插入图片描述

现在知道这个方法,就简单多了,直接去官网查看对应哪个软件包,用apt命令安装就是了!

可以找到该动态库从属于软件包libhcrypto4-heimdal,那么我只需执行命令sudo apt install libhcrypto4-heimdal,然后就可以再去重新安装license Manager了。

在这里插入图片描述
接着,又遇到了以下动态库的缺失(左边),以及在官网找到的对应的软件包(右边),分割线以上是之前的动态库和对应的软件包:

libldap-2.4.so.2		libldap-2.4-2
libgssapi.so.3		libgssapi3-heimdal
libkrb5.so.26		libkrb5-26-heimda
libasn1.so.8		libasn1-8-heimdal
------------------分割线---------------------
libwind.so.0		libwind0-heimdal
libhx509.so.5		libhx509-5-heimdal

在接着弥补完两个动态库之后,谢天谢地谢祖宗,哥们咱终于安装成功了!!!

在这里插入图片描述
这一章节还是再说点技巧吧!
如果你在那个Ubuntu软件包官网直接搜没找到,不是说这个软件包没有,而是搜索引擎没办法抵达彼岸(软件包)。

以动态库libldap-2.4.so.2搜不到为例,你可以直接在Bing上搜索【libldap-2.4.so.2 site:packages.ubuntu.com】,就可以找到你想要的结果。这里搜到的网页,全部都是Ubuntu软件包官网的。可以看到Bing搜索引擎的算法,还是比Ubuntu软件包官网要牛逼的吧!

在这里插入图片描述
点进去确认一下,嘿嘿,这不就找到了嘛!!!

在这里插入图片描述

5.8 lmutil :error=2,No such file or directory

首先通过命令ls -l lmutil看这个文件的权限,发现它存在可执行权限。如果没有可执行权限,那就需要通过命令chmod添加权限,既然有这个权限那就接着往下。

cqu@cqu-X12DPi-N-T-6:/usr/ansys_inc/shared_files/licensing/linx64$ ls -l lmutil
-rwxrwxrwx 1 root root 1362736  6月  7  2021 lmutil

再用命令file lmutil查看文件的架构和依赖等信息。我们可以看出来这是一个可执行文件,x86-64架构(跟我的系统和硬件对得上),重点信息是由ld-lsb-x86-64.so.3解释运行。

cqu@cqu-X12DPi-N-T-6:/usr/ansys_inc/shared_files/licensing/linx64$ file lmutil 
lmutil: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-lsb-x86-64.so.3, for GNU/Linux 2.6.9, stripped

有一种可能是这个动态链接库坏了或者压根不存在,我们通过命令sudo locate ld-lsb-x86-64.so.3来查找这个动态库文件。

发现没有任何输出,于是基本可以判断是动态链接库的问题了。(不过为啥输出日志不显示这个呢?真心搞不懂;网上我看到一篇文章,也是提示了相关错误——Imgrd:/lib64/ld-Isb-x86-64.so.3:bad ELF interpreter:No such file or directory,不过那个博主是在centos上安装出现的,这个错误提示得多么精准和到位)。

执行命令ldd lmutil来显示这个二进制文件的依赖项,

cqu@cqu-X12DPi-N-T-6:/usr/ansys_inc/shared_files/licensing/linx64$ ldd lmutil 
linux-vdso.so.1 (0x00007fff49fc8000)
libpthread.so.0 => /usr/lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ffaa604d000)
libm.so.6 => /usr/lib/x86_64-linux-gnu/libm.so.6 (0x00007ffaa5f66000)
libgcc_s.so.1 => /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ffaa5f46000)
libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6 (0x00007ffaa5c00000)
libdl.so.2 => /usr/lib/x86_64-linux-gnu/libdl.so.2 (0x00007ffaa5f41000)
/lib64/ld-lsb-x86-64.so.3 => /lib64/ld-linux-x86-64.so.2 (0x00007ffaa6054000)

接着通过locate命令依次搜索系统中是否真的存在上述依赖项,我发现就只有linux-vdso.so.1和ld-lsb-x86-64.so.3搜不到。

前者搜不到很正常,因为这个linux-vdso.so.1是Linux为了解决和glibc兼容而想出的绝招。

详见文章:《linux-vdso.so.1简介》https://cs.pynote.net/sf/linux/sys/202111136/

VDSO就是Virtual Dynamic Shared Object,就是内核提供的虚拟的.so,这个.so文件不在磁盘上,而是在内核里。内核把包含某.so的内存页在程序启动的时候映射入其内存空间,对应的程序就可以当普通的.so来使用里头的函数。比如syscall()这个函数就是在linux-vdso.so.1里头的,但是磁盘上并没有对应的文件。可以通过ldd /bin/bash看看。

那么后者搜不到正不正常呢?这个从ldd命令的输出结果上看,ld-lsb-x86-64.so.3确实已经链接到了实质上的ld-linux-x86-64.so.2动态库。但是我还是不太确定,于是乎我就执行命令ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3来手动创建这个软链接。

接着我再去点击Get System Hostid Information的时候,就可以提取到hostid了。在这里把第一个id复制一下。

在这里插入图片描述
接着再回到章节4.3。

5.9 重启linux系统之后,许可证失效的问题

目前,不是很清楚为什么许可证在重启linux之后就会失效。

在失效之后,你直接还是用命令sudo /usr/ansys_inc/shared_files/licensing/tools/bin/linx64/ansyslmcenter启动ansyslmcenter。

接着再在左边第一行的view status…选项中start就行,过一段时间显示3个running,再去启动软件就可以了。

还好,其实也不是特别麻烦,毕竟linux系统一般不经常重启和关闭。

5.10 无法启动Nouveau驱动的问题

如果你的icemcfd的启动有明显问题,总是闪退。提示LibGL error:MESA-LOADER:fatled to open nouveau。

在这里插入图片描述
更加推荐先去解决nouveau_dri.so动态库的问题。

实在不行,也可以试试禁用这个nouveau驱动。

Nouveau是由第三方为NVIDIA显卡开发的一个开源3D驱动,让Linux更容易的应对各种复杂的NVIDIA显卡环境,安装完Linux系统即可进入桌面并且有不错的显示效果,所以,很多Linux发行版默认集成了Nouveau驱动,在使用NVIDIA显卡时默认安装Nouveau驱动。但是用户除了想让正常显示图形界面外很多时候还需要一些其他功能,Nouveau驱动不能完成,可能会对安装其他插件造成干扰。

要禁用Nouveau驱动程序,你需要将其添加到内核模块黑名单中。这是在大多数基于Linux的操作系统中禁用Nouveau驱动程序的通用方法。

首先新建或编辑blacklist-nouveau.conf文件。

sudo vi /etc/modprobe.d/blacklist-nouveau.conf

往里面添加下面两行内容

blacklist nouveau
options nouveau modeset=0

更新内核映像以应用更改。用以下命令重建初始RAM磁盘映像。

sudo update-initramfs -u

重启计算机以应用更改:

reboot

重启之后用lsmod命令检查一下该驱动是否启动。如果不显示内容,说明禁用成功。

lsmod | grep nouveau

六、Ansys的“和谐”科普

对于SSQ和谐版本,大家也是耳闻能详,可以说ansys流传的和谐版本基本上就是SSQ版本。

他们在进行和谐处理之后,往往还会在那个和谐压缩包(名称一般是_SolidSQUAD_)中放置一个和谐教程,用英文编写的。
在这里插入图片描述
这个翻译过来就是:
1.安装ANSYS License Manager 2023R1 Linux 64
2.安装ANSYS产品2023R1 Linux 64
在设置时,接受默认的Ansys Licensing Interconnect端口号2325和Ansys FlexNet端口号1055
输入主机名:localhost
3.用和谐的程序文件夹覆盖原始的<ansys_inc>程序文件夹
4.运行/ansys_inc/shared_files/licensing/tools/bin/ansyslmcenter
5.点击“获取系统主机信息”
6.在文本编辑器中打开文件“license.txt”,并替换行中的每个XXXXXXXXXX:
服务器localhost XXXXXXXXXX 1055 带有计算机真实HOSTID
7.保存“license.txt”
8.单击“添加许可文件”>“选择文件”>浏览到文件“License.txt”>单击“安装许可文件”
9.使用/ANSYS_inc/v231/Framework/bin/Linux64/runwb2运行ANSYS Products 2023R1 workbench
10.享受

TeAM SolidSQUAD SSQ和谐

七、Linux系统下的Ansys卸载方法

由于Linux系统并不像win系统那样存在注册表文件。

所以卸载过程其实可以非常暴力地进行,你只需要删掉相关文件及其目录即可。

如果你执行ansys官方设置的卸载程序,Linux系统中的ansys lic目录中仍然会存在很多文件及其目录。这其中有很大一部分原因是因为用户为了ansys软件的正常使用,自己把一些动态库文件放进去了,这些动态库文件在卸载脚本中并没有包括,所以没删掉。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因此其实你执行卸载程序后,还是要用命令sudo rm -rf /usr/ansys_lic来完全删除掉这个目录。

这里是第一步,删除ansys_inc目录。

那么第二步,就是删除.ansys目录了,这个目录里存在很多日志文件,卸载程序没有把它们一起带走,你就手动把它删除了。这个目录一般跟ansys_inc在一个地方,只不过被隐藏起来了,在桌面环境你可以用Ctrl+H显示,在SHELL中你可以用ls -h显示隐藏文件(注意这个h参数)。

第三步,你需要将没有用的环境变量给删掉。当初你安装ansys的时候,可能会在~/.bashrc或/etc/.profile文件中添加环境变量,例如下面三个命令,你需要记住当初你为了ansys某个版本能适配到你的Linux系统而添加的环境变量文件。所以我建议你安装的时候,把那些添加的环境变量记录一下,添加了哪些环境变量,分别在哪些配置文件中,这样便于你卸载干净。

export ANSYSLIC_DIR="/usr/ansys_inc/shared files/licensing"
export DYNARDO_LICENSE_FILE="/usr/ansys_inc/dynardo_SSQ.dat"
export OPTISLANG_FORCE_LICENSE="DYNARDO"

八、学会借鉴win下的安装教程

在和谐2023R1 Linux版本的ansys的时候,我发现“和谐”的步骤和win版本的2023R1 ansys存在很大的相似之处。

就以2023R1为例,哪个版本的许可证服务是在web上设置的,应该没有吧,不看win,你也想不到。

2023R1的win下的安装教程,网上随便搜就一大堆,我就不在这贴图了。

为什么需要借鉴?因为不同版本的ansys,许可证的配置过程可能存在很大不同。你不看,可能永远也想不到那一步。

RESPECT

花了一个星期学习Linux整理出来的安装教程,献给各位观众老爷,欢迎打赏本研究"牲"。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/687723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Simulink 中基于 FPGA 的波束成形:算法设计(附源码)

一、前言 本示例显示了在 Simulink中开发适用于在硬件&#xff08;如现场可编程门阵列 &#xff08;FPGA&#xff09;&#xff09;上实现的波束成形器的工作流程的前半部分。它还演示如何将实现模型的结果与行为模型的结果进行比较。 示例 Simulink 中基于 FPGA 的波束成形&…

shell 数组 ${array[@]} ${array[*]}的使用及区别

数组定义 shell中用括号来表示数组&#xff0c;数组元素间使用空格隔开。 例如&#xff1a; a(1 2 3 4) 表示a数组且有元素为1,2,3,4 也可单个元素逐步来赋值 b[1]"a" b[2]"b" b[3]"c" echo ${b[]} # a b c 关联数组 定义关联数组&#xf…

论文翻译:Segment Anything

论文地址&#xff1a;https://arxiv.org/abs/2304.02643 代码地址&#xff1a;https://github.com/facebookresearch/segment-anything 数据集地址&#xff1a;https://ai.facebook.com/datasets/segment-anything/ “Segment Anything"项目旨在通过引入新的任务、数据集…

决定AI大模型胜负的关键:解读数据在未来竞争中的角色

随着人工智能的迅猛发展&#xff0c;高质量数据的重要性已愈发明显。以大型语言模型为例&#xff0c;近年来的飞跃式进展在很大程度上依赖于高质量和丰富的训练数据集。相比于GPT-2&#xff0c;GPT-3在模型架构上的改变微乎其微&#xff0c;更大的精力是投入到了收集更大、更高…

声卡设备无法正常工作或初始化的原因和解决方法

先来一个小科普&#xff0c;声卡设备是电脑中负责处理音频信号的硬件部件&#xff0c;它需要与相应的声卡驱动程序配合使用&#xff0c;才能让电脑发出或录制声音。 不过&#xff0c;自带声卡的设备或是自行匹配的声卡设备&#xff0c;也经常出现声卡设备无法正常工作或初始化…

通过Jenkins实现Unity多平台自动打包以及相关问题解决

简介 通过本文可以了解到如何在windows和mac上部署Jenkins。并且通过Jenkins实现Unity在IOS,安卓和PC等多平台自动打包的功能&#xff0c;并且可以将打包结果通过飞书机器人同步到飞书群内。优化工作流&#xff0c;提高团队的开发效率。文末记录了实际使用Jenkins时遇到的各种问…

Leetcode44 通配符匹配

给你一个输入字符串 (s) 和一个字符模式 (p) &#xff0c;请你实现一个支持 ? 和 * 匹配规则的通配符匹配&#xff1a; ? 可以匹配任何单个字符。 * 可以匹配任意字符序列&#xff08;包括空字符序列&#xff09;。 判定匹配成功的充要条件是&#xff1a;字符模式必须能够 完…

真心靠谱 Ubuntu18.04 换源 国内阿里云私服

本篇 blog 真心靠谱 1、备份原来的默认源 cp /etc/apt/sources.list{,.bak} 2、换阿里云的源&#xff08;需要稍作修改&#xff09; 直接使用阿里云的会报错 https://developer.aliyun.com/mirror/ubuntu 以上报错&#xff1a;是https证书问题&#xff0c;网上有人说安装证…

基于改进ISODATA算法的负荷场景曲线聚类MATLAB程序

参考文献&#xff1a; 基于机器学习的短期电力负荷预测和负荷曲线聚类研究_张辰睿&#xff08;硕士论文&#xff09; 参考其第三章 主要内容&#xff1a; 主要包含四种聚类算法&#xff0c;K-means聚类、ISODATA聚类、L-ISODATA聚类及K-L-ISODATA聚类&#xff0c;并且包含了…

JSch登录sftp时发现需要Kerberos身份验证

本问记录使用JSch登录sftps时遇到的Kerberos验证问题并记录了解决方法 项目场景&#xff1a; 项目开发中使用了SFTP&#xff0c;debug调试程序时发现了每次都需要手动输入 Kerberos的口令信息。这就很奇怪了难道每次连接SFTP时候都需要手动输入吗&#xff1f; 日志如下&#x…

RPC核心原理详解

什么是RPC&#xff1f; RPC的全称是Remote Procedure Call&#xff0c;即远程过程调用。简单解读字面上的意思&#xff0c;远程肯定是指要跨机器而非本机&#xff0c;所以需要用到网络编程才能实现&#xff0c;但是不是只要通过网络通信访问到另一台机器的应用程序&#xff0c…

基于Dubbo分布式学校信息管理系统设计与实现

一、引言 1.1 课题背景 随着时代的发展与进步,计算机网络也随之日益完善,渐渐覆盖了我们生活的各个方面。在信息化和数字化的时代背景下,使用计算机管理学校信息来提升教育工作的质量和效率,是大势所趋,所以近年来,随着网络技术的不断发展,使用信息管理系统的学校越来…

云原生时代数据治理的变革与创新

随着数字化进程的深入&#xff0c;企业对数据的依赖日益加深&#xff0c;数据资源的重要性愈发凸显。如何管好、用好数据&#xff0c;做好数据治理工作&#xff0c;发挥数据资源价值&#xff0c;成为企业提质增效过程中的重要议题。 在本次直播中&#xff0c;我们介绍了数据治…

leetcode:191. 位1的个数

难度&#xff1a;简单 编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中数字位数为 1 的个数&#xff08;也被称为汉明重量&#xff09;。 提示&#xff1a; 请注意&#xff0c;在某些语言&#xff08;…

qt 最小文件系统 交叉编译qt源码

busybox qt源码下载后&#xff0c;需要交叉编译&#xff0c;在开发板上生成相应的库&#xff0c;才能在开发板上使用 我用qt制作了一个计时器&#xff0c;有相应的按钮功能。在windows上我大概知道鼠标点击按钮能够触发相应事件。把该程序移植到linux开发板上&#xff0c;开发…

Qt QSqlTableModel详解

背景知识&#xff1a; Qt SQL的API分为不同层&#xff1a; 驱动层 驱动层 对于QT是基于C来实现的框架&#xff0c;该层主要包括QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorbase、QSqlDriverPlugin and QSqlResult。这一层提供了特定数据库和SQL API层之间的底层桥梁…

AutoSAR系列讲解(入门篇)3.2-RTE对Runnables的运行支撑

目录 一、作为运行环境的主要功能点 二、Runnables的触发条件 一、作为运行环境的主要功能点 通过RTE给runnable提供触发事件。 之前说过了runnable是可以被触发的&#xff0c;就是需要通过RTE来实现这个触发和调用runnable&#xff0c;具体在下面讲解 通过RTE给runnable提供…

STM32外设系列—DHT11

文章标题 一、DHT11简介二、数据手册分析2.1 接口说明2.2 串行通信说明2.2.1 单总线通信2.2.2 单总线传输数据位定义2.2.3 时序图 三、DHT11程序设计3.1 初始化GPIO3.2 发送起始信号3.3 接收一个字节数据3.4 接收温湿度信息并校准 四、总结 一、DHT11简介 DHT11是一款常用的数…

Qt生成安卓工程运行闪退分析

提示找不到库 jin目录下库是存在的 提示下列库没有找到 libopencv_java4.so libtiff.so libboost_filesystem.so.1.71.0 libboost_chrono.so.1.71.0 libboost_regex.so.1.71.0 导致无法加载符号 最终导致应用无法启动&#xff0c;而退出 重新编译为静态库,并以静态库方式链…

技术管理第三板斧招聘与解聘-升级汰换

1.开除人“心要慈&#xff0c;刀要快” No Surprise&#xff1a; 不要突然Fire一个人&#xff08;离职一定不是一个突发行为&#xff09;&#xff0c;没有任何征兆告诉员工 A“你被开除了”&#xff0c;这是典型的管理失职。如果A存在问题&#xff0c;你应该先告知&#xff0…