1. Package
- 预生成的应用程序.
- 打包了运行应用程序所需的一切, 例如: 二进制程序, 数据, 配置文件等.
- 同时包含了在系统上部署应用程序所需的步骤, 通常以脚本(script)的形式.
- 一个package 会针对特定的系统进行裁剪(tailored).
- 每种OS 都提供了自己的包管理器(package manager), 用以从系统中添加或删除包.
- dev 或者admin 人员负责以包的形式来提供可运行的应用程序.
2. 构建过程
2.1 下载并解压缩源代码.
- 将源代码以库(repository) 的形式进行存储.
2.2 配置构建(build).
- 通过文件的形式, 来指定源代码的位置, 如何构建和安装代码.
2.3 构建源代码.
- 任何用户都可以在home 目录进行RPM 的构建.
- BuildRoot 是最终安装目录的一个代理.
- 使用RPM_BUILD_ROOT 环境变量访问.
- 构建命令:
sudo rpmbuild -v -bb --clean SPECS/bbs.spec
-
%preq
: 将源代码加压缩到BUILD 目录. -
%description
: 指定描述, 可以通过'rpm -qi
查看描述信息. -
%doc
: 标记文档. -
%config
: 标记配置文件.
-
2.4 安装软件.
- RPM 会维持一个已安装包和包文件的数据库, 可以对其进行查询和验证操作.
- RPM 会保证升级过程中, 不会丢失自定义的配置信息.
3. 设计理念
- 可升级的
- 在非完全重新安装的情况下, 进行单个组件的升级.
- 安装和升级包, 使用的是同一的文件.
- 强大的查询功能
- 文件以压缩文档的形式存在, 同时会附加一个自定义的二进制头.
- 系统的可验证性
- 可以删除和重新安装一个包.
- 原始的源代码
- 包含带有所有补丁(patch)的原始源代码, 附加以完整的构建�命令.