<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.rosa.ru/index.php?action=history&amp;feed=atom&amp;title=Libraries_policy</id>
	<title>Libraries policy - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.rosa.ru/index.php?action=history&amp;feed=atom&amp;title=Libraries_policy"/>
	<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Libraries_policy&amp;action=history"/>
	<updated>2026-05-09T10:45:52Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Libraries_policy&amp;diff=89&amp;oldid=prev</id>
		<title>PastorDi в 16:51, 13 марта 2025</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Libraries_policy&amp;diff=89&amp;oldid=prev"/>
		<updated>2025-03-13T16:51:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 19:51, 13 марта 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l27&quot;&gt;Строка 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 27:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** lib64foo-devel-2.3.4-4-rosa2012.x86_64.rpm&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** lib64foo-devel-2.3.4-4-rosa2012.x86_64.rpm&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To handle this complexity, use &amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/&lt;/del&gt;code&amp;gt;%mklibname&amp;lt;/code&amp;gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To handle this complexity, use &amp;lt;code&amp;gt;%mklibname&amp;lt;/code&amp;gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== %mklibname ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== %mklibname ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l54&quot;&gt;Строка 54:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 54:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** When splitting libraries which were previously in a single package, you may need to add Obsoletes/Conflicts &amp;quot;across&amp;quot; the new packages, to hint Urpmi into putting them in the same transaction (ref: [http://archives.mandrivalinux.org/cooker/2009-06/msg00025.php libiptc and libiptables splitting])&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** When splitting libraries which were previously in a single package, you may need to add Obsoletes/Conflicts &amp;quot;across&amp;quot; the new packages, to hint Urpmi into putting them in the same transaction (ref: [http://archives.mandrivalinux.org/cooker/2009-06/msg00025.php libiptc and libiptables splitting])&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* If multiple versions of the package are maintained within the distro with different majors, or an expected future release is going to be source-incompatible in a major way (rebuild of concerned pkgs not being enough, and changes required are too big) with the current version (e.g. QT3/QT4/QT5), the devel package name should include the major. In the former case, the devel subpackage of the newest version should generally not contain the major, only the older versions.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* If multiple versions of the package are maintained within the distro with different majors, or an expected future release is going to be source-incompatible in a major way (rebuild of concerned pkgs not being enough, and changes required are too big) with the current version (e.g. QT3/QT4/QT5), the devel package name should include the major. In the former case, the devel subpackage of the newest version should generally not contain the major, only the older versions.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Some applications (e.g., &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[KDE 4 packaging policies#Library_policy|&lt;/del&gt;KDE ones&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/del&gt;) contain dynamic loading modules which are not libraries. Usually these modules are put into the main application subpackage. But sometimes it is better to include the modules in the library package if they are generally required to be installed when using the library (so that every application using the library doesn&#039;t have add manual requires on the modules). In general, decisions should be made on on a case-by-case basis. However, if modules are included in the library package, they &#039;&#039;&#039;must&#039;&#039;&#039; be in a versioned directory (e.g. &amp;lt;code&amp;gt;/usr/lib/foo-2/module.so&amp;lt;/code&amp;gt; for a &amp;lt;code&amp;gt;libfoo2&amp;lt;/code&amp;gt; package) so that installation of multiple versions of the library doesn&#039;t break.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Some applications (e.g., KDE ones) contain dynamic loading modules which are not libraries. Usually these modules are put into the main application subpackage. But sometimes it is better to include the modules in the library package if they are generally required to be installed when using the library (so that every application using the library doesn&#039;t have add manual requires on the modules). In general, decisions should be made on on a case-by-case basis. However, if modules are included in the library package, they &#039;&#039;&#039;must&#039;&#039;&#039; be in a versioned directory (e.g. &amp;lt;code&amp;gt;/usr/lib/foo-2/module.so&amp;lt;/code&amp;gt; for a &amp;lt;code&amp;gt;libfoo2&amp;lt;/code&amp;gt; package) so that installation of multiple versions of the library doesn&#039;t break.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Updating a package which is following the old library policy ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Updating a package which is following the old library policy ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l70&quot;&gt;Строка 70:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 70:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Adding an old-majored version into the distro ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Adding an old-majored version into the distro ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If a package is upgraded to have a new major, and it will be noticed that it is not source-compatible with the previous release and the users of the library cannot be straight-forwardly patched to use the new API, the older library should be maintained in parallel with the new one. The creation process follows with the example package &amp;quot;foo&amp;quot;, just upgraded to major 3:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If a package is upgraded to have a new major, and it will be noticed that it is not source-compatible with the previous release and the users of the library cannot be straight-forwardly patched to use the new API, the older library should be maintained in parallel with the new one. The creation process follows with the example package &amp;quot;foo&amp;quot;, just upgraded to major 3:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Git copy package &quot;foo&quot; from just before the major 3 update to package &quot;foo2&quot;. Also change the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; to &quot;foo2&quot; and rename the spec file to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{file|&lt;/del&gt;foo2.spec&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Git copy package &quot;foo&quot; from just before the major 3 update to package &quot;foo2&quot;. Also change the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; to &quot;foo2&quot; and rename the spec file to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;foo2.spec&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Add 2 (the major) to the devel package name, i.e. libfoo2-devel instead of libfoo-devel. This can be achieved by adding the parameter &amp;lt;code&amp;gt;%major&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;%mklibname&amp;lt;/code&amp;gt; call of &amp;lt;code&amp;gt;%devname&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Add 2 (the major) to the devel package name, i.e. libfoo2-devel instead of libfoo-devel. This can be achieved by adding the parameter &amp;lt;code&amp;gt;%major&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;%mklibname&amp;lt;/code&amp;gt; call of &amp;lt;code&amp;gt;%devname&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modify any provides so that they have the major number in them. E.g. &amp;lt;code&amp;gt;%name-devel&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;foo%major-devel&amp;lt;/code&amp;gt; is fine.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modify any provides so that they have the major number in them. E.g. &amp;lt;code&amp;gt;%name-devel&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;foo%major-devel&amp;lt;/code&amp;gt; is fine.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PastorDi</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Libraries_policy&amp;diff=88&amp;oldid=prev</id>
		<title>PastorDi: /* Special cases */</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Libraries_policy&amp;diff=88&amp;oldid=prev"/>
		<updated>2025-03-13T16:48:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Special cases&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 19:48, 13 марта 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l49&quot;&gt;Строка 49:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 49:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We described the default policy for library packages, however some special cases can happen and must be handled using the brain:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We described the default policy for library packages, however some special cases can happen and must be handled using the brain:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Remember to always check the &amp;lt;i&amp;gt;soname&amp;lt;/i&amp;gt; of the libraries &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;({{cmd|&lt;/del&gt;objdump -x libfoo.so.1 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; grep SONAME&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}})&lt;/del&gt;, because some sonames include the library version number, for example &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{file|&lt;/del&gt;libfoo-1.2.so.4&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;. In this case, the package should be named &amp;lt;code&amp;gt;libfoo1.2_4-1.2.4-rosa2012&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Remember to always check the &amp;lt;i&amp;gt;soname&amp;lt;/i&amp;gt; of the libraries &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;objdump -x libfoo.so.1 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; grep SONAME&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;, because some sonames include the library version number, for example &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;libfoo-1.2.so.4&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;. In this case, the package should be named &amp;lt;code&amp;gt;libfoo1.2_4-1.2.4-rosa2012&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Packages ending with a number should be handled by putting a &amp;quot;_&amp;quot; before the major, for example &amp;lt;code&amp;gt;libfoo23_4-1.2-rosa2012&amp;lt;/code&amp;gt; (in this case the soname would be &amp;lt;code&amp;gt;libfoo23.so.4&amp;lt;/code&amp;gt;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Packages ending with a number should be handled by putting a &amp;quot;_&amp;quot; before the major, for example &amp;lt;code&amp;gt;libfoo23_4-1.2-rosa2012&amp;lt;/code&amp;gt; (in this case the soname would be &amp;lt;code&amp;gt;libfoo23.so.4&amp;lt;/code&amp;gt;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* It is not necessary to split each library in separate packages: if a package contains several libraries, the name would be built from the main library of the package. If there are problems keeping libraries in the same package (e.g. their major may differ), the package should be split.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* It is not necessary to split each library in separate packages: if a package contains several libraries, the name would be built from the main library of the package. If there are problems keeping libraries in the same package (e.g. their major may differ), the package should be split.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PastorDi</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Libraries_policy&amp;diff=87&amp;oldid=prev</id>
		<title>PastorDi в 16:44, 13 марта 2025</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Libraries_policy&amp;diff=87&amp;oldid=prev"/>
		<updated>2025-03-13T16:44:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 19:44, 13 марта 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l61&quot;&gt;Строка 61:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 61:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Provides and conflicts ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Provides and conflicts ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;At least &amp;lt;code&amp;gt;%name-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; %version-%release&amp;lt;/code&amp;gt; should be provided by the -devel package. If the original tarball name differs from %name, you should also provide &amp;lt;code&amp;gt;tarballname-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; %version-%release&amp;lt;/code&amp;gt;, for compatibility with other RPM-based systems. If multiple versions of the library are maintained within the distro, only the latest shall provide %name-devel. The older versions provided should provide &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%name%major-devel&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;or &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%name%api-devel&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;where applicable. The maintainer may also opt to provide &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%name%major-devel&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;or &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%name%api-devel&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;in the newest package as well, if the next major number raise is excepted to break source-compatibility (see the Special cases above).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;At least &amp;lt;code&amp;gt;%name-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; %version-%release&amp;lt;/code&amp;gt; should be provided by the -devel package. If the original tarball name differs from %name, you should also provide &amp;lt;code&amp;gt;tarballname-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; %version-%release&amp;lt;/code&amp;gt;, for compatibility with other RPM-based systems. If multiple versions of the library are maintained within the distro, only the latest shall provide %name-devel. The older versions provided should provide &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%name%major-devel&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;or &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%name%api-devel&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;where applicable. The maintainer may also opt to provide &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%name%major-devel&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;or &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%name%api-devel&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;in the newest package as well, if the next major number raise is excepted to break source-compatibility (see the Special cases above).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It&#039;s important to understand that putting a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;Provides&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;without the version information makes it impossible for later client RPM&#039;s to put a version information on dependencies, e.g. &quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;Provides: foo-devel&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;&quot; is NOT enough, please use &quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;Provides: foo-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; 1.2.4-3-rosa2012&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;&quot;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It&#039;s important to understand that putting a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;Provides&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;without the version information makes it impossible for later client RPM&#039;s to put a version information on dependencies, e.g. &quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;Provides: foo-devel&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;&quot; is NOT enough, please use &quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;Provides: foo-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; 1.2.4-3-rosa2012&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;&quot;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If multiple versions of the library are maintained within the distro and the exception allowing the use of major in lib -devel package name is used, you have to add &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;conflicts&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;with the other devel package if they are not parallel installable. (this is often the case when the major changed, without renaming the headers).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If multiple versions of the library are maintained within the distro and the exception allowing the use of major in lib -devel package name is used, you have to add &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;conflicts&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;with the other devel package if they are not parallel installable. (this is often the case when the major changed, without renaming the headers).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Adding an old-majored version into the distro ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Adding an old-majored version into the distro ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If a package is upgraded to have a new major, and it will be noticed that it is not source-compatible with the previous release and the users of the library cannot be straight-forwardly patched to use the new API, the older library should be maintained in parallel with the new one. The creation process follows with the example package &amp;quot;foo&amp;quot;, just upgraded to major 3:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If a package is upgraded to have a new major, and it will be noticed that it is not source-compatible with the previous release and the users of the library cannot be straight-forwardly patched to use the new API, the older library should be maintained in parallel with the new one. The creation process follows with the example package &amp;quot;foo&amp;quot;, just upgraded to major 3:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Git copy package &quot;foo&quot; from just before the major 3 update to package &quot;foo2&quot;. Also change the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;Name&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;to &quot;foo2&quot; and rename the spec file to {{file|foo2.spec}}.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Git copy package &quot;foo&quot; from just before the major 3 update to package &quot;foo2&quot;. Also change the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;Name&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;to &quot;foo2&quot; and rename the spec file to {{file|foo2.spec}}.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Add 2 (the major) to the devel package name, i.e. libfoo2-devel instead of libfoo-devel. This can be achieved by adding the parameter &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%major&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;into the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%mklibname&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;call of &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%devname&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Add 2 (the major) to the devel package name, i.e. libfoo2-devel instead of libfoo-devel. This can be achieved by adding the parameter &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%major&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;into the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%mklibname&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;call of &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%devname&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modify any provides so that they have the major number in them. E.g. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%name-devel&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;or &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;foo%major-devel&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;is fine.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modify any provides so that they have the major number in them. E.g. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%name-devel&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;or &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;foo%major-devel&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;is fine.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Add Conflicts: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;foo-devel&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;if the package conflicts with the newer devel package.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Add Conflicts: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;foo-devel&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;if the package conflicts with the newer devel package.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;No changes are needed in the .spec of the newer version.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;No changes are needed in the .spec of the newer version.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PastorDi</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Libraries_policy&amp;diff=86&amp;oldid=prev</id>
		<title>PastorDi в 16:41, 13 марта 2025</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Libraries_policy&amp;diff=86&amp;oldid=prev"/>
		<updated>2025-03-13T16:41:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 19:41, 13 марта 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l19&quot;&gt;Строка 19:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 19:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Rationale:&amp;#039;&amp;#039;&amp;#039; -devel packages are not installed on standard end-user installations, so splitting them doesn&amp;#039;t affect end-users but would make developers&amp;#039; life more difficult. Distinct names for 32-bit and 64-bit -devel packages allow to install packages for both architectures in the same system.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Rationale:&amp;#039;&amp;#039;&amp;#039; -devel packages are not installed on standard end-user installations, so splitting them doesn&amp;#039;t affect end-users but would make developers&amp;#039; life more difficult. Distinct names for 32-bit and 64-bit -devel packages allow to install packages for both architectures in the same system.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If upstream name itself starts with &#039;lib&#039; (e.g., &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{pkg|&lt;/del&gt;libxml2&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}) &lt;/del&gt;then package with binaries can be named as &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{pkg|&lt;/del&gt;libfoo-utils&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;or &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{pkg|&lt;/del&gt;libfoo-tools&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;or something similar allowing to distinguish it from the library package.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If upstream name itself starts with &#039;lib&#039; (e.g., &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;libxml2&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;then package with binaries can be named as &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;libfoo-utils&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;or &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;libfoo-tools&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;or something similar allowing to distinguish it from the library package.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== Naming on x86_64 ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== Naming on x86_64 ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l27&quot;&gt;Строка 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 27:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** lib64foo-devel-2.3.4-4-rosa2012.x86_64.rpm&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** lib64foo-devel-2.3.4-4-rosa2012.x86_64.rpm&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To handle this complexity, use &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%mklibname&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To handle this complexity, use &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;%mklibname&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== %mklibname ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== %mklibname ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l49&quot;&gt;Строка 49:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 49:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We described the default policy for library packages, however some special cases can happen and must be handled using the brain:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We described the default policy for library packages, however some special cases can happen and must be handled using the brain:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Remember to always check the &amp;lt;i&amp;gt;soname&amp;lt;/i&amp;gt; of the libraries ({{cmd|objdump -x libfoo.so.1 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; grep SONAME}}), because some sonames include the library version number, for example {{file|libfoo-1.2.so.4}}. In this case, the package should be named &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{pkg|&lt;/del&gt;libfoo1.2_4-1.2.4-rosa2012&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Remember to always check the &amp;lt;i&amp;gt;soname&amp;lt;/i&amp;gt; of the libraries ({{cmd|objdump -x libfoo.so.1 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; grep SONAME}}), because some sonames include the library version number, for example {{file|libfoo-1.2.so.4}}. In this case, the package should be named &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;libfoo1.2_4-1.2.4-rosa2012&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Packages ending with a number should be handled by putting a &quot;_&quot; before the major, for example &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{pkg|&lt;/del&gt;libfoo23_4-1.2-rosa2012&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;(in this case the soname would be &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{file|&lt;/del&gt;libfoo23.so.4&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Packages ending with a number should be handled by putting a &quot;_&quot; before the major, for example &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;libfoo23_4-1.2-rosa2012&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;(in this case the soname would be &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;libfoo23.so.4&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* It is not necessary to split each library in separate packages: if a package contains several libraries, the name would be built from the main library of the package. If there are problems keeping libraries in the same package (e.g. their major may differ), the package should be split.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* It is not necessary to split each library in separate packages: if a package contains several libraries, the name would be built from the main library of the package. If there are problems keeping libraries in the same package (e.g. their major may differ), the package should be split.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** When splitting libraries which were previously in a single package, you may need to add Obsoletes/Conflicts &amp;quot;across&amp;quot; the new packages, to hint Urpmi into putting them in the same transaction (ref: [http://archives.mandrivalinux.org/cooker/2009-06/msg00025.php libiptc and libiptables splitting])&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** When splitting libraries which were previously in a single package, you may need to add Obsoletes/Conflicts &amp;quot;across&amp;quot; the new packages, to hint Urpmi into putting them in the same transaction (ref: [http://archives.mandrivalinux.org/cooker/2009-06/msg00025.php libiptc and libiptables splitting])&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* If multiple versions of the package are maintained within the distro with different majors, or an expected future release is going to be source-incompatible in a major way (rebuild of concerned pkgs not being enough, and changes required are too big) with the current version (e.g. QT3/QT4/QT5), the devel package name should include the major. In the former case, the devel subpackage of the newest version should generally not contain the major, only the older versions.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* If multiple versions of the package are maintained within the distro with different majors, or an expected future release is going to be source-incompatible in a major way (rebuild of concerned pkgs not being enough, and changes required are too big) with the current version (e.g. QT3/QT4/QT5), the devel package name should include the major. In the former case, the devel subpackage of the newest version should generally not contain the major, only the older versions.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Some applications (e.g., [[KDE 4 packaging policies#Library_policy|KDE ones]]) contain dynamic loading modules which are not libraries. Usually these modules are put into the main application subpackage. But sometimes it is better to include the modules in the library package if they are generally required to be installed when using the library (so that every application using the library doesn&#039;t have add manual requires on the modules). In general, decisions should be made on on a case-by-case basis. However, if modules are included in the library package, they &#039;&#039;&#039;must&#039;&#039;&#039; be in a versioned directory (e.g. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{file|&lt;/del&gt;/usr/lib/foo-2/module.so&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;for a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{pkg|&lt;/del&gt;libfoo2&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;package) so that installation of multiple versions of the library doesn&#039;t break.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Some applications (e.g., [[KDE 4 packaging policies#Library_policy|KDE ones]]) contain dynamic loading modules which are not libraries. Usually these modules are put into the main application subpackage. But sometimes it is better to include the modules in the library package if they are generally required to be installed when using the library (so that every application using the library doesn&#039;t have add manual requires on the modules). In general, decisions should be made on on a case-by-case basis. However, if modules are included in the library package, they &#039;&#039;&#039;must&#039;&#039;&#039; be in a versioned directory (e.g. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;/usr/lib/foo-2/module.so&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;for a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;libfoo2&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;package) so that installation of multiple versions of the library doesn&#039;t break.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Updating a package which is following the old library policy ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Updating a package which is following the old library policy ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Change the name of devel packages from &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%libname-devel&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;to &quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%mklibname %name -d&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;&quot; (without &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%major&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;! though usually with &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%api&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;if present) as seen above and add an &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;Obsoletes&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;for the previous name (&quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%mklibname %name 2 -d&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;&quot; or &quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%{_lib}%{name}2-devel&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;&quot;, 2 being the major of the obsoleted devel package).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Change the name of devel packages from &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%libname-devel&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;to &quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%mklibname %name -d&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;&quot; (without &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%major&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;! though usually with &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%api&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;if present) as seen above and add an &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;Obsoletes&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;for the previous name (&quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%mklibname %name 2 -d&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;&quot; or &quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%{_lib}%{name}2-devel&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;&quot;, 2 being the major of the obsoleted devel package).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Static-devel packages have to be switched to use &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%mklibname %name -d -s&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;. If in doubt, do not hesitate to ask in ROSA mailing lists.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Static-devel packages have to be switched to use &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%mklibname %name -d -s&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;. If in doubt, do not hesitate to ask in ROSA mailing lists.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Provides and conflicts ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Provides and conflicts ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;At least &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;%name-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; %version-%release&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;should be provided by the -devel package. If the original tarball name differs from %name, you should also provide &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{macro|&lt;/del&gt;tarballname-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; %version-%release&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;, for compatibility with other RPM-based systems. If multiple versions of the library are maintained within the distro, only the latest shall provide %name-devel. The older versions provided should provide {{macro|%name%major-devel}} or {{macro|%name%api-devel}} where applicable. The maintainer may also opt to provide {{macro|%name%major-devel}} or {{macro|%name%api-devel}} in the newest package as well, if the next major number raise is excepted to break source-compatibility (see the Special cases above).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;At least &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;%name-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; %version-%release&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;should be provided by the -devel package. If the original tarball name differs from %name, you should also provide &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;tarballname-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; %version-%release&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;, for compatibility with other RPM-based systems. If multiple versions of the library are maintained within the distro, only the latest shall provide %name-devel. The older versions provided should provide {{macro|%name%major-devel}} or {{macro|%name%api-devel}} where applicable. The maintainer may also opt to provide {{macro|%name%major-devel}} or {{macro|%name%api-devel}} in the newest package as well, if the next major number raise is excepted to break source-compatibility (see the Special cases above).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It&amp;#039;s important to understand that putting a {{macro|Provides}} without the version information makes it impossible for later client RPM&amp;#039;s to put a version information on dependencies, e.g. &amp;quot;{{macro|Provides: foo-devel}}&amp;quot; is NOT enough, please use &amp;quot;{{macro|Provides: foo-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; 1.2.4-3-rosa2012}}&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It&amp;#039;s important to understand that putting a {{macro|Provides}} without the version information makes it impossible for later client RPM&amp;#039;s to put a version information on dependencies, e.g. &amp;quot;{{macro|Provides: foo-devel}}&amp;quot; is NOT enough, please use &amp;quot;{{macro|Provides: foo-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; 1.2.4-3-rosa2012}}&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PastorDi</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Libraries_policy&amp;diff=85&amp;oldid=prev</id>
		<title>PastorDi в 16:36, 13 марта 2025</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Libraries_policy&amp;diff=85&amp;oldid=prev"/>
		<updated>2025-03-13T16:36:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 19:36, 13 марта 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Naming Conventions ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Naming Conventions ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Libraries in &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{file|&lt;/del&gt;/usr/lib&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{&lt;/del&gt;file|/lib&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;&#039;&#039;&#039;must be separately packaged&#039;&#039;&#039;, in a library-only package, named with the name of the main library concatenated with the major of the library (or soname, see below). These packages &amp;lt;b&amp;gt;should not contain any binaries&amp;lt;/b&amp;gt;, which should be in a different package. The packages can contain other files (e.g., documentation or license) provided that these files are installed to location specific to the package (e.g, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{pkg|&lt;/del&gt;libfoo2&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;may install something to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{file|&lt;/del&gt;/usr/share/doc/libfoo2/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}})&lt;/del&gt;. The goal is to be able to install &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{pkg|&lt;/del&gt;libfoo1&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{pkg|&lt;/del&gt;libfoo2&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/del&gt;on the same system.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Libraries in &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;/usr/lib&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;file|/lib&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;&#039;&#039;&#039;must be separately packaged&#039;&#039;&#039;, in a library-only package, named with the name of the main library concatenated with the major of the library (or soname, see below). These packages &amp;lt;b&amp;gt;should not contain any binaries&amp;lt;/b&amp;gt;, which should be in a different package. The packages can contain other files (e.g., documentation or license) provided that these files are installed to location specific to the package (e.g, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;libfoo2&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;may install something to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;/usr/share/doc/libfoo2/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;. The goal is to be able to install &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;libfoo1&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;libfoo2&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;on the same system.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;First of all, it is fundamental that the source rpms keep the same name without any major number, so that the git repository contains only one branch for each package.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;First of all, it is fundamental that the source rpms keep the same name without any major number, so that the git repository contains only one branch for each package.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PastorDi</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Libraries_policy&amp;diff=84&amp;oldid=prev</id>
		<title>PastorDi: Новая страница: «== Naming Conventions == Libraries in {{file|/usr/lib}} and {{file|/lib}} &#039;&#039;&#039;must be separately packaged&#039;&#039;&#039;, in a library-only package, named with the name of the main library concatenated with the major of the library (or soname, see below). These packages &lt;b&gt;should not contain any binaries&lt;/b&gt;, which should be in a different package. The packages can contain other files (e.g., documentation or license) provided that these files are installed to location sp...»</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Libraries_policy&amp;diff=84&amp;oldid=prev"/>
		<updated>2025-03-13T16:32:31Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «== Naming Conventions == Libraries in {{file|/usr/lib}} and {{file|/lib}} &amp;#039;&amp;#039;&amp;#039;must be separately packaged&amp;#039;&amp;#039;&amp;#039;, in a library-only package, named with the name of the main library concatenated with the major of the library (or soname, see below). These packages &amp;lt;b&amp;gt;should not contain any binaries&amp;lt;/b&amp;gt;, which should be in a different package. The packages can contain other files (e.g., documentation or license) provided that these files are installed to location sp...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Naming Conventions ==&lt;br /&gt;
Libraries in {{file|/usr/lib}} and {{file|/lib}} &amp;#039;&amp;#039;&amp;#039;must be separately packaged&amp;#039;&amp;#039;&amp;#039;, in a library-only package, named with the name of the main library concatenated with the major of the library (or soname, see below). These packages &amp;lt;b&amp;gt;should not contain any binaries&amp;lt;/b&amp;gt;, which should be in a different package. The packages can contain other files (e.g., documentation or license) provided that these files are installed to location specific to the package (e.g, {{pkg|libfoo2}} may install something to {{file|/usr/share/doc/libfoo2/}}). The goal is to be able to install {{pkg|libfoo1}} and {{pkg|libfoo2}} on the same system.&lt;br /&gt;
&lt;br /&gt;
First of all, it is fundamental that the source rpms keep the same name without any major number, so that the git repository contains only one branch for each package.&lt;br /&gt;
&lt;br /&gt;
When the distribution must have two versions of the same library at the same time (for example, qt1 and qt2), the sources rpms will be separated so that we can include both versions in the distribution as two different, independently maintained packages.&lt;br /&gt;
&lt;br /&gt;
Here&amp;#039;s a generic example: the following happens when the library comes with binaries, config files, or anything else that won&amp;#039;t fit in the main library package (where only libraries go) nor in the devel package (where headers and devel libraries go (e.g. &amp;lt;i&amp;gt;.so&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;.a&amp;lt;/i&amp;gt;)).&lt;br /&gt;
&lt;br /&gt;
* Source package:&lt;br /&gt;
** foo-2.3.4-4-rosa2012.src.rpm&lt;br /&gt;
&lt;br /&gt;
* Binary packages:&lt;br /&gt;
** foo-2.3.4-4-rosa2012.arch.rpm &lt;br /&gt;
** libfoo2-2.3.4-4-rosa2012.arch.rpm&lt;br /&gt;
** libfoo-devel-2.3.4-4-rosa2012.arch.rpm&lt;br /&gt;
&lt;br /&gt;
If foo-2.3.4-4-rosa2012.src.rpm produces several libraries, then these libraries must be packaged in separate files - libfoo2-2.3.4-4-rosa2012.arch.rpm, libbar2-2.3.4-4-rosa2012.arch.rpm, etc. However, devel files for them can be provided in a single package. Name of such single package may not start with &amp;#039;lib&amp;#039;; however, it is desired for 32-bit and 64-bit packages to have different names (e.g., foo-devel and foo64-devel).&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rationale:&amp;#039;&amp;#039;&amp;#039; -devel packages are not installed on standard end-user installations, so splitting them doesn&amp;#039;t affect end-users but would make developers&amp;#039; life more difficult. Distinct names for 32-bit and 64-bit -devel packages allow to install packages for both architectures in the same system.&lt;br /&gt;
&lt;br /&gt;
If upstream name itself starts with &amp;#039;lib&amp;#039; (e.g., {{pkg|libxml2}}) then package with binaries can be named as {{pkg|libfoo-utils}} or {{pkg|libfoo-tools}} or something similar allowing to distinguish it from the library package.&lt;br /&gt;
&lt;br /&gt;
==== Naming on x86_64 ====&lt;br /&gt;
* Binary packages:&lt;br /&gt;
** foo-2.3.4-4-rosa2012.x86_64.rpm &lt;br /&gt;
** lib64foo2-2.3.4-4-rosa2012.x86_64.rpm&lt;br /&gt;
** lib64foo-devel-2.3.4-4-rosa2012.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
To handle this complexity, use {{macro|%mklibname}}:&lt;br /&gt;
&lt;br /&gt;
==== %mklibname ====&lt;br /&gt;
The %mklibname macro is used to generate the library package names:&lt;br /&gt;
* %mklibname [-d [-s]] name [[api] major]&lt;br /&gt;
** -d - generate a name for a devel package&lt;br /&gt;
** -s - generate a name for a static package (to be used together with -d)&lt;br /&gt;
** name - the library name (note that if the library name is libfoo, you should enter &amp;quot;foo&amp;quot;, not &amp;quot;libfoo&amp;quot;)&lt;br /&gt;
** major - the major number to be appended into the name (this should not be used with -d, except in packages mentioned in special cases below)&lt;br /&gt;
** api - if the library has a SONAME like libfoo-1.2.so.4, api should be set to 1.2 and major to 4. This results in libfoo1.2_4&lt;br /&gt;
&lt;br /&gt;
Example usage:&lt;br /&gt;
* %mklibname foo 5 =&amp;gt; libfoo5&lt;br /&gt;
* %mklibname -d foo =&amp;gt; libfoo-devel&lt;br /&gt;
* %mklibname -d -s foo =&amp;gt; libfoo-static-devel&lt;br /&gt;
&lt;br /&gt;
=== *.la files ===&lt;br /&gt;
Modern libtool works fine without *la files, so these files are dropped by default by spec-helper during the build process. Several exceptions are known at the moment that are hardcoded in the spec-helper code. If you think you have found one more exception, feel free to contact rpmbuild maintainers.&lt;br /&gt;
&lt;br /&gt;
=== Special cases ===&lt;br /&gt;
We described the default policy for library packages, however some special cases can happen and must be handled using the brain:&lt;br /&gt;
&lt;br /&gt;
* Remember to always check the &amp;lt;i&amp;gt;soname&amp;lt;/i&amp;gt; of the libraries ({{cmd|objdump -x libfoo.so.1 &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; grep SONAME}}), because some sonames include the library version number, for example {{file|libfoo-1.2.so.4}}. In this case, the package should be named {{pkg|libfoo1.2_4-1.2.4-rosa2012}}.&lt;br /&gt;
* Packages ending with a number should be handled by putting a &amp;quot;_&amp;quot; before the major, for example {{pkg|libfoo23_4-1.2-rosa2012}} (in this case the soname would be {{file|libfoo23.so.4}}).&lt;br /&gt;
* It is not necessary to split each library in separate packages: if a package contains several libraries, the name would be built from the main library of the package. If there are problems keeping libraries in the same package (e.g. their major may differ), the package should be split.&lt;br /&gt;
** When splitting libraries which were previously in a single package, you may need to add Obsoletes/Conflicts &amp;quot;across&amp;quot; the new packages, to hint Urpmi into putting them in the same transaction (ref: [http://archives.mandrivalinux.org/cooker/2009-06/msg00025.php libiptc and libiptables splitting])&lt;br /&gt;
* If multiple versions of the package are maintained within the distro with different majors, or an expected future release is going to be source-incompatible in a major way (rebuild of concerned pkgs not being enough, and changes required are too big) with the current version (e.g. QT3/QT4/QT5), the devel package name should include the major. In the former case, the devel subpackage of the newest version should generally not contain the major, only the older versions.&lt;br /&gt;
* Some applications (e.g., [[KDE 4 packaging policies#Library_policy|KDE ones]]) contain dynamic loading modules which are not libraries. Usually these modules are put into the main application subpackage. But sometimes it is better to include the modules in the library package if they are generally required to be installed when using the library (so that every application using the library doesn&amp;#039;t have add manual requires on the modules). In general, decisions should be made on on a case-by-case basis. However, if modules are included in the library package, they &amp;#039;&amp;#039;&amp;#039;must&amp;#039;&amp;#039;&amp;#039; be in a versioned directory (e.g. {{file|/usr/lib/foo-2/module.so}} for a {{pkg|libfoo2}} package) so that installation of multiple versions of the library doesn&amp;#039;t break.&lt;br /&gt;
&lt;br /&gt;
=== Updating a package which is following the old library policy ===&lt;br /&gt;
Change the name of devel packages from {{macro|%libname-devel}} to &amp;quot;{{macro|%mklibname %name -d}}&amp;quot; (without {{macro|%major}}! though usually with {{macro|%api}} if present) as seen above and add an {{macro|Obsoletes}} for the previous name (&amp;quot;{{macro|%mklibname %name 2 -d}}&amp;quot; or &amp;quot;{{macro|%{_lib}%{name}2-devel}}&amp;quot;, 2 being the major of the obsoleted devel package).&lt;br /&gt;
Static-devel packages have to be switched to use {{macro|%mklibname %name -d -s}}. If in doubt, do not hesitate to ask in ROSA mailing lists.&lt;br /&gt;
&lt;br /&gt;
== Provides and conflicts ==&lt;br /&gt;
At least {{macro|%name-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; %version-%release}} should be provided by the -devel package. If the original tarball name differs from %name, you should also provide {{macro|tarballname-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; %version-%release}}, for compatibility with other RPM-based systems. If multiple versions of the library are maintained within the distro, only the latest shall provide %name-devel. The older versions provided should provide {{macro|%name%major-devel}} or {{macro|%name%api-devel}} where applicable. The maintainer may also opt to provide {{macro|%name%major-devel}} or {{macro|%name%api-devel}} in the newest package as well, if the next major number raise is excepted to break source-compatibility (see the Special cases above).&lt;br /&gt;
&lt;br /&gt;
It&amp;#039;s important to understand that putting a {{macro|Provides}} without the version information makes it impossible for later client RPM&amp;#039;s to put a version information on dependencies, e.g. &amp;quot;{{macro|Provides: foo-devel}}&amp;quot; is NOT enough, please use &amp;quot;{{macro|Provides: foo-devel &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; 1.2.4-3-rosa2012}}&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If multiple versions of the library are maintained within the distro and the exception allowing the use of major in lib -devel package name is used, you have to add {{macro|conflicts}} with the other devel package if they are not parallel installable. (this is often the case when the major changed, without renaming the headers).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding an old-majored version into the distro ==&lt;br /&gt;
If a package is upgraded to have a new major, and it will be noticed that it is not source-compatible with the previous release and the users of the library cannot be straight-forwardly patched to use the new API, the older library should be maintained in parallel with the new one. The creation process follows with the example package &amp;quot;foo&amp;quot;, just upgraded to major 3:&lt;br /&gt;
# Git copy package &amp;quot;foo&amp;quot; from just before the major 3 update to package &amp;quot;foo2&amp;quot;. Also change the {{macro|Name}} to &amp;quot;foo2&amp;quot; and rename the spec file to {{file|foo2.spec}}.&lt;br /&gt;
# Add 2 (the major) to the devel package name, i.e. libfoo2-devel instead of libfoo-devel. This can be achieved by adding the parameter {{macro|%major}} into the {{macro|%mklibname}} call of {{macro|%devname}}.&lt;br /&gt;
# Modify any provides so that they have the major number in them. E.g. {{macro|%name-devel}} or {{macro|foo%major-devel}} is fine.&lt;br /&gt;
# Add Conflicts: {{macro|foo-devel}} if the package conflicts with the newer devel package.&lt;br /&gt;
&lt;br /&gt;
No changes are needed in the .spec of the newer version.&lt;br /&gt;
&lt;br /&gt;
== An example ==&lt;br /&gt;
Here&amp;#039;s an example of a specfile for a package with no binary and config files, so only library binary packages are needed. (Note that the spec file is not valid, it is only an example that shows how it works and to highlight the difference with a normal package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# api is the part of the library name before the .so&lt;br /&gt;
%define api 1.2&lt;br /&gt;
# major is the part of the library name after the .so&lt;br /&gt;
%define major 1&lt;br /&gt;
%define libname %mklibname %{name} %{api} %{major}&lt;br /&gt;
%define devname %mklibname %{name} -d&lt;br /&gt;
&lt;br /&gt;
#(!) summary for SRPM only&lt;br /&gt;
Summary:        C++ interface for popular GUI library gtk+&lt;br /&gt;
Name:           gtkmm&lt;br /&gt;
Version:        1.2.4&lt;br /&gt;
Release:        1&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
#Full and generic description of the whole package. (this will be the SRPM&lt;br /&gt;
#description only)&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
#main package (contains .so.[major]. only)&lt;br /&gt;
%package -n %{libname}&lt;br /&gt;
#(!) summary for main lib RPM only&lt;br /&gt;
Summary:        Main library for gtkmm &lt;br /&gt;
Group:          System/Libraries&lt;br /&gt;
&lt;br /&gt;
%description -n %{libname}&lt;br /&gt;
This package contains the library needed to run programs dynamically&lt;br /&gt;
linked with gtkmm.&lt;br /&gt;
&lt;br /&gt;
%files -n %{libname}&lt;br /&gt;
# ..&lt;br /&gt;
# include the major number (and api if present) in the file list to catch&lt;br /&gt;
changes on version upgrade&lt;br /&gt;
%{_libdir}/lib-%{api}.so.%{major}*&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
%package -n %{devname}&lt;br /&gt;
Summary:        Headers for developing programs that will use Gtk--&lt;br /&gt;
Group:          Development/GNOME and GTK+&lt;br /&gt;
Requires:       %{libname} = %{EVRD}&lt;br /&gt;
#(!) Not mandatory, since we prefer to use pkgconfig-style dependencies.&lt;br /&gt;
# But if the library doesn&amp;#039;t have pkgconfig files, this provide is a must&lt;br /&gt;
Provides:       %{name}-devel = %{EVRD}&lt;br /&gt;
&lt;br /&gt;
%description -n %{devname}&lt;br /&gt;
This package contains the headers that programmers will need to develop&lt;br /&gt;
applications which will use Gtk--, the C++ interface to the GTK+ (the Gimp&lt;br /&gt;
ToolKit) GUI library.&lt;br /&gt;
&lt;br /&gt;
%files -n %{devname}&lt;br /&gt;
# ..&lt;br /&gt;
%{_bindir}/gtkmm-config&lt;br /&gt;
%{_includedir}/*.h&lt;br /&gt;
%{_libdir}/*.so&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Политики сборки пакетов]]&lt;/div&gt;</summary>
		<author><name>PastorDi</name></author>
	</entry>
</feed>