使用mock来编译和管理RPM软件包
buildroot
在打包时用到的spec文件中包含一些tag,这些对大小写不敏感的tag用冒号来定义。BuildRoot就是其中的一个tag。例如,在libvirt的spec文件中BuildRoot的定义如下:
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRoot设置的目录会被当作临时的根目录,%install部分安装的文件都会被临时安装到这里。之所以引入BuildRoot是为了在打包过程中不影响现在的系统。 RPM宏设定的BuildRoot默认值是~/rpmbuild/BUILDROOT, 可以在spec文件中设置该tag,或者在rpmbuild命令执行时使用- -buildroot选项来指定。
mock的功能
mock不只是将文件安装到Buildroot指定的根目录,而是创建一个打包的沙盒(sandbox),挂载一些必要的文件系统(proc,sys等),将打包过程所用到的软件包(BuildRequires指定)都安装到沙 ...
RPM软件包管理机制之旅
Linux下的man命令十分实用,可以查看Linux命令的手册。但这些手册只适用于忘记命令的选项时查询之用,如果用来学习Linux下类似于Git, RPM这样庞大的工具就有点吃力了,可谓事倍功半。我在学习Git的时候读过一篇文档——gittutorial,使用:
1$man gittutorial
命令可以调出该文档。这篇文档并不涵盖git的方方面面,只是介绍了Git管理项目的常规用法,非常适合初学者快速入门。所以本文试图仿照该文档的写法,并不会详细地介绍RPM包的方方面面,而是介绍RPM包最常用的一些功能,这些功能将会在我们对红帽系列发行版系统的日常管理中非常重要。
软件包管理机制与RPM开源软件可以用Tarball的方式来从源代码安装软件(1),这样的安装方式对普通用户来说很麻烦。比如要升级软件,还需要先更新源代码,再重新编译、安装。Linux采用了RPM和DPKG等软件包管理机制来管理软件,直接给用户提供二进制软件包,并且将整个系统的软件包信息建立成数据库,以便于软件的升级、验证和卸载。RedHat、Fedora、SUSE、CentOS等发行版采用RPM包管理机制,而Debia ...