如何打自己的第一个RPM包
首先说明几点:
- 打包最好用root用户操作,不然会遇到permission denied的错误。——> 这点如果大家有不同见解,大家可以讨论。
- 需要安装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
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
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.