дистутилы setup.py и %post %postun


Я новичок. Я покупаю пакет rpm для своего собственного приложения и решил использовать distutils для его достижения. Мне удалось создать некоторую замену %post, используя советы с этого сайта, за что я действительно благодарен, но у меня возникли проблемы с %postun. Позвольте мне описать, что я сделал. В setup.py я запускаю команду, которая создает символическую ссылку, необходимую для запуска приложения. Это работает хорошо, но проблема в том, что когда я хочу удалить rpm, ссылка остается там. Поэтому я решил, что мне следует использовать %postun в файле спецификации. Мой вопрос: есть ли способ сделать это в setup.py или мне нужно вручную отредактировать файл спецификации? Пожалуйста, посоветуйте или укажите мне какие-нибудь руководства или что-нибудь еще. Спасибо

2 4

2 ответа:

Да, вы можете указать сценарий после установки, все, что вам нужно, это объявить в bdist_rpm в параметрах arg файл, который вы хотите использовать:

setup(
...
options = {'bdist_rpm':{'post_install' : 'post_install',
                        'post_uninstall' : 'post_uninstall'}},
...)

В файле post_uninstall поместите код, который вам нужно удалить по ссылке, что-то вроде:

rm -f /var/lib/mylink

Ни distutils, ни setuptools не имеют функции удаления.

В какой-то момент сообщество python согласилось с тем, что удаление должно выполняться упаковочной системой. В этом случае вы хотите использовать rpm, поэтому, вероятно, есть способ внутри системы rpm удалить пакеты, но вы не найдете его в distutils или setuptools.

@ pycon2009, была презентация по distutils и setuptools. Вы можете найти все видео здесь

Яйца и развертывание наращивания в Python-часть 1

Яйца и развертывание сборки в Python-часть 2

Яйца и развертывание сборки в Python-часть 3

Есть видео под названием Как строить приложения дистрибутивы Linux будут паковать. Я его не видел, но мне кажется, что он подходит.