手机版
你好,游客 登录 注册
背景:
阅读新闻

RPM包创建入门

[日期:2015-02-16] 来源:Linux社区  作者:appletreesujie [字体: ]

目录:

指定新的工作区_topdir
在工作区创建工作目录
创建SPEC文件
建立源文件
编译RPM包
查看生成的RPM包类容
安装和卸载生成的RPM包
SPEC文件中的一些重要字段

指定新的工作区_topdir

默认的工作区为/usr/src/RedHat;通过配置文件rpmmacros指定:

cat>>~/.rpmmacros<<end > %_topdir /root/helloworld > end

这个配置也可以用命令行来指定:

rpmbuild --define "_topdir /root/helloworld" 

在工作区创建工作目录

mkdir -p /root/helloworld/{RPMS,SRPMS,BUILD,SOURCES,SPECS}
工作目录解释:

  1. helloworld/BUILD: 命令rpmbuild将在这个目录下解压源文件,并在这个目录下编译程序
  2. helloworld/SPECS: 存放spec文件spec files
  3. helloworld/SOURCES: 存放源码包source files
  4. helloworld/SRPMS: 存放包含源码的rpm文件
  5. helloworld/RPMS: 存放包含二进制的rpm包文件

创建SPEC文件

helloworld/SPECS/hello.spec:

Summary: hello world rpm package Name: hello Version: 0.1 Release: 1 Source: %{name}-%{version}.tar.gz License: GPL Packager: amoblin Group: Application/System BuildRoot: %{_topdir}/root/ %description This is a software for making your life more beautiful! %prep rm -rf $RPM_BUILD_DIR/%{name}-%{version} zcat $RPM_SOURCE_DIR/%{name}-%{version}.tar.gz | tar -xv %build cd %{name}-%{version} gcc -o hello hello.c %install rm -rf %{buildroot} mkdir -p %{buildroot}/usr/local/bin/ cd %{name}-%{version} cp hello %{buildroot}/usr/local/bin/hello %files /usr/local/bin/hello

建立源文件

hello.c:

#include <stdio.h> int main() { printf("Hello, World!\n"); return 0; }

把源文件打包放到SOURCES目录下

mkdir -p hello-0.1 mv hello.c hello-0.1 tar czvf hello-0.1.tar.gz hello-0.1 mv hello-0.1.tar.gz /root/helloworld/SOURCES/

编译RPM包

#编译rpm rpmbuild -vv -ba helloworld/SPECS/hello.spec #或者通过命令行指定topdir编译 rpmbuild --define "_topdir /root/helloworld" -vv -ba helloworld/SPECS/hello.spec #验证SPEC rpmbuild --define "_topdir /root/helloworld" -vv -bl helloworld/SPECS/hello.spec

查看生成的RPM包类容:

[root@localhost ~]# rpm -qpil helloworld/RPMS/i386/hello-0.1-1.i386.rpm

安装和卸载生成的RPM包

[root@localhost ~]# rpm -iv helloworld/RPMS/i386/hello-0.1-1.i386.rpm Preparing packages for installation... hello-0.1-1 [root@localhost ~]# hello Hello, World! [root@localhost ~]# rpm -ev hello-0.1-1

SPEC文件中的一些重要字段:

  1. Group: 需要需先定义[less /usr/share/doc/rpm-*/GROUPS]
  2. BuildRoot: 安装阶段install的根目录(在%build阶段之后). 默认的根目录是 %{_topdir}/BUILDROOT/
  3. %prep: prepare准备阶段调用的shell脚本
  4. %build: build编译阶段调用的shell脚本
  5. %install: install安装阶段候调用的shell脚本
    注意: 执行%prep, %build, %install 的shell脚本的pwd目录为/root/helloworld/BUILD
  6. %files: 指定生成的二进制RPM包中包含哪些文件,这些文件必须在BuildRoot目录下存在

如何在Linux中创建RPM包?  http://www.linuxidc.com/Linux/2012-05/60278.htm

本文永久更新链接地址http://www.linuxidc.com/Linux/2015-02/113559.htm

linux
相关资讯       RPM  RPM包创建 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款