VESTA在Linux下的安装

源码安装

在官方下载地址下载安装包:
https://jp-minerals.org/vesta/en/download.html

下载完成后

tar -xvjf VESTA-gtk3-x86_64.tar.bz2

得到的文件夹内包含了:

VESTA-gtk3-x86_64/

  • VESTA ← 主启动程序
  • VESTA-gui ← GUI 组件
  • VESTA-core ← 核心计算模块
  • libVESTA.so ← 动态库
  • elements / wyckoff.dat / spgra.dat ...
  • *.ini / *.cif / *.sh

进入 VESTA/bin 运行 ./VESTA 运行

修复了一些我碰到的问题后的启动方式:

在安装目录下编写run-VESTA.sh

复制代码
#!/bin/bash
set -e

export DISPLAY=:0
export GDK_BACKEND=x11
export LD_LIBRARY_PATH="$HOME/vesta-libs/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"

# Auto-detect Xwayland authority file (GNOME Wayland)
XAUTH="$(ps -ef | awk '/\/usr\/bin\/Xwayland :0/ && $0 ~ /-auth/ {for(i=1;i<=NF;i++) if($i=="-auth") {print $(i+1); exit}}')"
if [[ -n "$XAUTH" && -r "$XAUTH" ]]; then
  export XAUTHORITY="$XAUTH"
fi

exec "$(dirname "$0")/VESTA"

然后

chmod +x /media/waler/4TB/installer/VESTA/VESTA-gtk3-x86_64/run-vesta.sh

下一步创建图标

nano ~/.local/share/applications/vesta.desktop

vesta.desktop内容为:

Desktop Entry

Type=Application

Name=VESTA

GenericName=Crystal Structure Viewer

Comment=Visualization for Electronic and STructural Analysis

Exec=/media/waler/4TB/installer/VESTA/VESTA-gtk3-x86_64/run-vesta.sh

Icon=/media/waler/4TB/installer/VESTA/VESTA-gtk3-x86_64/VESTA.png #图标图片文件自己准备

Terminal=false

Categories=Science;Education;Chemistry;Physics;

StartupWMClass=VESTA

接着运行

chmod +x ~/.local/share/applications/vesta.desktop

update-desktop-database ~/.local/share/applications

可能出现的报错:

1,libwebkit2gtk库缺失

./VESTA

./VESTA-gui: error while loading shared libraries: libwebkit2gtk-4.0.so.37: cannot open shared object file: No such file or directory

系统缺少依赖 WebKitGTK(libwebkit2gtk-4.0)

然而在ubuntu 24.04中找不到这个库,因此需要临时添加jammy库安装libwebkit2gtk

1,临时添加 jammy 源

sudo tee /etc/apt/sources.list.d/jammy-temp.list >/dev/null <<'EOF'

deb http://archive.ubuntu.com/ubuntu jammy main universe

deb http://archive.ubuntu.com/ubuntu jammy-updates main universe

deb http://security.ubuntu.com/ubuntu jammy-security main universe

EOF

sudo apt update

2,只下载(不安装)需要的两个包

apt-cache policy libwebkit2gtk-4.0-37 libjavascriptcoregtk-4.0-18

然后

apt-get download -t jammy-updates \

libwebkit2gtk-4.0-37 \

libjavascriptcoregtk-4.0-18

执行后当前路径应当存在

libwebkit2gtk-4.0-37_2.50.4-0ubuntu0.22.04.1_amd64.deb

libjavascriptcoregtk-4.0-18_2.50.4-0ubuntu0.22.04.1_amd64.deb

以及

3,移除 jammy 源

sudo rm /etc/apt/sources.list.d/jammy-temp.list

sudo apt update

4,把旧库解包到用户目录(不安装)

mkdir -p $HOME/vesta-libs

dpkg-deb -x libjavascriptcoregtk-4.0-18_*.deb $HOME/vesta-libs

dpkg-deb -x libwebkit2gtk-4.0-37_*.deb $HOME/vesta-libs

验证

ls $HOME/vesta-libs/usr/lib/x86_64-linux-gnu | grep -E 'webkit|javascriptcore'

如果看到以下内容,则库已经准备完毕

5测试运行

export LD_LIBRARY_PATH=$HOME/vesta-libs/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

然后运行./VESTA

2,libicui18n库缺失

./VESTA-gui: error while loading shared libraries: libicui18n.so.70: cannot open shared object file: No such file or directory

Ubuntu 24.04 自带的 ICU 版本更高,而 VESTA 需要 ICU 70(Ubuntu 22.04 的 ICU 版本是 70.x)

1,临时加 jammy 源(仅用于下载 ICU 包)

sudo tee /etc/apt/sources.list.d/jammy-temp.list >/dev/null <<'EOF'

deb http://archive.ubuntu.com/ubuntu jammy main universe

deb http://archive.ubuntu.com/ubuntu jammy-updates main universe

deb http://security.ubuntu.com/ubuntu jammy-security main universe

EOF

sudo apt update

2,下载 ICU 70(不安装)

apt-get download -t jammy-updates libicu70

3,移除临时源

sudo rm /etc/apt/sources.list.d/jammy-temp.list

sudo apt update

4,解包 ICU 到本地库目录

dpkg-deb -x libicu70_*.deb $HOME/vesta-libs

验证

ls $HOME/vesta-libs/usr/lib/x86_64-linux-gnu | grep -E '^libicu.*\.so\.70'

应该看到

  • libicui18n.so.70

  • libicuuc.so.70

  • libicudata.so.70

5,运行

export LD_LIBRARY_PATH=$HOME/vesta-libs/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

./VESTA

相关推荐
Dovis(誓平步青云)11 分钟前
《滑动窗口算法:从 “暴力遍历” 到 “线性高效” 的思维跃迁》
运维·服务器·数据库·算法
迎仔20 分钟前
05-计算设备运维进阶:算力中心的设备医生
运维
石去皿28 分钟前
【嵌入式就业10】Linux内核深度解析:从启动流程到驱动框架的工业级实践
linux·运维·服务器
954L29 分钟前
CentOs7执行yum update出现链接404问题
linux·centos·yum·vault
Wpa.wk30 分钟前
接口自动化 - 多环境统一文件配置 +多响应统一转换处理
运维·服务器·测试工具·自动化·接口自动化·统一配置
Trouvaille ~31 分钟前
【Linux】应用层协议设计实战(二):Jsoncpp序列化与完整实现
linux·运维·服务器·网络·c++·json·应用层
是枚小菜鸡儿吖42 分钟前
从 0 到 1 生成自定义算子:CANN + AIGC 的自动化工作流
运维·自动化·aigc
EmbedLinX44 分钟前
嵌入式之协议解析
linux·网络·c++·笔记·学习
考琪1 小时前
Nginx打印变量到log方法
java·运维·nginx
vortex51 小时前
解密UUOC:Shell编程中“无用的cat使用”详解
linux·shell编程