<?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=Notamock</id>
	<title>Notamock - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.rosa.ru/index.php?action=history&amp;feed=atom&amp;title=Notamock"/>
	<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Notamock&amp;action=history"/>
	<updated>2026-05-09T22:52:04Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Notamock&amp;diff=249&amp;oldid=prev</id>
		<title>PastorDi в 14:32, 23 апреля 2025</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Notamock&amp;diff=249&amp;oldid=prev"/>
		<updated>2025-04-23T14:32:42Z</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;Версия от 17:32, 23 апреля 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 colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Notamock — набор утилит, создающих окружения для сборки rpm пакетов в Rosa Linux.&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; 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;=== Notamock &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;— набор утилит, создающих окружения для сборки rpm пакетов &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;=== Notamock ===&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;Частично пересекается по задачам с mock, отсюда и название.&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;Частично пересекается по задачам с mock, отсюда и название.&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;/table&gt;</summary>
		<author><name>PastorDi</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Notamock&amp;diff=207&amp;oldid=prev</id>
		<title>Betcher: /* Общее */</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Notamock&amp;diff=207&amp;oldid=prev"/>
		<updated>2025-03-28T07:05:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Общее&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;Версия от 10:05, 28 марта 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-l13&quot;&gt;Строка 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 13:&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;==== Общее ====&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;==== Общее ====&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;* все утилиты требуют прав root, связано c использованием монтирований. Далее по тексту su, sudo опускаются.&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;* все утилиты требуют прав root, связано c использованием монтирований. Далее по тексту su, sudo опускаются.&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;* все утилиты имеют общий конфигурационный файл, по умолчанию это /etc/notamock.cfg (можно использовать собственные с ключом --config /путь/файл.cfg)&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;* все утилиты имеют общий конфигурационный файл, по умолчанию это /etc/notamock.cfg (можно использовать собственные с ключом --config /путь/файл.cfg)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, а также файлы в /etc/notamock.d/&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;* все утилиты имеют встроенный --help&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;* все утилиты имеют встроенный --help&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;* все утилиты, запущенные с одним конфигом, будут использовать одни и те же базовые rootfs. Такие rootfs создаются по одной для каждой платформы и многократно переиспользуются. Например при запуске notamockd создается контейнер использующий такую rootfs, билдеры в контейнере используют notamock, каждый процесс которого, в свою очередь, также будет использовать ровно ту же базовую rootfs. Количество rootfs соответствует количеству поддерживаемых платформ и никак не зависит от количества процессов notamock, контейнеров и билдеров.&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;* все утилиты, запущенные с одним конфигом, будут использовать одни и те же базовые rootfs. Такие rootfs создаются по одной для каждой платформы и многократно переиспользуются. Например при запуске notamockd создается контейнер использующий такую rootfs, билдеры в контейнере используют notamock, каждый процесс которого, в свою очередь, также будет использовать ровно ту же базовую rootfs. Количество rootfs соответствует количеству поддерживаемых платформ и никак не зависит от количества процессов notamock, контейнеров и билдеров.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Betcher</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Notamock&amp;diff=206&amp;oldid=prev</id>
		<title>Betcher в 06:54, 28 марта 2025</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Notamock&amp;diff=206&amp;oldid=prev"/>
		<updated>2025-03-28T06:54:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://wiki.rosa.ru/index.php?title=Notamock&amp;amp;diff=206&amp;amp;oldid=205&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Betcher</name></author>
	</entry>
	<entry>
		<id>http://wiki.rosa.ru/index.php?title=Notamock&amp;diff=205&amp;oldid=prev</id>
		<title>Betcher: Новая страница: « = Notamock = Материал из Rosalab Wiki  Перейти к: навигация, поиск  == Содержание ==  * 1 Notamock — набор утилит, создающих окружения для сборки rpm пакетов ** 1.1 Общее ** 1.2 notamock ** 1.3 notamocks ** 1.4 notamockd *** 1.4.1 Основной режим *** 1.4.2 Образ для докера ** 1.5 notamockc ** 1.6 notamock + svace  = Notamock — набор...»</title>
		<link rel="alternate" type="text/html" href="http://wiki.rosa.ru/index.php?title=Notamock&amp;diff=205&amp;oldid=prev"/>
		<updated>2025-03-28T06:47:31Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: « = Notamock = Материал из Rosalab Wiki  Перейти к: навигация, поиск  == Содержание ==  * 1 Notamock — набор утилит, создающих окружения для сборки rpm пакетов ** 1.1 Общее ** 1.2 notamock ** 1.3 notamocks ** 1.4 notamockd *** 1.4.1 Основной режим *** 1.4.2 Образ для докера ** 1.5 notamockc ** 1.6 notamock + svace  = Notamock — набор...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
