Python distutils - 更改 RPM 安装路径
我现在用的是Python 2.7.5,并且在用distutils工具(通过python setup.py bdist_rpm
命令)来创建一个RPM包...
me@hostname:/tmp/dist$ rpm -qpil myApp-2.0.146-1.noarch.rpm
Name : myApp
Version : 2.0.146
Release : 1
Architecture: noarch
Install Date: (not installed)
Group : Development/Libraries
Size : 290576
License : GPL
Signature : (none)
Source RPM : myApp-2.0.146-1.src.rpm
Build Date : Wed 15 Oct 2014 02:57:08 PM EDT
Build Host : hostname.example.lan
Relocations : /usr
Vendor : Me <me@example.lan>
URL : https://otherhost.example.lan/myApp
Summary : My application
Description :
My application
/tmp/myApp/CHANGELOG
/tmp/myApp/README
/tmp/myApp/some.sh
/tmp/myApp/some.py
/tmp/myApp/libs/another.py
/tmp/myApp/libs/another.sh
...
我想要实现的目标是,当这个RPM包被安装时,文件应该放到...
/usr/local/bin/CHANGELOG
/usr/local/bin/README
/usr/local/bin/some.sh
/usr/local/bin/some.py
/usr/local/bin/libs/another.py
/usr/local/bin/libs/another.sh
...
...而不是放在/tmp目录下。
是的,我明白你们可能觉得这些位置不对、不好、不常见、不是最佳实践、甚至有点傻,但这就是我需要的方式。我就是搞不清楚该怎么做。有没有什么我可以在distutils的setup()
函数里做的(也许是在填充data_files
参数的时候)?这可能不重要,但我想分享一下,以说明我在调用setup()
时有一定的灵活性。我的setup.py
是由另一个Python脚本动态生成的,然后通过subprocess
命令运行。
我不知道是否可以“暂停”setup.py
,这样我就可以修改spec文件。我不能使用chroot
来伪造环境。不太确定该怎么处理这个问题,但感觉应该很简单。
2 个回答
0
看看这个回答: https://stackoverflow.com/a/6220687/725021
你可以试试在 setup.cfg
文件的 [install]
部分里使用 install-lib
这个参数。
-1
回答:与其动态生成setup.py并使用distutils(这似乎有一些限制),我现在生成一个rpmbuild的.spec文件,这样就能满足我的需求。
谢谢。