2011-08-19 19 views
10

Używam narzędzi setup Pythona do budowania pakietu. Chciałbym nazwać opcję rpm zbudowaną z opcji bdist_rpm, aby była inna niż nazwa pakietu Python ze względu na pewne ograniczenia nazywania.Ustawianie nazwy pakietu RPM w bdist_rpm

Czy można to zrobić w sekcji setup.cfg w sekcji [bdist_rpm]?

Odpowiedz

2

Cóż, rzeczywiście jest to nieco niestandardowe i dlatego nie jest bezpośrednio obsługiwane. Można jednak zrobić python setup.py bdist_rpm --spec-only a to wygeneruje plik spec wewnątrz dist/named project.spec, rozpoczynając w ten sposób:

%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 

Aby pomyślnie zbudować rpm stąd trzeba:

  1. przemianować spec złożyć do [newname] .spec
  2. zmiany każde wystąpienie% {NAME} z [newname]
  3. rpmbuild -ba [newname.spec] (po umieszczeniu plików w katalogów gdzie rpmbuild będzie je znaleźć)

Jestem pewien, że można zautomatyzować ten w jakiś sposób, jeśli naprawdę chce

+1

Twoja odpowiedź jest nieco niekompletna. "po umieszczeniu plików w katalogach, gdzie rpmbuild je znajdzie" nie wyjaśnia, jak i gdzie uruchomić polecenie rpmbuild, aby zakończyć proces. –

+0

Przydałoby się zauważyć, że zamiast "% define name" zmieniono 'Name:' ​​', ponieważ definicja jest również używana w nazwie pakietu źródłowego, a pakiet źródłowy (prawdopodobnie) będzie miał" regularne "nazwa w nazwie pliku, a nie przesłonięta wartość (jak pokazano w dołączonym przykładzie). Dlatego tak naprawdę nie zmieniasz każdego wystąpienia - po prostu zmieniasz instancję 'Name:'. – dannysauer

2

Narzędzie fpm sprawia, że ​​jest łatwy do wygenerowania pakietu RPM i zmienić nazwę lub inny parametr. Domyślnie FPM sprawia RPM z "python- przedrostek nazwy, ale nazwa pakietu może być ustawiony z -n parametru przykład:.

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

Python 2.7+

According to the docs, python setup.py bdist_rpm --name="new-package-name" powinno działać.

To nie wydaje się być w przypadku Pythona 2.6, choć, jak dostaniesz error: option --name not recognized błąd podczas próby uruchomienia polecenia.

Python 2.6

odkryłem, że edycji setup.py prace:

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

Następnie wystarczy uruchomić python setup.py bdist_rpm i rpm będzie miał nową nazwę.

Powiązane problemy