= Notamock =&lt;br /&gt;
Материал из Rosalab Wiki&lt;br /&gt;
&lt;br /&gt;
Перейти к: навигация, поиск&lt;br /&gt;
&lt;br /&gt;
== Содержание ==&lt;br /&gt;
&lt;br /&gt;
* 1 Notamock — набор утилит, создающих окружения для сборки rpm пакетов&lt;br /&gt;
** 1.1 Общее&lt;br /&gt;
** 1.2 notamock&lt;br /&gt;
** 1.3 notamocks&lt;br /&gt;
** 1.4 notamockd&lt;br /&gt;
*** 1.4.1 Основной режим&lt;br /&gt;
*** 1.4.2 Образ для докера&lt;br /&gt;
** 1.5 notamockc&lt;br /&gt;
** 1.6 notamock + svace&lt;br /&gt;
&lt;br /&gt;
= Notamock — набор утилит, создающих окружения для сборки rpm пакетов =&lt;br /&gt;
Частично пересекается по задачам с mock, отсюда и название.&lt;br /&gt;
&lt;br /&gt;
* notamock - утилита для запуска одиночного процесса локальной сборки проекта&lt;br /&gt;
* notamocks - (+ s - множественное число) утилита для запуска локальной массовой сборки проектов с использованием notamock&lt;br /&gt;
* notamockc - (+ c - от chroot) утилита для создания контейнеров аналогично тому как делает notamock, но запустить в нем можно любую команду, по умолчанию bash&lt;br /&gt;
* notamockd - (+ d - от daemon) утилита для создания контейнеров для сборки с abf&lt;br /&gt;
* notamocka - (+ a - от abf) скрипт запуска abf билдеров в контейнере, используется только внутри контейнера в отличии от остальных утилит находится в отдельном пакете notamock-abf&lt;br /&gt;
&lt;br /&gt;
Общая идея проекта отличающая его от mock заключается в использовании слоеных контейнеров, где нижний слой со стандартной рутфс общий для всех запущенных сборочных процессов сколько бы их ни было. Примерно аналогично работает докер. Это позволяет увеличить среднюю скорость сборки, за счет того, что минимальное окружение всегда готово и требуется установить только сборочные зависимости.&lt;br /&gt;
&lt;br /&gt;
== Общее ==&lt;br /&gt;
&lt;br /&gt;
* все утилиты требуют прав root, связано c использованием монтирований. Далее по тексту su, sudo опускаются.&lt;br /&gt;
* все утилиты имеют общий конфигурационный файл, по умолчанию это /etc/notamock.cfg (можно использовать собственные с ключом --config /путь/файл.cfg)&lt;br /&gt;
* все утилиты имеют встроенный --help&lt;br /&gt;
* все утилиты, запущенные с одним конфигом, будут использовать одни и те же базовые rootfs. Такие rootfs создаются по одной для каждой платформы и многократно переиспользуются. Например при запуске notamockd создается контейнер использующий такую rootfs, билдеры в контейнере используют notamock, каждый процесс которого, в свою очередь, также будет использовать ровно ту же базовую rootfs. Количество rootfs соответствует количеству поддерживаемых платформ и никак не зависит от количества процессов notamock, контейнеров и билдеров.&lt;br /&gt;
* для пересоздания базовой rootfs нужно запустить любую из утилит с ключом -u в момент, когда rootfs не используется другими утилитами notamock. Для обновления rootfs ничего дополнительно делать не нужно.&lt;br /&gt;
&lt;br /&gt;
== notamock ==&lt;br /&gt;
Скрипт в первую очередь предназначен для локальной сборки проектов с abf. Но может собрать и по src.rpm. Например для локальной пересборки текущей версии lsof можно использовать такие команды:&lt;br /&gt;
    dnf install abb notamock&lt;br /&gt;
    abb clone lsof&lt;br /&gt;
    cd lsof&lt;br /&gt;
    notamock&lt;br /&gt;
