您的位置:首页 > 产品设计 > 产品经理

rpm 制作实例

2012-09-18 16:41 330 查看
首先,确定/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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息