https://www.cnblogs.com/yeungchie/
Environment Modules: provides dynamic modification of a user's environment
modules-5.1.0 点击下载
wget https://jaist.dl.sourceforge.net/project/modules/Modules/modules-5.1.0/modules-5.1.0.tar.gz
下载不了的话可以使用我上传到了博客园的 链接
wget https://files.cnblogs.com/files/yeungchie/modules-5.1.0.tar.gz
也可以通过 yum -y install environment-modules 安装,但是一般这样安装的是很老的版本。
目前已知 3.x 版本中存在一些 Bug,例如同时加载的 modulefile 较多的时候,module purge 会出现错误。
建议使用新版本,目前最新版是 Modules Release 5.1.0
依赖 Tcl 版本 >= 8.5 ,查看 Tcl 版本:
echo puts \$tcl_version | tclsh
# 8.6
下面演示将 Modules 工具的文件放到 /opt/tools/modules 这个路径,下面再建立三个子目录:
路径可以根据需求自行改动
cd /opt/tools/modules/src
wget https://files.cnblogs.com/files/yeungchie/modules-5.1.0.tar.gz
tar -zxvf modules-5.1.0.tar.gz
cd modules-5.1.0
./configure --prefix=/opt/tools/modules/installed --modulefilesdir=/opt/tools/modules/modulefiles
这一步可能会报错,提示找不到 tclConfig.sh,需要用 --with-tcl 来指定 tclConfig.sh 所在的路径。
首先使用 whereis 找到 tclConfig.sh 的位置:
whereis tclConfig.sh
# tclConfig:
如果没找到说明 tcl-devel 没安装, yum 安装即可:
yum -y install tcl-devel
再次查找就可以找到了:
whereis tclConfig.sh
# tclConfig: /usr/lib64/tclConfig.sh
接着重新执行 configure ,加上 --with-tcl
./configure --with-tcl=/usr/lib64/ --prefix=/opt/tools/modules/installed --modulefilesdir=/opt/tools/modules/modulefiles
其实现在不加
--with-tcl也没有问题了,/usr/lib64/ 是一个比较规范的路径,能够自动识别到的。
make && make install
工具比较小,很快就安装好了。
最后在 ~/.bashrc 中增加下面这句,就可以自动加载 modules 工具了。
source /opt/tools/modules/installed/init/profile.sh
也可以写到
/etc/profile让所有用户都默认加载。
具体加载哪个文件,看自己用的是那种 shell 环境。
这些算是使用 Linux 的常识,就不多赘述了。
查看一下版本,安装完成。
module -V
# Modules Release 5.1.0 (2022-04-30)
安装完成后 modulefiles 目录下会生成一些模版,可以参考一下。
modulefiles 一般是三级 目录 / 文件 的结构:
/opt/tools/modules/modulefiles/
├── advm
│ └── 20.10
├── assura
│ └── 416
├── calibre
│ ├── 2019
│ └── 2020
├── ic
│ ├── 617ISR22
│ └── 618.130
├── sos
│ └── 7.05
├── spectre
│ └── 181
...
用 virtuoso 来举例吧,下面制作 617 和 618 的两个版本的 modulefile。
在 /opt/tools/modules/modulefiles/ 下需要创建一个目录 ic,再在 ic 目录下编写两个文件就叫 617 和 618。
#%Module 开头,这样才能被工具识别为 modulefile。#%Module
set version 617ISR22
set HOME $::env(HOME)
set CAD /opt/eda/cadence
set CDS $CAD/IC617ISR22
setenv CDSHOME $CDS
setenv CDS_HOME $CDS
setenv LANG C
setenv CDS_Netlisting_Mode Analog
setenv CDS_ENABLE_VMS 1
setenv CDS_LOAD_ENV CWD
setenv CDS_LOG_PATH $HOME/LOG
setenv CDS_LIC_FILE $CAD/license/license.dat
setenv CDS_LIC_ONLY 1
setenv CDS_AUTO_64BIT ALL
setenv OA_UNSUPPORTED_PLAT linux_rhel50_gcc44x
setenv W3264_NO_HOST_CHECK 1
prepend-path OA_HOME $CDS/oa
prepend-path OA_PLUGIN_PATH $CDS/oa/data/plugins
prepend-path PATH $CDS/tools/bin
prepend-path PATH $CDS/tools/dfII/bin
prepend-path PATH $CDS/tools/plot/bin
prepend-path LD_LIBRARY_PATH $CDS/tools/plot/bin
#%Module
set version 618
set HOME $::env(HOME)
set CAD /opt/eda/cadence
set CDS $CAD/IC618.130
setenv CDSHOME $CDS
setenv CDS_HOME $CDS
setenv LANG C
setenv CDS_Netlisting_Mode Analog
setenv CDS_ENABLE_VMS 1
setenv CDS_LOAD_ENV CWD
setenv CDS_LOG_PATH $HOME/LOG
setenv CDS_LIC_FILE $CAD/license/license.dat
setenv CDS_LIC_ONLY 1
setenv CDS_AUTO_64BIT ALL
setenv OA_UNSUPPORTED_PLAT linux_rhel50_gcc44x
setenv W3264_NO_HOST_CHECK 1
prepend-path OA_HOME $CDS/oa
prepend-path OA_PLUGIN_PATH $CDS/oa/data/plugins
prepend-path PATH $CDS/tools/bin
prepend-path PATH $CDS/tools/dfII/bin
prepend-path PATH $CDS/tools/plot/bin
prepend-path LD_LIBRARY_PATH $CDS/tools/plot/bin
在第二级目录下新增一个 .version 文件用来指定默认的版本。
#%Module
set ModulesVersion 618
当然这里的就算不指定,默认的版本也会是 618
modulefiles 写好后就可以使用 module 命令来加载零活地加载环境和切换软件版本了。
查看当前所有可用的 module
module avail # 查看所有的
module avail ic # 只看 ic 的
------------------------ /opt/tools/modules/modulefiles ------------------------
ic/617 ic/618Key:
modulepath default-version
加载某个 module
module add ic
virtuoso -V
@(#)$CDS: virtuoso version 6.1.8-64b 08/04/2020 19:31 (cpgsrv11) \$
查看当前已经加载的 module
module list
Currently Loaded Modulefiles:
- ic/618
Key:
default-version
切换某个 module
module switch ic ic/617
virtuoso -V
@(#)$CDS: virtuoso version 6.1.7-64b 08/21/2018 19:47 (sjfhw316) \$
移除某个 module
module rm ic
module list ; virtuoso -V
No Modulefiles Currently Loaded.
bash: virtuoso: command not found
如果加载了同个软件的多个版本,则一次 rm 只会移除一个版本。
当然同一个软件加载多个版本是不规范的操作。
清空所有已经加载的 module
module purge
注意这个命令可能在老版本中有人会习惯使用
module clear,这个实际上是无效的。
它只会清空module list的内容,并不会移除环境变量中已经加载的内容。
因此后续再进行module rm操作都是无效的。
我自己的理解是,module clear的效果只是将已经配置好的环境 "摆脱" Module 工具的控制。
更多的命令使用方法可以查看 module --help
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t