Repository navigation
LinuxWave 3.0
Release Note 更新日志
本次为不兼容更新:包与版本数据从「代码仓库的分支」迁出到独立仓库,依赖数据目录由 surfboard/ 改名为 deps/;并且 LinuxWave 3.0 不能通过 wave selfupdate 升级,必须用 install.sh 重新安装。
本次是不兼容更新
3.0 之前,包元数据与版本数据都放在代码仓库 LinuxWaveOrg/LinuxWave 的分支里(infosource / configdata),依赖数据则放在该分支的 surfboard/ 目录下。
3.0 起:
- 数据迁到各自的独立仓库,路径与引用全部改变;
- 依赖数据的目录名
surfboard/→deps/; - 官网站点从代码仓库的
gh-pages分支迁到独立仓库; - 测试包
test_bin_*从 MacWave 的测试仓库改用 LinuxWave 自己的。
旧版本(≤ 2.6.5)读的仍是旧地址。 旧分支目前还在,但已冻结、不再更新——老版本继续能用,只是拿不到 3.0 之后的内容。要拿到 3.0,请按下文用 install.sh 重装。
不能通过 selfupdate 升级到 3.0
3.0 的 selfupdate.sh 增加了跨大版本守卫:当目标版本与当前已装版本的大版本号不同时,直接拒绝并提示改用 install.sh。
| 当前版本 | 目标 | 行为 |
|---|---|---|
2.x(任意) |
3.0 |
拒绝,提示改用 install.sh ⛔ |
3.0 |
3.0 |
已是最新,短路退出 |
3.0 |
3.x |
正常自更新 ✅ |
这是一条通用规则,不是 3.0 专属:每个大版本的第一个版本、以及任何跨大版本升级,都不能走 selfupdate(这类升级通常同时改动仓库与目录结构)。守卫写在 selfupdate.sh 里、随目标分支下发,因此以后每个大版本都自动生效,无需逐版写死在数据里。
仓库 / 分支迁移前后地址
| 内容 | 迁移前 | 迁移后 |
|---|---|---|
| 代码仓库 | LinuxWaveOrg/LinuxWave |
不变(仍是 LinuxWaveOrg/LinuxWave;main 与 3.0 自动同步) |
| 包元数据(描述 / 下载地址 / 校验值) | LinuxWave 仓库的 infosource 分支raw.githubusercontent.com/LinuxWaveOrg/LinuxWave/infosource/pkg/… |
LinuxWaveOrg/infosource 仓库的 main 分支raw.githubusercontent.com/LinuxWaveOrg/infosource/main/pkg/… |
| 依赖数据 | 同一分支的 surfboard/ 目录…/LinuxWaveOrg/LinuxWave/infosource/surfboard/depsinfo_{arch}/… |
新仓库、目录改名 deps/…/LinuxWaveOrg/infosource/main/deps/depsinfo_{arch}/… |
| 包列表 API | api.github.com/repos/LinuxWaveOrg/LinuxWave/contents/pkg/pkginfo_{arch}?ref=infosource |
api.github.com/repos/LinuxWaveOrg/infosource/contents/pkg/pkginfo_{arch}?ref=main |
| 版本 / 迁移数据 | LinuxWave 仓库的 configdata 分支raw.githubusercontent.com/LinuxWaveOrg/LinuxWave/configdata/… |
LinuxWaveOrg/configdata 仓库的 main 分支raw.githubusercontent.com/LinuxWaveOrg/configdata/main/… |
| 官网站点 | LinuxWave 仓库的 gh-pages 分支 |
LinuxWaveOrg/Pages 仓库的 main 分支(自定义域仍是 linuxwave.org) |
| 测试包(格式测试用) | MacWaveOrg/MacWavePkgTest(MacWave 那边) |
LinuxWaveOrg/pkgtest(自有副本,同一份 1.0 release 与附件) |
| 迁移前的历史归档 | — | 新增 LinuxWaveOrg/legacy-LinuxWave:迁移前的完整镜像,已归档只读,保留全部提交历史 |
为什么要发一版
这次迁移改动的是数据来源,而不是功能,但必须发一版才能把「怎么升级」送达用户:
因为 3.0 无法用 wave selfupdate 到达(见上),release 说明本身就是升级通知——存量用户需要知道要改用 install.sh 重装,而不是等一个永远不会到来的自更新。
这次发布也顺带修复了「判断要不要重新登录」时查错地方的老问题(见下)。
升级方式
重新安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/LinuxWaveOrg/LinuxWave/HEAD/lib/install.sh)"
安装脚本现在从 configdata 读取版本号与代码来源分支(不再写死在脚本里),因此它会自动安装 configdata 当前公布的版本(本次为 3.0)。
其他改动
lib/install.sh:LINUXWAVE_VERSION与代码来源分支改为从configdata的versiondata/latest_version读取(version/branch一起读,保证「下载的代码」与「写进VERSION.json的版本号」对应同一版本)lib/selfupdate.sh:新增跨大版本守卫(见上)- 新增工作流
Sync main with the release branch:main与「发布分支」自动互相检测并快进同步;发布分支由configdata的branch字段决定(现为3.0),分叉时直接报错交人工处理,历史分支(2.0.0-dev/2.5等)不会被触碰 configdata:versiondata/latest_version更新为3.0(构建号282D1414,branch: "3.0"),并新增updatedata/3.0(N,沿用 2.6.x 的惯例)format-test.yml:数据改从LinuxWaveOrg/infosource检出,触发分支改为 LinuxWave 自己的分支名并加入3.0- 官网与 README 显示的版本号同步为
3.0
验证方式
- CI 全绿:
3.0分支上的Format Test通过,其中「跨大版本 selfupdate 必须被拒绝、且VERSION.json不被改动」的用例为新增项 - 跨大版本守卫实测:已装
2.x、目标3.0时被拒绝并提示改用install.sh;同大版本(3.0→3.x)不被误拦 - 数据地址实测:
LinuxWaveOrg/infosource(pkg/与deps/)与LinuxWaveOrg/configdata的 raw 地址均返回200,包列表 API 可用 - 测试包实测:
LinuxWaveOrg/pkgtest的1.0release 附件与数据里声明的sha256逐字节一致 - 站点实测:
linuxwave.org返回200,页面显示Latest Version : 3.0 - 双向同步实测:
main与3.0自动保持同步(推送任一侧即快进另一侧)
Release Notes
This is a breaking update: package and version data moved out of the code repository's branches into dedicated repositories, the dependency data folder was renamed surfboard/ → deps/, and LinuxWave 3.0 cannot be reached with wave selfupdate — it must be installed with install.sh.
This is a breaking update
Before 3.0, the package metadata and the version data both lived in branches of the code
repository LinuxWaveOrg/LinuxWave (infosource / configdata), with the dependency data
under a surfboard/ directory on that branch.
As of 3.0:
- the data moved into dedicated repositories, changing every path and reference;
- the dependency data folder was renamed
surfboard/→deps/; - the website moved from the code repository's
gh-pagesbranch into its own repository; - the
test_bin_*test packages moved from MacWave's test repository to LinuxWave's own.
Older versions (<= 2.6.5) still read the old addresses. Those branches are still
present but frozen — old installs keep working, they simply stop receiving anything
published after 3.0. To get 3.0, reinstall with install.sh as described below.
You cannot update to 3.0 with selfupdate
selfupdate.sh now carries a cross-major guard: when the target version's major
number differs from the installed one, it refuses outright and points at install.sh.
| Installed | Target | Behaviour |
|---|---|---|
2.x (any) |
3.0 |
refused, points at install.sh ⛔ |
3.0 |
3.0 |
already up to date, exits early |
3.0 |
3.x |
self-update runs ✅ |
This is a general rule, not a 3.0 special case: the first release of every major
version — and any cross-major upgrade — cannot go through selfupdate (such upgrades
usually change both repositories and directory layout). The guard lives in
selfupdate.sh and is delivered by the target branch, so every future major gets it
automatically instead of it being hardcoded per release.
Repository / branch addresses before and after
| What | Before | After |
|---|---|---|
| Code repository | LinuxWaveOrg/LinuxWave |
unchanged (still LinuxWaveOrg/LinuxWave; main and 3.0 kept in sync) |
| Package metadata (description / download url / checksum) | infosource branch of LinuxWaveraw.githubusercontent.com/LinuxWaveOrg/LinuxWave/infosource/pkg/… |
main branch of LinuxWaveOrg/infosourceraw.githubusercontent.com/LinuxWaveOrg/infosource/main/pkg/… |
| Dependency data | surfboard/ on that same branch…/LinuxWaveOrg/LinuxWave/infosource/surfboard/depsinfo_{arch}/… |
new repository, folder renamed deps/…/LinuxWaveOrg/infosource/main/deps/depsinfo_{arch}/… |
| Package listing API | api.github.com/repos/LinuxWaveOrg/LinuxWave/contents/pkg/pkginfo_{arch}?ref=infosource |
api.github.com/repos/LinuxWaveOrg/infosource/contents/pkg/pkginfo_{arch}?ref=main |
| Version / migration data | configdata branch of LinuxWaveraw.githubusercontent.com/LinuxWaveOrg/LinuxWave/configdata/… |
main branch of LinuxWaveOrg/configdataraw.githubusercontent.com/LinuxWaveOrg/configdata/main/… |
| Website | gh-pages branch of LinuxWave |
main branch of LinuxWaveOrg/Pages (custom domain is still linuxwave.org) |
| Test packages (format tests) | MacWaveOrg/MacWavePkgTest (MacWave's) |
LinuxWaveOrg/pkgtest (its own copy, same 1.0 release and assets) |
| Pre-migration archive | — | new LinuxWaveOrg/legacy-LinuxWave: a full mirror of the repository as it was, archived read-only, all commit history kept |
Why cut a release at all
This migration changed where the data comes from, not what it does, yet a release is
the only way to deliver the "how to upgrade" message:
because 3.0 cannot be reached with wave selfupdate (see above), these release notes
are themselves the upgrade notice — existing users need to know they must reinstall
with install.sh rather than wait for a self-update that will never arrive.
How to upgrade
Reinstall:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/LinuxWaveOrg/LinuxWave/HEAD/lib/install.sh)"
The installer now reads the version and the code source branch from configdata
instead of hardcoding them, so it installs whatever version configdata currently
publishes (3.0 as of this release).
Other changes
lib/install.sh:LINUXWAVE_VERSIONand the code source branch are now read from
configdata'sversiondata/latest_version(version/branchare read together so
the code downloaded and the version recorded inVERSION.jsonalways match)lib/selfupdate.sh: the cross-major guard described above- new workflow
Sync main with the release branch:mainand the release branch
detect each other and fast-forward automatically; the release branch comes from
configdata'sbranchfield (3.0today), divergence fails the run for a human, and
historical branches (2.0.0-dev/2.5…) are never touched configdata:versiondata/latest_versionbumped to3.0(build282D1414,
branch: "3.0") plusupdatedata/3.0(N, following the 2.6.x convention)format-test.yml: checks the data out fromLinuxWaveOrg/infosource, uses LinuxWave's
own branch names and adds3.0- the version shown on the site and in the READMEs is now
3.0
How it was verified
- CI green:
Format Testpasses on the3.0branch, including the new case that a
cross-major selfupdate is refused and leavesVERSION.jsonuntouched - Cross-major guard, exercised for real: an installed
2.xasked to reach3.0is
refused and told to useinstall.sh; a same-major upgrade (3.0→3.x) is not blocked - Data addresses: the raw URLs under
LinuxWaveOrg/infosource(pkg/anddeps/)
andLinuxWaveOrg/configdataall return200, and the package listing API works - Test packages: the
1.0release assets underLinuxWaveOrg/pkgtestmatch the
sha256values declared in the data byte for byte - Site:
linuxwave.orgreturns200and showsLatest Version : 3.0 - Two-way sync:
mainand3.0keep each other up to date (pushing either side
fast-forwards the other)