2013-01-21 58 views
1

我必須使用不同的編譯器(gcc)來打包一個包含centos的包。它也是gcc,只是重新包裝了已經安裝了不同路徑的新版本。rpmbuild - 如何在構建時將一些包標記爲衝突

我使用模擬的構建,它在其基本設置

config_opts [ 'chroot_setup_cmd'] = 'groupinstall建設'

集團建立在我的案件中含有的CentOS股票GCC。在模擬環境中我無法改變任何東西。

有沒有辦法在構建之前刪除gcc包實際進行?

問題是,我重新包裝的海灣合作委員會編譯的一些程序傾向於使用系統/ usr/include /而不是從重新包裝的海灣合作委員會正確的包括,所以我正在尋找一種方式如何本地化問題。

+0

我之前沒有使用模擬器,所以我不能在這裏給出一個真正的答案..但是有什麼理由爲'%prep'部分添加'rm -f $(rpm -ql gcc)'贏得'在這裏工作? –

回答

1

您可以嘗試使用instructions provided by Fedora來完成此任務,他們討論了在您需要安裝的rpm不是回購協議的一部分時進行構建。

如果這不起作用,我會考慮設置一個自定義環境,或者要求您的管理員這樣做,如果您不能在您的問題中聲明時更改它。配置文件存儲在/etc/mock/*.cfg下。我會建議複製其中一個匹配您的需求並命名它的獨特的東西。然後,您需要添加額外的回購行(根據您的GCC自定義副本的生存位置,本地或遠程)。

這將配置環境來獲取該版本的GCC,如果它確實只是標記爲較新的版本。如果出現某種獨特的命名約定,或者出於某種原因未收到該命名約定,則應該修改chroot_setup_cmd以僅安裝所有構建包。當我查看一個

yum groupinstall buildsys-build 

我看到所有關聯軟件包的列表。你顯然想要檢查'構建'。然後,您可以修改config_opts ['chroot_setup_cmd']以使用'install',而不是'groupinstall',然後在其中安裝所有關聯的構建包以及您的自定義GCC。

如果仍然無法正常工作,您可以隨時將構建包複製到您自己的GCC所在的個人存儲庫中,確保這是唯一可用的存儲庫,配置repo以支持「構建」組,然後構建包。雖然由於年齡的原因不是非常有幫助,但Mock docs有一些有用的信息,可用本地回購配置您的環境。

相關問題