Первая сборка будет достаточно продолжительной, так как создается rootfs. Последующие сборки в том числе и других проектов, будут значительно быстрее. notamock как и остальные утилиты проекта имеет встроенный --help, кроме параметров в справке можно переопределить любое значение установленное в /etc/notamock.cfg в cmdline notamock, например:&lt;br /&gt;
    notamock BUILD_cmd=&amp;quot;abb build -ba&amp;quot; RPMSAVE=yes&lt;br /&gt;
Наиболее полезные, на мой взгляд, опции:&lt;br /&gt;
&lt;br /&gt;
* -v - более подробный выхлоп&lt;br /&gt;
* -r - сборка для платформы отличной от текущей, например: -r 2023.1&lt;br /&gt;
* -e - остановка в сборочном контейнере перед запуском BUILD_cmd, можно править спек и запускать сборку с abb build. Полезно когда сборка падает. Два важных момента:&lt;br /&gt;
&lt;br /&gt;
# не работает совместно с ключом -v&lt;br /&gt;
# измененный вами спек при выходе из этого режима (exit) не сохранится, но можно сделать копию спека с другим именем она сохранится.&lt;br /&gt;
&lt;br /&gt;
* RPMSAVE=yes - заставит сохранить все скачанные сборочные зависимости во внутренний репозиторий notamock. Этот репозиторий подключается всегда, но пакеты попадают в этот реп только при наличии RPMSAVE=yes. То есть достаточно добавить при сборке конкретного проекта один раз и для последующих сборок зависимости будут устанавливаться из локального репозитория.&lt;br /&gt;
* REUSABLE=yes - заставит notamock использовать один и тот же контейнер с установленными BR для каждой сборки проекта. То есть это максимально быстрая сборка при работе над одним проектом. Важно:&lt;br /&gt;
&lt;br /&gt;
# контейнер будет сброшен если запустить сборку без REUSABLE=yes&lt;br /&gt;
# контейнер будет сброшен если запустить сборку другого проекта&lt;br /&gt;
&lt;br /&gt;
* PM_config=/home/user/dnf.conf - сборка с подменой конфига пакетного менеджера&lt;br /&gt;
* TMPD=/путь/папка - использовать указанный каталог вместо /tmp/notamock, полезно для гигантских проектов для сборки которых не достаточно размера /tmp хоста.&lt;br /&gt;
&lt;br /&gt;
Более подробно в notamock --help и cat /etc/notamock.cfg. В notamock.cfg вынесено достаточно много настроек, например можно перевести сборку с dnf на yum только изменениями в этом конфиге.&lt;br /&gt;
&lt;br /&gt;
== notamocks ==&lt;br /&gt;
Утилита для локальных массбилдов с notamock. Сборки идут параллельно в несколько процессов. Для запуска массбилда вам нужен каталог в котором находятся папки с git проектами с abf.io или сделанными в том же формате. В простейшем виде достаточно запустить в этом каталоге:&lt;br /&gt;
    notamocks&lt;br /&gt;
