上一回《Ubuntu26.04 魔兽争霸3 打成可在CentOS/Fedora上安装的RPM包(实测可行)》已经让一些网友学会了,这次使用rpmbuild+spec配置来实现rpm打包,同样是把魔兽争霸3 冰封王座打成rpm包,并在虚拟机上的Fedora44运行。具体操作,跟着以下记录即可完成。
本次操作在Ubuntu26.04系统下完成,如果版本不同可能有些包的名字会有变化,可自行搜索验证。
一、先在 Ubuntu 26.04 安装 rpmbuild 工具
Ubuntu 默认不带 RPM 打包工具,必须先装:
sudo apt update
sudo apt install -y rpm build-essential
二、创建 rpmbuild 标准目录(Ubuntu 也一样)
执行rpmdev-setuptree命令后会自动生成一个标准目录,但是在Ubuntu上没有这个包,所以手工创建目录结构。
mkdir -pv ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
这是标准的目录结构:
~/rpmbuild/
├── BUILD
├── BUILDROOT
├── RPMS → 打好的 rpm 放这里
├── SOURCES → 放游戏、脚本、图标
├── SPECS → 放 spec 文件
└── SRPMS
写个宏文件,让 rpmbuild 认这个目录(必须):
cat > ~/.rpmmacros <<EOF
%_topdir %(echo $HOME)/rpmbuild
%_dbpath %{_topdir}/rpmdb
# 关闭 debug 包、关闭 strip
%_debug_package %{nil}
%__strip /bin/true
# 压缩拉到最快(gzip level 1)
%_binary_payload w1.gzdio
%_source_payload w1.gzdio
# 编译优化(O2)
%__optflags -O2 -pipe -fPIC
EOF
带上几个参数加快速打包速度
三、把你的文件放进 SOURCES
准备好的文件:
Warcraft/ #游戏目录
war3-tft.sh #启动脚本
warcraft3.png #快捷方式图标
war3-tft.sh内容:
#!/bin/bash
export WINEPREFIX=~/.warcraft3-wine
export WINEDEBUG=-all
export DISPLAY=:0
export WINE_DISABLE_WAYLAND=1
export LIBGL_DRI3_DISABLE=1
export MESA_GL_VERSION_OVERRIDE=3.3
GAME_DIR="/opt/Warcraft"
cd "$GAME_DIR" || exit 1
wine "Frozen Throne.exe" -opengl -window
参数逐行讲解:
#!/bin/bash
- 声明这是一个 Bash 脚本,告诉系统用什么解释器运行。
export WINEPREFIX=~/.warcraft3-wine
- WINE 容器目录
- 把魔兽 3 的所有 Wine 运行文件(注册表、驱动、配置)单独放在
~/.warcraft3-wine - 好处:不污染系统默认 Wine 环境,游戏坏了直接删这个目录就行。
export WINEDEBUG=-all
- 关闭所有 Wine 调试日志
- 不加这条会疯狂输出日志,卡顿、占 CPU、占屏幕,游戏必加。
export DISPLAY=:0
- 指定使用 本地第一个图形界面
- 有些无桌面环境 / 远程运行时必须加,普通桌面加了也不影响。
export WINE_DISABLE_WAYLAND=1
- 强制 Wine 不用 Wayland 显示
- 很多游戏在 Wayland 下会黑屏、闪退、无法输入
- Fedora 默认是 Wayland,这条是魔兽 3 能正常运行的关键。
export LIBGL_DRI3_DISABLE=1
- 禁用 DRI3 硬件加速机制
- 魔兽 3 是老游戏,DRI3 会导致:黑屏、花屏、卡顿、闪退
- 经典 OpenGL 游戏必备参数。
export MESA_GL_VERSION_OVERRIDE=3.3
- 欺骗程序:告诉它系统支持 OpenGL 3.3
- 魔兽 3 老引擎对 OpenGL 版本敏感
- 不加可能提示:不支持的显卡 / 无法初始化图形。
GAME_DIR="/opt/Warcraft"
cd "$GAME_DIR" || exit 1
- 定义游戏目录,然后切换到游戏目录
|| exit 1:如果切目录失败(比如目录不存在),直接退出,避免报错。
wine "Frozen Throne.exe" -opengl -window
最核心的启动命令
1. wine
用 Wine 兼容层运行 Windows 程序
2. Frozen Throne.exe
魔兽争霸 3 冰封王座的主程序
3. -opengl
- 强制使用 OpenGL 渲染
- 魔兽 3 默认用 DirectDraw 老接口,Linux Wine 下兼容性极差
- 必加,否则大概率黑屏 / 闪退
4. -window
- 窗口模式运行
- 不想窗口就删掉,变成全屏
- 窗口模式好处:切屏不崩溃、方便截图
超简总结(你只需要记住这 4 个关键点)
- WINEPREFIX:给魔兽单独建一个环境
- WINEDEBUG=-all:关日志,不卡
- WAYLAND/DRI3 关闭:Linux 桌面不黑屏
- -opengl -window:游戏渲染正常 + 窗口运行
小扩展(你可能需要)
- 想全屏:去掉
-window - 想无边框窗口:加
-nowindowex - 想800×600:加
-width 800 -height 600
复制命令:(每一步都很重要,要认真核对)
cp -r Warcraft ~/rpmbuild/SOURCES/ #整个游戏目录复制到该目录下
cp war3-tft.sh ~/rpmbuild/SOURCES/
cp warcraft3.png ~/rpmbuild/SOURCES/
四、最终版 spec 文件(Ubuntu 打包 Fedora RPM)
创建文件:
vim ~/rpmbuild/SPECS/warcraft3.spec
直接复制下面全部内容:
Name: warcraft3
Version: 1.26a
Release: 1
Summary: Warcraft III: The Frozen Throne
License: Proprietary
URL: https://blizzard.com
BuildArch: x86_64
Requires: wine-core
Requires: wine-dxvk
%description
Warcraft III running on Wine
%prep
cp -r %{_sourcedir}/Warcraft .
cp %{_sourcedir}/war3-tft.sh .
cp %{_sourcedir}/warcraft3.png .
%build
%install
rm -rf %{buildroot}
# 游戏目录
mkdir -p %{buildroot}/opt/Warcraft
cp -r Warcraft/* %{buildroot}/opt/Warcraft/
# 启动命令
mkdir -p %{buildroot}/usr/bin
install -m755 war3-tft.sh %{buildroot}/usr/bin/warcraft3
# 图标
mkdir -p %{buildroot}/usr/share/icons/hicolor/256x256/apps
install -m644 warcraft3.png %{buildroot}/usr/share/icons/hicolor/256x256/apps/warcraft3.png
# 桌面文件
mkdir -p %{buildroot}/usr/share/applications
cat > %{buildroot}/usr/share/applications/com-blizzard-warcraft3.desktop <<EOF
[Desktop Entry]
Type=Application
Name=Warcraft III
Exec=warcraft3
Icon=warcraft3
Terminal=false
Categories=Game;
EOF
%files
/opt/Warcraft
/usr/bin/warcraft3
/usr/share/icons/hicolor/256x256/apps/warcraft3.png
/usr/share/applications/com-blizzard-warcraft3.desktop
五、Ubuntu 下执行打包命令
进入该目录下,执行以下命令,等待完成:
cd ~/rpmbuild/SPECS
rpmbuild -ba warcraft3.spec
正常情况下我们可以加快打包速度,就是不打源码包(这游戏根本不需要)
rpmbuild -bb warcraft3.spec #节省不少时间
成功后,RPM 在:
ls ~/rpmbuild/RPMS/x86_64/warcraft3-1.26a-1.x86_64.rpm

完成后,把这个rpm包拿到Centos/Fedora等系统中安装即可。