Linux 软件包 API

Linux 软件包 API

我正在尝试构建一个 API,提供有关不同发行版中特定软件包的信息。例如,如果用户想要查询“python”以查看存储库中有哪些可用软件包,他们将从 API 获得类似于“apt search python”的结果。

发射台是一个很好的例子,可以搜索软件包。不过,这只适用于 Ubuntu。

我知道,由于各种不同的包管理器,制定一个通用解决方案来满足所有 Linux 发行版的要求是非常不可行的。但是,是否有任何策略可以实现我在 Debian(使用 apt)或 Red Hat(使用 yum)发行版中描述的内容?

答案1

策略是“做软件包管理器该做的事情”。大多数 Linux 软件包管理器只是以某种明确定义的格式下载软件包列表(例如,apt update下载纯 ASCII 文件,这些文件这里解释),大多数都是通过常规 HTTP 来实现的。

只要您知道存储库的 URL 并了解其格式,您就可以做同样的事情 - 从该 URL 下载包数据库,根据发行版的规范对其进行解析,然后导入到作为 API“后端”的本地 SQL 数据库中。

这将立即为所有共享相同包管理器的发行版提供支持(例如,Apt 数据库解析器将支持 Debian、Ubuntu、Mint、Deepin、Kali……),而无需依赖发行版必须已经向其用户提供的任何外部基础设施。

相关内容