Полезные опции:&lt;br /&gt;
&lt;br /&gt;
* -p - количество параллельно запускаемых сборок&lt;br /&gt;
* -s - не собирать проекты, который уже собраны&lt;br /&gt;
* -n или --chain сборка по цепочке, все что собралось за итерацию добавляется во временный реп и запускается следующая итерация с подключением этого репа, так до тех пор пока не соберется все.&lt;br /&gt;
* -l -каталог для логов&lt;br /&gt;
&lt;br /&gt;
Для notamocks тоже можно передавать параметры из конфига в формате КЛЮЧ=ЗНАЧЕНИЕ, а также ключи notamock, которые будут переданы в каждое сборочное задание notamock.&lt;br /&gt;
&lt;br /&gt;
== notamockd ==&lt;br /&gt;
Утилита собирает контейнеры для запуска в них builder-c. Это программа, которая забирает сборочные задания с abf и возвращает собранное. В отличии от mock notamock может в одном контейнере собирать несколько заданий, для того чтобы использовать такую возможность в пакет notamock-abf входят модифицированные для сборки с notamock сборочные скрипты для builder-c.&lt;br /&gt;
&lt;br /&gt;
Notamockd имеет два режима работы.&lt;br /&gt;
&lt;br /&gt;
# Основной, notamockd создает контейнер и сразу запускает в нем необходимое количество билдеров.&lt;br /&gt;
# notamockd создает образ для docker, а контейнер запускает докер.&lt;br /&gt;
&lt;br /&gt;
=== Основной режим ===&lt;br /&gt;
В основном режиме работы нужно передать один обязательный параметр - abf токен сборщика с ключом -t.&lt;br /&gt;
    notamockd -t &amp;lt;TOKEN&amp;gt;&lt;br /&gt;
Такая команда запустит контейнер с одним билдером, с hostname в качестве имени билдера.&lt;br /&gt;
&lt;br /&gt;
Полезные опции:&lt;br /&gt;
&lt;br /&gt;
* -p - количество билдеров&lt;br /&gt;
* -b - имя для билдера, если их больше одного будут называться имя_1, имя_2, имя_3 и т.д.&lt;br /&gt;
* -B - внешний каталог, который пробрасывается в контейнер для того, чтобы сборки шли в нем.&lt;br /&gt;
* --watch - запуск в режиме мониторинга, можно передать количество строк для просмотра лога каждого билдера, например: --watch 10&lt;br /&gt;
* --tmux - запуск с tmux внутри контейнера, имеет смысл совместно с --watch, полезно для дебага.&lt;br /&gt;
&lt;br /&gt;
Если не указать внешний каталог для сборки (ключ -B), сборки будут идти в /tmp контейнера размер которого установит systemd-nspawn, а это, если не ошибаюсь, 20% от ОЗУ. Альтернативный способ увеличить пространство для сборок - переключить с systemd-nspawn на встроенный в notamock способ использующий chroot - CHROOT=INTERNAL, в таком случае для сборок будет доступно все пространство /tmp хоста. Дополнительно можно указать TMPD=/папка/на/диске если нужно чтобы контейнеры вообще не использовали /tmp системы.&lt;br /&gt;
&lt;br /&gt;
=== Образ для докера ===&lt;br /&gt;
    dnf install docker&lt;br /&gt;
    systemctl start docker&lt;br /&gt;
    notamockd --docker -b имя_для_билдера&lt;br /&gt;
    docker image ls # находим свой образ&lt;br /&gt;
    docker run -it --rm --privileged -e BUILD_TOKEN=&amp;quot;ABF_TOKEN&amp;quot; -e PARALLEL=3 -v /tmp:/tmp &amp;lt;docker image ID&amp;gt;&lt;br /&gt;
Внимание: без &amp;#039;&amp;#039;&amp;#039;-v /хост/папка/:/tmp&amp;#039;&amp;#039;&amp;#039; работать не будет из-за необходимости монтирования overlayfs внутри контейнера.&lt;br /&gt;
&lt;br /&gt;
== notamockc ==&lt;br /&gt;
Если вам понадобилась rootfs, не обязательно качать с ABF или собирать, просто запустите:&lt;br /&gt;
    notamockc&lt;br /&gt;
или&lt;br /&gt;
    notamockc -r 2023.1&lt;br /&gt;
Можно передать команду:&lt;br /&gt;
    notamockc -r 2023.1 -- dnf provides thunderbird&lt;br /&gt;
Команда будет выполнена в chroot с rosa2023.1&lt;br /&gt;
&lt;br /&gt;
С ключом --name или -n создаются именованные контейнеры:&lt;br /&gt;
    notamockc -n my_container&lt;br /&gt;
