怎样制作RPM包

怎样制作RPM包

摘要

我在网上找RPM包的制作例子几乎都是C源码编译安装然后生成RPM包, 而我的程序不是C写的很多时候是脚本语言如Python, PHP 甚至是 HTML文件。怎样制作RPM包呢?


目录

  • 1. 为HTML手册文档制作RPM包
  • 2. 通过 .tar.gz 文件创建 rpm 与 src.rpm 包
  • 3. 如果你认为上面方法仍然复杂,可以尝试另一个工具 checkinstall

1. 为HTML手册文档制作RPM包

下面是一个spec文件

保存为 doc.spec

		Summary: Netkiller's eBook
Name: netkiller
Version: 1.0.1
Release: 1
License: CC
Group: Books/Computer books
Packager: Neo Chen <netkiller@msn.com>
URL: http://netkiller.github.io

%description

http://netkiller.github.io
http://netkiller.sourceforge.net

- Network: Firewall, Router, Switch, Cisco, H3C, Juniper,F5 Big-IP, Array
- Security: OpenVPN, L2TP, PPTP, IPSec IP Tunnel
- Cluster: SmartDNS, LVS, HAproxy, Keepalived, Heartbeat, MooseFS, GlusterFS
- Web: Apache, Lighttpd, Nginx, Tomcat, Resin
- Database: PostgreSQL, MySQL Cluster, MySQL Replication, Cassandra, MongoDB
- Cache: APC Cache, XCache, Memcached, Squid, Varnish
- Frameworks: PHP(CodeIgniter, Prado, Mach II, Qcodo, Smarty)
- Python(Django, Pylons) Perl(Catalyst)
- Search Engine: Solr, Sphinx, Crawler: Nutch
- DIV-CSS, JQuery, Prototype, Google Map API
- Virtualization: Xen, Kvm, OpenVZ

%prep

%build

mkdir -p %{_buildrootdir}/%{name}-%{version}-%{release}.x86_64/usr/share/doc/

%install

