<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF155%3ARPM%3A</id>
		<title>LXF155:RPM: - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF155%3ARPM%3A"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF155:RPM:&amp;action=history"/>
		<updated>2026-05-13T17:05:29Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF155:RPM:&amp;diff=16531&amp;oldid=prev</id>
		<title>Olkol: /* Го­то­вим по­ли­гон для сбор­ки */</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF155:RPM:&amp;diff=16531&amp;oldid=prev"/>
				<updated>2018-06-27T00:10:46Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Го­то­вим по­ли­гон для сбор­ки&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 00:10, 27 июня 2018&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 119:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 119:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Фи­наль­ный штрих в под­го­тов­ке поль­зо­ва­тель­ско-спе­ци­фич­но­го ок­ру­же­ния: для сбор­ки па­ке­тов нам тре­бу­ет­ся сле­дую­щая ие­рар­хия ка­та­ло­гов:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Фи­наль­ный штрих в под­го­тов­ке поль­зо­ва­тель­ско-спе­ци­фич­но­го ок­ру­же­ния: для сбор­ки па­ке­тов нам тре­бу­ет­ся сле­дую­щая ие­рар­хия ка­та­ло­гов:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;BUILD_ROOT&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;BUILD_ROOT&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 131:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 131:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;- SRPMS	rpmbuild хра­нит здесь src.rpm-па­ке­ты&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;- SRPMS	rpmbuild хра­нит здесь src.rpm-па­ке­ты&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Поль­зо­ва­те­ли Fedora для соз­да­ния этой струк­ту­ры мо­гут вос­поль­зо­вать­ся ко­ман­дой&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Поль­зо­ва­те­ли Fedora для соз­да­ния этой струк­ту­ры мо­гут вос­поль­зо­вать­ся ко­ман­дой&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Olkol</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF155:RPM:&amp;diff=16530&amp;oldid=prev</id>
		<title>Olkol: /* Как пи­сать spec-файл */</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF155:RPM:&amp;diff=16530&amp;oldid=prev"/>
				<updated>2018-06-27T00:08:14Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Как пи­сать spec-файл&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 00:08, 27 июня 2018&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 33:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Рас­смот­рим ти­по­вую струк­ту­ру про­стей­ше­го spec-фай­ла HelloWorld-1.0.spec.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Рас­смот­рим ти­по­вую струк­ту­ру про­стей­ше­го spec-фай­ла HelloWorld-1.0.spec.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;1. Summary: Hello World program&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;1. Summary: Hello World program&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 67:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 67:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;17. rm -rf $RPM_BUILD_ROOT&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;17. rm -rf $RPM_BUILD_ROOT&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Сек­ция «За­го­ло­вок» (стро­ки 1 – 8) со­дер­жит основ­ные по­ля:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Сек­ция «За­го­ло­вок» (стро­ки 1 – 8) со­дер­жит основ­ные по­ля:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Olkol</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF155:RPM:&amp;diff=16502&amp;oldid=prev</id>
		<title>Olkol: Olkol переименовал страницу LXF154:RPM: в LXF155:RPM:: ошибка в номере</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF155:RPM:&amp;diff=16502&amp;oldid=prev"/>
				<updated>2018-06-26T10:46:35Z</updated>
		
		<summary type="html">&lt;p&gt;Olkol переименовал страницу &lt;a href=&quot;/wiki/LXF154:RPM:&quot; class=&quot;mw-redirect&quot; title=&quot;LXF154:RPM:&quot;&gt;LXF154:RPM:&lt;/a&gt; в &lt;a href=&quot;/wiki/LXF155:RPM:&quot; title=&quot;LXF155:RPM:&quot;&gt;LXF155:RPM:&lt;/a&gt;: ошибка в номере&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Версия 10:46, 26 июня 2018&lt;/td&gt;
			&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Olkol</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF155:RPM:&amp;diff=16438&amp;oldid=prev</id>
		<title>Olkol: /* RPM-па­кет: что внут­ри? */</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF155:RPM:&amp;diff=16438&amp;oldid=prev"/>
				<updated>2018-06-26T00:03:31Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;RPM-па­кет: что внут­ри?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 00:03, 26 июня 2018&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 8:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==RPM-па­кет: что внут­ри?==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==RPM-па­кет: что внут­ри?==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Врезка|left|Заголовок= Наш эксперт|Ширина=15%|Содержание=&amp;#160; Ольга Хлопкова&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Врезка|left|Заголовок= Наш эксперт|Ширина=15%|Содержание=&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;Ольга Хлопкова&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;учится на программиста-математика и живет в Stellarium’е.}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;учится на программиста-математика и живет в Stellarium’е.}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Olkol</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF155:RPM:&amp;diff=16437&amp;oldid=prev</id>
		<title>Olkol: /* RPM-па­кет: что внут­ри? */</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF155:RPM:&amp;diff=16437&amp;oldid=prev"/>
				<updated>2018-06-26T00:03:04Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;RPM-па­кет: что внут­ри?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 00:03, 26 июня 2018&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 8:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==RPM-па­кет: что внут­ри?==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==RPM-па­кет: что внут­ри?==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;KhlopkovaOlga.psd&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Врезка|left|Заголовок= Наш эксперт|Ширина=15%|Содержание=&amp;#160; Ольга Хлопкова&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Врезка|left|Заголовок= Наш эксперт|Ширина=15%|Содержание=&amp;#160; Ольга Хлопкова&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;учится на программиста-математика и живет в Stellarium’е.}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;учится на программиста-математика и живет в Stellarium’е.}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Ес­ли па­кет дво­ич­ный (рас­ши­рение rpm), в нем хра­нят­ся ском­пи­ли­ро­ван­ные под оп­ре­де­лен­ную ар­хи­тек­ту­ру фай­лы. Пра­ви­ла хо­ро­ше­го то­на и со­гла­шения об име­но­вании обя­зы­ва­ют ука­зы­вать ар­хи­тек­ту­ру, для ко­то­рой со­б­ран па­кет, в его на­звании. Па­кет со­дер­жит ис­пол­няе­мые фай­лы, кон­фи­ги, уста­но­воч­ные и необ­хо­ди­мые для уда­ления дей­ст­вия, а так­же ме­та­дан­ные со спи­ска­ми фай­лов, кон­троль­ны­ми сум­ма­ми и про­чей слу­жеб­ной ин­фор­ма­ци­ей.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Ес­ли па­кет дво­ич­ный (рас­ши­рение rpm), в нем хра­нят­ся ском­пи­ли­ро­ван­ные под оп­ре­де­лен­ную ар­хи­тек­ту­ру фай­лы. Пра­ви­ла хо­ро­ше­го то­на и со­гла­шения об име­но­вании обя­зы­ва­ют ука­зы­вать ар­хи­тек­ту­ру, для ко­то­рой со­б­ран па­кет, в его на­звании. Па­кет со­дер­жит ис­пол­няе­мые фай­лы, кон­фи­ги, уста­но­воч­ные и необ­хо­ди­мые для уда­ления дей­ст­вия, а так­же ме­та­дан­ные со спи­ска­ми фай­лов, кон­троль­ны­ми сум­ма­ми и про­чей слу­жеб­ной ин­фор­ма­ци­ей.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Olkol</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF155:RPM:&amp;diff=16436&amp;oldid=prev</id>
		<title>Olkol: Новая страница: «Категория:Постоянные рубрики   =RPM: Сде­ла­ем па­кет са­ми=  ''В ва­шей сис­те­ме най­де…»</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF155:RPM:&amp;diff=16436&amp;oldid=prev"/>
				<updated>2018-06-26T00:01:48Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «&lt;a href=&quot;/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D1%8B%D0%B5_%D1%80%D1%83%D0%B1%D1%80%D0%B8%D0%BA%D0%B8&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Категория:Постоянные рубрики (страница не существует)&quot;&gt;Категория:Постоянные рубрики&lt;/a&gt;   =RPM: Сде­ла­ем па­кет са­ми=  &amp;#039;&amp;#039;В ва­шей сис­те­ме най­де…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Категория:Постоянные рубрики]] &lt;br /&gt;
