构建 Ceph Debian GNU/Linux 包
以下脚本解释了如何从源代码克隆中为Ceph创建 Debian GNU/Linux 软件包。
releasedir=/tmp/release rm -fr releasedir mkdir -p $releasedir
删除所有不在 git 管理下的文件,这样它们就不会
包含在分发包中。
git clean -dxf
git describe 提供了一个版本号,它具有以下特点:
a) 人类可读
b) 每个提交都是独一无二的
c) 比任何以前的提交都高
d) 包含提交的短哈希值
vers=`git describe --match "v*" | sed s/^v//`
创建分发 tarball 需要一些 configure
选项(否则部分源代码树将被排除在外)。
./autogen.sh ./configure --with-rocksdb --with-ocf --with-rest-bench \ --with-nss --with-debug --enable-cephfs-java \ --with-lttng --with-babeltrace
使用 distdir= 设置 tarball 顶级目录的名称,以便
与所需的版本匹配
make distdir=ceph-$vers dist
重命名 tarball 以匹配 debian 惯例并解压它
mv ceph-$vers.tar.gz $releasedir/ceph_$vers.orig.tar.gz tar -C $releasedir zxf ceph_$vers.orig.tar.gz
复制 debian 目录并删除 -dbg 软件包
因为它们很大且构建耗时
cp -a debian $releasedir/ceph-$vers/debian cd $releasedir perl -ni -e 'print if(!(/^Package: .*-dbg$/../^$/))' ceph-$vers/debian/control perl -pi -e 's/--dbg-package.*//' ceph-$vers/debian/rules
始终将 debian 版本设置为 1,这是可以接受的,因为 debian
目录包含在源代码中,并且每次修改时上游版本都会
发生变化。
dvers="$vers-1"
更新 changelog 以匹配所需的版本
cd ceph-$vers chvers=`head -1 debian/changelog | perl -ne 's/.*\(//; s/\).*//; print'` if [ "$chvers" != "$dvers" ]; then DEBEMAIL="contact@ceph.com" dch -b -v "$dvers" "new version" fi
创建软件包
a) 使用 ccache 在重复构建时加快速度
b) 不签署软件包
c) 使用可用处理器的一半
PATH=/usr/lib/ccache:$PATH dpkg-buildpackage -j$(($(nproc) / 2)) -uc -us
发布目录包含源代码和二进制软件包。
ceph_0.90-670-g4712b2b-1_amd64.changes ceph_0.90-670-g4712b2b-1_amd64.deb ceph_0.90-670-g4712b2b-1.diff.gz ceph_0.90-670-g4712b2b-1.dsc ceph_0.90-670-g4712b2b.orig.tar.gz ceph-common_0.90-670-g4712b2b-1_amd64.deb ceph-fs-common_0.90-670-g4712b2b-1_amd64.deb ceph-fuse_0.90-670-g4712b2b-1_amd64.deb ceph-mds_0.90-670-g4712b2b-1_amd64.deb ceph-resource-agents_0.90-670-g4712b2b-1_amd64.deb ceph-test_0.90-670-g4712b2b-1_amd64.deb libcephfs1_0.90-670-g4712b2b-1_amd64.deb libcephfs-dev_0.90-670-g4712b2b-1_amd64.deb libcephfs-java_0.90-670-g4712b2b-1_all.deb libcephfs-jni_0.90-670-g4712b2b-1_amd64.deb librados2_0.90-670-g4712b2b-1_amd64.deb librados-dev_0.90-670-g4712b2b-1_amd64.deb libradosstriper1_0.90-670-g4712b2b-1_amd64.deb libradosstriper-dev_0.90-670-g4712b2b-1_amd64.deb librbd1_0.90-670-g4712b2b-1_amd64.deb librbd-dev_0.90-670-g4712b2b-1_amd64.deb python-ceph_0.90-670-g4712b2b-1_amd64.deb radosgw_0.90-670-g4712b2b-1_amd64.deb rbd-fuse_0.90-670-g4712b2b-1_amd64.deb rest-bench_0.90-670-g4712b2b-1_amd64.deb
第一次运行时,使用 12 个 2.1Ghz 处理器
- 磁盘空间:约 200MB
- 时间:约 20 分钟
第二次运行时(即 ccache 检索上一次编译的结果)
- 磁盘空间:约 200MB
- 时间:约 10 分钟
在 ccache -C 之后并包含 -dbg 软件包进行构建
- 磁盘空间:约 840MB
- 时间:约 25 分钟
大约有 5 分钟用于压缩 ceph-test-dbg 软件包的 2GB 内容。