Shared Libs Policy Versioning Example: различия между версиями

Материал из ALT Linux Wiki
(Форматирование текста)
Нет описания правки
Строка 1: Строка 1:
[[Category:Devel]]
[[Category:Devel]]
'''Цель:'''
'''Цель:'''<br>
обновить libpaper 1.1.28 до 2.1.1 без пересборки множества зависящих от libpaper.so.1 пакетов (рассматривается только принцип разделения)
обновить libpaper 1.1.28 до 2.1.1 без пересборки множества зависящих от libpaper.so.1 пакетов (рассматривается только принцип разделения)
 
[[Файл:Libpaper.png|безрамки|центр|Схема разделения пакета]]


== Действия с версией 1.1.28: ==
== Действия с версией 1.1.28: ==

Версия от 21:52, 25 июля 2023

Цель:
обновить libpaper 1.1.28 до 2.1.1 без пересборки множества зависящих от libpaper.so.1 пакетов (рассматривается только принцип разделения)

Схема разделения пакета

Действия с версией 1.1.28:

  • переименовываем старый пакет в libpaper1:
%define soname 1
%def_disable devel
Name: libpaper%soname
Version: 1.1.28
Release: alt4
  • оставляем бинарник со старым названием libpaper:
%package -n libpaper
Summary: Library for handling papersize
Group: System/Legacy libraries
Provides: libpaper1 = %EVR
Obsoletes: libpaper1 < %EVR
  • отключаем пакет devel (что бы все пакеты собирались уже с новой версией):
%if_enabled devel
%package devel
Summary: Header files for %name
Group: Development/Other
Requires: libpaper = %EVR
%description devel
Header files for %name library.
%endif
  • удаляем не запакованные файлы devel пакета в разделе %install:
%if_disabled devel
rm -rv %buildroot%_libdir/libpaper.so
rm -rv %buildroot%_includedir/paper.h
rm -rv %buildroot%_man3dir/
%endif
  • исключаем раздел %files для devel пакета:
%if_enabled devel
%files devel
%_libdir/libpaper.so
%_includedir/paper.h
%_man3dir/*
%endif

Действия с версией 2.2.1:

  • берем еще один старый пакет libpaper и переименовываем ТОЛЬКО БИНАРНИК в libpaper2 с обновление исходников до нужной версии и правкой спека, при необходимости):
%define soname 2
Name: libpaper
Version: 2.1.1
Release: alt2
Epoch: 2
%package -n %name%soname
Summary: Library and tools for handling papersize
Group: System/Libraries
Conflicts: libpaper < 1.1.28-alt3
  • добавляем новый предоставляемый пакет paper в libpaper2:
%package -n paper
Summary: Query paper size database and retrieve the preferred size
Group: Text tools
Requires: %name%soname = %EVR
  • создаем libpaper-devel что бы все пакеты, зависящие от него, собирались с новой версией:
%package -n libpaper-devel
Summary: Header files for %name
Group: Development/Other
Requires: %name%soname = %EVR

Смотри также