Назад | Перейти на главную страницу

Общий пакет RPM для Python 2.x

У меня есть приложение на Python, оно может работать на Python> = 2.6 и не зависит от архитектуры.

Мне нужен rpm-пакет этого приложения для установки на Fedora 14 (python 2.7) и Centos 6.2 (python 2.6).

Я сейчас использую mock создать один пакет rpm для каждого «вкуса», и это хорошо работает. Я, по-видимому, не могу установить скомпилированный пакет Centos на Fedora.

Это дает мне это сообщение об ошибке:

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 об / мин, или есть другой способ создать один общий пакет 2.x об / мин ?

Файлы Python компилируются в байтах во время сборки, поэтому для их запуска требуется определенная версия Python. Правильный способ - иметь отдельные пакеты, но должна быть возможность написать специальный файл, который устанавливает только .py исходные файлы и поэтому не требует определенной версии Python. Вам, вероятно, придется обрабатывать размещение файлов во всех /usr/lib/python2.X/site-packages каталоги, которые вам небезразличны.