которые сохраняют изменения между запусками.&lt;br /&gt;
&lt;br /&gt;
Если нужно сохранять контейнеры и между перезагрузками хоста, дополнительно нужно указывать TMPD=/папка/на/диске, в параметрах notamockc или в /etc/notamock.cfg&lt;br /&gt;
&lt;br /&gt;
Если вам нужен контейнер для работы над каким-то проектом, вероятно вам понадобится пробросить внутрь контейнера необходимые для работы файлы. Для этого удобно использовать параметр BIND:&lt;br /&gt;
    notamockc BIND=&amp;#039;/home/user/project::/root/project&amp;#039;&lt;br /&gt;
можно добавить параметры монтирования:&lt;br /&gt;
    notamockc BIND=&amp;#039;/home/user/project::/root/project::ro::noexec&amp;#039;&lt;br /&gt;
Аналогично вместо папки можно монтировать образы, squashfs архивы или разделы на диске. С той лишь разницей, что это будет не mount -o bind, а настоящее монтирование. Параметр может быть использован как из командной строки так и в конфигурационных файлах, также доступен и для notamock.&lt;br /&gt;
&lt;br /&gt;
== notamock + svace ==&lt;br /&gt;
Notamock можно использовать для сборки под svace для дальнейшего статического анализа кода.&lt;br /&gt;
&lt;br /&gt;
На хостовую систему необходимо распаковать архив со svace, например, в &amp;lt;code&amp;gt;/home/usert/svace/svace-3.4.240312-x64-linux&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Делаем конфиг &amp;lt;code&amp;gt;/etc/notamock-dnf.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
 [main]&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 best=True&lt;br /&gt;
 skip_if_unavailable=False&lt;br /&gt;
 keepcache=True&lt;br /&gt;
 reposdir=&amp;lt;nowiki&amp;gt;&amp;#039;&amp;#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 [rosa-contrib]&lt;br /&gt;
 name=rosa-contrib&lt;br /&gt;
 baseurl=&amp;lt;nowiki&amp;gt;http://abf-downloads.rosalinux.ru/rosa$releasever/repository/$arch/contrib/release/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
 &lt;br /&gt;
 [rosa-main]&lt;br /&gt;
 name=rosa-main&lt;br /&gt;
 baseurl=&amp;lt;nowiki&amp;gt;http://abf-downloads.rosalinux.ru/rosa$releasever/repository/$arch/main/release/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 gpgcheck=0&lt;br /&gt;
Делаем конфиг notamock &amp;lt;code&amp;gt;/etc/notamock.d/svace&amp;lt;/code&amp;gt;:&lt;br /&gt;
 PM_config=/etc/notamock-dnf.conf&lt;br /&gt;
 BUILD_cmd=&amp;#039;/opt/svace/bin/svace init &amp;amp;&amp;amp; /opt/svace/bin/svace build rpmbuild -ba *.spec --define=\&amp;quot;_sourcedir &amp;#039;&amp;quot;$INTERNAL_DIR&amp;quot;&amp;#039;\&amp;quot; --define=\&amp;quot;_topdir &amp;#039;&amp;quot;$INTERNAL_DIR&amp;quot;&amp;#039;\&amp;quot;&amp;#039;&lt;br /&gt;
 BIND_SOURCE=yes&lt;br /&gt;
 BIND=&amp;#039;/home/usert/svace/svace-3.4.240312-x64-linux:/opt/svace:ro&amp;#039;&lt;br /&gt;
Запускаем сборку:&lt;br /&gt;
 sudo notamock -r 2021.15 name-X-Y.src.rpm&lt;br /&gt;
Результаты будут в name/.svace-dir относительно текущей папки, в которой запускали notamock. Далее нужно запускать svace analyze папки .svace-dir, можно на другом хосте, предварительно передав ее на него.&lt;br /&gt;
&lt;br /&gt;
Источник — «&amp;lt;nowiki&amp;gt;http://wiki.rosalab.ru/ru/index.php?title=Notamock&amp;amp;oldid=21132»&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Betcher</name></author>
	</entry>
</feed>