2014-01-22 49 views
6

我已經創建了一個python應用程序,我希望在最終的RPM包中運輸.so和一些二進制文件。在長時間閱讀後,我發現了一種在setup.py中添加二進制文件/圖像和其他數據文件的方法。現在,當我建立一個RPM與python setup.py bdist_rpm命令,它抱怨架構的依賴性:運輸* .so和二進制文件,同時構建RPM包

#%define _binaries_in_noarch_packages_terminate_build 0 

packagename.spec文件中刪除行BuildArch: noarch到:

Arch dependent binaries in noarch package 
error: command 'rpmbuild' failed with exit status 1 

google搜索,我發現,我們可以添加後克服了rpmbuild的失敗。但是,每當我從build/bdist.linux-i686/rpm/SPECS/packagename.spec添加或刪除行時,命令python setup.py bdist_rpm總是會覆蓋.spe文件。

有沒有辦法避免Arch dependent binaries和* * * * *和其他二進制文件的rpm?

回答

1

bdist_rpm的行爲是由一堆設置中定義存在於您的系統上。這個是正常的。

所以,爲了防止「在noarch包拱依賴二進制文件」的錯誤,你將創建/etc/rpm/macros~/.rpmmacros並添加以下內容:

%_unpackaged_files_terminate_build  0 
%_binaries_in_noarch_packages_terminate_build 0 

不要修改/usr/lib/rpm/macros因爲該文件將被覆蓋系統,只要rpm-build軟件包升級,降級或重新安裝。

如果您想覆蓋系統上所有人的行爲,請將設置置於/etc/rpm/macros。如果您想覆蓋特定用戶的行爲,請將設置添加到$HOME/.rpmmacros

.rpmmacros王牌/etc/rpm/macros它勝過/usr/lib/rpm/macros

注意:檢查/usr/lib/rpm/macros以查看可用設置和語法示例很有用。

作爲便箋,%_unpackaged_files_terminate_build 0設置可防止出現error: Installed (but unpackaged) file(s) found:錯誤。

+0

您還可以將以下內容添加到您的規格文件: %define _binaries_in_noarch_packages_terminate_build 0 –

4

.so就我所知,文件總是與曲面有關。

你的情況,以避免編輯規範文件都可以添加--force-arch=<your_arch>我們setup.py bdist_rpm

例如時間

  • /usr/lib/rpm/macros
  • /etc/rpm/macros
  • $HOME/.rpmmacros

我願意打賭,只有/usr/lib/rpm/macros

python setup.py bdist_rpm --force-arch=x86_64 
相關問題