buildroot工具
在打包時用到的spec文件中包含一些tag,這些對大小寫不敏感的tag用冒號來定義。BuildRoot就是其中的一個tag。例如,在libvirt的spec文件中BuildRoot的定義以下:測試
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
ui
BuildRoot設置的目錄會被看成臨時的根目錄,%install部分安裝的文件都會被臨時安裝到這裏。之因此引入BuildRoot是爲了在打包過程當中不影響如今的系統。 RPM宏設定的BuildRoot默認值是~/rpmbuild/BUILDROOT, 能夠在spec文件中設置該tag,或者在rpmbuild命令執行時使用- -buildroot選項來指定。code
mock的功能io
mock不僅是將文件安裝到Buildroot指定的根目錄,而是建立一個打包的沙盒(sandbox),掛載一些必要的文件系統(proc,sys等),將打包過程所用到的軟件包(BuildRequires指定)都安裝到沙盒中,而後將指定的SRPM包進行編譯,生成最終的RPM包。mock不只可使打包過程變得整潔,更可以測試BuildRequires是否完整。除了打包以外,mock也能夠用來製做沙盒來測試軟件包。編譯
安裝mockmock
使用YUM安裝fedora維護者工具fedora-packager後,mock和koji做爲依賴也被安裝到系統中了。執行如下命令便可:打包
sudo yum install fedora-packager
軟件
簡單的配置mock配置
在使用mock以前須要將當前用戶加入到mock用戶組,並使用戶登錄到該用戶組:
sudo usermod -a -G mock [User name] && newgrp mock
使用mock來打包
使用mock打包須要配置文件來指定安裝軟件包所用到的YUM倉庫,/etc/mock目錄下有許多這樣的配置文件。配置文件能夠經過-r選項來指定,若是沒有指定,則使用默認的配置文件/etc/mock/default.cfg。
mock libvirt-1.2.2-1.fc20.src.rpm
將會在BUILDROOT目錄下掛載一些必要的文件必要的文件系統,並安裝打包過程須要用到的軟件包,最終生成RPM包。