【ops】基于RPM源码包制作RPM包

基于RPM源码包制作RPM包(以heat为例)

一、下载源码包

yumdownloader --source openstack-heat
得到源码包文件:openstack-heat-2015.1.1-1.el7.src.rpm

二、安装工具包

yum grouplist
yum groupinstall Development

三、安装源码包

sudo rpm -ivh openstack-heat-2015.1.1-1.el7.src.rpm
Updating / installing...
1:openstack-heat-2015.1.2-1.el7.cen################################# [100%]

四、切换到rpmbuild目录,并查看目录结构

[root@NFJD-TESTN-COMPUTE-1 rpmbuild]# tree
.
├── SOURCES
│ ├── 0001-Count-all-nested-stack-resources-with-DB-operations.patch
│ ├── 0002-Switch-total_resources-to-use-stack_count_total_reso.patch
│ ├── heat-2015.1.1.tar.gz
│ ├── heat.conf.sample
│ ├── heat-dist.conf
│ ├── heat.logrotate
│ ├── openstack-heat-api-cfn.service
│ ├── openstack-heat-api-cloudwatch.service
│ ├── openstack-heat-api.service
│ └── openstack-heat-engine.service
└── SPECS
└── openstack-heat.spec
2 directories, 11 files

五、修改SPECS/openstack-heat.spec文件

vim SPECS/openstack-heat.spec
在vim编辑器中执行下面两行命令
:%s/^%patch/#%patch/g
:%s/^Patch/#Patch

六、删除SOURCE/*.patch文件

rm -f SOURCES/*.patch

七、基于旧的源码更新代码

cd /root/rpmbuild/SOURCES
tar -zxvf heat-2015.1.1.tar.gz
cp -rf heat-2015.1.1 heat-2015.1.2
拷贝修改的代码到改目录下
cp -rf /root/eldon/heat/heat heat-2015.1.2/
cp -rf /root/eldon/heat/setup.cfg heat-2015.1.2/

八、修改源码权限

chmod -R 775 heat-2015.1.2
chown -R 3000:3000 heat-2015.1.2

九、打包源码

rm -rf heat-2015.1.2.tar.gz
tar zcvf heat-2015.1.2.tar.gz heat-2015.1.2/

十、修改源码包权限

chown mockbuild:mockbuild heat-2015.1.2.tar.gz

十一、编译源码包

rpmbuild -ba /root/rpmbuild/SPECS/openstack-heat.spec
Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/openstack-heat-2015.1.2-1.el7.centos.x86_64
Wrote: /root/rpmbuild/SRPMS/openstack-heat-2015.1.2-1.el7.centos.src.rpm
Wrote: /root/rpmbuild/RPMS/noarch/openstack-heat-common-2015.1.2-1.el7.centos.noarch.rpm
Wrote: /root/rpmbuild/RPMS/noarch/openstack-heat-engine-2015.1.2-1.el7.centos.noarch.rpm
Wrote: /root/rpmbuild/RPMS/noarch/openstack-heat-api-2015.1.2-1.el7.centos.noarch.rpm
Wrote: /root/rpmbuild/RPMS/noarch/openstack-heat-api-cfn-2015.1.2-1.el7.centos.noarch.rpm
Wrote: /root/rpmbuild/RPMS/noarch/openstack-heat-api-cloudwatch-2015.1.2-1.el7.centos.noarch.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.LFiqMq

  • umask 022
  • cd /root/rpmbuild/BUILD
  • cd heat-2015.1.2
  • /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/openstack-heat-2015.1.2-1.el7.centos.x86_64
  • exit 0

问题小结

1.安装源码包时缺少操作的用户(组)

warning: openstack-heat-2015.1.1-1.el7.src.rpm: Header V4 RSA/SHA1 Signature, key ID 7d10ce81: NOKEY
Updating / installing...
1:openstack-heat-2015.1.1-1.el7 ################################# [100%]
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
warning: user mockbuild does not exist - using root

  • 解决方法:先添加缺少的用户组,再安装源码包

groupadd mockbuild
useradd mockbuild -g mockbuild
sudo rpm -ivh openstack-heat-2015.1.1-1.el7.src.rpm

2.git history和setup.conf文件中版本不一致
  • 解决方法:修改setup.conf中版本号为需要的版本
3.问题三

/var/tmp/rpm-tmp.9wVSLj: line 51: sphinx-build: command not found

  • 解决方法:安装Sphinx

sudo easy_install Sphinx

4.问题四

AttributeError: 'module' object has no attribute 'Cmd'

  • 问题原因:替换heatpython代码时没有修改代码文件权限
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容