一、安装 rpmbuild
// for fedora linux
yum install rpmbuild -y
// for ubuntu
apt-get install rpmbuild
二、rpm specification file
spec文件规范
能熟练掌握以上命令以及部分参数含义,管理日常的rpm软件包就不成问题了。然而随着Linux风靡全球,越来越多的开发者喜欢采用RPM格式来发布自己的软件包。那么RPM软件包是怎样制作的呢?对大多数Linux开发工程师来说是比较陌生的。
其实,制作RPM软件包并不是一件复杂的工作,其中的关键在于编写SPEC软件包描述文件。要想制作一个rpm软件包就必须写一个软件包描述文件 (SPEC)。这个文件中包含了软件包的诸多信息,如软件包的名字、版本、类别、说明摘要、创建时要执行什么指令、安装时要执行什么操作、以及软件包所要 包含的文件列表等等。
描述文件说明如下:
(1) 文件头
一般的spec文件头包含以下几个域:
Summary:
用一句话概括该软件包尽量多的信息。
Name:
软件包的名字,最终RPM软件包是用该名字与版本号,释出号及体系号来命名软件包的。
Version:
软件版本号。仅当软件包比以前有较大改变时才增加版本号。
Release:
软件包释出号。一般我们对该软件包做了一些小的补丁的时候就应该把释出号加1。
Vendor:
软件开发者的名字。
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:
源程序软件包的名字。如 stardict-2.0.tar.gz。
%description:
软件包详细说明,可写在多个行上。
(2)%prep段
这个段是预处理段,通常用来执行一些解开源程序包的命令,为下一步的编译安装作准备。%prep和下面的%build,%install段一样,除 了可以执行RPM所定义的宏命令(以%开头)以外,还可以执行SHELL命令,命令可以有很多行,如我们常写的tar解包命令。
(3)build段
本段是建立段,所要执行的命令为生成软件包服务,如make 命令。
(4)%install段
本段是安装段,其中的命令在安装软件包时将执行,如make install命令。
(5)%files段
本段是文件段,用于定义软件包所包含的文件,分为三类--说明文档(doc),配置文件(config)及执行程序,还可定义文件存取权限,拥有者及组别。
(6)%changelog段
本段是修改日志段。你可以将软件的每次修改记录到这里,保存到发布的软件包中,以便查询之用。每一个修改日志都有这样一种格式:第一行是:* 星期 月 日 年 修改人 电子信箱。其中:星期、月份均用英文形式的前3个字母,用中文会报错。接下来的行写的是修改了什么地方,可写多行。一般以减号开始,便于后续的查阅。
三、源代码打包
将源代码打包,如 stardict-2.0.tar.gz,并将文件放到spec文件Source段所描述的路径下,通常为/usr/src/redhat/SOURCES/目录下(不同的Linux发布版本略有不同,如OpenSUSE为 /usr/src/packages/SOURCES/)
四、rpm打包
rpmbuild -ba ‘spec文件路径’
(rpmbuild常用参数: -bb 只编译二进制rpm包 -bs 只编译源码rpm包 -ba 同时编译二进制和源码rpm包)
build完后,可以在/usr/src/redhat/RPMS/下找到二进制rpm包,rpm包按照其对应的cpu体系结构分类,通常在/usr/src/redhat/RPMS/i386目录下
/usr/src/redhat/SRPMS/下找到源码rpm包,此时由于是源代码,所以无须按体系结构分类。
参考文献:
http://www.uplinux.com/www/dev/02/317.shtml
分享到:
相关推荐
ARM架构和X86_64架构rpmbuild制作openssh和openssl的rpm包
官方离线安装包,亲测可用
利用rpmbuild制作rpm包1 安装制作rpm包需要的软件yum install rpmbuild yum install rpmdevtools2 开始制
RPM包rpmbuild SPEC文件深度说明 学习如何写spec脚本制作rpm包
rpmbuild 这是一个包裹rpmbuild cli的节点程序包,从而使rpmbuild集成到节点中更加容易。用法1.全局安装rpmbuild: npm install -g rpmbuild2.在项目依赖项中安装rpmbuild: npm install --save rpmbuildrpmbuild ...
rpmbuild-hello-1.0.tar.gz
把源码包编译成rpm包不可缺少的一手资料。
rpm -Uvh openssh-9.1p1-3.oe1.bclinux.x86_64.rpm openssh-clients-9.1p1-3.oe1.bclinux.x86_64.rpm openssh-server-9.1p1-3.oe1.bclinux.x86_64.rpm openssh-help-9.1p1-3.oe1.bclinux.noarch.rpm systemctl ...
本案例使用nginx-1.12.2版本的源码软件,生成对应的RPM包软件。 步骤一:安装rpm-build软件 1) 安装rpm-build软件包 2) 生成rpmbuild目录结构
官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装
Centos 8 RPM构建环境...用法如果您只想建立一个规范,请执行以下操作: sudo docker run \ --name rpmbuild-centos8 \ -v /path/to/your/rpmbuild:/home/rpmbuilder/rpmbuild \ --rm=true \ jc21/rpmbuild-centos8 \
ImageMagick-7-0.ky10.aarch64 和 apache-ant-1.10.5-0.ky10.aarch64 。在ARM架构专业机中需要的rpm打包文件。
官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装
rpm-build 建立rpm包的命令rpm-build 建立rpm包的命令
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
arch-rpmbuild Dockerfile 在 Arch Linux 下使用 rpmbuild
这将创建一个.rpm/YOURCRATENAME.spec文件,该文件将传递给rpmbuild命令。 尽管生成的规范应立即可用,但如果生成的RPM具有目标二进制文件以外的依赖项或文件,则可能需要对其进行一些自定义。 有关规格文件的更多...
1、指定rpm包制作位置,默认/root/rpmbuild文件夹里面包含BUILD、BUILDROOT、RPMS、SOURCES、SPECS、SRPMS文件夹 2、将要打包的包放入rpmbuild/SOURCES文件夹下 3、制作spec文件 rpmbuild文件夹 %_topdir BUILD 编译...