首先,确定/etc/rpmrc(也可能是/usr/lib/rpm/rpmrc)已经正确设定。rpmrc文件控制几乎所有RPM的行为。如果你想重载一个或多个全局设置,可以在~/.rpmrc文件中包含你的定制。可以使用rpm--showrc来显示RPM的当前设置。大多数情况下,rpmrc 文件的设置不需要改变。
在/usr/src/packages/SOURCES下新建一个hellow目录,在hellow目录下新建hellow.c Makefile README文件,内容可参考下面:
hellow.c
#i nclude <stdio.h>
int main()
{
printf("hellow\n");
}
Makefile
all:
gcc hellow.c -o hellow
install:
cp hellow /bin/hellow
uninstall:
rm -rf /bin/hellow
clean:
rm -rf hellow
README
run /bin/hellow in shell, you will get a string "hellow"
然后在/usr/src/packages/SOURCES下
tar czvf hellow-0.1-1.tar.gz hellow
搞定后就可以进入rpm包制作的关键步骤了――写一个spec,如果你对spec没有任何了解也不要紧,简单来说,它就是一个rpm包的信息列表和生成指南。
在/usr/src/packages/SPECS下vi 一个hellow-0.1-1.spec,内容可参考下面:
Summary: the First RPM of inode
Name: hellow
Version: 0.1
Release: 1
Vendor: inode
License: Share
Group: Applications/Text
Source0:hellow-0.1-1.tar.gz
#Patch0:hellow-0.1-1.patch
%description
print hello world for you
%prep
tar xzvf $RPM_SOURCE_DIR/hellow-0.1-1.tar.gz -C $RPM_BUILD_DIR/
#%patch -p0
%build
cd $RPM_BUILD_DIR/hellow
make
%install
cd $RPM_BUILD_DIR/hellow
make install
%clean
rm -fr $RPM_BUILD_DIR/hellow
%files
%defattr(-,root,root)
/bin/hellow
%doc $RPM_BUILD_DIR/hellow/README
%changelog
完成spec文件后如果不出意外,就可以生成rpm包了,在SPECS目录下rpmbuild –ba hellow-0.1-1.spec顺利的话可以分别在RPMS和SRPMS目录下找到ix86.rpm和src.rpm
接下来谈谈patch的问题,在软件发布时,可能存在这样或那样的问题,如在上述hellow-0.1-1.rpm中,程序执行时输出Hellow(有这个词吗!!),笔者开始竟然没有发现,所以就需要做一个patch来纠正这个错误,在SOURCES目录下新建一个hellow1目录,执行以下操作:
cd hellow/
cp Makefile hellow.c README ../hellow1
然后修改hellow.c的printf语句:Printf(“Hello,World\n”) ,如果无聊的话,可以顺便改一下README
cd ..
diff –uNr hellow hellow1 > hellow-0.1-1.patch
现在大家回头去看看我的spec文件把Patch0和%patch前面的注释去掉吧,然后再次用rpmbuild生成rpm包,分别用rpm -qpi 和rpm -qpl 看一下吧
rpm –qpi hellow-0.1-1.i586.rpm
rpm –qpl hellow-0.1-1.i586.rpm
注:以上步骤在SuSE SLES-9 上测试通过,如在RedHat下需修改一些路径,/usr/src/packages/改为/usr/src/redhat/,另外$RPM_SOURCE_DIR,$RPM_BUILD_DIR等定义在/usr/lib/rpm/macros中,不同的linux版本可能名称有些出入。
原文地址:http://zhguiqiang.blog.163.com/blog/static/9993752200610143349284/