Установка имени пакета RPM в bdist_rpm

Я использую инструменты настройки Python для создания пакета. Я хотел бы, чтобы имя rpm, созданного из bdist_rpm, отличалось от имени пакета Python из-за некоторых ограничений на имена.

Можно ли это сделать в разделе setup.cfg в разделе [bdist_rpm]?


person Cheezo    schedule 19.08.2011    source источник


Ответы (2)


Инструмент fpm упрощает создание пакета RPM и изменение имени или другого параметра. По умолчанию fpm создает RPM с префиксом имени "python-, но имя пакета можно задать с помощью параметра -n. Пример:

fpm -s python -t rpm -n my_package_name <python-source-library>/setup.py
person Jaime M.    schedule 28.11.2013

Ну, это действительно немного нестандартно и поэтому напрямую не поддерживается. Однако вы можете сделать 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

Чтобы успешно собрать rpm отсюда, вам необходимо:

  1. переименуйте файл спецификации в [новое имя].spec
  2. замените каждое вхождение %{name} на [newname]
  3. rpmbuild -ba [новое имя.spec] (после помещения файлов в каталоги, где их найдет rpmbuild)

Я уверен, что вы могли бы автоматизировать это каким-то образом, если бы действительно хотели

person Stan    schedule 24.04.2012
comment
ваш ответ немного неполный. после помещения файлов в каталоги, где их найдет rpmbuild, не объясняется, как и где запускать команду rpmbuild для завершения процесса. - person Jaime M.; 29.08.2012
comment
Было бы удобно отметить, что вы меняете Name: вместо %define name, потому что определение может также использоваться в имени исходного пакета, а исходный пакет (вероятно) будет иметь обычное имя в имени файла, а не переопределенное значение (как показано во включенном примере). Вот почему вы на самом деле не меняете каждое вхождение — вы просто меняете один Name: экземпляр. - person dannysauer; 19.04.2017