pbuilder编译构建工具使用详细介绍

  次阅读 作者:智能小宝 来源:互联网 2016-01-26 10:44 我要评论(0)

1. 简介

pbuilder(personal Debian package builder)是ubuntu环境下维护debian包的专业工具,能够为每个deb包创建纯净的编译构建环境,自动解析和安装依赖包,并且不污染宿主系统。

2. 使用pbuilder的流程

(1) 使用pbuild create创建纯净的编译构建环境,可以通过参数指定所要模拟的debian环境版本

(2) 使用apt-get source下载目标deb包的src包

(3) 使用pbuilder build编译目标源码包,参数为src包的dsc文件

(4) 回到第(2)步继续编译更多的包

3. pbuilder的主要功能(摘自manual page)

(1) --create

创建指定debian发行版的编译构建环境,最终会打包为base.tgz。

(2) --update

更新base.tgz。

(3) --build

编译指定的源码包,通过传入dsc-file指定源码包。

(4) --clean

清空BUILDPLACE和APTCACHE中的内容。

(5) --login

chroot(即login)到构建编译环境。需要注意的是,exit后会自动clean,期间用户所有的操作都不会被保存,因此此命令只用于调试目的。

(6) --excute

首先login到编译构建环境,然后执行指定的program。需要在参数中指定目标program的路径,该program会被复制到编译构建环境中执行。

(7) --debuild

在Debian source directory(即解压好的debian源码包)中编译源码包,当前目录中需要存在debian/目录。pbuilder --debuild等价于pdebuild。

4. pbuilder的原理

(1) 相关文件

pbuilder相关的脚本有/usr/sbin/pbuilder,/usr/lib/pbuilder/*,/usr/bin /pdebuild。

相关的临时目录是/var/cache/pbuilder。

pbuilder运行时所需的各种变量如BUILDPLACE, MIRRORSITE,BUILDRESULT, DISTRIBUTION等都定义在配置文件中,这些文件有/etc/pbuilder/*, /usr/share/pbuilder/pbuilderrc,/etc/pbuilderrc, ~/. pbuilderrc。通过pbuilder-loadconfig脚本可知,这些文件的优先级依次升高:/usr/share/pbuilder /pbuilderrc< /etc/pbuilderrc < ~/. pbuilderrc,即前者的配置可以被后者覆盖,最后,所有的参数又都可以通过命令行参数覆盖。

(2) pbuilder create命令的实体是pbuilder-createbuildenv。

它创建一个根目录环境,模拟指定的debian发行版。根目录被打包在BUILDPLACE/base.tar.gz中,之后编译deb包时可以重复使用。

(2.1) 该脚本首先创建debian系统的基础根目录并安装基本的deb包,这些实际上是借助debootstrap完成的。根目录环境放在BUILDPLACE 中。

可以通过参数定制debootstrap所创建的debian系统,如--arch=ARCH可指定目标体系架构,--include=PACKAGES指定需要额外下载安装的 package,--variant=minbase|buildd|fakechroot|scratchbox可指定所使用的bootstrap脚本,不同的脚本创建的debian环境不同,主要区别是安装的deb包不同,默认是minbase,如果要创建编译构建环境,一般选用 buildd。debootstrap目前所支持的debian系统发行版见http://neuro.debian.net/pkgs /debootstrap.html

(2.2) 将一些重要的配置文件(hosts, hostname, resolv.conf)复制到目标环境,创建并配置/etc/apt,添加apt keyring到目标环境中。

(2.3) chroot到目标环境,挂载运行时所需的目录,如/proc, /dev/, /dev/pts, /selinux及用户指定的需要bind mount的目录。

(2.4) 在目标环境中,执行apt-get update,并安装build-essential,dpkg-dev以及其它的packages。

(2.5) 卸载之前挂载的运行时目录。

(2.6) 将BUILDPLACE打包为base.tgz。

以上各步出现错误时,都会清空BUILDPLACE,避免污染宿主系统。

(3) pbuilder build的实体是pbuilder-buildpackage。

它基于已有的base.tgz,创建临时编译构建环境,并在此环境中编译源码包。

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...