Ubuntu 26.04也能用rpmbuild + spec打包出rpm格式包

上一回《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 个关键点)

  1. WINEPREFIX:给魔兽单独建一个环境
  2. WINEDEBUG=-all:关日志,不卡
  3. WAYLAND/DRI3 关闭:Linux 桌面不黑屏
  4. -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
rpmbuild成功打包魔兽争霸3

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

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

ubuntu桌面

Post 87 of 87

发表评论

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