Python distutils - 更改 RPM 安装路径

0 投票
2 回答
1132 浏览
提问于 2025-04-28 00:09

我现在用的是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文件,这样就能满足我的需求。

谢谢。

撰写回答