如何打自己的第一个RPM包

如何打自己的第一个RPM包

首先说明几点:

  1. 打包最好用root用户操作,不然会遇到permission denied的错误。——> 这点如果大家有不同见解,大家可以讨论。
  2. 需要安装rpmbuild这个工具

如果没有rpmbuild这个命令,可以使用下面的命令安装,本片文章所使用的环境是Centos 7.

$> sudo yum install -y rpm-build

安装之后使用下面的命令测试是否安装成功

$>rpmbuild

这个命令默认没有任何输出,但是命令已经安装就不会找不到之类的错误信息。

下面我们打一个最简单的包,里面只包含一个可执行文件文件,helloworld,然后将它安装到/usr/local/bin。 首先,我们生成helloworld的可执行程序,

[root@test SOURCES]# vim helloworld.c


#include <stdio.h>

int main( void )
{
     printf(“hello world!\n”);
}

[root@test SOURCES]# gcc helloworld.c -o helloworld

 

将可执行程序helloworld程序打包成tar文件

[root@test SOURCES]# tar -zcvf helloworld.tar.gz helloworld

# 注意了,我们必需要将他打包才行! 这个helloworld.tar.gz必需放置在SOURCES目录之下!

再来则是要编辑那个很重要的*.spec档案啰!你可以这样简单的编写一下:

[root@test root]# cd /root/rpmbuild/SPECS

[root@test SPECS]# vim helloworld.spec

Summary: This is a demo RPM package.

Name: helloworld

Version: 1.0

Release: 1

Copyright: GPL

Group: Test Group

Source: helloworld.tar.gz

Url: http://www.foxavideo.com

Packager: FoxAVideo

%description This package is just a demo RPM.

%prep

%setup –c

%install

install -m 755 helloworld /usr/local/bin/helloworld

%files

/usr/local/bin/helloworld

解释一下:     %prep     就是prepare的缩写,意思是准备动作。这里用到另外一个宏     %setup     这个宏的作用解开我们的压缩包,那后面带的参数 -c是什么呢?就是在解压之前,先创建顶级目录数。

好了,开始编译并打包成为RPM

[root @test SPECS]# rpmbuild -bb helloworld.spec

….(略) 最后这个被打包成功的档案就被放置在/root/rpmbuild/RPMS/x86_64/helloworld-1.0-1.x86_64.rpm。

安装刚才制作的rpm包

[root@test SPECS]# rpm –ivh /root/rpmbuild/RPMS/x86_64/helloworld-1.0-1.x86_64.rpm

Preparing…

##################################### [100%] 1:helloworld ########################################### [100%]

[root @test SPECS]# rpm –qi helloworld

Name : helloworld Relocations: (not relocateable)

Version : 1.0 Vendor: (none)

Release : 1 Build

Date: Wed 06 Nov 2002 11:27:17 PM CST

Install date: Fri 28 Nov 2014 12:37:47 PM SGT

Build Host: test.linux.org

Group : Test Group

Source RPM: showvbird-1.0-1.src.rpm

Size : 143

License: GPL

Packager : FoxAVideo

URL : http://www.foxavideo.com

Summary : This is a demo RPM package.

Description : This package is just a demo RPM.

[root @test SPECS]# helloworld

helloworld 用很简单的方式,就可以将自己的软件或者程序给他修改与设定妥当!

上面我们是手动编译程序,然后将可执行程序进行打包,这和大部分的打包程序,如installsheild, innosetup很像。但是rpmbuild更加强大的一点,它可以执行进行编译,打包。这部分将在另外一篇介绍。

 

如果你不想自己写rpm安装包的话,这里还有一个更加简单的程序,可以帮你rpm包:


https://sourceforge.net/projects/xml2rpm/files/rpmbuilder-1.0.1/

 

参考:

http://www.ibm.com/developerworks/cn/linux/management/package/rpm/part3/

http://www.ibm.com/developerworks/cn/linux/l-rpm/?S_TACT=105AGX52&S_CMP=tech-51CTO

http://my.oschina.net/guol/blog/182310

 

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

留言

你的邮箱是保密的 必填的信息用*表示