2011-08-19 96 views
10

我正在使用Python setuptools構建軟件包。我想將由bdist_rpm選項構建的rpm命名爲與Python包名稱不同,這是由於某些命名限制。在bdist_rpm中設置RPM軟件包名稱

它可以在setup.cfg完成在[bdist_rpm]部分?

回答

2

那麼這的確是一個稍微不規範等不直接支持。但是你可以做python setup.py bdist_rpm --spec-only,這將產生DIST /名爲project.spec內部的規範文件,開始是這樣的:

%define name [name of your pkg as defined in setup.py] 
%define version [version of your pkg] 
%define unmangled_version [version of your pkg] 
%define release 1 

Summary: PyQt4 application to download trailers from www.apple.com/trailers 
Name: %{name} # THIS IS WHAT YOU WANT TO CHANGE 
Version: %{version} 
Release: %{release} 
Source0: %{name}-%{unmangled_version}.tar.gz 

從這裏,你需要成功地建立轉:

  1. 重命名規範文件設定爲[NEWNAME]的.spec
  2. 變化%(名稱)的每一次出現用[NEWNAME]
  3. 的rpmbuild -ba [newname.spec](將文件放入迪爾斯後,其中的rpmbuild會發現它們)

我相信你能以某種方式,如果你真的想

+1

你的答案有點不完整。 「將文件放入rpmbuild會找到它們的目錄之後」並沒有解釋如何以及在哪裏運行rpmbuild命令來完成該過程。 –

+0

注意你改變'Name:'而不是'%define name'會很方便,因爲這個定義也適用於源包名稱,並且源包將(可能)具有「常規「名稱中的文件名,而不是覆蓋的值(如包含示例中所示)。這就是爲什麼你實際上不會改變每一個事件 - 你只需要改變一個Name:'實例。 – dannysauer

2

fpm工具可以方便地生成RPM程序包並更改名稱或其他參數自動執行此。默認情況下,FPM使得與「python-前綴名的RPM,但包的名字可以-n參數來設置一個例子:

fpm -s python -t rpm -n my_package_name <python-source-library>/setup.py 
1

的Python 2.7+

According to the docspython setup.py bdist_rpm --name="new-package-name"應該工作。

這似乎並不成爲蟒蛇-2.6的情況下,雖然,因爲你會得到一個error: option --name not recognized嘗試運行命令時出錯。

的Python 2.6

我發現,編輯setup.py作品:

(...) 
setup(
    name = 'new-package-name', 
    description = "Python package that does the thing", 
(...) 

後來才運行python setup.py bdist_rpm和RPM將有新名稱。