rsync -auzv ~/workspace/public_html/mail/* %{_buildrootdir}/%{name}-%{version}-%{release}.x86_64/usr/share/doc/netkiller


%pre

%preun

%post

%postun

%files
/usr/share/doc

%changelog		

创建RPM包

$ rpmbuild -bb doc.spec		

输出信息类似下面

		$ rpmbuild -bb doc.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.X07xhN
+ umask 022
+ cd /home/neo/rpmbuild/BUILD
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.ANzKAA
+ umask 022
+ cd /home/neo/rpmbuild/BUILD
+ mkdir -p /home/neo/rpmbuild/BUILDROOT/netkiller-1.0.1-1.x86_64
+ mkdir -p /home/neo/rpmbuild/BUILDROOT/netkiller-1.0.1-1.x86_64/usr/share/doc/
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.VQkPUn
+ umask 022
+ cd /home/neo/rpmbuild/BUILD
+ rsync -auzv /home/neo/workspace/public_html/mail/21cn.html /home/neo/workspace/public_html/mail/alpine.html /home/neo/workspace/public_html/mail/author.html /home/neo/workspace/public_html/mail/constituent.html /home/neo/workspace/public_html/mail/docbook.css /home/neo/workspace/public_html/mail/donations.html /home/neo/workspace/public_html/mail/evolution.html /home/neo/workspace/public_html/mail/exim4 /home/neo/workspace/public_html/mail/faq.html /home/neo/workspace/public_html/mail/fetchmail.html /home/neo/workspace/public_html/mail/format.content.html /home/neo/workspace/public_html/mail/format.to.html /home/neo/workspace/public_html/mail/gpg4win.html /home/neo/workspace/public_html/mail/ibook.epub /home/neo/workspace/public_html/mail/index.html /home/neo/workspace/public_html/mail/mail.client.html /home/neo/workspace/public_html/mail/mail.format.html /home/neo/workspace/public_html/mail/mail.server.exim4.html /home/neo/workspace/public_html/mail/mail.server.postfix.html /home/neo/workspace/public_html/mail/mail.service.html /home/neo/workspace/public_html/mail/mail.tools.html /home/neo/workspace/public_html/mail/mua.html /home/neo/workspace/public_html/mail/outlook.html /home/neo/workspace/public_html/mail/php.mail.html /home/neo/workspace/public_html/mail/postfix /home/neo/workspace/public_html/mail/preface.download.html /home/neo/workspace/public_html/mail/preface.html /home/neo/workspace/public_html/mail/qq.html /home/neo/workspace/public_html/mail/reader.html /home/neo/workspace/public_html/mail/smtp.error.html /home/neo/workspace/public_html/mail/sohu.html /home/neo/workspace/public_html/mail/tom.html /home/neo/rpmbuild/BUILDROOT/netkiller-1.0.1-1.x86_64/usr/share/doc/netkiller
sending incremental file list
created directory /home/neo/rpmbuild/BUILDROOT/netkiller-1.0.1-1.x86_64/usr/share/doc/netkiller
21cn.html
alpine.html
author.html
constituent.html
docbook.css
donations.html
evolution.html
faq.html
fetchmail.html
format.content.html
format.to.html
gpg4win.html
ibook.epub
index.html
mail.client.html
mail.format.html
mail.server.exim4.html
mail.server.postfix.html
mail.service.html
mail.tools.html
mua.html
outlook.html
php.mail.html
preface.download.html
preface.html
qq.html
reader.html
smtp.error.html
sohu.html
tom.html
exim4/
exim4/faq.html
exim4/index.html
postfix/
postfix/configure.html
postfix/index.html
postfix/rspamd.html

sent 127853 bytes  received 685 bytes  257076.00 bytes/sec
total size is 280313  speedup is 2.18
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-strip /usr/bin/strip
+ /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
Processing files: netkiller-1.0.1-1.x86_64
unknown, 0: Warning: using regular magic file `/etc/magic'
Provides: netkiller = 1.0.1-1 netkiller(x86-64) = 1.0.1-1
Requires(interp): /bin/sh /bin/sh /bin/sh /bin/sh
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(pre): /bin/sh
Requires(post): /bin/sh
Requires(preun): /bin/sh
Requires(postun): /bin/sh
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/neo/rpmbuild/BUILDROOT/netkiller-1.0.1-1.x86_64
Wrote: /home/neo/rpmbuild/SRPMS/netkiller-1.0.1-1.src.rpm
Wrote: /home/neo/rpmbuild/RPMS/x86_64/netkiller-1.0.1-1.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.w9Y3wO
+ umask 022
+ cd /home/neo/rpmbuild/BUILD
+ /bin/rm -rf /home/neo/rpmbuild/BUILDROOT/netkiller-1.0.1-1.x86_64
+ exit 0		

现在RPM已经制作完毕。

输出 RPM 详细信息。

		$ rpm -qpi /home/neo/rpmbuild/RPMS/x86_64/netkiller-1.0.1-1.x86_64.rpm
Name        : netkiller
Version     : 1.0.1
Release     : 1
Architecture: x86_64
Install Date: (not installed)
Group       : Books/Computer books
Size        : 280313
License     : CC
Signature   : (none)
Source RPM  : netkiller-1.0.1-1.src.rpm
Build Date  : Thu 18 Apr 2013 04:51:07 PM CST
Build Host  : ubuntu
Relocations : (not relocatable)
Packager    : Neo Chen <netkiller@msn.com>
URL         : http://netkiller.github.io
Summary     : Netkiller's eBook
Description :

http://netkiller.github.io
http://netkiller.sourceforge.net

- Network: Firewall, Router, Switch, Cisco, H3C, Juniper,F5 Big-IP, Array
- Security: OpenVPN, L2TP, PPTP, IPSec IP Tunnel
- Cluster: SmartDNS, LVS, HAproxy, Keepalived, Heartbeat, MooseFS, GlusterFS
- Web: Apache, Lighttpd, Nginx, Tomcat, Resin
- Database: PostgreSQL, MySQL Cluster, MySQL Replication, Cassandra, MongoDB
- Cache: APC Cache, XCache, Memcached, Squid, Varnish
- Frameworks: PHP(CodeIgniter, Prado, Mach II, Qcodo, Smarty)
- Python(Django, Pylons) Perl(Catalyst)
- Search Engine: Solr, Sphinx, Crawler: Nutch
- DIV-CSS, JQuery, Prototype, Google Map API
- Virtualization: Xen, Kvm, OpenVZ		

查看RPM所包含的文件

		$ rpm -qpl /home/neo/rpmbuild/RPMS/x86_64/*
/usr/share/doc
/usr/share/doc/netkiller
/usr/share/doc/netkiller/21cn.html
/usr/share/doc/netkiller/alpine.html
/usr/share/doc/netkiller/author.html
/usr/share/doc/netkiller/constituent.html
/usr/share/doc/netkiller/docbook.css
/usr/share/doc/netkiller/donations.html
/usr/share/doc/netkiller/evolution.html
/usr/share/doc/netkiller/exim4
/usr/share/doc/netkiller/exim4/faq.html
/usr/share/doc/netkiller/exim4/index.html
/usr/share/doc/netkiller/faq.html
/usr/share/doc/netkiller/fetchmail.html
/usr/share/doc/netkiller/format.content.html
/usr/share/doc/netkiller/format.to.html
/usr/share/doc/netkiller/gpg4win.html
/usr/share/doc/netkiller/ibook.epub
/usr/share/doc/netkiller/index.html
/usr/share/doc/netkiller/mail.client.html
/usr/share/doc/netkiller/mail.format.html
/usr/share/doc/netkiller/mail.server.exim4.html
/usr/share/doc/netkiller/mail.server.postfix.html
/usr/share/doc/netkiller/mail.service.html
/usr/share/doc/netkiller/mail.tools.html
/usr/share/doc/netkiller/mua.html
/usr/share/doc/netkiller/outlook.html
/usr/share/doc/netkiller/php.mail.html
/usr/share/doc/netkiller/postfix
/usr/share/doc/netkiller/postfix/configure.html
/usr/share/doc/netkiller/postfix/index.html
/usr/share/doc/netkiller/postfix/rspamd.html
/usr/share/doc/netkiller/preface.download.html
/usr/share/doc/netkiller/preface.html
/usr/share/doc/netkiller/qq.html
/usr/share/doc/netkiller/reader.html
/usr/share/doc/netkiller/smtp.error.html
/usr/share/doc/netkiller/sohu.html
/usr/share/doc/netkiller/tom.html		

提示

只要将你要打包的内容放入 %{_buildrootdir}/%{name}-%{version}-%{release}.x86_64/usr/share/doc/netkiller 即可

这种方式不需要tar.gz包,故不能生成.src.rpm文件,即便升级里面也没有内容

2. 通过 .tar.gz 文件创建 rpm 与 src.rpm 包

准备tar包

		rsync -auzv --exclude=.git --exclude=.svn /home/neo/workspace/public_html/mail /tmp/netkiller-1.0.1
cd /tmp
tar -zcvf $topdir/SOURCES/netkiller-1.0.1.tar.gz netkiller-1.0.1
cd -		

package.spec

		Summary: Netkiller's eBook
Name: netkiller
Version: 1.0.1
Release: 1
License: CC
Group: Books/Computer books
Packager: Neo Chen <netkiller@msn.com>
Source: %{name}-%{version}.tar.gz
URL: http://netkiller.github.io

%description

http://netkiller.github.io
http://netkiller.sourceforge.net

- Network: Firewall, Router, Switch, Cisco, H3C, Juniper,F5 Big-IP, Array
- Security: OpenVPN, L2TP, PPTP, IPSec IP Tunnel
- Cluster: SmartDNS, LVS, HAproxy, Keepalived, Heartbeat, MooseFS, GlusterFS
- Web: Apache, Lighttpd, Nginx, Tomcat, Resin
- Database: PostgreSQL, MySQL Cluster, MySQL Replication, Cassandra, MongoDB
- Cache: APC Cache, XCache, Memcached, Squid, Varnish
- Frameworks: PHP(CodeIgniter, Prado, Mach II, Qcodo, Smarty)
- Python(Django, Pylons) Perl(Catalyst)
- Search Engine: Solr, Sphinx, Crawler: Nutch
- DIV-CSS, JQuery, Prototype, Google Map API
- Virtualization: Xen, Kvm, OpenVZ

%prep

%setup


%build

mkdir -p %{_buildrootdir}/%{name}-%{version}-%{release}.x86_64/usr/share/doc/netkiller

%install

rsync -auzv %{_builddir}/%{name}-%{version}/* %{_buildrootdir}/%{name}-%{version}-%{release}.x86_64/usr/share/doc/netkiller



%pre

%preun

%post

%postun

%files
/usr/share/doc


%changelog		

创建RPM包

rpmbuild -bb package.spec		

这里使用-bb参数,即可以创建 .rpm 与 .src.rpm 两个包

$ find /home/neo/rpmbuild/ -name *.rpm
/home/neo/rpmbuild/RPMS/x86_64/netkiller-1.0.1-1.x86_64.rpm
/home/neo/rpmbuild/SRPMS/netkiller-1.0.1-1.src.rpm		
		$ rpm -qpi /home/neo/rpmbuild/RPMS/x86_64/netkiller-1.0.1-1.x86_64.rpm
Name        : netkiller
Version     : 1.0.1
Release     : 1
Architecture: x86_64
Install Date: (not installed)
Group       : Books/Computer books
Size        : 280313
License     : CC
Signature   : (none)
Source RPM  : netkiller-1.0.1-1.src.rpm
Build Date  : Thu 18 Apr 2013 05:02:30 PM CST
Build Host  : ubuntu
Relocations : (not relocatable)
Packager    : Neo Chen <netkiller@msn.com>
URL         : http://netkiller.github.io
Summary     : Netkiller's eBook
Description :

http://netkiller.github.io
http://netkiller.sourceforge.net

- Network: Firewall, Router, Switch, Cisco, H3C, Juniper,F5 Big-IP, Array
- Security: OpenVPN, L2TP, PPTP, IPSec IP Tunnel
- Cluster: SmartDNS, LVS, HAproxy, Keepalived, Heartbeat, MooseFS, GlusterFS
- Web: Apache, Lighttpd, Nginx, Tomcat, Resin
- Database: PostgreSQL, MySQL Cluster, MySQL Replication, Cassandra, MongoDB
- Cache: APC Cache, XCache, Memcached, Squid, Varnish
- Frameworks: PHP(CodeIgniter, Prado, Mach II, Qcodo, Smarty)
- Python(Django, Pylons) Perl(Catalyst)
- Search Engine: Solr, Sphinx, Crawler: Nutch
- DIV-CSS, JQuery, Prototype, Google Map API
- Virtualization: Xen, Kvm, OpenVZ		
		$ rpm -qpi /home/neo/rpmbuild/SRPMS/netkiller-1.0.1-1.src.rpm
Name        : netkiller
Version     : 1.0.1
Release     : 1
Architecture: x86_64
Install Date: (not installed)
Group       : Books/Computer books
Size        : 71292
License     : CC
Signature   : (none)
Source RPM  : (none)
Build Date  : Thu 18 Apr 2013 05:02:30 PM CST
Build Host  : ubuntu
Relocations : (not relocatable)
Packager    : Neo Chen <netkiller@msn.com>
URL         : http://netkiller.github.io
Summary     : Netkiller's eBook
Description :

http://netkiller.github.io
http://netkiller.sourceforge.net

- Network: Firewall, Router, Switch, Cisco, H3C, Juniper,F5 Big-IP, Array
- Security: OpenVPN, L2TP, PPTP, IPSec IP Tunnel
- Cluster: SmartDNS, LVS, HAproxy, Keepalived, Heartbeat, MooseFS, GlusterFS
- Web: Apache, Lighttpd, Nginx, Tomcat, Resin
- Database: PostgreSQL, MySQL Cluster, MySQL Replication, Cassandra, MongoDB
- Cache: APC Cache, XCache, Memcached, Squid, Varnish
- Frameworks: PHP(CodeIgniter, Prado, Mach II, Qcodo, Smarty)
- Python(Django, Pylons) Perl(Catalyst)
- Search Engine: Solr, Sphinx, Crawler: Nutch
- DIV-CSS, JQuery, Prototype, Google Map API
- Virtualization: Xen, Kvm, OpenVZ		

3. 如果你认为上面方法仍然复杂,可以尝试另一个工具 checkinstall

有兴趣可以去网上找学习资料

$ apt-cache search checkinstall
checkinstall - installation tracker		

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2015-09-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Kubernetes

Kubernetes如何通过Devi

Device Plugins Device Pulgins在Kubernetes 1.10中是beta特性,开始于Kubernetes 1.8,用来给第三方设备...

3988
来自专栏Netkiller

Glusterfs 文件系统

Glusterfs 我的系列文档 Netkiller Architect 手札 Netkiller Developer 手札 Netkiller PHP...

33610
来自专栏bboysoul

如何在metasploit中使用shodan

首先打开metasploit sudo service postgresql start msfconsole

893
来自专栏移动端周边技术扩展

iOS打开系统功能对应的URL

1563
来自专栏杨建荣的学习笔记

一条简单的sql语句运行15天的原因分析(r5笔记第17天)

在测试环境中,可能一个测试库中会有几十上百套环境在运行,一般DBA不会去主动干涉测试环境中的一些使用细节,可能问题都是开发测试来反馈给DBA采取做一个被动的处理...

4005
来自专栏一个默默无闻的工程师的日常

centos7 devstack 安装openstack liberty

1043
来自专栏张善友的专栏

SharpForge - Open source SourceForge / CodePlex implementation

SharpForge - Open source SourceForge / CodePlex implementation SharpForge suppo...

17110
来自专栏轻扬小栈

debian vps 安装 shadowsocks(ss-server) 以及自动启动

2831
来自专栏游戏杂谈

as3字型的使用

现在的页游,画面一个比一个炫,经常会看到一些游戏,在接受任务时,它的文字颜色和效果搭配起来很好看。比如下面几个

1033
来自专栏杨建荣的学习笔记

impdp ORA-39002,ORA-39166,ORA-39164的问题及解决(r2第6天)

今天在做imp和impdp的性能测试时,发现如果表中存在lob字段,加载真是慢的厉害,每秒钟大概1000条的样子,按照这种速度,基本上不用干活了。 比如5千万条...

2827

扫码关注云+社区