我有一个 python 应用程序,它可以在 Python >= 2.6 上运行,并且与架构无关。
我需要将该应用程序的 rpm 包安装在 Fedora 14(python 2.7)和 Centos 6.2(python 2.6)上。
我目前使用mock
为每个“风格”构建一个 rpm 包,效果很好。我显然无法在 Fedora 上安装 Centos 编译的 rpm。
它给了我这个错误信息:
error: Failed dependencies:
python(abi) = 2.6 is needed by myapp-0.9.el6.noarch
这是我的 .spec 文件的相关部分:
%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
Name: myapp
Version: #VERSION#
Release: #RELEASE#%{dist}
Summary: myapp
Group: Development/Languages
License: Apache v2
Source0: %{name}-%{version}-#RELEASE#.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
BuildRequires: python-devel
BuildRequires: python-setuptools
%description
myapp
%prep
%setup -c
%build
%{__python} setup.py build
%install
%{__rm} -rf %{buildroot}
%{__python} setup.py install -O1 --skip-build --root %{buildroot}
我是否真的必须使用mock
并构建 2 个 rpm,或者是否有其他方法可以创建单个通用 2.x rpm 包?
答案1
Python 文件在构建时进行字节编译,这就是为什么它们需要特定的 Python 版本才能运行。正确的方法是使用单独的包,但应该可以编写一个 specfile,它只安装.py
源文件,因此不需要特定的 Python 版本。不过,您可能需要处理将文件放入/usr/lib/python2.X/site-packages
您关心的所有目录中。