1.RPM简介
RPM(Red Hat Package Manager)是用于 Linux 发行版(distribution)的最常见的软件包管理器,多用于红帽系操作系统(如Redhat、Fedora、Centos等),Mandriva、SuSE等也使用。因为它允许分发已编译的软件,所以用户只用一个命令就可以安装软件。rpm打包工具是广泛使用的用于交付 Linux 软件的工具,用户可以轻松的安装用 RPM 打包的产品。
在一个操作系统下,需要安装实现各种功能的软件包。这些软件包一般都有各自的程序,但是同时也有错综复杂的依赖关系。同时还需要 解决软件包的版本,以及安装,配置,卸载的自动化问题。为了解决 这些问题,RedHat针对自己的系统提出了一个较好的办法来管理成千上百的软件。这就是RPM管理系统。在系统中安装了rpm管理系统以后, 只要是符合rpm文件标准的打包程序都可以方便地安装、升级、卸载。
2.准备工作
在开始rpm打包工作以前,请确保您的系统已安装了 rpm-build 软件包。为检查是否安装,请运行 rpm -q rpm-build。如果您看到的是 package rpm-build is not installed 之类信息,则将需要从 Red Hat 安装 CD 上或通过其他途径安装它。 (可使用rpm -ivh命令安装)
安装好rpm-build工具后还需要
a.在家目录下创建rpm打包的工作目录:(可选,因为执行rpmbuild -ba *.spec命令后会自动创建)
[user@hostname ~]$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
b.设置本地的rpm宏文件:(可选)
[user@host ~]$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
注:
1.rpmbuild的目录结构(rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS})各目录的作用:
rpmbuild
|-- BUILD //解压后的源码包存放目录,编译源码的目录
|-- BUILDROOT //模拟安装位置(临时构建目录)
|-- RPMS //二进制源码包生成后的存放目录
|-- SOURCES //源码包放这里,一般为*.tar.gz文件
|-- SPECS //*.spec文件放在位置
`-- SRPMS //源码包rpm生成后放置的位置
2.宏(Macros)是使用变量和功能来控制rpm和 rpmbuild 的自定义的行为,宏指令一般地定义在 spec 文件中.语法象 %define macro value .宏指定也可以事先在配置文件中调整.
就是下面的文件.
-
默认设置为 /usr/lib/rpm/macros or /etc/rpm/macros
-
用户设置 ~/.rpmmacros
在打包的过程中,spec 文件 和 rpmbuild 命令能使用RPM的宏命令中的变量.
其他工具:make 、 gcc 等
3.开始工作
打包一个软件为rpm包,需要使用一个特定的.spec文件(如rpm.spec)指定打包规则。通过执行命令如:rpmbuild -ba rpm.spec生成rpm包。
下以dos2unix程序为例:
-
将下载的dos2unix-3.2.tar.gz压缩文件放到~/rpmbuild/SOURCES目录下
-
在~/rpmbuild/SPECS目录编写dos2unix.spec文件
vi dos2unix.spec
-
Summary: GNU indent
-
Name: dos2unix
-
Version: 3.2
-
Release: 2
-
Source0: %{name}-%{version}.tar.gz
-
License: GPL
-
Group: Development/Tools
-
BuildRoot: %{_builddir}/%{name}-root
-
-
%description
-
The GNU dos2unix program.
-
-
%prep
-
%setup -q
-
echo ${RPM_BUILD_ROOT}
-
-
%build
-
make
-
-
%install
-
rm -rf $RPM_BUILD_ROOT
-
make DESTDIR=$RPM_BUILD_ROOT install
-
-
%clean
-
#rm -rf $RPM_BUILD_ROOT
-
-
%files
-
%defattr(-,root,root,-)
-
/usr/bin/dos2unix
-
/usr/bin/mac2unix
-
%doc /usr/share/man/man1/
-
在~/rpmbuild/SPECS目录执行 rpmbuild -ba dos2unix.spec命令,此时将在~/rpmbuild/RPMS目录下生成dos2unix-3.2-2.x86_64.rpm、在~/rpmbuild/SRPMS目录下生成dos2unix-3.2-2.src.rpm
下面总结了在您运行 rpmbuild -ba dos2unix.spec 时,RPM 都做些什么:
-
读取并解析 dos2unix.spec 文件
-
运行 %prep 部分来将源代码解包到一个临时目录,并应用所有的补丁程序。
-
运行 %build 部分来编译代码。
-
运行 %install 部分将代码安装到构建机器的目录中。
-
读取 %files 部分的文件列表,收集文件并创建二进制和源 RPM 文件。
-
运行 %clean 部分来除去临时构建目录。
下一篇文章将具体介绍spec文件的具体规则
阅读(1787) | 评论(0) | 转发(0) |