我有兴趣解决 apk 包依赖关系,最好使用像 python 这样的脚本语言。基本上我希望能够派生一个包的依赖树,而不需要在高山环境中运行。
到目前为止,我正在分析 .PKGINFO 文件和依赖项。并获取其他 apk 的 using http://dl-cdn.alpinelinux.org/alpine/edge/main/{arch}/{package}-{version}.apk
. 但是,从 .PKGINFO 依赖的条目来看,到目前为止还不可能。Python3 apk的摘录作为示例:
...
depend = so:libbz2.so.1
depend = so:libc.musl-s390x.so.1
depend = so:libcrypto.so.3
depend = so:libexpat.so.1
...
我知道如何在 apk 包中搜索文件的帖子,并且喜欢从 API https://api.alpinelinux.org获取信息的想法,该 API不再可访问。有人知道类似的 API 是否仍在运行?
除了类似于上面提到的apkfile的 webscraping之外,还有其他选项可以根据 .so 文件识别包吗?
或者有没有人看到一种更合适的方法来导出包的依赖树?
是的:按照
apk
命令的方式执行。下载包索引并解析它以获取依赖信息。运行 `apk update 时可以看到索引 URL:这些档案每个都包含一个
APKINDEX
文件,该文件包含有关相应存储库中所有包的元数据。例如,python3
条目如下所示:如果我们想找到提供 的包,我们将在行 (for )
so:libbz2.so.
上搜索列出该依赖项的条目。p:
provides
这让我们:
所以现在我们知道 package(
P:
) libbz2 提供了 (p:
)libbz2.so.1=1.0.8
。您可以在此处找到记录的 APK 索引格式。