- Mock - Chroot Build Tools □ 文╱Candyz
Mock 是一套在 Fedora 上用來 Chroot Build 的 Tools,目前所有 Fedora Extras 裡的套件,都是經由 Mock Build System 產生出來的。Mock 可以 Build Fedora Core 1 (FC1) 到 Fedora C...
一、簡介
Mock 是一套在 Fedora 上用來 Chroot Build 的 Tools,目前所有 Fedora Extras 裡的套件,都是經由 Mock Build System 產生出來的。Mock 可以 Build Fedora Core 1 (FC1) 到 Fedora Core 5、FC6(development)、RH7.3、RH9、RHEL3、RHEL4 等等平台的套件,理論上,只要是 Fedora/RedHat 系列的,且有支援 yum 應該都可以適用的,而我也成功的用 mock 來 build Scientific Linux 4.3 的套件。
二、安裝
在 Fedora Extras 中就有 mock 的套件,所以只要直接安裝即可:
sudo yum install mock
三、設定
所有的設定檔都在 /etc/mock 目錄底下,所以需要稍微修改一下。例如我想在我的 i386 機器上 build FC5 的套件,所以要修改 /etc/mock/fedora-5-i386-core.cfg 這個設定檔,主要是改裡面的 Yum Repository 路徑,改指到國內比較快的 Server 上。例如我都改成用 CLE 上的 Yum Repository:
[core] name=core baseurl=ftp://cle.linux.org.tw/pub/fedora/core/5/i386/ [updates-released] name=updates baseurl=ftp://cle.linux.org.tw/pub/fedora/core/updates/5/i386/ [groups] name=groups baseurl=http://buildsys.fedoraproject.org/buildgroups/5/i386/ [extras] name=extras baseurl=ftp://cle.linux.org.tw/pub/fedora/extras/5/i386/
四、設定可以執行 mock 的使用者
編輯 /etc/groups 把想要讓其能執行 mock 的使用者加到 mock 這個 group 裡,例如:
mock:x:106:candyz,linux,build
五、執行
1.語法:
mock [-r CHROOT] [--no-clean] [--arch=ARCH] [--debug] [--result-dir=RESULTDIR] [--statedir=STATEDIR] [--uniqueext=UNIQUEEXT] [command] filename
2.參數:
-r CHROOT
用 -r 來指定設定檔,如 -r fedora-5-i386-core.cfg
--no-clean
在 build 套件之前不要 clean chroot (可以節省時間,不用每次都要重新下載安裝)
--arch=ARCH
指定要 build 的平台
--debug
輸出除錯訊息
--resultdir=RESULTDIR
指定存放 RPMs 及 build logs 的路徑
--help
顯示求助訊息
--version
顯示 mock 的版本
3. command:
init
初始化一個 chroot 的環境(install packages, setup devices, etc.)。
clean
清除整個 chroot tree
rebuild
若沒有指定 command 則預設會使用 rebuild
4.範例:
mock -r fedora-5-i386-core.cfg --no-clean ~/rpmbuild/SRPMS/gcin-1.2.2-8.src.rpm
5.注意事項:
因為 chroot 環境所有的檔案都是放在 /var/lib/mock 目錄底下,因此,你的 /var/lib/mock 目錄空間要夠大,不然可是會爆掉的。或是修改一下設定檔,把 /var/lib/mock 換到空間比較大的目錄去。
若還想 build FC4 FC3 的套件,同樣的,修改完 fedora-4-i386-core.cfg fedora-3.i386-core.cfg 等設定檔即可,然後再執行 mock 指令,如:
mock -r fedora-4-i386-core.cfg --no-clean ~/rpmbuild/SRPMS/gcin-1.2.2-8.src.rpm mock -r fedora-3-i386-core.cfg --no-clean ~/rpmbuild/SRPMS/gcin-1.2.2-8.src.rpm
六、結語
之前我都是一台電腦同時裝好幾個版本的 Linux,如 FC5 FC4 FC3 RHEL4 等等,要打包套件時再 chroot 過去打包,或是有時候得 reboot 進其他的系統去打包。
而在我用了 mock build system 之後,打包套件變的輕鬆許多。現在,我只要下個指令,mock 就會從 FC3 - FC6(development) 及 RHEL4 幫我把所有平台的套件都打包好,實在太方便了,也省下很多的硬碟空間。
七、參考文件:
http://fedoraproject.org/wiki/Projects/Mock
shrink this item