Chinaunix首页 | 论坛 | 博客
  • 博客访问: 134365
  • 博文数量: 41
  • 博客积分: 2501
  • 博客等级: 少校
  • 技术积分: 362
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-07 17:54
文章分类
文章存档

2011年(2)

2010年(14)

2009年(11)

2008年(14)

我的朋友

分类: LINUX

2008-08-18 17:30:09

       如何制作RPM 二进行包和源代码包?(这个过程中的命令需要在Virbuild环境中执行)

1.      请先填写spec文件的中的changelog及跟目录下的changelog文件。

2.      请填写spec文件中的版本和Release号。

3.      测试工程是否OK,在制作rpm前,我们需要清理好工程中的不需要的文件。 运行make clean命令

4.      我们可以使用命令行或者ubbuntu下GUI压缩压工具源代码目录,生成sketchpad-x.x-x.tar.bz2文件,注意修改目录名中的版本号。

5.      拷贝sketchpad-x.x-x.tar.bz2文件到/usr/src/dorado/SOURCES目录下

6.      拷贝sketchpad.spec文件到/usr/src/dorado/SPECS目录下

7.      运行rpmbuild –ba sketchpad.spec

8.      上面命令执行成功后我们会在/usr/src/dorado/RPMS目录下找到二进制rpm包,在/usr/src/dorado/SRPMS目录下找到源代码rpm包。


如何增加图片文件和源代码文件?
1.      在ubuntu下使用使用工具或者命令行解压源代码rpm包。

命令行解压方法有多种,请在Virbuild中运行命令:

1.1解压到当前目录

l         rpm2cpio sketchpad-0.1-1.src.rpm | cpio -div ; 这命令会把rpm直接解压的当前目录下,生成一个spec文件和tar.bz2的压缩包

l         tar –xvjf sketchpad-0.1-1.tar.bz2 ; 解压tar.bz2文件

1.2安装命令

l         rpm –ivh sketchpad-0.1-1.src.rpm  ; sketchpad会被安装到/usr/src/dorado目录下, tar.bz2文件放在/usr/src/dorado/SOURCES  ,spec 文件/usr/src/dorado/SPECS

l         cd /usr/src/dorado/SPECS

l         rpmbuild –bb sketchpad.spec ;编译,此时他会把sources解压到/usr/ src/dorado/BUILD目录下。     

2.      如果需要添加源代码文件,请找src目录下的Makefile.am文件,在sketchpad_SOURCES中增加相应的文件,新增文件必须要使用tab,而不能使用空格, 文件结尾处的换行符后面不能有空格。

3.      如果需要增加图片文件,请将图片文件拷贝到pixmaps目录下,同时修改Makefile.am文件,在pixmap_DATA 处增加或修改文件名,请记住一定要修改Makefile.am文件,否则制作的二进制安装包中不会包含新增加的文件。

4.      修改完Makefile.am文件后,我们需要运行源代码目录下的./autogen.sh, 重新生成configure 和make.in 文件

5.      运行./configure,生成makefile

6.      修改后,运行make命令编译程序,最后测试工程是否OK。

 

--------------------------------------------------------------------------------------

RPM 相关知识

RPM 做什么

下面总结了在您运行 rpm -ba filename.spec 时,RPM 都做些什么:

读取并解析 filename.spec 文件
运行 %prep 部分来将源代码解包到一个临时目录,并应用所有的补丁程序。
运行 %build 部分来编译代码。
运行 %install 部分将代码安装到构建机器的目录中。
读取 %files 部分的文件列表,收集文件并创建二进制和源 RPM 文件。
运行 %clean 部分来除去临时构建目录。
spec 文件的内容

spec 文件有几个部分。第一部分是未标记的;其它部分以 %prep 和 %build 这样的行开始。


第一部分(未标记)定义了多种信息,其格式类似电子邮件消息头。

Summary 是一行关于该软件包的描述。

Name 是该软件包的基名, Version 是该软件的版本号。 Release 是 RPM 本身的版本号 ― 如果修复了 spec 文件中的一个错误并发布了该软件同一版本的新 RPM,就应该增加发行版号。

License 应该给出一些许可术语(如:“GPL”、“Commercial”、“Shareware”)。

Group 标识软件类型;那些试图帮助人们管理 RPM 的程序通常按照组列出 RPM。您可以在 /usr/share/doc/rpm-4.0.2/GROUPS 文件看到一个 Red Hat 使用的组列表(假设您安装的 RPM 版本是 4.0.2)。但是您还可以使用那些组名以外的名称。

Source0 、 Source1 等等给这些源文件命名(通常为 tar.gz 文件)。 %{name} 和 %{version} 是 RPM 宏,它们扩展成为头中定义的 rpm 名称和版本。因此,在这个实例中, Source0 被设置为 indent-2.2.6.tar.gz 。

不要在 Source 语句中包含任何路径。缺省情况下,RPM 会在 /usr/src/redhat/SOURCES 中寻找文件。请将您的源文件复制或链接到那里。(要使 spec 文件尽量可移植的话,应当尽量避免嵌入自己开发机器上的假想路径。其他开发人员就可以指示 RPM 在别的目录下查找源文件,而不用修改您的 spec 文件。)

描述
接下来的部分从 %description 行开始。您应该在这里提供该软件更多的描述,这样任何人使用 rpm -qi 查询您的软件包时都可以看到它。您可以解释这个软件包做什么,描述任何警告或附加的配置指令,等等。

Shell 脚本
下面几部分是嵌入 spec 文件中的 shell 脚本。

%prep 负责对软件包解包。在最常见情况下,您只要用 %setup 宏即可,它会做适当的事情,在构建目录下解包源 tar 文件。加上 -q 项只是为了减少输出。

%build 应该编译软件包。该 shell 脚本从软件包的子目录下运行,在我们这个例子里是 indent-2.2.6 目录,因而这常常与运行 make 一样简单。

%install 在构建系统上安装软件包。这似乎和 make install 一样简单,但通常要复杂些。我将在下面解释这点。

文件列表
%files 列出应该捆绑到 RPM 中的文件,并能够可选地设置许可权和其它信息。

在 %files 中,您可以使用 一次 %defattr 来定义缺省的许可权、所有者和组;在这个示例中, %defattr(-,root,root) 会安装 root 用户拥有的所有文件,使用当 RPM 从构建系统捆绑它们时它们所具有的任何许可权。

可以用 %attr(permissions,user,group) 覆盖个别文件的所有者和许可权。

可以在 %files 中用一行包括多个文件。

可以通过在行中添加 %doc 或 %config 来标记文件。 %doc 告诉 RPM 这是一个文档文件,因此如果用户安装软件包时使用 --excludedocs ,将不安装该文件。您也可以在 %doc 下不带路径列出文件名,RPM 会在构建目录下查找这些文件并在 RPM 文件中包括它们,并把它们安装到 /usr/share/doc/%{name}-%{version} 。以 %doc 的形式包括 README 和 ChangeLog 这样的文件是个好主意。

%config 告诉 RPM 这是一个配置文件。在升级时,RPM 将会试图避免用 RPM 打包的缺省配置文件覆盖用户仔细修改过的配置。

警告:如果在 %files 下列出一个目录名,RPM 会包括该目录下的所有文件。通常这不是您想要的,特别对于 /bin 这样的目录。

 

 


 

阅读(1040) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~