为了互相测试交流,有条件的朋友可以为archlinux自建二进制翻译应用软件测试仓库。
一、Demo 仓库(仅用于测试)
https://██████████████████████████
1.1 Demo 仓库配置方法
编辑 /etc/pacman.conf
文件,在最后追加以下内容:
[wine-apps]
# 如果是 x86_64 archlinux,请删除下面一行首的#,以跳过软件包签名验证
#SigLevel = Never
Server = https://██████████████████████████
1.2 仓库软件包查询方法
使用以下命令可列出 wine-apps
仓库中包含的软件包名称:
$ pacman -Sl | grep ^wine-apps
1.3 安装软件方法:
软件安装方法和通常安装 archlinux 软件包方法一致:
$ sudo pacman -Sy <包名>
二、wine 应用打包
打包 wine 应用,需要考虑几点:
- 安装应用包后可在主菜单显示菜单项
- 应用容器(.wine)目录特定于操作系统用户,所以应支持不同用户使用
- 应用应可升级,升级时不应重置注册表等个人项目
- 个别应用可能在特定版本的wine上运行效果较好,所以需要安装多个版本的wine,并且应用能指定特定wine版本
为满足以上需求,分别设计了 wine-app-helper
和 wine 应用包规范(适用于 x86 和 loongarch)。
wine-app-helper 包括2个命令:
- wine-mkapp,创建 app 打包辅助工具
- wine-run,用于封装 app 运行。
2.1 app 目录结构
app 打包后,目录结构如下:
├── opt
│ └── wine-apps
│ └── cstrike
│ ├── .appignore # 应用容器升级时忽略的文件
│ ├── cstrike.metainfo # 应用的描述信息,描述应用名称、如何解压、如果运行等信息
│ └── cstrike.tar.zst # 纯净的应用容器文件,首次运行时解压
└── usr
├── bin
│ └── cstrike -> wine-run # 可执行文件,由 wine-app-helper 包中的 wine-run 脚本负责
└── share
├── applications
│ └── cstrike.desktop # 菜单项
└── icons # 图标文件
└── hicolor
├── 16x16
│ └── apps
│ └── cstrike.png
└── 32x32
└── apps
└── cstrike.png
2.2 app制作过程
1. 制作容器
在本机(loongarch、x86_64)使用 wine 安装应用软件,并测试调整好 wine 应用状态。
建议从 wine-apps
仓库安装 win32app
包,安装完成之后,运行win32app
命令,会调出 winecfg
界面,然后以它做为基础容器进行安装,此容器目录位于 ~/.local/share/wineprefixes/win32app
,可设置 WINEPREFIX
变量指向这个路径,再进行后续的安装、调试:
export WINEPREFIX=~/.local/share/wineprefixes/win32app
2. 应用打包
容器制作、调试好之后,运行 wine-app-helper
包中的 wine-mkapp
生成 archlinux 打包模板目录:
$ wine-mkapp ~/.local/share/wineprefixes/win32app
将会在 /tmp
目录下生成包含 PKGBUILD
文件的 Archlinux 打包模板,对其进行适当调整,最后在此目录中运行 makepkg
命令可完成应用打包。
打包示例可参考:https://github.com/loongarchlinux/wine-apps
三、自建仓库
自建仓库时,请先为自己的仓库起个好名字,假设叫 custom
。
3.1 生成仓库
将所有打包好的软件包 *.pkg.tar.zst
文件保存在同一个目录中(假设为~/repos),然后运行以下命令生成仓库:
$ cd ~/repos
$ repo-add -p custom.db.tar.gz *.pkg.tar.zst
如果生成的仓库要签名,请加上 --sign --key <密钥>
参数,更多用法请查看 repo-add --help
。
3.2 本地仓库测试
生成好仓库之后,可以先在本地进行测试。
请在 pacman.conf
文件最后追加以下内容:
[custom]
#SigLevel = Never
Server = file:///home/<USER>/repos #请将此路径替换为仓库的绝对路径
假设打包的应用名称为 testapp
,可用以下命令安装、运行:
$ sudo pacman -Sy <testapp>
$ testapp
$ testapp --help # 可以查看帮助
如果应用运行有问题,请重新调整制作,如果应用已经发布过,重新打包时,pkgrel
应该自增 1
。
3.3 发布公网仓库
将生成好的目录发布到服务器上,假如使用https://example.com/archlinux/custom/os/any/custom.db.tar.gz
可下载到 custom.db.tar.gz
文件,
则仓库配置内容为:
[custom]
#SigLevel = Never
Server = https://example.com/archlinux/custom/os/any