Distutils, более ранние обороты и настраиваемые спецификации - PullRequest
1 голос
/ 22 декабря 2010

Вчера я наконец-то упаковал свою программу в RPM на Fedora 14, и я подумал, что ее будет легко собрать точно так же на CentOS 4.8. Оказывается, что старые версии rpm и distutils несколько ограничены, и мне не повезло, что я обошел их.

Основная проблема в том, что distutils в Python 2.7 поддерживает опцию «--post-install», где я могу указать скрипт. Скрипт включен и запускается, когда я устанавливаю с yum или rpm. Все отлично. Однако в Python 2.3 опция --post-install отсутствует (на самом деле она недоступна в RPM). Как бы то ни было, я могу просто добавить его в раздел «% install» в моем файле .spec. Итак, я запускаю процесс построения RPM с

python setup.py bdist_rpm --spec-only

, который создает мой .spec. Я редактирую его и вставляю свой скрипт в .spec. Затем я иду, чтобы построить источник с

python setup.py bdist_rpm --source-only

Вот тут-то и начинаются проблемы. distutils создает следующие подкаталоги ./build/bdist.linux-i686/rpm/. Внутри этого есть папка с именем SPECS / netinfo.spec (моя программа называется netinfo). Однако, это не использует пользовательский .spec, который я только что создал. Это странно, так как он должен использовать сгенерированный .spec. Если я попытаюсь собрать со стандартным .spec, то, как и ожидалось, мой скрипт не будет включен в RPM. Если я перезаписываю это с моим собственным .spec, он все равно не работает. Это как будто воссоздает .spec для каждой команды.

Существуют различные команды, которые имеет bdist_rpm, и они могут быть перечислены с помощью

python setup.py bdist_rpm --help

Я ожидал найти otpion, где вы можете указать файл .spec для использования. Тем не менее, на Python 2.3 и 2.7 никакой опции не существует.

Должен быть простой способ заставить distutils использовать мой пользовательский файл .spec. Кто-нибудь знает, как это указать?

Спасибо

1 Ответ

1 голос
/ 22 декабря 2010

Нет.Создайте SRPM с помощью rpmbuild -bs, а затем используйте Mock для сборки пакета для EL4.

...