阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

一分钟学会将OpenStack Havana代码编译成DEB包

177次阅读
没有评论

共计 5856 个字符,预计需要花费 15 分钟才能阅读完成。

Why

我想有以下有几个原因促使我写这篇 Blog:
1、很多人开始 OpenStack 之旅是从 Ubuntu 开始,但是却没有一篇文章系统的介绍如何将修改后的代码重新编译回 DEB 包。
2、如果我们采用源代码直接安装的方式对 OpenStack 模块进行管理,一致性很难保证,难以维护。
3、Debian 类系统的打包看起来比 RPM 包复杂很多。
 

Who

谁需要看这篇文章呢?
1、不了解如何编译 DEB 包
2、想把修改过的 OpenStack 源代码重新发布,供内部使用
3、希望改变直接维护源代码
 
当然,如果您已经是这方面的高手,欢迎给我指正我 Blog 中的不足,十分感谢。

Quick Start

我已经将整个的编译过程集成在 Vagrant 脚本中,你可以直接安装 Vagrant 后,下载我的源代码,启动后就能看到整个的编译过程。
Vagrant 版本要求为 1.3.5,Virtualbox 版本要求为 4.1 或者 4.2 均可。

Let’s play some magic

git clone https://github.com/xiaoquqi/vagrant-build-openstack-deb

cd vagrant-build-openstack-deb

vagrant up

虚拟机启动后,将会自动从 github(这里使用的是 csdn code 的镜像代码) 同步最新代码,然后使用编译脚本,执行打包操作。如果不考虑下载的时间,整个过程大概持续 5 分钟左右的时间,编译好的 Deb 包将会存放在 /root/build 目录下。

vagrant ssh

即可登陆到虚拟机,切换到 root 目录就可以查看到所有打包好的 DEB 的情况了,当然你也可以直接使用 dpkg - i 命令进行安装。

sudo -s
cd /root/build
ls -lrt *.deb
dpkg -i Python-glance_2013.2.2.dev1.g5cd7a22~precise-0ubuntu1_all.deb

Step by Step

看过了整个的编译过程,下面来介绍一点点细节。
全部的编译部分代码都在这个文件中:https://github.com/xiaoquqi/vagrant-build-openstack-deb/blob/master/scripts/build.sh,下面让我们来仔细分析一下整个编译过程。

添加必要的源

这里面我们用的源包含 sohu 的 Ubuntu 12.04 源以及 Ubuntu 的 Havana 源

deb http://mirrors.sohu.com/ubuntu/ precise main restricted
deb http://mirrors.sohu.com/ubuntu/ precise-updates main restricted
deb http://mirrors.sohu.com/ubuntu/ precise universe
deb http://mirrors.sohu.com/ubuntu/ precise-updates universe
deb http://mirrors.sohu.com/ubuntu/ precise multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-updates multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-backports main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-security main restricted
deb http://mirrors.sohu.com/ubuntu/ precise-security universe
deb http://mirrors.sohu.com/ubuntu/ precise-security multiverse
deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/havana main

 

相关阅读

在 Ubuntu 12.10 上安装部署 Openstack http://www.linuxidc.com/Linux/2013-08/88184.htm

Ubuntu 12.04 OpenStack Swift 单节点部署手册 http://www.linuxidc.com/Linux/2013-08/88182.htm

OpenStack 云计算快速入门教程 http://www.linuxidc.com/Linux/2013-08/88186.htm

企业部署 OpenStack:该做与不该做的事 http://www.linuxidc.com/Linux/2013-09/90428.htm

安装必要的编译软件

apt-get install -y debootstrap equivs schroot
apt-get install -y devscripts
apt-get install -y build-essential checkinstall sbuild
apt-get install -y dh-make
apt-get install -y bzr bzr-builddeb
apt-get install -y git

apt-get install -y Python-setuptools

编译脚本的源代码仓库

Ubuntu 维护源代码编译脚本是使用叫做 bzr 的工具,常使用 Launchpad 的朋友应该比较熟悉,这是一套类似于 git 的分布式管理工具,不同的是这是一套完全用 python 语言实现的管理工具,不仅具有代码版本控制功能并且与 Launchpad 高度整合,作为 Ubuntu 维护不可缺少的重要工具之一。例如,这里面用到的 glance 编译脚本就可以在这里找到:
https://code.launchpad.net/~ubuntu-server-dev/glance/havana
页面上方有下载代码的方式:

bzr branch lp:~ubuntu-server-dev/glance/havana

git clone https://code.csdn.net/openstack/glance.git –branch “stable/havana” glance_source

准备环境

在 Vagrant 启动一台新虚拟机之后,并没有 pip,如果不安装 pip,则会在 python setup.py sdist 过程中,把 pip 安装到源代码目录中,引起 Build 失败。将 //vagrant/pip/pip-1.4.1.tar.gz 解压缩并安装,之后安装 pbr:

tar zxvf pip-1.4.1.tar.gz
cd pip-1.4.1
sudo python setup.py install
sudo pip install pbr

生成 source 文件

进入 glance_source 目录,执行

python setup.py sdist

生成的 tar.gz 文件会在 glance_source/dist 下,注意此时该文件的名称为:

glance-2013.2.2.dev1.g5cd7a22.tar.gz

接下来我们需要将该文件重命名为:

glance_2013.2.2.dev1.g5cd7a22~precise.orig.tar.gz
特别注意:glance 后面已经变为下划线!!!
把文件移动到与 glance 和 glance_source 同一级别的目录,这样在编译的时候,才能找到 source 文件。此时的目录结构为:
├── glance
│ ├── debian
├── glance_source
├── glance_2013.2.2.dev1.g5cd7a22~precise.orig.tar.gz

安装依赖包

为了保证顺利的完成编译,我们需要安装要编译包的所有依赖包,简单来说就是 glance/debian/control 文件中定义的 Depends 部分的内容。当然在编译的时候我们也可以完全忽略依赖,但是并不推荐。

mk-build-deps -i -t ‘apt-get -y’ debian/control

这样系统就会自动安装所有依赖包,并且生成一个 glance-build-deps_1.0_all.deb 文件。

生成日志信息

开始编译前,我们还需要告诉编译器我们要编译的版本,还记得刚才生成的 dist 包吗,把那个版本拿出来作为我们 commit 的版本。
 
cd glance
dch -b -D precise –newversion “1:2013.2.2.dev1.g5cd7a22~precise-0ubuntu1” ‘This is a build test.’
debcommit
 
这样在 glance/debian/changelog 中就会增加一条新的日志。

开始编译

万事俱备,只欠东风。我们利用 bzr 提供的 builddeb 开始编译,这里我们忽略签名问题。
 
cd glance
bzr builddeb — -sa -us -uc
 
大功告成啦。快去 /root/build/glance 下看看你的 deb 包吧。

总结

Debian 包的编译的确涉及很多知识点,而且可使用的编译工具很多,关系很复杂。这篇博文,只为了帮助大家对 DEB 包的编译有一个快速的认识,如果想了解更多关于编译的知识,请关注后续的博文。
 
最后,我们仍然希望有更多的热爱 OpenStack 的朋友们加入我们公司,如果有意向的请与我联系
邮箱:xiaoquqi@gmail.com
新浪微博:@RaySun(http://weibo.com/xiaoquqi)

Why

我想有以下有几个原因促使我写这篇 Blog:
1、很多人开始 OpenStack 之旅是从 Ubuntu 开始,但是却没有一篇文章系统的介绍如何将修改后的代码重新编译回 DEB 包。
2、如果我们采用源代码直接安装的方式对 OpenStack 模块进行管理,一致性很难保证,难以维护。
3、Debian 类系统的打包看起来比 RPM 包复杂很多。
 

Who

谁需要看这篇文章呢?
1、不了解如何编译 DEB 包
2、想把修改过的 OpenStack 源代码重新发布,供内部使用
3、希望改变直接维护源代码
 
当然,如果您已经是这方面的高手,欢迎给我指正我 Blog 中的不足,十分感谢。

Quick Start

我已经将整个的编译过程集成在 Vagrant 脚本中,你可以直接安装 Vagrant 后,下载我的源代码,启动后就能看到整个的编译过程。
Vagrant 版本要求为 1.3.5,Virtualbox 版本要求为 4.1 或者 4.2 均可。

Let’s play some magic

git clone https://github.com/xiaoquqi/vagrant-build-openstack-deb

cd vagrant-build-openstack-deb

vagrant up

虚拟机启动后,将会自动从 github(这里使用的是 csdn code 的镜像代码) 同步最新代码,然后使用编译脚本,执行打包操作。如果不考虑下载的时间,整个过程大概持续 5 分钟左右的时间,编译好的 Deb 包将会存放在 /root/build 目录下。

vagrant ssh

即可登陆到虚拟机,切换到 root 目录就可以查看到所有打包好的 DEB 的情况了,当然你也可以直接使用 dpkg - i 命令进行安装。

sudo -s
cd /root/build
ls -lrt *.deb
dpkg -i Python-glance_2013.2.2.dev1.g5cd7a22~precise-0ubuntu1_all.deb

Step by Step

看过了整个的编译过程,下面来介绍一点点细节。
全部的编译部分代码都在这个文件中:https://github.com/xiaoquqi/vagrant-build-openstack-deb/blob/master/scripts/build.sh,下面让我们来仔细分析一下整个编译过程。

添加必要的源

这里面我们用的源包含 sohu 的 Ubuntu 12.04 源以及 Ubuntu 的 Havana 源

deb http://mirrors.sohu.com/ubuntu/ precise main restricted
deb http://mirrors.sohu.com/ubuntu/ precise-updates main restricted
deb http://mirrors.sohu.com/ubuntu/ precise universe
deb http://mirrors.sohu.com/ubuntu/ precise-updates universe
deb http://mirrors.sohu.com/ubuntu/ precise multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-updates multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-backports main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-security main restricted
deb http://mirrors.sohu.com/ubuntu/ precise-security universe
deb http://mirrors.sohu.com/ubuntu/ precise-security multiverse
deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/havana main

 

相关阅读

在 Ubuntu 12.10 上安装部署 Openstack http://www.linuxidc.com/Linux/2013-08/88184.htm

Ubuntu 12.04 OpenStack Swift 单节点部署手册 http://www.linuxidc.com/Linux/2013-08/88182.htm

OpenStack 云计算快速入门教程 http://www.linuxidc.com/Linux/2013-08/88186.htm

企业部署 OpenStack:该做与不该做的事 http://www.linuxidc.com/Linux/2013-09/90428.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计5856字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中