&lt;br /&gt;
=RPM: Сде­ла­ем па­кет са­ми=&lt;br /&gt;
&lt;br /&gt;
''В ва­шей сис­те­ме най­дет­ся при­ло­же­ние, дос­той­ное сбор­ки? От­лич­но. По­то­му что мы с Оль­гой Хлоп­ко­вой при­сту­па­ем к соз­да­нию соб­ст­вен­но­го RPM-па­ке­та.&lt;br /&gt;
''&lt;br /&gt;
Как пра­ви­ло, сбор­ка но­вых па­ке­тов – пре­ро­га­ти­ва раз­ра­бот­чи­ков ПО ли­бо ку­ра­то­ров-мейн­тейнеров, от­ве­чаю­щих за вы­пуск и под­держ­ку па­ке­тов. Од­на­ко пе­ре­краи­вание су­ще­ст­вую­ще­го па­ке­та – на­вык, по­лез­ный и сис­тем­но­му ад­минист­ра­то­ру: на­при­мер, ес­ли тре­бу­ет­ся пе­ре­со­брать RPM под необ­хо­ди­мую про­цес­сор­ную ар­хи­тек­ту­ру или ди­ст­ри­бу­тив, до­ба­вить в па­кет за­плат­ки или из­менить оп­ции уста­нов­ки.&lt;br /&gt;
&lt;br /&gt;
==RPM-па­кет: что внут­ри?==&lt;br /&gt;
KhlopkovaOlga.psd&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|Заголовок= Наш эксперт|Ширина=15%|Содержание=  Ольга Хлопкова&lt;br /&gt;
 &lt;br /&gt;
