博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
怎样制作RPM包
阅读量:7080 次
发布时间:2019-06-28

本文共 12249 字,大约阅读时间需要 40 分钟。

hot3.png

怎样制作RPM包

Mr. Neo Chen (netkiller), 陈景峰(BG7NYT)

中国广东省深圳市龙华新区民之街道溪山美地

518109
+86 13113668890
+86 755 29812080
<>

版权 © 2011, 2012, 2013

摘要

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

我的系列文档


目录

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

下面是一个spec文件

保存为 doc.spec

Summary: Netkiller's eBookName: netkillerVersion: 1.0.1Release: 1License: CCGroup: Books/Computer booksPackager: Neo Chen 
URL: http://netkiller.github.io%descriptionhttp://netkiller.github.iohttp://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%buildmkdir -p %{_buildrootdir}/%{name}-%{version}-%{release}.x86_64/usr/share/doc/%installrsync -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.specExecuting(%prep): /bin/sh -e /var/tmp/rpm-tmp.X07xhN+ umask 022+ cd /home/neo/rpmbuild/BUILD+ exit 0Executing(%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 0Executing(%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/netkillersending incremental file listcreated directory /home/neo/rpmbuild/BUILDROOT/netkiller-1.0.1-1.x86_64/usr/share/doc/netkiller21cn.htmlalpine.htmlauthor.htmlconstituent.htmldocbook.cssdonations.htmlevolution.htmlfaq.htmlfetchmail.htmlformat.content.htmlformat.to.htmlgpg4win.htmlibook.epubindex.htmlmail.client.htmlmail.format.htmlmail.server.exim4.htmlmail.server.postfix.htmlmail.service.htmlmail.tools.htmlmua.htmloutlook.htmlphp.mail.htmlpreface.download.htmlpreface.htmlqq.htmlreader.htmlsmtp.error.htmlsohu.htmltom.htmlexim4/exim4/faq.htmlexim4/index.htmlpostfix/postfix/configure.htmlpostfix/index.htmlpostfix/rspamd.htmlsent 127853 bytes  received 685 bytes  257076.00 bytes/sectotal 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/objdumpProcessing files: netkiller-1.0.1-1.x86_64unknown, 0: Warning: using regular magic file `/etc/magic'Provides: netkiller = 1.0.1-1 netkiller(x86-64) = 1.0.1-1Requires(interp): /bin/sh /bin/sh /bin/sh /bin/shRequires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1Requires(pre): /bin/shRequires(post): /bin/shRequires(preun): /bin/shRequires(postun): /bin/shChecking for unpackaged file(s): /usr/lib/rpm/check-files /home/neo/rpmbuild/BUILDROOT/netkiller-1.0.1-1.x86_64Wrote: /home/neo/rpmbuild/SRPMS/netkiller-1.0.1-1.src.rpmWrote: /home/neo/rpmbuild/RPMS/x86_64/netkiller-1.0.1-1.x86_64.rpmExecuting(%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.rpmName        : netkillerVersion     : 1.0.1Release     : 1Architecture: x86_64Install Date: (not installed)Group       : Books/Computer booksSize        : 280313License     : CCSignature   : (none)Source RPM  : netkiller-1.0.1-1.src.rpmBuild Date  : Thu 18 Apr 2013 04:51:07 PM CSTBuild Host  : ubuntuRelocations : (not relocatable)Packager    : Neo Chen 
URL : http://netkiller.github.ioSummary : Netkiller's eBookDescription :http://netkiller.github.iohttp://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.1cd /tmptar -zcvf $topdir/SOURCES/netkiller-1.0.1.tar.gz netkiller-1.0.1cd -

package.spec

Summary: Netkiller's eBookName: netkillerVersion: 1.0.1Release: 1License: CCGroup: Books/Computer booksPackager: Neo Chen 
Source: %{name}-%{version}.tar.gzURL: http://netkiller.github.io%descriptionhttp://netkiller.github.iohttp://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%buildmkdir -p %{_buildrootdir}/%{name}-%{version}-%{release}.x86_64/usr/share/doc/netkiller%installrsync -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.rpmName        : netkillerVersion     : 1.0.1Release     : 1Architecture: x86_64Install Date: (not installed)Group       : Books/Computer booksSize        : 280313License     : CCSignature   : (none)Source RPM  : netkiller-1.0.1-1.src.rpmBuild Date  : Thu 18 Apr 2013 05:02:30 PM CSTBuild Host  : ubuntuRelocations : (not relocatable)Packager    : Neo Chen 
URL : http://netkiller.github.ioSummary : Netkiller's eBookDescription :http://netkiller.github.iohttp://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.rpmName        : netkillerVersion     : 1.0.1Release     : 1Architecture: x86_64Install Date: (not installed)Group       : Books/Computer booksSize        : 71292License     : CCSignature   : (none)Source RPM  : (none)Build Date  : Thu 18 Apr 2013 05:02:30 PM CSTBuild Host  : ubuntuRelocations : (not relocatable)Packager    : Neo Chen 
URL : http://netkiller.github.ioSummary : Netkiller's eBookDescription :http://netkiller.github.iohttp://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 checkinstallcheckinstall - installation tracker

转载于:https://my.oschina.net/neochen/blog/123692

你可能感兴趣的文章
我的友情链接
查看>>
linux之sed
查看>>
Redis简单扩容经验谈
查看>>
Ganglia汇总监控搭建和配置详解
查看>>
zookeeper学习之java api<六>
查看>>
高性能的MySQL(4)Schema设计
查看>>
Vim 常用命令总结
查看>>
第六章 创建HTML文档
查看>>
nginx-location规则匹配
查看>>
shell打印颜色的命令
查看>>
我的友情链接
查看>>
mysql常用参数
查看>>
如何将 Sublime 3 打造成 Python/Django IDE开发利器
查看>>
玩转智能路由器-WRTnode添加OpenCV支持
查看>>
nginx+tomcat+redis负载均衡,实现session共享
查看>>
The C Runtime Environment
查看>>
hbase shell状态下回退键不好用 (scureCRT)
查看>>
提高Python运行效率的六个窍门
查看>>
蓝懿教育第十四日记录
查看>>
python+spacy--------填坑
查看>>