码迷,mamicode.com
首页 > 其他好文 > 详细

deb编译构建指南

时间:2015-04-18 11:39:13      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

deb

仓库同步

工具 apt-mirror

基本配置:

/etc/apt/mirror.list

############# config ##################
#
# set base_path    /var/spool/apt-mirror
#
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch  <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set base_path    /data/upstream/
set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
set nthreads     20
set run_postmirror 0

############# end config ##############

deb http://security.ubuntu.com/ubuntu precise-security main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu precise-security main restricted universe multiverse

结合crond 每天自动同步

/etc/cron.d/apt-mirror
0 1 * * * root /usr/bin/apt-mirror &> /data/log/cron.log &

软件包编译

apt-get install build-essential dpkg-dev dh-make pbuilder

gcc          GNU C语言编译器
g++         GNU C++语言编译器
make       GNU自动化构建工具 
autotools autoconf automake 工具集  
dpkg-dev   这个软件包包括了在解开、制作、上传Debian源文件包时需要用到的工具
diff/patch  源码补丁制作与补丁管理工具
fakeroot    模拟变成root用户,这在创建软件包的过程的一些部分是必要的
dh-make   提供了我们需要用到的 dh_make 命令,用于根据上游tarball生成我们deb包模板
gnupg       加密签名相关

修改来自上游仓库的软件包简要示例

apt-get source zip
cd zip-3.0
apt-get build-dep zip -y
…
dpkg-buildpackage -a

从软件源码包开始制作deb包

wget http://ftp.gnu.org/gnu/tar/tar-1.26.tar.bz2
tar -xvpf tar-1.26.tar.bz2
cd tar-1.26
dh_make -e regulus_cn@163.com -f ../tar-1.26.tar.bz2
… 
debian/rules
debian/changlog
dpkg-buildpackage -a
...

debian/rules示例

rules文件本质上是一个Makefile文件,这个Makefile文件定义了创建deb格式软件包的规则。打包工具按照rules文件指定的规则,完成编译,将软件安装到临时安装目录,清理编译目录等操作,并依据安装到临时目录的文件来生成deb格式的软件包。

rules文件一般会包含,”binary-arch”, ”binary-indep”, ”binary”,”build”, ”clean”, ”install”, 等targets。

一个最简单 debian/rules 示例:

#!/usr/bin/make -f

binary:build install 
    dh_gencontrol
    dh_md5sums 
    dh_builddeb 
binary-indep: binary
binary-arch: binary
build:
    dh_auto_configure 
    make -j16
install:
    dh_auto_install
clean:
    dh_auto_clean
    rm -rf debian/tar

.PHONY: build clean binary-indep binary-arch binary install

dh命令简要解析

dh是debhelper包中的命令序列,dh开头的命令主要用于简化rules文件的编写,把一些通用的重复的操作用perl命令来代替。

下面是一些dh命令和实际对应执行的操作的简要介绍

dh_auto_clean           make distclean
dh_auto_configure       ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var ...
dh_auto_build           make
dh_auto_test            make test
dh_auto_install         make install DESTDIR=/path/to/package_version-revision/debian/package 
以上的targets 如果需要 fakeroot 操作,则需要加上dh_testroot

deb包的执行脚本

许多软件安装前或安装后都需要进行一些设置工作,deb格式的软件安装过程执行的操作是由如下脚本来控制的

debian/preinst    安装前执行脚本
debian/postinst   安装后执行脚本
debian/prerm      卸载前执行脚本
debian/postrm     卸载后执行脚本

deb源代码包新格式

  • Format:1.0 一个 .dsc 文件,一个 .orig.tar.gz 文件,一个 .diff.gz 文件   
  • Format:2.0    这个格式不建议广泛使用,是个过渡格式
  • Format:3.0 (native) 包含了 debian 化的所有更改全部在一个压缩包中  
  • Format:3.0 (quilt) 一个 .dsc 文件, 一个 .debian.tar.{gz,bz2,lzma} 包含了 debian 化的所有更改, 零个或者多个 .orig-.tar.{gz,bz2,lzma},   
  • Format:3.0 (git)   实验性质的,源代码包和版本控制系统 (git) 的结合
  • Format:3.0 (bzr)   实验性质的,源代码包和版本控制系统 (bzr) 的结合

其他进阶工具

  • debootstrap 构建临时环境
  • devscripts 辅助脚本集合
  • pbuilder 用于创建和维护chroot环境的程序。在此chroot环境中构建Debian可以检查构建软件包的依赖关系的正确性
  • ccache 用于缓存编译临时文件,加快编译

介绍下pbuilder 的基本用法

pbuilder create
pbuilder build  *.dsc
  • https://wiki.ubuntu.com/PbuilderHowto

参考文档:

https://www.debian.org/doc/manuals/maint-guide/index.en.html
https://www.debian.org/doc/debian-policy/
http://live-systems.org/build/

仓库管理

工具 reprepro 一个快速搭建deb软件仓库的工具。

安装 apt-get install reprepro -y

使用

创建配置文件,比如仓库目录在/var/www/repo 为例

cd /var/www/repo/
cat > conf/distributions << "EOF"
Origin: regulus
Label:  wheezy
Codename: wheezy
Architectures: i386 amd64 source 
Components: main
Version: 2015.4.17
Description: regulus.intra.repo 2015.4.17
EOF

更新仓库

reprepro includedeb wheezy pkgdir/*.deb
reprepro includedsc wheezy pkgdir/*.dsc
/var/www/repo/
conf/  
db/..  
dists/..  
pool/..

创建ISO

build-simple-cdd --conf ./custom.conf
  • https://wiki.debian.org/Debootstrap/
  • https://wiki.debian.org/Simple-CDD/Howto
  • https://wiki.debian.org/DebianCustomCD
  • http://debian-handbook.info/browse/stable/sect.automated-installation.html#sect.simple-cdd

deb编译构建指南

标签:

原文地址:http://my.oschina.net/u/877567/blog/403284

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!