Python Сбой генерации RPM-пакетов с 'rpm: -ba: неизвестная опция' - доступен rpmbuild - PullRequest
0 голосов
/ 07 апреля 2020

Моя проблема очень похожа на эту . Но он отличается несколькими ключевыми моментами, и решение там не работает.

У меня есть простой проект Python 3 с пакетом, содержащим несколько простых классов. Мне нужно упаковать этот проект как RPM и опубликовать sh в частном репозитории.

Среда:

Mac OS X 10.15.3 (Catalina)
Python 3.7.3
rpm 4.15.1

Package           Version
----------------- -------
astroid           2.3.3  
coverage          5.0.4  
isort             4.3.21 
lazy-object-proxy 1.4.3  
mccabe            0.6.1  
pip               20.0.2 
pylint            2.4.4  
setuptools        46.1.3 
six               1.12.0 
typed-ast         1.4.1  
wheel             0.34.2 
wrapt             1.11.2

У меня есть файл setup.py в проекте root:

import setuptools

with open("README.md", "r") as fh:  # README.md exists alongside, is readable and has few ASCII text
    long_description = fh.read()

setuptools.setup(
    name="my_util",
    version="0.2.0",
    author="Andrei Rinea",
    author_email="my@email.com",
    description="Utils",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://example.com/",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3.7",
        "Operating System :: OS Independent",
        "License :: Other/Proprietary License"
    ],
    python_requires='>=3.7',
    license='(C) ACME Example 2020',
    platforms='any'
)

Когда я запускаю

python setup.py bdist_rpm

В результате возникает ошибка:

... (successfully making directories, copying files etc.)
...
copying dist/my_util-0.2.0.tar.gz -> build/bdist.macosx-10.15-x86_64/rpm/SOURCES
building RPMs
rpm -ba --define _topdir /Users/andrei/Work/my-util/build/bdist.macosx-10.15-x86_64/rpm --clean build/bdist.macosx-10.15-x86_64/rpm/SPECS/my_util.spec
rpm: -ba: unknown option
error: command 'rpm' failed with exit status 1

rpmbuild доступно в пути:

% rpmbuild --version

RPM version 4.15.1

Я искал по всему Google, но результатов не так много, самым близким из которых был вопрос Stackoverflow, связанный с самого начала. Тот на Linux, и кажется, что установка rpm-build (которая, кажется, включена в rpm на OS X) для этого парня работала.

LATER EDIT : версия Distutils :

% python3
Python 3.7.3 (default, Nov 15 2019, 04:04:52) 
[Clang 11.0.0 (clang-1100.0.33.16)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import distutils
>>> print (distutils.__version__)
3.7.3

1 Ответ

3 голосов
/ 08 апреля 2020

Проблема в том, что distutils 3.7.3 использует rpmbuild только если он найден в /bin или /usr/bin, как вы можете видеть в его исходном коде :

rpm_cmd = ['rpm']
if os.path.exists('/usr/bin/rpmbuild') or \
   os.path.exists('/bin/rpmbuild'):
    rpm_cmd = ['rpmbuild']

Если вы можете сделать символическую ссылку на эту позицию, это, вероятно, ваш самый простой ответ. В противном случае вам может понадобиться исправить вашу копию bdist_rpm.py.

...