[Docker容器] 构建pbuilder容器

ubuntu官网相关页面(ubuntu 18.04 bionic)

  • 环境:

    1. 宿主机系统ubuntu 1604 x86_64
  • 安装docker

    1. # apt install docker-ce
    2. 启动docker服务# service docker start
  • 准备基础docker镜像(选择ubuntu:1604作为基础镜像):

    1. 拉取ubuntu:1604镜像:# docker pull ubuntu:16.04
    2. 查看镜像:# docker images
    3. 用该镜像启动并进入容器:# docker run -it --privileged=true ubuntu:16.04 /bin/bash
  • 安装pbuilder及其他相关包

    1. 更新apt缓存:# apt-get update
    2. 先安装个vim吧,方便编辑文件:# apt install vim
    3. 安装我习惯使用的一些工具包以及pbuilder:# apt install devscripts dh-make fakeroot debhelper pbuilder
  • pbuilder创建基础环境tar包

    1. 创建ubuntu1604(xenial)基础编译环境:# pbuilder create --distribution xenial
      (【180730更新】:启动容器时需要增加–privileged=true参数,# docker run -it --privileged=true ubuntu:16.04 /bin/bash,否则pbuilder构建过程会挂载/proc系统目录,结果报权限不够;发现直接debootstrap也不行,也一样))
  • pbuilder编译源码包

    1. 下载源码包:# apt-get source <源码包>;这里一般会获得一个.dsc文件,一个.orig.tar.gz文件和一个.debian.tar.gz文件
    2. 运行pbuilder自动编译打包:# pbuilder build
    3. 生成的.deb文件放在/var/cache/pbuilder/result/目录下
  • dsc文件签名

    1. 一般先切换到普通用户(或者某个专门的用户)下,执行$ debsign /var/cache/pbuilder/result/.changes
  • 配置软件源

    1. 在.pbuilderrc中设置UBUNTU_MIRROR="cn.archive.ubuntu.com"MIRRORSITE="http://$UBUNTU_MIRROR/ubuntu/", 注意尽可能选择速度比较快的镜像站
  • 保存pbuilder镜像

    1. 首先,应该清理以下环境尽可能避免镜像过大
    2. 通过配置pbuilderrc保留base.tar.gz,避免每次运行容器都得从头开始
    3. 提交新镜像:# docker commit -a "作者" -m "备注" <容器id> ubuntu/pbuilder:v1
    4. 以后即可用这个镜像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:

    1. 源码包签名
    2. 源码包导入/deb包导出
    3. 跨平台编包
    4. ~/.pbuilderrc配置
    5. docker镜像保存——生成纯净的pbuilder镜像

你可能感兴趣的:(工作笔记)