计算化学公社

 找回密码 Forget password
 注册 Register

私用小电脑WSL2装RockyLinux10虚拟机,及LMod管理OpenMPI-4.1.8, ORCA-6.1.1等的笔记

查看数: 1013 | 评论数: 3 | 收藏 Add to favorites 10
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2026-1-16 16:04

正文摘要:

本帖最后由 Uus/pMeC6H4-/キ 于 2026-1-16 16:05 编辑 私用小电脑WSL2装RockyLinux10虚拟机,及LMod管理OpenMPI-4.1.8, ORCA-6.1.1等的笔记 一、前言 本帖记录给像我头像这样的一台普通自用 Windows 11 办 ...

回复 Reply

Uus/pMeC6H4-/キ 发表于 Post on 5 hour ago
好奇一下,最近几天这帖的浏览量增加得出乎意料地快,是有谁在其他地方转了个指向这帖的链接吗?

有关 Gaussian/GaussView 再说一点,比如装到 /opt 下平时配备环境的习惯大概会编辑 ~/.bashrc 添加这样的指令
  1. export g16root=/opt
  2. export GAUSS_SCRDIR=/opt/g16/scratch
  3. export GAUSS_MEMDEF=25600MB
  4. source /opt/g16/bsd/g16.profile
复制代码
其中最后一行 source 的 g16.profile 文件也是一个 shell 脚本。但在写 modulefile 用 LMod 做版本管理时不能简单改成 modulefile 里的 execute {cmd="source /opt/g16/bsd/g16.profile", modeA={"load"}} 指令,因为这样加载完再卸载会残留设置;实测用上面提到的 sh_to_modulefile 外部工具或者 modulefile 里的 source_sh 指令都会报错。这种情况下,有必要 less /opt/g16/bsd/g16.profile 查看文件,综合考虑所有设置对环境变量的影响,再自行翻译成 lua 语法的 modulefile 指令。

比如,看到 g16.profile 前面几行是这样的
  1. gr=$HOME
  2. if [ "$g16root" ]
  3.   then gr=$g16root
  4.   fi
  5. export GAUSS_EXEDIR="$gr/g16/bsd:$gr/g16"
  6. ...
复制代码
那么对应的 modulefile 里,包括上面几个设置的语句为
  1. local gr = "/opt"
  2. setenv("g16root", gr)
  3. setenv("GAUSS_SCRDIR", pathJoin(gr, "g16/scratch"))
  4. setenv("GAUSS_MEMDEF", "25600MB")
  5. local gauss_exedir = pathJoin(gr, "g16/bsd") .. ":" .. pathJoin(gr, "g16")
  6. setenv("GAUSS_EXEDIR", gauss_exedir)
  7. ...
复制代码
此处利用了 lua 语法中定义局部字符串变量和用 .. 表示 concatenation 的特性,以及 LMod 的 pathJoin 函数拼凑路径。

又比如, g16.profile 里有这样的分支语句
  1. if [ "$PATH" ]; then
  2.   export PATH="$PATH:$gr/gauopen:$GAUSS_EXEDIR"
  3. else
  4.   export PATH="$gr/gauopen:$GAUSS_EXEDIR"
  5.   fi
复制代码
显然这就是添加 PATH 的过程,在 LMod 里只需要一行
  1. append_path("PATH", pathJoin(gr, "gauopen") .. ":" .. gauss_exedir)
复制代码

特别注意,append_path 把新的路径加到变量末尾, prepend_path 把新的路径加到变量前头,在执行程序从 $PATH 搜索路径时是从前到后找、优先按前面找到的用,所以必须结合新路径的优先度考虑该用哪个。对于 WSL 的虚拟机而言,由于 $PATH 末尾包含了 Windows 系统的路径,所以应当改用 prepend_path 的写法。
  1. prepend_path("PATH", pathJoin(gr, "gauopen") .. ":" .. gauss_exedir)
复制代码

Daniel_Arndt 发表于 Post on 6 day ago
我一般不用C:\Users\{username}\.wslconfig,而是通过WSL里面/etc/wsl.conf文件来设置一些东西。

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

GMT+8, 2026-1-23 15:17 , Processed in 0.179866 second(s), 27 queries , Gzip On.

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