учится на программиста-математика и живет в Stellarium’е.}}&lt;br /&gt;
Ес­ли па­кет дво­ич­ный (рас­ши­рение rpm), в нем хра­нят­ся ском­пи­ли­ро­ван­ные под оп­ре­де­лен­ную ар­хи­тек­ту­ру фай­лы. Пра­ви­ла хо­ро­ше­го то­на и со­гла­шения об име­но­вании обя­зы­ва­ют ука­зы­вать ар­хи­тек­ту­ру, для ко­то­рой со­б­ран па­кет, в его на­звании. Па­кет со­дер­жит ис­пол­няе­мые фай­лы, кон­фи­ги, уста­но­воч­ные и необ­хо­ди­мые для уда­ления дей­ст­вия, а так­же ме­та­дан­ные со спи­ска­ми фай­лов, кон­троль­ны­ми сум­ма­ми и про­чей слу­жеб­ной ин­фор­ма­ци­ей.&lt;br /&gt;
&lt;br /&gt;
Па­кет с ис­ходника­ми src.rpm со­дер­жит сред­ст­ва, необ­хо­ди­мые для сбор­ки дво­ич­но­го па­ке­та. В этом-то и за­клю­ча­ет­ся пре­лесть RPM – об­ла­дая src-па­ке­том, мож­но пе­ре­со­би­рать дво­ич­ный па­кет для раз­лич­ных це­ле­вых ар­хи­тек­тур и ди­ст­ри­бу­ти­вов!&lt;br /&gt;
&lt;br /&gt;
==Как пи­сать spec-файл==&lt;br /&gt;
&lt;br /&gt;
Spec-файл – файл спе­ци­фи­ка­ции RPM-па­ке­та с рас­ши­рением .spec. Иг­ра­ет клю­че­вую роль в пе­ре­сбор­ке па­ке­та и оп­ре­де­ля­ет ди­рек­ти­вы rpm для его уста­нов­ки и уда­ления. К нему ути­ли­та rpmbuild об­ра­ща­ет­ся во вре­мя по­строения при­ло­жения. Кста­ти, име­на spec-фай­лам при­ня­то да­вать по имени па­ке­та.&lt;br /&gt;
&lt;br /&gt;
Ин­ст­рук­ции внут­ри spec-фай­ла раз­би­ты на сек­ции, раз­де­ляю­щие­ся сим­во­лом “ %”, и име­ют неза­мы­сло­ва­тый син­так­сис&lt;br /&gt;
&lt;br /&gt;
имя по­ля: зна­че­ние&lt;br /&gt;
&lt;br /&gt;
при­чем имя по­ля ре­гис­тро­не­за­ви­си­мо. Ком­мен­та­рии обо­зна­ча­ют­ся сим­во­лом “#”.&lt;br /&gt;
&lt;br /&gt;
В spec-фай­лах мо­гут ис­поль­зо­вать­ся мак­ро­сы. Например:&lt;br /&gt;
&lt;br /&gt;
%define Hello echo “Hello World”&lt;br /&gt;
&lt;br /&gt;
%{hello}&lt;br /&gt;
&lt;br /&gt;
Рас­смот­рим ти­по­вую струк­ту­ру про­стей­ше­го spec-фай­ла HelloWorld-1.0.spec.&lt;br /&gt;
&lt;br /&gt;
1. Summary: Hello World program&lt;br /&gt;
&lt;br /&gt;
2. %define version 1.0&lt;br /&gt;
&lt;br /&gt;
3. Name: HelloWorld&lt;br /&gt;
&lt;br /&gt;
4. Version: %{version}&lt;br /&gt;
&lt;br /&gt;
5. Release: 1&lt;br /&gt;
&lt;br /&gt;
6. Copyright: GPL&lt;br /&gt;
&lt;br /&gt;
7. Source: HelloWorld-1.0.tar.gz&lt;br /&gt;
&lt;br /&gt;
8. Buildroot: /tmp/HelloWorldrpm&lt;br /&gt;
&lt;br /&gt;
9. %prep&lt;br /&gt;
&lt;br /&gt;
10. %setup&lt;br /&gt;
&lt;br /&gt;
11. %build&lt;br /&gt;
&lt;br /&gt;
12. ./configure&lt;br /&gt;
&lt;br /&gt;
13. make&lt;br /&gt;
&lt;br /&gt;
14. %install&lt;br /&gt;
&lt;br /&gt;
15. make install&lt;br /&gt;
&lt;br /&gt;
16. %clean&lt;br /&gt;
&lt;br /&gt;
17. rm -rf $RPM_BUILD_ROOT&lt;br /&gt;
&lt;br /&gt;
Сек­ция «За­го­ло­вок» (стро­ки 1 – 8) со­дер­жит основ­ные по­ля:&lt;br /&gt;
&lt;br /&gt;
*Summary – од­но­строч­ное опи­сание при­ло­жения.&lt;br /&gt;
&lt;br /&gt;
*Name, Version и Release – кри­тич­ны для ра­бо­ты при­ло­жения и долж­ны сов­па­дать с ин­фор­ма­ци­ей в на­звании RPM-па­ке­та.&lt;br /&gt;
&lt;br /&gt;
*Source – рас­по­ло­жение ар­хи­ва с ис­ходника­ми.&lt;br /&gt;
&lt;br /&gt;
*BuildRoot – путь, по ко­то­ро­му бу­дет со­би­рать­ся па­кет.&lt;br /&gt;
&lt;br /&gt;
Сек­ция “prep” (стро­ки 9, 10) необ­хо­ди­ма для под­го­тов­ки ис­ходников к по­строению: в ней про­ис­хо­дит рас­па­ков­ка и на­ло­жение за­плат. В про­стых слу­ча­ях доста­точ­но мак­ро­са %setup.&lt;br /&gt;
&lt;br /&gt;
По­сле под­го­тов­ки сле­ду­ет про­цесс сбор­ки. За него от­ве­ча­ет сек­ция с го­во­ря­щим на­званием “build” (стро­ки 11 – 13).&lt;br /&gt;
&lt;br /&gt;
И вот, ста­дия сбор­ки прой­де­на, и мож­но при­сту­пить непо­сред­ст­вен­но к уста­нов­ке, за ко­то­рую от­ве­ча­ют ко­ман­ды сек­ции “install” (стро­ки 14, 15).&lt;br /&gt;
&lt;br /&gt;
На­конец, в сек­ции “clean” (стро­ки 16, 17) очи­ща­ют­ся ка­та­ло­ги сбор­ки и уста­нов­ки.&lt;br /&gt;
&lt;br /&gt;
Конеч­но, это да­ле­ко не все сек­ции, ко­то­рые мо­гут при­сут­ст­во­вать в spec-фай­ле, но для на­ча­ла вполне доста­точ­но.&lt;br /&gt;
&lt;br /&gt;
==От­ли­ча­ют­ся ли spec-фай­лы раз­ных ди­ст­ри­бу­ти­вов?==&lt;br /&gt;
&lt;br /&gt;
Да, и по­рой су­ще­ст­вен­но. Соб­ст­вен­ные мак­ро­оп­ре­де­ления, раз­ли­чия в на­звании по­лей, пра­ви­ла за­полнения сек­ций... Все это при­во­дит к несо­вмес­ти­мо­сти spec-фай­лов ме­ж­ду ди­ст­ри­бу­ти­ва­ми и необ­хо­ди­мо­сти их пре­об­ра­зо­вания. В Fedora, на­при­мер, от­сут­ст­ву­ет по­ле buildRoot: ме­сто сбор­ки при­ло­жения за­да­ет­ся по умол­чанию. Но ча­ще все­го разница ме­ж­ду spec-фай­ла­ми не кри­тич­на, а ис­прав­ление не отнима­ет мно­го вре­мени.&lt;br /&gt;
&lt;br /&gt;
==Техника безо­пас­но­сти==&lt;br /&gt;
&lt;br /&gt;
В сек­ции %install spec-фай­ла корневым ка­та­ло­гом мо­жет быть ука­зан /, и тогда стро­ка&lt;br /&gt;
&lt;br /&gt;
rm -rf $RPM_BUILD_ROOT&lt;br /&gt;
&lt;br /&gt;
из сек­ции %clean снесет ваш Linux пре­ж­де, чем вы пой­ме­те, что про­ис­хо­дит. Не так страш­но, но то­же ве­ро­ят­но: па­кет уста­но­вит­ся пря­мо в до­машний ка­та­лог %{_prefix} (/usr) и по­вре­дит фай­лы поль­зо­ва­те­ля.&lt;br /&gt;
&lt;br /&gt;
Вы­вод оче­ви­ден: для манипу­ля­ций с тон­кой ма­те­ри­ей RPM-па­ке­тов не по­ме­ша­ет за­вес­ти но­во­го непри­ви­ле­ги­ро­ван­но­го поль­зо­ва­те­ля. По крайней ме­ре, не сто­ит со­би­рать па­ке­ты из-под root.&lt;br /&gt;
&lt;br /&gt;
==Что бу­дем со­би­рать?==&lt;br /&gt;
&lt;br /&gt;
При­ло­жение сто­роннего раз­ра­бот­чи­ка? Про­грам­му с де­сят­ком но­вых по­пра­вок? А мо­жет, соб­ст­вен­но­руч­но на­пи­сан­ный код? В лю­бом слу­чае нам по­тре­бу­ет­ся ар­хив tar.gz или tar.bz2 при­ло­жения, в ко­то­ром долж­ны на­хо­дить­ся ис­ходники и Makefile.&lt;br /&gt;
&lt;br /&gt;
==Ин­ст­ру­мен­та­рий==&lt;br /&gt;
&lt;br /&gt;
Что­бы при­сту­пить к соз­данию соб­ст­вен­но­го па­ке­та, нам по­тре­бу­ет­ся rpm-build – па­кет, со­дер­жа­щий ути­ли­ты и скрип­ты для сбор­ки RPM. Ес­ли вы не об­на­ру­жи­ли его в со­ста­ве ди­ст­ри­бу­ти­ва, не от­чаи­вай­тесь: он есть в ре­по­зи­то­ри­ях (еще один плюс RPM-па­ке­тов – их рас­про­странен­ность и доступ­ность).&lt;br /&gt;
&lt;br /&gt;
В дальней­шем для сбор­ки RPM мы восполь­зу­ем­ся ути­ли­той rpmbuild, вхо­дя­щей в со­став это­го па­ке­та. Ес­ли вы со­би­рае­те RPM под Fedora, то вам по­на­до­бят­ся па­ке­ты Development Tools и rpmdevtools.&lt;br /&gt;
&lt;br /&gt;
==Го­то­вим по­ли­гон для сбор­ки==&lt;br /&gt;
&lt;br /&gt;
По умол­чанию пра­ва­ми для сбор­ки па­ке­тов об­ла­да­ет толь­ко root. Но ими мож­но на­де­лить и обыч­но­го поль­зо­ва­те­ля (це­ле­со­об­раз­ность дан­но­го ме­ро­прия­тия под­черк­ну­та вы­ше). Для это­го соз­да­ем в до­машней ди­рек­то­рии мак­рос .rpmmacros. За­пи­сы­ва­ем в этот файл ди­рек­ти­ву: %_topdir /home/username/BUILD_ROOT&lt;br /&gt;
&lt;br /&gt;
Путь /home/username/ в секции %_topdir – домашний каталог. В нем бу­дет про­хо­дить сбор­ка.&lt;br /&gt;
&lt;br /&gt;
Фи­наль­ный штрих в под­го­тов­ке поль­зо­ва­тель­ско-спе­ци­фич­но­го ок­ру­же­ния: для сбор­ки па­ке­тов нам тре­бу­ет­ся сле­дую­щая ие­рар­хия ка­та­ло­гов:&lt;br /&gt;
&lt;br /&gt;
BUILD_ROOT&lt;br /&gt;
&lt;br /&gt;
- BUILD	rpmbuild про­во­дит здесь сбор­ку фай­лов при­ло­же­ния&lt;br /&gt;
&lt;br /&gt;
- RPMS	rpmbuild хра­нит со­б­ран­ные дво­ич­ные RPM-па­ке­ты&lt;br /&gt;
&lt;br /&gt;
- SOURCES	Вы по­ме­щае­те сю­да тар­бол­лы про­грамм для сбор­ки&lt;br /&gt;
&lt;br /&gt;
- SPECS	Вы соз­дае­те здесь spec-фай­лы про­ек­тов для сбор­ки&lt;br /&gt;
&lt;br /&gt;
- SRPMS	rpmbuild хра­нит здесь src.rpm-па­ке­ты&lt;br /&gt;
&lt;br /&gt;
Поль­зо­ва­те­ли Fedora для соз­да­ния этой струк­ту­ры мо­гут вос­поль­зо­вать­ся ко­ман­дой&lt;br /&gt;
&lt;br /&gt;
rpmdev-setuptree&lt;br /&gt;
&lt;br /&gt;
Вруч­ную же это де­ла­ет­ся так:&lt;br /&gt;
&lt;br /&gt;
mkdir ~/BUILD_ROOT/{RPMS,SRPMS,SPECS,SOURCES,BUILD}&lt;br /&gt;
&lt;br /&gt;
Кста­ти, в ка­та­ло­ге RPMS во вре­мя сбор­ки, в за­ви­си­мо­сти от ар­хи­тек­ту­ры це­ле­вой сис­те­мы, ав­то­ма­ти­че­ски соз­да­дут­ся под­ка­та­ло­ги (на­при­мер, i386 или noarch).&lt;br /&gt;
&lt;br /&gt;
Что ж, де­ре­во не­об­хо­ди­мых ка­та­ло­гов у нас име­ет­ся, ос­та­лось их за­пол­нить.&lt;br /&gt;
&lt;br /&gt;
Ар­хив с ис­ход­ни­ка­ми прло­же­ния, ко­то­рое мы на­ме­ре­ны со­брать в RPM-па­кет, по­ме­ща­ем в пап­ку /SOURCES, а spec-файл – в ка­та­лог /SPECS. И у tar-ар­хи­ва, и у фай­ла спе­ци­фи­ка­ции долж­ны быть име­на оп­ре­де­лен­ной струк­ту­ры: на­зва­ние-вер­сия-ре­лиз.&lt;br /&gt;
&lt;br /&gt;
rpmbuild: стро­им па­кет&lt;br /&gt;
&lt;br /&gt;
Ба­зо­вый син­так­сис rpmbuild –&lt;br /&gt;
&lt;br /&gt;
rpmbuild -bSTAGE package_name.spec&lt;br /&gt;
&lt;br /&gt;
Оп­ция b ис­поль­зу­ет­ся для сбор­ки па­ке­та, а STAGE ука­зы­ва­ет за­вер­шаю­щую ста­дию сбор­ки. Для на­ча­ла вам мо­гут при­го­дить­ся сле­дую­щие зна­че­ния STAGE:&lt;br /&gt;
&lt;br /&gt;
* a – Сбор­ка дво­ич­но­го па­ке­та и па­ке­та с ис­ход­ни­ка­ми.&lt;br /&gt;
&lt;br /&gt;
* b – Сбор­ка толь­ко дво­ич­но­го па­ке­та RPM.&lt;br /&gt;
&lt;br /&gt;
* s – Сбор­ка толь­ко па­ке­та с ис­ход­ни­ка­ми src.rpm.&lt;br /&gt;
&lt;br /&gt;
* l – Про­вер­ка спи­ска фай­лов для па­ке­та с вы­во­дом оши­бок.&lt;br /&gt;
&lt;br /&gt;
Уз­нать ос­таль­ные па­ра­мет­ры, как обыч­но, по­мо­жет оп­ция -help.&lt;br /&gt;
&lt;br /&gt;
По­про­бу­ем со­брать па­кет из на­ше­го tar-ар­хи­ва HelloWorld-1.0.tar.gz и од­но­имен­но­го spec-фай­ла HelloWorld-1.0.spec:&lt;br /&gt;
&lt;br /&gt;
rpmbuild -ba HelloWorld-1.0.spec&lt;br /&gt;
&lt;br /&gt;
Cобрать па­кет для дру­гой ар­хи­тек­ту­ры мож­но таким об­ра­зом:&lt;br /&gt;
&lt;br /&gt;
rpmbuild -ba --target i686 HelloWorld-1.0.spec&lt;br /&gt;
&lt;br /&gt;
А вот как вы­гля­дит рас­про­стра­нен­ная ошик­бка, вы­да­вае­мая rpmbuild:&lt;br /&gt;
&lt;br /&gt;
error: Installed (but unpackaged) file(s) found&lt;br /&gt;
&lt;br /&gt;
Та­ким об­ра­зом rpmbuild со­об­ща­ет о най­ден­ных, но не упа­ко­ван­ных фай­лах. Ес­ли вы не хо­ти­те вклю­чать их в ар­хив, до­бавь­те в на­ча­ло spec-фай­ла стро­ку&lt;br /&gt;
&lt;br /&gt;
%define _unpackaged_files_terminate_build 0&lt;br /&gt;
&lt;br /&gt;
В про­тив­ном слу­чае пе­ре­чис­ли­те фай­лы в сек­ции %files.&lt;br /&gt;
&lt;br /&gt;
По­сле соз­да­ния па­ке­та очи­стим ди­рек­то­рии сбор­ки и ус­та­нов­ки при­ло­же­ния:&lt;br /&gt;
&lt;br /&gt;
rpmbuild --clean HelloWorld-1.0.spec&lt;br /&gt;
&lt;br /&gt;
За­гля­ни­те в ди­рек­то­рии RPMS и SRPMS: ес­ли сбор­ка про­шла глад­ко, там поя­вят­ся со­от­вет­ст­вен­но дво­ич­ный па­кет и па­кет ис­ход­ни­ков.&lt;br /&gt;
&lt;br /&gt;
==Па­кет го­тов. Что даль­ше?==&lt;br /&gt;
&lt;br /&gt;
Наш RPM со­б­ран – ос­та­лось его про­тес­ти­ро­вать. Ус­та­нав­ли­ва­ет­ся па­кет ко­ман­дой rpm:&lt;br /&gt;
&lt;br /&gt;
rpm -i HelloWorld-1.0.rpm&lt;br /&gt;
&lt;br /&gt;
Ес­ли в сис­те­ме при­сут­ст­ву­ет бо­лее ста­рая вер­сия па­ке­та, вос­поль­зуй­тесь оп­ци­ей -U для об­нов­ле­ния. Поя­ви­лось же­ла­ние сде­лать про­цесс ин­стал­ля­ции бо­лее ин­фор­ма­тив­ным? В со­че­та­нии с эти­ми оп­ция­ми ис­поль­зуй­те -hv и на­сла­ж­дай­тесь кон­соль­ным про­гресс-ин­ди­ка­то­ром:&lt;br /&gt;
&lt;br /&gt;
rpm -ihv HelloWorld-1.0.rpm&lt;br /&gt;
&lt;br /&gt;
Preparing...	############################# [100%]&lt;br /&gt;
&lt;br /&gt;
1: HelloWorld	############################# [100%]&lt;br /&gt;
&lt;br /&gt;
Для уда­ле­ния па­ке­та пред­на­зна­че­на оп­ция -e. В ар­се­на­ле про­грам­мы rpm мас­са по­лез­ных средств, сре­ди ко­то­рых – про­вер­ка вер­сии ус­та­нов­лен­но­го па­ке­та, элек­трон­ной под­пи­си и це­ло­ст­но­сти.&lt;br /&gt;
&lt;br /&gt;
Те­перь, ко­гда вы ос­вои­ли азы и го­то­вы по­сти­гать тон­ко­сти па­ке­то­строе­ния, пе­ред ва­ми от­кры­ва­ют­ся мно­го­чис­лен­ные воз­мож­но­сти: на­строй­ка ба­зы дан­ных RPM, скрип­тинг па­ке­тов или да­же соз­да­ние соб­ст­вен­ных ре­по­зи­то­ри­ев RPM.&lt;br /&gt;
&lt;br /&gt;
==Име­но­ва­ние RPM-фай­лов==&lt;br /&gt;
&lt;br /&gt;
Тра­ди­ци­он­но име­на RPM-па­ке­тов име­ют сле­дую­щий фор­мат: на­зва­ние-вер­сия-&lt;br /&gt;
ре­лиз.[ар­хи­тек­ту­ра|noarch|src].[rpm|rpms]&lt;br /&gt;
&lt;br /&gt;
На­при­мер: clamav-0.95.2-4.rh7.rf.i386.rpm.&lt;br /&gt;
&lt;br /&gt;
Как не­труд­но до­га­дать­ся, ес­ли вме­сто кон­крет­ной плат­фор­мы ука­зы­ва­ет­ся “noarch”, то со­дер­жи­мое па­ке­та плат­фор­мо­не­за­ви­си­мо. Как пра­ви­ло, та­кие па­ке­ты со­дер­жат ин­тер­пре­ти­руе­мые скрип­ты, до­ку­мен­та­цию, GUI-над­строй­ки для дру­гих при­ло­же­ний. Пост­фикс .src.rpm ука­зы­ва­ет­ся для па­ке­та с ис­ход­ным ко­дом.&lt;br /&gt;
&lt;br /&gt;
==Шаг за шагом: Это легче, чем может показаться ==&lt;br /&gt;
1&lt;br /&gt;
Но­вый поль­зо­ва­тель&lt;br /&gt;
&lt;br /&gt;
За­хо­дим в кон­соль от имени root, что­бы за­ре­ги­ст­ри­ро­вать но­во­го поль­зо­ва­те­ля. Для это­го пред­на­зна­че­на ко­ман­да useradd (в неко­то­рых ди­ст­ри­бу­ти­вах – adduser). Ана­ло­гич­но, для уда­ления ис­поль­зу­ет­ся deluser (или userdel).&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
Мак­рос&lt;br /&gt;
&lt;br /&gt;
В до­машнем ка­та­ло­ге поль­зо­ва­те­ля из­ме­ня­ем мак­рос .rpmmacros, за­пи­сав в него пу­ти к ка­та­ло­гам, в ко­то­рых бу­дет про­ис­хо­дить сбор­ка. За­хо­дим как но­вый поль­зо­ва­тель.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3&lt;br /&gt;
Ие­рар­хия ка­та­ло­гов&lt;br /&gt;
&lt;br /&gt;
Ути­ли­той mkdir соз­да­дим в до­машнем ка­та­ло­ге ие­рар­хию ди­рек­то­рий, необ­хо­ди­мую для сбор­ки RPM-па­ке­тов.&lt;br /&gt;
&lt;br /&gt;
4&lt;br /&gt;
Фай­лы — по мес­там&lt;br /&gt;
&lt;br /&gt;
По­сле под­го­тов­ки струк­ту­ры ка­та­ло­гов ко­пи­ру­ем tar-ар­хив про­грам­мы, ко­то­рую мы планиру­ем по­мес­тить в RPM-па­кет, в пап­ку SOURCES. Spec-файл по­ме­ща­ем в пап­ку SPECS.&lt;br /&gt;
&lt;br /&gt;
5&lt;br /&gt;
Сбор­ка па­ке­та&lt;br /&gt;
&lt;br /&gt;
Со­бе­рем па­кет ути­ли­той rpmbuild. По хо­ду ра­бо­ты она вы­во­дит в кон­соль эта­пы вы­полнения. В и­тоге успеш­ной сбор­ки в ка­та­ло­ге RPMS ока­жет­ся дво­ич­ный па­кет, а в SRPMS – па­кет с ис­ходника­ми! И вправду легко.&lt;br /&gt;
&lt;br /&gt;
==Тер­ми­но­ло­гия па­ке­то­строения==&lt;br /&gt;
&lt;br /&gt;
*RPM (ак­роним от RPM Package Manager) – менед­жер па­ке­тов RPM, ис­поль­зуе­мый во мно­гих ди­ст­ри­бу­ти­вах (Red Hat, Suse, Fedora, ASP, Alt Linux, CentOs и др.). Так­же под RPM под­ра­зу­ме­ва­ют са­ми RPM-па­ке­ты. При­ня­то счи­тать па­кет дво­ич­ным, ес­ли не уточнено, что в нем со­дер­жат­ся ис­ходники и не ука­зан пост­фикс src.rpm.&lt;br /&gt;
&lt;br /&gt;
*Spec-файл (файл спе­ци­фи­ка­ции) – тек­сто­вый файл с рас­ши­рением .spec, необ­хо­ди­мый ути­ли­те rpmbuild и оп­ре­де­ляю­щий дей­ст­вия при по­строении при­ло­жения.&lt;br /&gt;
&lt;br /&gt;
*rpmbuild – ути­ли­та для сбор­ки па­ке­тов, как дво­ич­ных, так и с ис­ход­ным ко­дом. Вхо­дит в со­став па­ке­та rpm-build.&lt;br /&gt;
&lt;br /&gt;
*NVR (name-version-release) – по­ля имени, вер­сии и ре­ли­за в фай­ле спе­ци­фи­ка­ции. Цен­траль­ная ча­сть сек­ции опи­сания. На ос­но­ве данных этих по­лей выполня­ет­ся кон­троль вер­сий и за­ви­си­мо­стей па­ке­та.&lt;br /&gt;
&lt;br /&gt;
*Ба­за дан­ных RPM – БД ди­ст­ри­бу­ти­ва, содержащая ин­фор­ма­цию обо всех па­ке­тах, уста­нов­лен­ных в сис­те­ме. На­хо­дит­ся в пап­ке /var/lib/rpm.&lt;/div&gt;</summary>
		<author><name>Olkol</name></author>	</entry>

	</feed>