如何在Docker容器中为Alpine Linux构建APK包及报错解决
错误原因
你遇到的Missing /shared/hello/pkg/hello报错,核心问题是APKBUILD中的package()函数为空。abuild构建APK包时,要求你必须在package()函数内,将需要打包的文件手动安装到$pkgdir对应的系统路径下,构建系统会将$pkgdir下的所有内容打包到最终的APK文件中,如果该目录为空或者不存在,就会抛出上述错误。
修复方案
修改你的APKBUILD配置,补充package()函数的安装逻辑,修改后的完整配置如下:
# Maintainer: 你的名称 <你的邮箱> # 可选,解决No maintainer警告 pkgname="hello" pkgver="0.1.0" pkgrel="0" pkgdesc="Hello World" url="https://example.com" arch="noarch" license="COPYING" source="../dst/hello" depends="" check() { : } package() { # 先在pkg目录创建可执行文件存放路径/usr/bin install -d "$pkgdir"/usr/bin # 将src目录下的hello脚本安装到对应路径,赋予可执行权限 install -m755 "$srcdir"/hello "$pkgdir"/usr/bin/ }
其他注意事项
- 构建前先在APKBUILD所在的hello目录下执行
abuild checksum,自动生成hello脚本的sha512校验值,避免校验报错 - 确保运行abuild命令时,你处于hello文件夹内,且上层目录的dst文件夹中确实存在hello脚本,否则会找不到源文件
内容的提问来源于stack exchange,提问作者AldaronLau
相关产品推荐
相关产品推荐

