新物网

当前位置:首页 > 百科

百科

pbuilder编译程序构建工具的应用

时间:2023-10-17 18:50:28 静子
1. 简介pbuilder(personal Debian package builder)是在ubuntu条件下维护debian包的邮政专业设备,可为每个deb包建立清晰的编译程序,构建环境,自动分

1. 

pbuilder(personal Debian package builder)是在ubuntu条件下维护debian包的邮政专业设备,可为每个deb包建立清晰的编译程序,构建环境,自动分析和安装架包,不污染寄主系统软件。

2. 应用pbuilder的操作流程

(1) pbuild的应用 create建立了一个清晰的编译程序来构建环境,debian自然环境版本号可以通过特定的主要参数模拟

(2) 应用apt-get source免费下载总体目标deb包的邮src包

(3) pbuilder应用程序 build编译程序总体目标源码包,邮dsc文档的主要参数是src包

(4) 回到第(2)步,再次编译程序,包更多

3. pbuilder的主要作用(节选自manual page)

(1) --create

建立特定debian发行版的编译程序,构建环境,最终,它将被包装成basee.tgz。

(2) --update

升级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的路线必须在主要参数中具体,可以复制到编译程序构建环境中。

(7) --debuild在Debian source directory(即Debian源码包,缓解压力较好)编译程序源码包,在文件列表过程中需要Debian/文件目录。pbuilder --等价于pdebuild的debuild。4. pbuilder

的基本原理

(1) 有关文件

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

相关临时目录为/var/cache/pbuilder。

BUILDPLACE等pbuilder运行所需的各种自变量, MIRRORSITE,BUILDRESULT, 环境变量中定义了DISTRIBUTION等。这些文件有/etc/pbuilder/*, /usr/share/pbuilder/pbuilderrc,/etc/pbuilderrc, ~/. pbuilderrc。根据pbuilder-loadconfig脚本的制作,这些文件的优先级已经上升:/usr/share/pbuilder/pbuilderrc< /etc/pbuilderrc < ~/. pbuilderrc,即前面一种配置能够被后面一种遮盖,最终,全部参数值又都能通过argv遮盖。

(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,建立临时性编译程序构建环境,且在这个环境里编译程序源码包。

       (3.1) 该脚本制作最先缓解压力base.tgz到临时目录BUILDPLACE中,将寄主系统中关键环境变量拷贝进来,如果客户特定要遮盖默认apt源,则重新部署临时性环境下的/etc/apt,以后初始化/proc等运行中文件目录。

       (3.2) 建立编译时所需要的临时目录和文件,如BUILDRESULT,PBUILDER_BUILD_LOGFILE等。

       (3.3) chroot查验下载并安装编译程序源码包所需要的架包,客户指定附加包。

       查验下载并安装架包工作,根据pbuilder-satisfydepends脚本制作进行。该脚本制作根据分析dsc文件中的Build-Depends, Build-Depends-Indep, Build-Conflicts,Build-Conflicts-Indep等场所,获得编译程序总体目标源码包所需要的架包和冲突包,通过这些信息内容,创建了一个空deb包pbuilder-satisfydepends-dummy,重复利用aptitude install组装这一dunmmy包,从而解决了架包和冲突包的邮难题。

       (3.4) 依据主要参数里的dsc-file,将源码文件拷贝到临时性环境里(即BUILDPLACE/tmp/buildd),并修改文件权限,与此同时如果客户指定了INPUTFILE,则一并拷贝进来。最终chroot到临时性自然环境,缓解压力源码包。

       (3.5) 以chroot的形式启用dpkg-buildpackage编译程序源码包。

       (3.6) 卸载掉运行中文件目录。

       (3.7) 将编译程序所得到的deb包从BUILDPLACE/tmp/buildd拷贝到BUILDRESULT,默认是/var/cache/pbuilder/result/。       (3.8) 消除BUILDPLACE。

5. pbuilder应用案例

(1) 组装pbuilder

sudo apt-get installpbuilder debootstrap devscripts

(2) 配备pbuilder所使用的源

echo “MIRRORSITE=http://192.168.0.123 /ubuntu”>> /etc/ pbuilderrc

(3) 建立编译环境

最简单的方法是:

sudo pbuilder create

此时,pbuilder将利用pbuilderc中默认的主要参数建立编译环境。也可以通过argv定制:

sudo pbuilder create--distribution raring --debootstrapopts --arch=AMD64 --debootstrapopts--variant=buildd

此时,AMD64架构ubuntuntunt将建立 raring编译环境。

(4) 下载并编译程序源代码包

以编译程序bc为例,最简单的方法是:

apt-get source -d bc

sudo pbuilder buildbc__1.06.95-4ubuntuntuntubububububuntu1.dsc

源码包也可以手动缓解压力,进入源码文件目录编译程序:

apt-get source -d bc

dpkg-source -xbc__1.06.95-4ubuntuntuntubububububuntu1.dsccd bc-1.06.95