distutils setup.py 和 %post %postun
我还是个新手。 我正在为自己的应用程序制作rpm包,决定使用distutils来实现这个目标。我根据这个网站的建议,成功创建了一些%post的替代方案,非常感谢这个网站的帮助,但我在%postun方面遇到了问题。 让我来描述一下我做了什么。在setup.py中,我运行了一个命令,创建了一个符号链接,这是运行应用程序所必需的。这个过程很顺利,但问题是当我想要删除rpm时,链接却留在那里。所以我想我应该在spec文件中使用%postun。我的问题是:有没有办法在setup.py中做到这一点,还是我必须手动编辑spec文件? 请给我一些建议,或者指点我一些手册或其他资料。 谢谢你。
2 个回答
0
distutils和setuptools这两个工具都没有卸载功能。
在某个时候,Python社区达成了一致,认为卸载应该由打包系统来处理。在这种情况下,你需要使用rpm,所以在rpm系统里应该有办法来删除软件包,但在distutils或setuptools里是找不到这个功能的。
在pycon2009上,有关于distutils和setuptools的演讲。你可以在这里找到所有的视频。
Python中的Eggs和Buildout部署 - 第1部分
Python中的Eggs和Buildout部署 - 第2部分
Python中的Eggs和Buildout部署 - 第3部分
还有一个视频叫做 如何构建Linux发行版会打包的应用程序。我没有看过,但听起来很合适。
2
是的,你可以指定一个安装后脚本,所需要做的就是在bdist_rpm的选项参数中声明你想使用的文件:
setup(
...
options = {'bdist_rpm':{'post_install' : 'post_install',
'post_uninstall' : 'post_uninstall'}},
...)
在post_uninstall文件中,放入你需要用来移除链接的代码,类似这样的:
rm -f /var/lib/mylink