Вчера я наконец-то упаковал свою программу в 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. Кто-нибудь знает, как это указать?
Спасибо