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

Материал из ALT Linux Wiki
(Новая страница: «Category:Devel '''Цель:''' обновить libpaper 1.1.28 до 2.1.1 без пересборки множества зависящих от libpaper.so.1 пакетов (рассматривается только принцип разделения) == Действия с версией 1.1.28: == переименовываем старый пакет в libpaper1:<br> <code> %define soname 1<br> %def_disable devel<br> Name: libpaper%soname<br> V...»)
 
м (VitalyLipatov переименовал страницу ExampleOfPacketPeparation в Shared Libs Policy Versioning Example)
 
(не показано 11 промежуточных версий 2 участников)
Строка 1: Строка 1:
[[Category:Devel]]
[[Category:Devel]]
'''Цель:'''
'''Цель:'''<br>
обновить libpaper 1.1.28 до 2.1.1 без пересборки множества зависящих от libpaper.so.1 пакетов (рассматривается только принцип разделения)
выполнить версионирование пакета с библиотекой согласно [[Shared Libs Policy]] с тем, чтобы обеспечить сосуществование разных версий.
 
[[Файл:Libpaper0.png|безрамки|центр|Схема версионирования]]


== Действия с версией 1.1.28: ==
== Действия с версией 1.1.28: ==
переименовываем старый пакет в libpaper1:<br>
<code>
%define soname 1<br>
%def_disable devel<br>
Name: libpaper%soname<br>
Version: 1.1.28<br>
Release: alt4<br>
</code>
оставляем бинарник со старым названием libpaper:<br>
<code>
%package -n libpaper<br>
Summary: Library for handling papersize<br>
Group: System/Legacy libraries<br>
Provides: libpaper1 = %EVR<br>
Obsoletes: libpaper1 < %EVR<br>
</code><br>


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


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


%package -n %name%soname
%package -n libpaper-devel
Summary: Library and tools for handling papersize
Summary: Header files for %name
Group: System/Libraries
Group: Development/Other
Conflicts: libpaper < 1.1.28-alt3
Requires: %name%soname = %EVR
</code>


добавляем новый предоставляемый пакет paper в libpaper2:
'''Собираем оба пакета в одном задании.'''
<code>
%package -n paper
Summary: Query paper size database and retrieve the preferred size
Group: Text tools
Requires: %name%soname = %EVR
</code>
создаем libpaper-devel что бы все пакеты, зависящие от него, собирались с новой версией:
<code>
%package -n libpaper-devel
Summary: Header files for %name
Group: Development/Other
Requires: %name%soname = %EVR
</code>


=== Смотри также ===
=== Смотри также ===
* https://www.altlinux.org/Shared_Libs_Policy
* https://www.altlinux.org/Shared_Libs_Policy
* https://www.altlinux.org/Shared_Libs_Policy_Example
* https://www.altlinux.org/Soname
* https://www.altlinux.org/Filesystem_coherency_and_conflicts

Текущая версия от 00:28, 2 августа 2023

Цель:
выполнить версионирование пакета с библиотекой согласно Shared Libs Policy с тем, чтобы обеспечить сосуществование разных версий.

Схема версионирования

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

  • переименовываем старый пакет в libpaper1:
%define soname 1
%def_disable devel
Name: libpaper%soname
Version: 1.1.28
Release: alt4
Group: System/Legacy libraries
  • оставляем бинарник со старым названием libpaper и обязательно меняем группу на System/Legacy libraries:
%package -n libpaper
Summary: Library for handling papersize
Group: System/Legacy libraries
  • отключаем пакет 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, добавляя использование soname в бинарном пакете:
%define soname 2
Name: libpaper
Version: 2.1.1
Release: alt3
%package -n %name%soname
Summary: Library and tools for handling papersize
Group: System/Libraries
  • добавляем новый предоставляемый пакет paper в libpaper2:
%package -n paper
Summary: Query paper size database and retrieve the preferred size
Group: Text tools
Requires: %name%soname = %EVR
Conflicts: libpaper < 1.1.28-alt3
  • создаем libpaper-devel, чтобы все пакеты, зависящие от него, собирались с новой версией:
%package -n libpaper-devel
Summary: Header files for %name
Group: Development/Other
Requires: %name%soname = %EVR

Собираем оба пакета в одном задании.

Смотри также