下面是经过实战可行的一套在 Ubuntu 26.04 上把 “魔兽争霸 3 冰封王座(Windows 版)+ Wine 运行脚本” 打成可在 CentOS/Fedora 上安装的 RPM 包的完整流程。
一、整体思路
War3 本身是 Windows exe,Linux 靠 Wine 运行。
RPM 包里要包含:
- 完整 War3 游戏目录(
Warcraft III) - 一个启动脚本(自动调用
wine Frozen Throne.exe -opengl) - 声明依赖:
wine-core、wine-dxvk(CentOS/Fedora 可装)
打包方式二选一:
- 简单:用 fpm(一行命令打包,不写 spec)
- 标准:用 rpmbuild + spec 文件(可定制更强)
下面使用fpm方式来实现。
二、准备环境(Ubuntu 26.04)
1. 安装依赖工具
sudo apt update
# 编译/打包工具 + rpm 支持(简易打包工具)
sudo apt install -y rpm ruby ruby-dev rubygems build-essential
# 确保 wine 已装好(测试用)
sudo apt install -y wine
2. 准备 War3 目录
假设你已有装好的魔兽争霸 3(带冰封王座),目录结构类似:
mkdir warcraft3
swper@Mt:~/warcraft3$ tree -L 1
.
├── war3-tft.sh #启动脚本
├── Warcraft #游戏目录
└── warcraft3.png #快捷方式图标
建议先在 Ubuntu 上用
wine "Frozen Throne.exe" -opengl跑通,确认无问题再打包。
3、验证安装成功(必须执行)
执行下面 3 条命令,看到输出就说明 OK:
确认系统已经成功把上面的依赖,打包工具安装到位。
rpm --version
rpmbuild --version
gem --version
4、继续安装 fpm(打包必备工具)
sudo gem install fpm
5、现在你可以正常打包魔兽争霸3 RPM 了
三、用 fpm 一键打包(推荐,最快)
1. 写启动脚本(war3-tft.sh)
放在 ~/warcraft3目录下,请参考上面目录结构:
cat > ~/warcraft3/war3-tft.sh <<'EOF'
#!/bin/bash
GAME_DIR="/opt/Warcraft"
cd "$GAME_DIR"
wine "Frozen Throne.exe" -opengl
EOF
加执行权限,不给权限将无法运行游戏
chmod +x ~/warcraft3/war3-tft.sh
2. 用 fpm 打 RPM
fpm -s dir -t rpm \
-n warcraft3 \
-v 1.26a \
--iteration 2 \
--architecture x86_64 \
--description "Warcraft III: The Frozen Throne" \
--depends wine-core \
--depends wine-dxvk \
--prefix "/" \
./Warcraft/=/opt/Warcraft \
./war3-tft.sh=/usr/bin/warcraft3 \
./warcraft3.png=/usr/share/icons/hicolor/256x256/apps/warcraft3.png \
<(echo -e "[Desktop Entry]
Type=Application
Name=Warcraft III: The Frozen Throne
Name[zh_CN]=魔兽争霸3:冰封王座
Exec=warcraft3
Icon=warcraft3
Terminal=false
Categories=Game;StrategyGame;
")=/usr/share/applications/com-blizzard-warcraft3.desktop
执行上面命令后耐心等待打包完成。
参数说明:
第一部分:fpm 基础参数(包信息)
1. -s dir
来源类型 = 目录
- 告诉 fpm:我要把本地文件夹打成 RPM
- 可选:dir、gem、python、tar 等
2. -t rpm
输出类型 = RPM
- 打出来的包是
.rpm格式 - 适用于 Fedora / RHEL / CentOS / OpenSUSE
3. -n warcraft3
包名 = warcraft3
- 安装:
sudo dnf install warcraft3 - 卸载:
sudo dnf remove warcraft3 - 查询:
rpm -qa | grep warcraft3
4. -v 1.26a
版本号 = 1.26a
- 魔兽争霸 3 的版本
- RPM 包会命名为:
warcraft3-1.26a-xxx.rpm
5. --iteration 2
发布号 = 2
- 同一个版本,我重新打包了第 2 次
- 包名:
warcraft3-1.26a-2.x86_64.rpm - 作用:区分多次打包的版本
6. --architecture x86_64
架构 = 64 位系统
- 我使用的Fedora 是 x86_64
- 必须写对,否则装不上
7. --description "..."
包描述
- 软件中心里看到的说明文字
8. --depends wine-core
依赖 = 安装前必须先装 wine-core
- 系统会自动检查依赖
- 没有的话不让安装
9. --depends wine-dxvk
第二个依赖:wine-dxvk
- 游戏运行必须的 DirectX 转 Vulkan 组件
第二部分:路径核心参数(最重要)
10. --prefix "/"
基准安装根目录 = /
- 以前写
--prefix /opt会把所有东西塞到 /opt 下 - 现在写
/才是 Linux 标准写法
作用:
所有后面的路径,都会相对于 / 安装,而不是 /opt
第三部分:文件映射规则(源路径 = 目标路径)
格式:
本地文件/目录 = 安装到系统的路径
11. ./Warcraft/=/opt/Warcraft
- 本地:
~/warcraft3/Warcraft/ - 安装到:
/opt/Warcraft - 游戏本体目录
12. ./war3-tft.sh=/usr/bin/warcraft3
- 本地启动脚本
- 安装成系统命令:
/usr/bin/warcraft3 - 你直接输入
warcraft3就能启动游戏
13. ./warcraft3.png=/usr/share/icons/hicolor/256x256/apps/warcraft3.png
- 本地图标
- 安装到系统图标目录
- 菜单里显示图标
14. <(echo ...)=/usr/share/applications/xxx.desktop
- 动态生成桌面快捷方式
- 安装到系统菜单目录
- 决定你能不能在 “应用程序” 里找到游戏图标
一句话总结这条打包命令:
把本地的游戏目录、启动脚本、图标、菜单文件,打包成一个标准 RPM 包,安装到 Linux 系统标准路径,安装干净、卸载自动删除!
打完会生成类似:
Created package {:path=>"warcraft3-1.26a-2.x86_64.rpm"}
打包后安装效果(超级正规干净)
/opt/Warcraft/ <-- 游戏正式目录
/usr/bin/warcraft3 <-- 启动命令
/usr/share/applications/com-blizzard-warcraft3.desktop <-- 菜单图标
/usr/share/icons/hicolor/256x256/apps/warcraft3.png <-- 图标
Fedroa上安装 / 运行 / 卸载
安装(会自动处理依赖问题)

sudo dnf install ./warcraft3-1.26a-1.x86_64.rpm
运行

warcraft3
卸载(干净无残留)
sudo dnf remove warcraft3
如何验证这个包有没有问题呢?
正确验证方法(Ubuntu 专用,无报错)
先装工具
sudo apt install -y rpm2cpio cpio rpmlint
验证 1:查看包里面有什么文件(最关键)
rpm -qlp --nodigest --nosignature warcraft3-1.26a-2.x86_64.rpm
只要能列出游戏文件,就说明包结构完整、没坏。
你应该看到类似:
/opt/Warcraft/Frozen Throne.exe
/opt/Warcraft/Game.dll
/opt/Warcraft/Maps/(10)DustwallowKeys.w3m
/opt/Warcraft/Maps/(12)DivideAndConquer.w3m
/opt/Warcraft/Maps/(12)IceCrown.w3m
/opt/Warcraft/Maps/(2)BootyBay.w3m
/opt/Warcraft/Maps/(2)Harrow.w3m
/opt/Warcraft/Maps/(2)HillsOfGlory.w3m
/opt/Warcraft/Maps/(2)OgreMound.w3m
验证 2:检查依赖是否正确
rpm -qpR --nodigest --nosignature warcraft3-1.26a-2.x86_64.rpm
能看到:
rpmlib(LargeFiles) <= 4.12.0-1
wine-core
wine-dxvk
说明 CentOS/Fedora 可以正常安装。
验证 3:完整解压测试(终极验证)
直接把 RPM 解压出来看文件是否完整:
mkdir test
cd test
rpm2cpio ../warcraft3-1.26a-2.x86_64.rpm | cpio -idmv
然后查看:
swper@Mt:~/warcraft3/test$ ls opt/Warcraft/
'Frozen Throne.exe' War3xLocal.mpq war3.ico
Game.dll 'Warcraft III.exe' war3.mpq
Maps 'World Editor.exe' 对战平台
Movies WorldEdit.exe 开始游戏.exe
Mss32.dll ali213.bin 注意事项.txt
Replay blizzard.ax 游侠NETSHOW论坛.url
Screenshots ijl15.dll 游侠网热门单机游戏.url
Storm.dll msvcp120.dll 魔兽3全功略.exe
War3.exe msvcr120.dll 魔兽争霸3宽屏补丁.exe
War3Patch.mpq redist
War3x.mpq v1.20e-v1.26版本转换器
能看到游戏文件 = 打包 100% 成功!
四、常见坑 & 优化
- 目标安装机器上可能需要对于wine配置处理,如(中文乱码环境)
- 桌面图标不显示,可能是执行脚本没有权限。