Ubuntu26.04 魔兽争霸3 打成可在CentOS/Fedora上安装的RPM包(实测可行)

下面是经过实战可行的一套在 Ubuntu 26.04 上把 “魔兽争霸 3 冰封王座(Windows 版)+ Wine 运行脚本” 打成可在 CentOS/Fedora 上安装的 RPM 包的完整流程。

一、整体思路

War3 本身是 Windows exe,Linux 靠 Wine 运行。

RPM 包里要包含:

  1. 完整 War3 游戏目录(Warcraft III
  2. 一个启动脚本(自动调用 wine Frozen Throne.exe -opengl
  3. 声明依赖:wine-corewine-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上安装 / 运行 / 卸载

安装(会自动处理依赖问题)

Fedora通地dnf安装刚魔兽争霸3 rpm包
sudo dnf install ./warcraft3-1.26a-1.x86_64.rpm

运行

Fedora 安装魔兽争霸3 冰封王座wine游戏
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配置处理,如(中文乱码环境)
  • 桌面图标不显示,可能是执行脚本没有权限。

本文首发于 58Linux技术博客,专注Ubuntu桌面使用、Linux服务器运维与网站搭建实战。
       本系列的一部分

Linux服务器

Post 30 of 30

发表评论

粤ICP备10052831号 | © 2026 58Linux 技术笔记. All Rights Reserved. | 联系我们 | 关于本站
本站内容开放共享,仅供学习交流 | 专注 Ubuntu & Linux 实战教程
Built with GeneratePress