Alpine编译.apk安装包

本文详述了如何在 Alpine Linux 上构建 .apk 安装包,包括构建压缩包、编写 APKBUILD 文件、创建编译容器、准备构建环境及解决常见错误,适用于 Docker 项目迁移场景。

  最近需要将某docker项目从centos系统迁移到alpine中,因此需要重新编译项目;参考国外某些案例已写好Dockerfile和build.sh中,这里对其主要过程分解并记录一下。

1. 构建发布压缩包

  该步骤主要同项目构建过程相关,需要根据不同情况进行编译;

# 1.make distribution tar.gz
./bootstrap.sh
./configure --with-pkg-extra-version=-r1
make dist
#会发现目录中生成XXX-MyVersion.tar.gz的源码压缩包

  这一步主要是构建代码编译采用的压缩包,确认版本号等过程;读者可以在宿主机上编译出压缩包或编写到Dockerfile和脚本,FROM alpine:edge as source-builder,并在其中安装所需依赖.

2. 编写APKBUILD等文件

  构建.apk包的时候,需要编写自己的APKBUILD文件和其他文件,如下图所示,其中frr为本文需要构建安装包的项目;.pre-install和pre-deinstall等文件,是安装和卸载apk包时所执行脚本;APKBUILD.in为生成APKBUILD文件的模板文件;编写APKBUILD文件时,检查项目中dep依赖库包可以通过alpinelinux官方地址查询。

alpine_abuild_deps

  读者也可以参考abuild官方gitlab地址某标准案例:https://gitlab.alpinelinux.org/alpine/abuild/-/blob/master/sample.APKBUILD
  根据项目实际情况,编写shell脚本以及其中必须的函数prepare(),build(),package(),check();具体可以索引到参考文章alpinelinux的abuild中APKBUILD设置

3. 创建alpine编译容器

#拉取镜像
docker pull alpine:edge
docker run -itd --name alpine-builder alpine:edge
#登录容器
docker exec -it alpine-builder sh
#配置源,如果源慢,可根据依赖库更换国内源;
echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories
#安装构建依赖包,使用本地缓存,升级资源库缓存
apk add --update-cache abuild alpine-conf alpine-sdk py-pip
pip 
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值