ubuntu官网相关页面(ubuntu 18.04 bionic)
环境:
- 宿主机系统
ubuntu 1604 x86_64
- 宿主机系统
安装docker
# apt install docker-ce
- 启动docker服务
# service docker start
准备基础docker镜像(选择ubuntu:1604作为基础镜像):
- 拉取ubuntu:1604镜像:
# docker pull ubuntu:16.04
- 查看镜像:
# docker images
- 用该镜像启动并进入容器:
# docker run -it --privileged=true ubuntu:16.04 /bin/bash
- 拉取ubuntu:1604镜像:
安装pbuilder及其他相关包
- 更新apt缓存:
# apt-get update
- 先安装个vim吧,方便编辑文件:
# apt install vim
- 安装我习惯使用的一些工具包以及pbuilder:
# apt install devscripts dh-make fakeroot debhelper pbuilder
- 更新apt缓存:
pbuilder创建基础环境tar包
- 创建ubuntu1604(xenial)基础编译环境:
# pbuilder create --distribution xenial
(【180730更新】:启动容器时需要增加–privileged=true参数,# docker run -it --privileged=true ubuntu:16.04 /bin/bash
,否则pbuilder构建过程会挂载/proc系统目录,结果报权限不够;发现直接debootstrap也不行,也一样))
- 创建ubuntu1604(xenial)基础编译环境:
pbuilder编译源码包
- 下载源码包:
# apt-get source <源码包>
;这里一般会获得一个.dsc文件,一个.orig.tar.gz文件和一个.debian.tar.gz文件 - 运行pbuilder自动编译打包:
# pbuilder build <xxx.dsc>
- 生成的.deb文件放在
/var/cache/pbuilder/result/
目录下
- 下载源码包:
dsc文件签名
- 一般先切换到普通用户(或者某个专门的用户)下,执行
$ debsign /var/cache/pbuilder/result/<xxx>.changes
- 一般先切换到普通用户(或者某个专门的用户)下,执行
配置软件源
- 在.pbuilderrc中设置
UBUNTU_MIRROR="cn.archive.ubuntu.com"
和MIRRORSITE="http://$UBUNTU_MIRROR/ubuntu/"
, 注意尽可能选择速度比较快的镜像站
- 在.pbuilderrc中设置
保存pbuilder镜像
- 首先,应该清理以下环境尽可能避免镜像过大
- 通过配置pbuilderrc保留base.tar.gz,避免每次运行容器都得从头开始
- 提交新镜像:
# docker commit -a "作者" -m "备注" <容器id> ubuntu/pbuilder:v1
- 以后即可用这个镜像ubuntu/pbuilder:v1来作为沙盒环境编x86下的deb包了
pbuilderrc配置示例
BASETGZ=”/var/cache/pbuilder/$NAME-base.tgz”
# Optionally, set BASEPATH (and not BASETGZ) if using cowbuilder
# BASEPATH=”/var/cache/pbuilder/$NAME/base.cow/”
DISTRIBUTION=”$DIST”
BUILDRESULT=”/var/cache/pbuilder/$NAME/result/”
APTCACHE=”/var/cache/pbuilder/$NAME/aptcache/”
BUILDPLACE=”/var/cache/pbuilder/build/”
BINDMOUNTS=”/var/cache/archive”TODO:
源码包签名源码包导入/deb包导出- 跨平台编包
~/.pbuilderrc配置docker镜像保存——生成纯净的pbuilder镜像