热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

CentOS6.x下制作RPM包

0:说明本文以centOS6.5下打包asterisk的安装包为例来说明问题。请读者诸君举一反三。谢谢!1.环境的准备:安装环境时当前用户要有系统管理权限。但是在制作RPM包时请一定要用无系统管理权限的用户来进行操作。在开始一切的准备工作之前,请先保证您的工作环境下已经安装了gcc和make。关于这两个工具的安装方法,这里不再赘述。1.1安装组件

0:说明
本文以centOS6.5下打包asterisk的安装包为例来说明问题。请读者诸君举一反三。谢谢!

1.环境的准备:

安装环境时当前用户要有系统管理权限。但是在制作RPM包时请一定要用无系统管理权限的用户来进行操作。在开始一切的准备工作之前,请先保证您的工作环境下已经安装了gcc和make。关于这两个工具的安装方法,这里不再赘述。

1.1安装组件

    安装rpm-build,用如下命令:

sudo yum install rpm-build

    安装redhat-rpm-config,用如下命令:

sudo yum install redhat-rpm-config

    PS:如果工作人员认为有必要的话可以安装rpmdev-newspec。这个小工具是用来生成.spec文件模板的。因为不是必选工具所以关于它的安装和使用方法在这里就不再赘述。

1.2在用户的主目录下创建必须的文件夹和文件

用下面的命令创建必要的文件夹,其中BUILD是用来保存打包过程中生成的临时文件用的;RPMS用来保存生成的二进制RPM包;SOURCES用来保存打包用的源文件(包括压缩文件);SPECS用来保存.spec脚本;SRPMS用来保存生成的源代码rpm包。

mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

    用下面的命令生成rpmbuild所需要的宏文件,这个文件里包含的是.spec中要引用的相对路径。文件里的内容可以手动配置和编写,格式符合要求即可。

echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

2.制作.spec文件

    这里用我们制作asterisk的二进制rpm包为例来说明制作.spec文件的方法。所有的.spec文件都可以参照和类比这种方式来制作。

2.1.spec文件的格式

    用如下命令生成asterisk.spec

cd ~/rpmbuild
vi ./SPECS/asterisk.spec

         我将如下的内容输入到了文件中。

Name:          asterisk
Version:       1.8.15
Release:        1%{?dist}
Summary:        Design by wanzhao
Group:          Applications/Internet
License:        GPL
URL:            www.wanzhao.com
Source0:        certified-asterisk-1.8.15-current.tar.gz

	
%description
Design by Wanzhao

	
%prep
cd $RPM_BUILD_DIR
tar xzvf ../SOURCES/certified-asterisk-1.8.15-current.tar.gz

	
%build
cd $RPM_BUILD_DIR/certified-asterisk-1.8.15-cert5
./configure
make

	
%install
cd $RPM_BUILD_DIR/certified-asterisk-1.8.15-cert5
make install
make samples 
cd ../BUILDROOT
cp -fr /etc/asterisk ./asterisk-1.8.15-1.x86_64/

	
%files
/asterisk/

	
%clean
rm -rf $RPM_BUILD_DIR/certified-asterisk-1.8.15-cert5

2.2asterisk内容说明

Name:

软件包的名字,最终RPM软件包是用该名字与版本号,释出号及体系号来命名软件包的。

Version:

软件版本号。仅当软件包比以前有较大改变时才增加版本号。

Release:

软件包释出号。一般我们对该软件包做了一些小的补丁的时候就应该把释出号加1。

Copyright:

软件包所采用的版权规则。具体有:GPL(自由软件),BSD,MIT,Public Domain(公共域),Distributable(贡献),commercial(商业),Share(共享)等,一般的开发都写GPL。

Group:

软件包所属类别,具体类别有:

Amusements/Games (娱乐/游戏)

Amusements/Graphics(娱乐/图形)

Applications/Archiving (应用/文档)

Applications/Communications(应用/通讯)

Applications/Databases (应用/数据库)

Applications/Editors (应用/编辑器)

Applications/Emulators (应用/仿真器)

Applications/Engineering (应用/工程)

Applications/File (应用/文件)

Applications/Internet (应用/因特网)

Applications/Multimedia(应用/多媒体)

Applications/Productivity (应用/产品)

Applications/Publishing(应用/印刷)

Applications/System(应用/系统)

Applications/Text (应用/文本)

Development/Debuggers (开发/调试器)

Development/Languages (开发/语言)

Development/Libraries (开发/函数库)

Development/System (开发/系统)

Development/Tools (开发/工具)

Documentation (文档)

System Environment/Base(系统环境/基础)

System Environment/Daemons (系统环境/守护)

System Environment/Kernel (系统环境/内核)

System Environment/Libraries (系统环境/函数库)

System Environment/Shells (系统环境/接口)

User Interface/Desktops(用户界面/桌面)

User Interface/X (用户界面/X窗口)

User Interface/X Hardware Support (用户界面/X硬件支持)

Source:

源程序软件包的名字。如果有多个文件或部分可以写作:Source0……;source1……;Source3……;……

%description:

软件包详细说明,可写在多个行上。

%prep

这个段是预处理段,通常用来执行一些解开源程序包的命令,为下一步的编译安装作准备。%prep和下面的%build,%install段一样,可以执行shell命令。如我们在就加入了tar命令、cd命令等。

% build段

本段是编译段,所要执行的命令为生成软件包服务,如./configure、make 命令。

%install段

本段是安装段,其中的命令在安装软件包时将执行,如make install等命令。根据不同的软件,命令会有所不同。

%files段

本段是文件段,用于定义生成的rpm包所包含的文件。所以要打到rpm包里的文件都要在这里列出来。如果缺少这个段,则无法生成二进制的rpm文件。

%clean段

本段是生来清理由前面的步骤生成的垃圾文件的。同样,这个段由shell命令组成。

3.打包

如果只打包二进制rpm包可以用下面的命令:

rpmbuild –bb ****.spec

如果只打包源代码rpm包可以用如下命令:

rpmbuild –bs ****.spec

如果二进制rpm包和源代码rpm包都需要,则用如下命令:

rpmbuild –ba ****.spec

 

4.参考资料:

http://wiki.centos.org/HowTos/SetupRpmBuildEnvironment

http://tecadmin.net/create-rpm-of-your-own-script-in-centosredhat/

https://fedoraproject.org/wiki/How_to_create_a_GNU_Hello_RPM_package

http://www.ibm.com/developerworks/cn/linux/l-rpm/


推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • Linuxchmod目录权限命令图文详解在Linux文件系统模型中,每个文件都有一组9个权限位用来控制谁能够读写和执行该文件的内容。对于目录来说,执行位的作用是控制能否进入或者通过 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文详细介绍了Vim编辑器中的三种模式(命令模式、末行模式和编辑模式)以及它们之间的操作区别和切换方法。Vim编辑器凭借其多种命令快捷键和高效率的操作方式,得到了广大厂商和用户的认可。对于想要高效操作文本的用户来说,了解这些模式的使用方法是必不可少的。 ... [详细]
author-avatar
有拼搏精神的芒果tje
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有