自Quarter OS Alpha 0.2.1 版本起,Quarter OS 软件包管理器支持第三方软件源,用户可以直接从软件源获取qap包并安装第三方软件。
Quarter OS 软件包管理器的软件源架构如下面所示:
(root为服务器根目录)
由上图可看出,软件源URL格式为 http://xxx.xxx.xxx/repo
(以repo为仓库目录)
其中,apps.json
文件用于定位软件包分类,返回软件包所在的类文件夹名称。
{
"app1": {
"category": "games",
"latest_version_code": "2000"
},
"app2": {
"category": "tools",
"latest_version_code": "1000"
},
...
}
定位到软件包的类文件夹后,在对应名称的类文件夹下,有一个 packager.json
文件,用于记录该下的软件包的基本信息:
{
"app1": {
"category": "games",
"version": ["1.0", "1.1", "2.0"],
"version_code": ["1000", "1100", "2000"],
"latest_version": "2.0",
"latest_version_code": "2000",
"author": "NAME",
"description": "An App"
},
...
}
其中,version
字段记录了软件包的版本号,version_code
字段记录了软件包的版本号对应的版本号码,latest_version
字段记录了最新版本号,latest_version_code
字段记录了最新版本号对应的版本号码。
如果用户端命令没有指明版本,比如:biscuit get app1
,则自动匹配最新版本(latest_version)。
反之,如果用户端命令指明了版本,比如:biscuit get app1 1.0
,则匹配指定版本(version)。
然后用户端就会在软件仓库中查找对应版本的软件包,并下载到本地。
搭建第三方软件源,需要以下步骤:
repo
目录,用于存放软件包。repo
目录下创建 apps.json
文件,用于记录软件包分类。repo
目录下创建各类软件包目录,如 games
、tools
等。package.json
文件,用于记录软件包基本信息。xxx_1.0.qap
、xxx_1.1.qap
等(可使用QAP软件包封装工具制作,工具会自动生成 name_version.qap
格式的软件包文件)。repo
目录作为Web服务器的根目录,并设置好Web服务器的权限。http://xxx.xxx.xxx/repo
,并保存设置(biscuit mirror "https://xxx.xxx.xxx/repo"
)。然后您就成功地搭建了自己的Biscuit第三方软件源。
另外,考虑到并不是所有人都能有足够的资金购买服务器,所以Biscuit软件仓库允许纯前端HTTP协议的软件源,只需要搞一个免费的纯前端的页面托管服务(比如GitHub Pages),然后按照上文的仓库结构搭建即可。
biscuit-repo
。index.html
文件,用于启动GitHub Pages服务。repo
目录,用于存放软件包。repo
目录下创建 apps.json
文件,用于记录软件包分类。repo
目录下创建各类软件包目录,如 games
、tools
等。package.json
文件,用于记录软件包基本信息。xxx_1.0.qap
、xxx_1.1.qap
等(可使用QAP软件包封装工具制作,工具会自动生成 name_version.qap
格式的软件包文件)。repo
目录上传到GitHub仓库。https://xxx.github.io/biscuit-repo/repo
,并保存设置(biscuit mirror "https://xxx.github.io/biscuit-repo/repo"
)。这样,您就成功地搭建了自己的Biscuit第三方软件源,而且完全免费!
TIP
比如GitHub Pages服务,则需要在GitHub仓库网页端手动上传软件包,并手动更新相关的json文件。或者使用git,在本地仓库进行软件包的更新,然后推送到GitHub仓库。
作为软件源仓库的维护者,您需要对上传的软件包进行审核,确保软件包的安全性和完整性。
package.json
文件)必须正确填写,包括软件包名称、版本号、作者、描述等。为了方便用户查找软件包,您需要对软件包进行分类,并在 apps.json
文件中记录分类信息。
目前拟定这几个分类:
为了方便用户查找软件包,您需要为软件包的不同版本号分配不同的版本号码。
但请注意,用户端需要的是软件包的版本代号(如 1.0
、1.1
、2.0
),而在仓库中还需要记录软件包的版本号(如 1000
、1100
、2000
)。真正意义上的版本号码用于比较新版旧版软件包。