使用Mock替代rpmbuild进行编包

使用Mock替代rpmbuild进行编包

在进行编包的时候大多数人会使用rpmbuild命令在本机进行编译,这样可以使一些依赖及本地相关包的修改可以生效,但在开发过程中必须模拟用户的环境或是构建一个“干净的”环境(既没有任何其他依赖的改动,直接从yum下载构建一个纯用户环境),这样我们就需要mock命令来构建这样一个编译的纯环境并用其来替代rpmbuild进行编译软件包。而构建mock环境的步骤如下:

1、通过yum安装mock

[Lee@leedd.com ~]$ sudo yum install -y mock

2、设置当前用户权限,把当前用户添加到mock用户组内,mock运行是用当前的用户,最好不要用root用户。

[Lee@leedd.com ~]$ sudo usermod -a -G mock Lee

3、选择cfg文件,/etc/mock/目录下(想添加其他环境把该环境对应的.cfg文件放到该目录下即可)选择一个需要mock模拟的环境,可以不受当前系统限制模拟任何chroot环境。如:当前系统是fc11,可以使用fedora-13-i386.cfg文件构建FC13mock环境。

[Lee@leedd.com ~]$ cd /etc/mock/

[Lee@leedd.com mock]$ ls

4、创建并初始化mock环境

[Lee@leedd.com ~]$ mock -r fedora-13-i386 init

注意:根据目录/etc/mock/下的文件选择合适的cfg文件,不要带.cfg 后缀,直接输入文件名称即可。会构建一个干净的chroot 环境大约不到400M的环境(可以查看/var/lib/mock/fedora-13-i386文件夹)。

5、用mock来替代rpmbuild进行编译

[Lee@leedd.com ~]$ mock -r fedora-13-i386 rebuild package-1.2-3.src.rpm

Mock后的信息会保存在下面的路径: /var/lib/mock/fedora-13-i386/result

Tips

如果想在mock的时候实现一些依赖包的改动,而不想去修改yum仓库,则可以在本地构建一个yum仓库,方法见下节:为中标普华Linux或Fedora构建本地yum仓库

2 thoughts on “使用Mock替代rpmbuild进行编包

Comments are closed.