适用场景:CentOS 7.x 最小化安装(无桌面环境)+ DM8 单机版 + 通过 MobaXterm(或其他 X11 转发客户端)远程打开达梦图形工具。
已实测通过(CentOS 7.9.2009 / DM8 / MobaXterm v26.4)。
核心结论:最小化系统默认缺少 X11 转发组件、GTK2 运行库、中文字体 三类东西;且 DISPLAY 环境变量禁止写死,必须由 SSH 服务端自动分配并与 X 授权 cookie 配对。
yum install -y xorg-x11-xauth # X11 转发必需(sshd 生成授权 cookie 用)
yum install -y gtk2 libXtst
gtk2 会自动拉入依赖:pango、cairo、gdk-pixbuf2、atk、libXcomposite、libXdamage 等。
建议一并确认(缺少时单独补装,多为可选加固项):
yum install -y libXtst libXi libXrender libXft libXrandr libXcursor libXt
说明:
- 报
libgtk-x11-2.0.so.0: cannot open shared object file、Could not initialize class org.eclipse.swt.widgets.Display,就是没装 gtk2。- 达梦工具用的是 GTK2(SWT 3.x),不需要装 gtk3。
yum install -y epel-release # 中文字体在 EPEL 源
yum install -y wqy-zenhei-fonts wqy-microhei-fonts
fc-cache -fv # 重建字体缓存
fc-list :lang=zh # 验证:应能看到 WenQuanYi 字体
yum install -y xorg-x11-apps # 提供 xclock,用于验证 X 转发是否打通
编辑 /etc/ssh/sshd_config:
X11Forwarding yes
X11UseLocalhost yes # 默认值,保持即可
修改后重启:systemctl restart sshd(不影响已建立连接)。验证:
grep -E "X11Forwarding|X11UseLocalhost" /etc/ssh/sshd_config
passwd dmdba
~dmdba/.bash_profile)配置以下环境变量(按实际安装路径调整,默认 /dm8):
export DM_HOME="/dm8"
export JAVA_HOME=$DM_HOME/jdk
export PATH=$JAVA_HOME/bin:$PATH:$DM_HOME/bin:$DM_HOME/tool
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
严禁写死 DISPLAY,例如下面这行会导致 X 授权 cookie 不匹配而无法打开图形:
# export DISPLAY=:10.0 # ← 千万不要写死!DISPLAY 必须由 sshd 自动分配
确保 DM 安装目录归 dmdba 所有(否则工具写 workspace 缓存报权限错):
chown -R dmdba:dinstall /dm8
# 1. 验证环境(DISPLAY 应由 sshd 自动给出,形如 localhost:10.0 / localhost:11.0)
echo $DISPLAY
# 2. (可选)验证 X 转发真正打通
xclock # 能弹出时钟窗口 = X 链路 OK
# 3. 打开达梦管理工具(注意:工具名是 manager,不是 manage)
cd /dm8/tool && ./manager
其他图形工具同理:
./console、./dts(数据迁移)、./monitor(性能监视)、./analyzer。
每次新开 SSH 会话,sshd 会自动分配新的显示号(10、11、12…),DISPLAY 与 cookie 自动配对,无需干预。
| 现象 / 报错 | 根因 | 解决 |
|---|---|---|
MoTTY X11 proxy: No authorisation provided / Error: Can't open display |
DISPLAY 写死与 sshd 分配的显示号/cookie 不匹配;或 root 登录后 su 到 dmdba 丢失 X 授权 | 删除写死的 DISPLAY;直接以 dmdba 身份 SSH;或 xauth extract - "$DISPLAY" \| su - dmdba -c "xauth merge -" 传递 cookie |
libgtk-x11-2.0.so.0: cannot open shared object file / Could not initialize class org.eclipse.swt.widgets.Display / UnsatisfiedLinkError: Could not load SWT library |
最小化系统缺 GTK2 | yum install -y gtk2 libXtst |
| 界面能打开但中文全是方块 | 无中文字体 | 装 EPEL 后 yum install -y wqy-zenhei-fonts wqy-microhei-fonts,重启工具 |
./manage: 没有那个文件或目录 |
工具名写错 | 正确命令是 ./manager(/dm8/tool 下无 manage) |
java.io.IOException: Stream closed + 崩溃日志指向 .metadata/.log |
多为前一个错误(如 SWT 初始化失败)引发的连带异常;也可能是 Eclipse 缓存损坏 | 先解决上述根因;若缓存损坏:备份后删除 /dm8/tool/workspace/configuration 与 /dm8/tool/workspace/data/manager/.metadata 再启动 |
No Java virtual machine was found after searching ./jdk/bin |
JAVA_HOME/安装结构异常 | 确认 JAVA_HOME=$DM_HOME/jdk、/dm8/jdk/bin/java 存在且为 64 位 |
# ---- 软件包 ----
yum install -y xorg-x11-xauth gtk2 libXtst libXtst libXi libXrender libXft libXrandr libXcursor libXt
yum install -y epel-release wqy-zenhei-fonts wqy-microhei-fonts
fc-cache -fv
# ---- sshd 确认 ----
grep -E "X11Forwarding|X11UseLocalhost" /etc/ssh/sshd_config # 需为 yes / yes
# ---- 用户与权限 ----
passwd dmdba # 设置 dmdba 密码,使其可直接 SSH
chown -R dmdba:dinstall /dm8 # 安装目录归 dmdba
# ---- dmdba 环境(编辑 ~dmdba/.bash_profile)----
# 添加 DM_HOME/JAVA_HOME/PATH/LD_LIBRARY_PATH,禁止写死 DISPLAY(见第二节第 3 条)
echo $DISPLAY # 应为 sshd 自动分配值
xauth list # 应有与 DISPLAY 对应的 cookie 条目
xclock # X 链路测试
rpm -q xorg-x11-xauth gtk2 # 依赖包检查
ls /usr/lib64/libgtk-x11-2.0.so.0 # GTK2 库检查
fc-list :lang=zh | head # 中文字体检查
tail -n 50 /dm8/tool/workspace/data/manager/.metadata/.log # 工具崩溃日志
备注:本清单内容来自一次真实排障(CentOS 7.9 最小化 + DM8 + MobaXterm),覆盖从"最小化系统 → 图形工具正常显示中文"全链路。
文章
阅读量
获赞
