Спасибо за пинки
poligraph!
С помощью
этой нехитрой статьи я сумел "обмануть" систему rpm.
Предыстория проблемы.
Есть сервер под управлением CentOS 5.4.
Необходимо поставить пакет, зависящий от libpython2.3 с помощью системы rpm (rpm -iUvh *.rpm).
Библиотека libpython2.3 поставляется пакетом python-2.3, а в дистрибутиве CentOS 5.4 наличиствует исключительно python-2.4.
Установка python-2.3 напару с python-2.4 конфликтна.
Создание символической ссылки /usr/lib/libpython2.3.so -> /usr/lib/libpython2.4.so поможет исключительно приложению.
Менеджер пакетов rpm об этом знать ничего не будет.
Решение.
1) Берётся пакет python-2.3.4-14.7.el4_8.2.i386.rpm.
2) Распаковывается:
rpm2cpio python-2.3.4-14.7.el4_8.2.i386.rpm | cpio -idvm
3) Изымается нужная библиотека.
mkdir ~/newrpm
mv usr/lib/libpython2.3.so* ~/newrpm
4) Создаётся архив бинарных файлов для установки:
Воссоздаём директории для библиотек, откуда они будут установлены:
mkdir ~/newrpm/usr/lib
Перемещаем бинарник нужной библиотеки в эти папки.
mv ~/newrpm/libpython2.3.so* ~/newrpm/usr/lib
Пакуем.
tar cf /usr/src/redhat/SOURCES/libpython-2.3.4.tar ~/newrpm
gzip -9 /usr/src/redhat/SOURCES/libpython-2.3.4.tar
5) Создаём .spec файл для создания нашего rpm пакета.
cat /usr/src/redhat/SPEC/libpython-2.3.4.spec
# libpython-2.3.4 by Dzmitry Stremkouski (mitroko@gmail.com). 2010.
%define _topdir /usr/src/redhat
%define name libpython
%define release 1
%define version 2.3.4
%define buildroot %{_topdir}/BUILD/%{name}-%{version}
BuildRoot: %{buildroot}
Summary: Python 2.3 compatibility library.
License: GPL
Name: %{name}
Version: %{version}
Release: %{release}
Source: %{name}-%{version}.tar.gz
Prefix: /usr/lib
Group: Development/Tools
%description
This library provides compatibility for applications that strictly
depends on libpython version 2.3.
%prep
%setup -q
%build
%install
cp usr/lib/* /usr/lib -R
%files
%defattr(-,root,root)
/usr/lib/libpython2.3.so
/usr/lib/libpython2.3.so.1.0
Идём в /usr/src/redhat
cd /usr/src/redhat
Создаём rpm:
rpmbuild -v -bb --clean SPECS/libpython-2.3.4.spec
Получаем нужный пакет, содержащий нужную библиотеку.
Менеджер пакетов rpm регистрирует её, как зависимость и позволяет установку без ключа --nodeps.