AOSC Wiki / 开发者 / 基础设施 / .
其他语言: English

软件包站点

关于软件包站点的一切

软件包站点§

基于 paklist 的 AOSC OS 软件包站点 在 2017 首次推出,旨在展示软件仓库及软件包信息。

用法§

面向用户§

面向机器§

项目框架§

这个网站由数个子项目组成,大部分项目使用 Python 实现。部分子项目可被单独使用。

abbs-meta§

abbs-meta 通常用于从 ABBS 树及其 Git 仓库中提取信息。首先,它使用 reposync.py 把 Git 仓库转换成 Fossil 仓库。我们使用 Fossil 是因为 Git API 难以使用且外部调用和文件写入效果都不尽人意,而且 Fossil 的数据库也很容易直接使用。然后,我们根据各个提交更新 abbs.db,以保存历史记录。这个操作将修改 package_* 数据表。从头开始同步可能需要十个小时。bashvar.py 可以解析大多数配置文件。当有复杂的字符串操作时,它会自动调用 BASH。还有一些工具可以添加校验和(addchksum.{py,sh})和修改修订号信息(increaserel.py)。

packages-site§

packages-site 是站点的后端部分。dpkgrepo.py 用于记录 DPKG 软件包信息。这个操作将修改 dpkg_* 数据表。软件包来源定义位于 dpkgrepo.pyupdate.sh 用于数据更新。网站每小时更新一次。因为代理、CDN、浏览器缓存的原因,因此延迟可能长达两小时。main.py 是站点的入口文件,我们用 Bottle 框架和 Jinja2 模板系统。我们使用大量 SQL 语句生成各种报告,并使用 SQLite 的拓展实现版本比较,您可能需要首先使用 make 来构建这些拓展。

piss§

PISS(全称 "Projects Information Storage System")是一个软件版本检查器。对于 abbs.db 中列出的每一个软件包,它首先根据 URL 猜测上游类型,然后最多执行两个请求来获得版本列表、标签列表或文件列表。为了从列表中获得最新版本,PISS 使用了大量的启发式搜索。接下来 PISS 会将信息存储在 piss.db。如果所有的猜测都是错误的,它就会转而使用 release-monitoring.org。数据库每四小时更新一次。

相关项目§

部署§

我们建议您预留至少 1GiB 的可用空间(当前使用量是 450 MiB)及至少 512MiB 的 RAM(实际使用不会超过 100M)。另外您需要安装 Python 3.5+ 或 PyPy3.5、带有 FTS5 支持的 SQLite3、Fossil 2.6+、bash 和 Git。

我们目前使用 uWSGI 和 NGINX 来托管网站,请前往 https://github.com/AOSC-Dev/packages-site#deploy 了解部署流程。接下来您还要为 update.sh 和 PISS 设置 Systemd Timers。

计划§

请查看 英文页面对应部分 查看实时内容。

常见问题§

站点无法访问§

请尝试访问镜像站点 https://aoscpkgs.gumble.pw/ ,接下来烦请在 Telegram 群中联系站点管理员 @gumblex 反映问题。

站点数据过期§

请先访问 https://packages.aosc.io/aosc-os-abbs/timeline 看看是否为 git-to-fossil 同步问题,然后访问 https://packages.aosc.io/updates 看看同步是不是真的出了问题。如果是 git-to-fossil 同步不工作,那么问题通常由强制推送或变基操作导致的。如果不是这样的话,烦请联系站点管理员反馈问题。

某个软件包不是最新的§

如果您确认软件包站点同步功能工作正常(见上文),您的更新包可能在 bugfix 分支中。虽然目前软件包站点不显示任何关于 bugfix 分支的信息,但这些信息在我们的数据库中会有很好的记录。我们也欢迎您在 Telegram 群或邮件列表中向我们提供有关「如何重新设计软件包站点以支持此类分支的展示」的建议。

上游版本是错的§

PISS 大量使用到了启发式搜索,主要依赖 Anitya 库,因为问题不一定是我们造成的。我们已经在尽可能地改进搜索模型并为该模型提供尽可能多的信息(目前我们提供软件包名称、当前版本、URL、源码包类型等)。

为什么没有依赖关系图§

因为依赖关系实在过于庞杂。