计算化学公社

 找回密码 Forget password
 注册 Register
Views: 12024|回复 Reply: 11

[建模与可视化] XCrySDen在CentOS上的傻瓜式安装方法

[复制链接 Copy URL]

4万

帖子

99

威望

4万

eV
积分
89863

管理员

公社社长+计算化学玩家

发表于 Post on 2020-7-22 06:27:54 | 显示全部楼层 Show all |阅读模式 Reading model
XCrySDen在CentOS上的傻瓜式安装方法

文/Sobereva@北京科音  2020-Jul-22


1 前言

XCrySDen(http://www.xcrysden.org)是非常流行的第一性原理程序Quantum ESPRESSO用户经常用的重要工具,可以观看输入输出文件、观看轨迹、设置k点等,而且作图效果挺不错。XCrySDen在Ubuntu上比较容易运行,但对于做计算化学的人用得非常多的CentOS就不那么容易了。XCrySDen很老的版本提供了semishared版,在CentOS里解压后就能运行,但较新的XCrySDen官方只提供了shared版(至少是对于撰文时最新的1.6.2版而言),里面涉及的一些动态库在CentOS里没有相应的源。为了让CentOS用户用XCrySDen毫无障碍,笔者在CentOS下编译了XCrySDen,并且同时提供了傻瓜式编译的源代码包。


2 预编译版XCrySDen的安装

下载http://sobereva.com/attach/564/xcrysden-1.6.2_sobereva.tar.gz。解压后,进入此目录,运行./xcrysden就可以启动了。如果在~/.bashrc目录下加上export PATH=$PATH:[XCrySDen的目录名],则重新进入终端后就可以在任意目录下直接启动XCrySDen了。

这个笔者编译的XCrySDen 1.6.2在CentOS 7系列各个版本上都可以运行。如果读者装系统的时候装的方式和《在VMware 15中安装CentOS 7.6的完整过程视频演示》(http://sobereva.com/454)里演示的相同,不需要装额外的库就可以直接运行。如果运行时提示缺库,Google一下报错提示,用yum安装相应的包即可。

对于CentOS 8.0,笔者发现没法直接运行,但只要把解压后目录下的tcl目录下的xcInit.tcl里的两处0m都改为0就可以运行,并且关闭程序的时候必须点击右上角强行关闭。


3 XCrySDen的编译

下面是基于笔者修改的XCrySDen 1.6.2的源代码包的编译过程。前面说的笔者的预编译版如果能正常用就没必要自己编译。在CentOS 7.x和8.0下按以下方法都能编译通过。

运行以下命令安装编译过程要用的库
yum install libGL-devel libGLU-devel libXmu-devel

机子里应当已经装了gcc和gfortran,如果没装的话运行yum install gcc-gfortran来安装。

下载笔者修改的源代码包:http://sobereva.com/attach/564/xcrysden-1.6.2_src_sobereva.tar.gz。解压后进入其中,运行make all即可,大约5分钟就能编译完毕。之后直接运行./xcrysden即可启动。

对于某些CentOS版本,比如CentOS 7.4,编译中途可能失败,需要在解压目录下的Makefile中的X_LIB=后面加入-lXss选项,然后重新make all。经测试至少对于CentOS 7.7不用加这个。

关于笔者修改的XCrySDen源代码包的一些细节:Make.sys文件是在system/Make.sys-shared基础上修改的,原先的这个文件完全没法用,笔者改了许多地方才终于令编译能成功。具体改了哪些,自行对照Make.sys-shared就知道了。Makefile文件也做了修改,把all:后面的mesa去掉了,因为CentOS的源直接就有这个,通过前述的yum步骤已经安装了,因此就没必要再在make all的时候编译了。其实对于CentOS 8,由于源里的tcl/tk已经升为了XCrySDen 1.6.2要求的8.6版,因此不编译tcl/tk而直接通过源来装也不是不可以。另外,原本make all的时候会自动下载tcl、tk、Togl、fftw、bwidget包,但在大陆地区由于网速问题,很容易中途下载失败。因此笔者直接将这些压缩包放到了external/src目录下,这样编译过程中就会自动利用,而不自动下载这些包了。

评分 Rate

参与人数
Participants 10
eV +46 收起 理由
Reason
Yummerwei + 4 好物!
Aridea + 5 好物!
ChemG + 5
rabbitkiller + 5 好物!
Penson + 2 好物!
王二葛 + 5 V5!
朙天儿 + 5 好物!
ggdh + 5 赞!
zsu007 + 5 好物!
hit_liaols + 5 好物!

查看全部评分 View all ratings

北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办最高质量的各种计算化学类培训:初级量子化学培训班基础(中级)量子化学培训班分子动力学与GROMACS培训班量子化学波函数分析与Multiwfn程序培训班,内容介绍以及往届资料购买请点击链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的最佳途径。培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取培训最新消息、避免错过网上最有价值的计算化学文章!
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人,讨论范畴相同
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

307

帖子

1

威望

5729

eV
积分
6056

Level 6 (一方通行)

发表于 Post on 2020-7-22 07:26:27 | 显示全部楼层 Show all
谢谢社长的分享!

93

帖子

0

威望

674

eV
积分
767

Level 4 (黑子)

发表于 Post on 2020-7-22 10:18:09 | 显示全部楼层 Show all
赞社长!当初为了编译Xcrysden被折磨得欲哭无泪  以后就方便啦!

239

帖子

0

威望

963

eV
积分
1202

Level 4 (黑子)

发表于 Post on 2020-8-16 18:45:46 | 显示全部楼层 Show all
大赞社长,这个软件一直看着眼馋
努力挖掘科学的本质

145

帖子

1

威望

1499

eV
积分
1664

Level 5 (御坂)

发表于 Post on 2020-10-14 08:36:55 | 显示全部楼层 Show all
非常非常感谢社长,可以使用啦。第一次安装的时候打不开,后来运行yum install libGL-devel libGLU-devel libXmu-devel后,再使用社长修改的XCrySDen 1.6.2的源代码包编译就可以成功打开啦。我是Vmware 15.5, centos 7.8,可能之前是我的库不全吧。
我唯一知道的就是我一无所知,但我是化学小迷弟

3

帖子

0

威望

11

eV
积分
14

Level 1 能力者

发表于 Post on 2020-12-26 12:25:17 | 显示全部楼层 Show all
社长您好,我在按照您的教程安装预编译的XCrySDen时,解压之后运行XCrySDen时出现了附件图片中的问题,,想请教一下这个应该怎么解决。
无标题.png

3

帖子

0

威望

11

eV
积分
14

Level 1 能力者

发表于 Post on 2020-12-26 12:57:50 | 显示全部楼层 Show all
liujie2020 发表于 2020-12-26 12:25
社长您好,我在按照您的教程安装预编译的XCrySDen时,解压之后运行XCrySDen时出现了附件图片中的问题,,想 ...

社长,不好意思,补充一下,我在虚拟机中是可以运行的,但是我用SSH远程连接之后运行不了,我想解决这个问题

3

帖子

0

威望

11

eV
积分
14

Level 1 能力者

发表于 Post on 2020-12-26 13:06:23 | 显示全部楼层 Show all
liujie2020 发表于 2020-12-26 12:57
社长,不好意思,补充一下,我在虚拟机中是可以运行的,但是我用SSH远程连接之后运行不了,我想解决这个 ...

社长,我安装了MobaXterm远程连接就行了,现在已解决,麻烦社长了

35

帖子

0

威望

191

eV
积分
226

Level 3 能力者

发表于 Post on 2021-9-7 08:38:17 | 显示全部楼层 Show all
本帖最后由 hitvip 于 2021-9-7 09:08 编辑

我的系统是 : CentOS Linux release 8.4.2105

预编译版本运行会提示错误,所以我尝试自己编译卢老师修改后的源代码(谢谢卢老师的辛勤劳动成果),但 make all 后提示:

  1. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `ZlibStreamCleanup':
  2. tclZlib.c:(.text+0x3d): undefined reference to `inflateEnd'
  3. tclZlib.c:(.text+0xc1): undefined reference to `deflateEnd'
  4. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `ConvertError':
  5. tclZlib.c:(.text+0x3b5): undefined reference to `zError'
  6. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `ZlibTransformOutput':
  7. tclZlib.c:(.text+0xd58): undefined reference to `deflate'
  8. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `ZlibTransformClose':
  9. tclZlib.c:(.text+0xf0b): undefined reference to `deflate'
  10. tclZlib.c:(.text+0xf3c): undefined reference to `deflateEnd'
  11. tclZlib.c:(.text+0x104f): undefined reference to `inflateEnd'
  12. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `SetDeflateDictionary.part.0':
  13. tclZlib.c:(.text+0x10d0): undefined reference to `deflateSetDictionary'
  14. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `SetInflateDictionary.part.1':
  15. tclZlib.c:(.text+0x1100): undefined reference to `inflateSetDictionary'
  16. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `ZlibTransformSetOption':
  17. tclZlib.c:(.text+0x12a9): undefined reference to `deflate'
  18. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `ResultGenerate':
  19. tclZlib.c:(.text+0x1601): undefined reference to `inflate'
  20. tclZlib.c:(.text+0x16b0): undefined reference to `inflate'
  21. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `Tcl_ZlibStreamInit':
  22. tclZlib.c:(.text+0x213e): undefined reference to `inflateInit2_'
  23. tclZlib.c:(.text+0x22a1): undefined reference to `deflateInit2_'
  24. tclZlib.c:(.text+0x22bf): undefined reference to `deflateSetHeader'
  25. tclZlib.c:(.text+0x22d8): undefined reference to `inflateGetHeader'
  26. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `Tcl_ZlibStreamReset':
  27. tclZlib.c:(.text+0x2535): undefined reference to `inflateEnd'
  28. tclZlib.c:(.text+0x25d5): undefined reference to `inflateInit2_'
  29. tclZlib.c:(.text+0x2654): undefined reference to `deflateInit2_'
  30. tclZlib.c:(.text+0x26b1): undefined reference to `deflateEnd'
  31. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `Tcl_ZlibStreamPut':
  32. tclZlib.c:(.text+0x2896): undefined reference to `deflateBound'
  33. tclZlib.c:(.text+0x28d1): undefined reference to `deflate'
  34. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `Tcl_ZlibStreamGet':
  35. tclZlib.c:(.text+0x2ba5): undefined reference to `inflate'
  36. tclZlib.c:(.text+0x2cbb): undefined reference to `inflate'
  37. tclZlib.c:(.text+0x2f0e): undefined reference to `inflate'
  38. tclZlib.c:(.text+0x2ffe): undefined reference to `inflateEnd'
  39. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `Tcl_ZlibDeflate':
  40. tclZlib.c:(.text+0x3aef): undefined reference to `deflateInit2_'
  41. tclZlib.c:(.text+0x3b07): undefined reference to `deflateSetHeader'
  42. tclZlib.c:(.text+0x3b1a): undefined reference to `deflateBound'
  43. tclZlib.c:(.text+0x3b3e): undefined reference to `deflate'
  44. tclZlib.c:(.text+0x3b4f): undefined reference to `deflateEnd'
  45. tclZlib.c:(.text+0x3c74): undefined reference to `deflateEnd'
  46. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `Tcl_ZlibInflate':
  47. tclZlib.c:(.text+0x3daa): undefined reference to `inflateEnd'
  48. tclZlib.c:(.text+0x3f23): undefined reference to `inflateInit2_'
  49. tclZlib.c:(.text+0x3f43): undefined reference to `inflateGetHeader'
  50. tclZlib.c:(.text+0x3f8b): undefined reference to `inflate'
  51. tclZlib.c:(.text+0x401d): undefined reference to `inflateEnd'
  52. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `Tcl_ZlibCRC32':
  53. tclZlib.c:(.text+0x4117): undefined reference to `crc32'
  54. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `Tcl_ZlibAdler32':
  55. tclZlib.c:(.text+0x4127): undefined reference to `adler32'
  56. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `ZlibCmd':
  57. tclZlib.c:(.text+0x41d0): undefined reference to `inflateInit2_'
  58. tclZlib.c:(.text+0x4240): undefined reference to `inflateEnd'
  59. tclZlib.c:(.text+0x425d): undefined reference to `deflateEnd'
  60. tclZlib.c:(.text+0x501c): undefined reference to `deflateInit2_'
  61. tclZlib.c:(.text+0x5246): undefined reference to `deflateSetHeader'
  62. tclZlib.c:(.text+0x5283): undefined reference to `inflateGetHeader'
  63. /home/pfg/Apps/xcrysden-1.6.2/external/lib/libtcl8.6.a(tclZlib.o): In function `TclZlibInit':
  64. tclZlib.c:(.text+0x5372): undefined reference to `zlibVersion'
  65. collect2: error: ld returned 1 exit status
  66. make[2]: *** [Makefile:30: xcrys] Error 1
  67. make[2]: Leaving directory '/home/pfg/Apps/xcrysden-1.6.2/C'
  68. make[1]: *** [Makefile:22: compile] Error 2
  69. make[1]: Leaving directory '/home/pfg/Apps/xcrysden-1.6.2/C'
  70. make: *** [Makefile:83: src-C] Error 2
  71. (qe) [pfg@cent8-localdomain xcrysden-1.6.2]$
复制代码


好像和 zlibVersion 有关系?如何处理呢?   谢谢~


48

帖子

0

威望

1161

eV
积分
1209

Level 4 (黑子)

发表于 Post on 2021-10-25 19:41:50 | 显示全部楼层 Show all
hitvip 发表于 2021-9-7 08:38
我的系统是 : CentOS Linux release 8.4.2105

预编译版本运行会提示错误,所以我尝试自己编译卢老师修 ...

遇到同样的问题

326

帖子

9

威望

1984

eV
积分
2490

Level 5 (御坂)

发表于 Post on 2021-12-30 17:33:18 | 显示全部楼层 Show all

在我的centOS8上编译也是同样有问题。安装了预编译包,虽然能正常打开图形界面,但是运行xcrysden的时候会报无法调用ftnunit的错误,yum安装了libgfortran.so.3动态库也不好使。
可以在win下装个Xmind和Cygwin从而使用xcrysden,参考这个视频https://www.youtube.com/channel/UCNqAUoifyM2hxaiVA4zJ-5w去装。
Cygwin还挺好使的,甚至比cmder在命令操作上更能接近Linux
自由发挥,野蛮生长

326

帖子

9

威望

1984

eV
积分
2490

Level 5 (御坂)

发表于 Post on 2022-1-12 12:41:49 | 显示全部楼层 Show all
本帖最后由 丁越 于 2022-1-12 12:43 编辑
丁越 发表于 2021-12-30 17:33
在我的centOS8上编译也是同样有问题。安装了预编译包,虽然能正常打开图形界面,但是运行xcrysden的时候 ...

使用预编译版时dnf install compat-libgfortran-48就解决问题了
自由发挥,野蛮生长

本版积分规则 Credits rule

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

GMT+8, 2023-2-2 00:25 , Processed in 0.261541 second(s), 31 queries .

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