计算化学公社

 找回密码 Forget password
 注册 Register
Views: 402|回复 Reply: 1
打印 Print 上一主题 Last thread 下一主题 Next thread

[Linux] 在Rocky Linux 9.6下安装maui3.3.1心得分享

[复制链接 Copy URL]

1

帖子

0

威望

121

eV
积分
122

Level 2 能力者

本帖最后由 JerryDK 于 2025-9-6 17:08 编辑

最近组内搭建集群系统,采用了Rocky Linux 9.6,在PBS已经预装并通过各项测试后,发现和PBS经常联用的maui没有安装。
论坛内已有现成的安装经验CentOS下安装PBS+maui教程 - 高性能计算、集群、并行技术 (HPC , Cluster , Parallel Computing) - 计算化学公社,本文是在该安装经验的第四部分”主节点下安装maui插件“下进行的编译过程总结。本文应该也适用于目前最新的各个linux系统,因为都是遇到新版本的GCC,sed的问题,只要能先安装上pbs torque。
【全程在root下进行】
1. Rocky Linux 9.6的GCC版本为11.2.1,sed版本为4.8,在第一步configure时就会出现因sed版本过新导致的报错。大家因此需要下载并编译sed 4.2.2(也是centos 7的sed版本)在任意一个文件夹中(不要和原本的sed 4.8产生路径冲突),之后在maui文件夹中使用4.2.2进行configure:
  1. PATH=/.../sed4.2.2/bin:$PATH ./configure --prefix=/usr/local/maui --with-pbs=/usr/local/torque
复制代码
PATH指向你的sed4.2.2的安装目录。
2. 成功configure后,在下一步的make遇到全局变量重复定义的问题,我认为应该是make版本过新的原因,不过通过对对应源码的更改就能解决,以下是举例。
这是其中的一个报错信息:
  1. /usr/bin/ld: ../../lib/libmoab.a(MSys.o):/home/.../maui-3.3.1/src/moab/MSys.c:147: multiple definition of 'MSim'; mprof.o:/home/.../maui-3.3.1/src/server/mprof.c:178: first defined here
复制代码
这是一个全局变量重复定义问题,通常是因为变量在多个源文件中没有使用 extern 声明,而是直接定义,结果导致编译器认为它们是不同的实例。解决办法:
MSys.c 作为主文件,保留定义位置;其他文件的定义位置,用vi修改,添加extern声明。
在 mprof.c 文件的178行中,改为声明:
  1. extern int MSim
复制代码
(其实在mprof.c文件中你可以发现,很多都加了extern的声明了,只有偶尔几个没有添加导致了报错,因此要把它们补上。)
总共大概需要改几个文件中的5-6个位置,以上是一个实例。改完后,成功make,继而成功make install。
在进行下一步前,先确保/etc/rc.d/init.d/functions文件是存在的,不然maui.d进程无法启动。
3. 对没有chkconfig,使用systemctl控制进程的方法:
在进行到原文以下步数的时候:
  1. chkconfig --add maui.d
  2. chkconfig maui.d on
  3. echo "/usr/local/torque/lib" > /etc/ld.so.conf.d/torque.conf
  4. echo "/usr/local/maui/lib" > /etc/ld.so.conf.d/maui.conf
  5. ldconfig
  6. chkconfig pbs_sched off
复制代码
因为chkconfig已经不存在Rocky Linux 9.6下了,而且用dnf/yum都没办法安装chkconfig(源包已经没办法下载)的情况下,我们需要自己写一个maui.d.service文件给systemctl,让他去启动init.d/maui.d这个SysVinit的进程。直接打/etc/init.d/maui.d start会报错
  1. Starting maui.d (via systemctl): Failed to start maui.d.service: Unit maui.d.service not found.
复制代码
这个说明systemctl必须要有一个maui.d.service的进程文件来启动。
我们将写一个在/etc/systemd/system/maui.d.service文件,如下:
  1. [Unit]
  2. Description=MAUI Scheduler
  3. After=network.target

  4. [Service]
  5. Type=forking
  6. ExecStart=/etc/init.d/maui.d start
  7. ExecStop=/etc/init.d/maui.d stop
  8. ExecReload=/etc/init.d/maui.d reload
  9. Restart=on-failure
  10. LimitNOFILE=infinity
  11. PIDFile=/var/spool/maui/maui.pid

  12. [Install]
  13. WantedBy=multi-user.target
复制代码
这其中需要留意的是PIDFile的位置,如果不写一个root能写入的位置,在默认的/run/下会遇到operation not permitted的进程启动报错:
  1. master systemd[1]: maui.service: can't open PID file /run/maui.pid (yet?) after start: Operation not permitted
复制代码

因此我找了一个位置(/var/spool/maui)来放这个maui.pid进程文件,这个位置是可写的(755)。
创建好进程文件之后,输入以下命令,刷新systemd配置并启动maui.d,并检查maui.service没有出错:
  1. systemctl daemon-reload
  2. systemctl enable maui.service
  3. systemctl start maui.service
  4. systemctl status maui.service
复制代码
5. 后续走完以下命令,即原文中最后的部分(将chkconfig改为systemctl):
  1. echo "/usr/local/torque/lib" > /etc/ld.so.conf.d/torque.conf
  2. echo "/usr/local/maui/lib" > /etc/ld.so.conf.d/maui.conf
  3. systemctl stop pbs_sched
  4. cp etc/maui.sh /etc/profile.d/
复制代码
6. 退出root用户,返回个人用户,检查showq, checkjob等命令是否正常。

最后附上functions文件与maui.d.service文件。



maui.d.service

308 Bytes, 下载次数 Times of downloads: 2

functions

18 KB, 下载次数 Times of downloads: 0

评分 Rate

参与人数
Participants 1
eV +8 收起 理由
Reason
sobereva + 8

查看全部评分 View all ratings

220

帖子

0

威望

497

eV
积分
717

Level 4 (黑子)

2#
发表于 Post on 2025-9-6 20:44:00 | 只看该作者 Only view this author
以前用pbs,现在用slurm,还是slurm稳定好用

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-1-23 22:21 , Processed in 0.174611 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list