Подготовка тегов » History » Version 1
Viacheslav Anzhiganov, 02/04/2025 06:23 PM
1 | 1 | Viacheslav Anzhiganov | # Подготовка тегов |
---|---|---|---|
2 | |||
3 | KOJI использует теги для идентификации и маркировки различных этапов рабочего процесса создания RPM. |
||
4 | Некоторые теги логически связаны вместе с одним и тем же потоком, например сборка для определенного целевого дистрибутива, например CentOS6. |
||
5 | Назовем этот целевой тег dist-centos7. |
||
6 | |||
7 | Но вы можете поддерживать несколько сборок дистрибутива на одном экземпляре Koji, просто добавив больше тегов, чем описано здесь. |
||
8 | Теги также поддерживают иерархичность и наследование. |
||
9 | |||
10 | Нам также нужен тег, который используется для сборки и наследует цель сборки. Мы называем этот тег dist-centos7-build. |
||
11 | Кодзи собирает пакеты RPM в chroot с помощью mock tool. Он также устанавливает базовые пакеты в эти сборки из виртуальных групп пакетов yum с именами build и srpm-build. Поэтому нам нужно сообщить Кодзи, какие пакеты нам нужны. Вы можете расширить этот список в соответствии с вашими потребностями, но выбирайте мудро: эти пакеты загружаются для каждой сборки. |
||
12 | Кроме того, Кодзи нужно знать, где искать/извлекать пакеты, поэтому мы добавляем внешние репозитории, базовый репозиторий как самый первый!! |
||
13 | |||
14 | При этом придерживайтесь шаблона имени тега dist-SOME_NAME, dist-SOME_NAME-build. |
||
15 | |||
16 | ## Инструкция |
||
17 | |||
18 | 1) переключаемся на пользователя kojiadmin |
||
19 | |||
20 | ``` |
||
21 | su kojiadmin |
||
22 | ``` |
||
23 | |||
24 | 2) создаем целевой тег |
||
25 | |||
26 | koji add-tag dist-foo |
||
27 | |||
28 | 3) создаем тег для сборки |
||
29 | |||
30 | ``` |
||
31 | koji add-tag --parent dist-foo --arches "i386 x86_64 ppc ppc64" dist-foo-build |
||
32 | ``` |
||
33 | |||
34 | 4) добавляем внешние репозитории (Это репозитории из которых koji будет брать пакеты необходимые для сборки) |
||
35 | |||
36 | ``` |
||
37 | koji add-external-repo -t dist-foo-build dist-foo-external-repo http://repo-server.example.com/path/to/repo/for/foo/\$arch/ |
||
38 | ``` |
||
39 | |||
40 | 5) задаем цель сборки из созданного ранее тега |
||
41 | |||
42 | ``` |
||
43 | koji add-target dist-foo dist-foo-build |
||
44 | ``` |
||
45 | |||
46 | 6) добавляем группы для пакетов |
||
47 | |||
48 | ``` |
||
49 | koji add-group dist-foo-build build |
||
50 | koji add-group dist-foo-build srpm-build |
||
51 | ``` |
||
52 | |||
53 | 7) добавляем необходимые пакеты для сборки rpm в группы build и srpm-build |
||
54 | |||
55 | ``` |
||
56 | koji add-group-pkg dist-foo-build build <pkg1> <pkg2> ..... |
||
57 | koji add-group-pkg dist-foo-build srpm-build <pkg1> <pkg2> ..... |
||
58 | ``` |
||
59 | |||
60 | 8) Добавим пакеты, которые собираемся создавать, в свой тег. |
||
61 | |||
62 | ``` |
||
63 | koji add-pkg --owner <kojiuser> dist-foo <pkg1> <pkg2> ..... |
||
64 | ``` |
||
65 | |||
66 | 9) обновляем репозиторий |
||
67 | |||
68 | ``` |
||
69 | koji regen-repo dist-foo-build |
||
70 | ``` |
||
71 | |||
72 | 10) собираем пакет |
||
73 | |||
74 | ``` |
||
75 | koji build dist-foo /path/to/*.src.rpm |
||
76 | ``` |
||
77 | |||
78 | koji создаст задачу сборки, которую можно посмотреть в |
||
79 | https://kojidev.platform-os.org/koji/tasks включив показ всех задач. |
||
80 | Перейдя в завершившуюся задачу можно найти логи и собранные файлы. |
||
81 | Основные ошибки сборки можно смотреть в файлах mock_output.log и root.log |
||
82 | |||
83 | ## Пример команд для сборки пакета binutils из локально src.rpm |
||
84 | |||
85 | ``` |
||
86 | koji add-tag dist-centos7 |
||
87 | ``` |
||
88 | |||
89 | ``` |
||
90 | koji add-tag --parent dist-centos7 --arches "x86_64" dist-centos7-build |
||
91 | ``` |
||
92 | |||
93 | ``` |
||
94 | koji add-external-repo -t dist-centos7-build centos7-repo http://centos.bio.lmu.de/7/os/\$arch/ |
||
95 | ``` |
||
96 | |||
97 | ``` |
||
98 | koji add-external-repo -t dist-centos7-build centos7-repo-extras https://mirror.hostart.az/CentOS/7.9.2009/extras/\$arch/ |
||
99 | ``` |
||
100 | |||
101 | ``` |
||
102 | koji add-external-repo -t dist-centos7-build centos7-repo-unsupported http://springdale.math.ias.edu/data/puias/unsupported/7/\$arch/ |
||
103 | ``` |
||
104 | |||
105 | ``` |
||
106 | koji add-target dist-centos7 dist-centos7-build |
||
107 | ``` |
||
108 | |||
109 | ``` |
||
110 | koji add-group dist-centos7-build build |
||
111 | ``` |
||
112 | |||
113 | ``` |
||
114 | koji add-group dist-centos7-build srpm-build |
||
115 | ``` |
||
116 | |||
117 | ``` |
||
118 | koji add-group-pkg dist-centos7-build build \ |
||
119 | bash bzip2 coreutils cpio diffutils findutils gawk gcc \ |
||
120 | grep sed gcc-c++ gzip info patch redhat-rpm-config \ |
||
121 | rpm-build shadow-utils tar unzip util-linux-ng which make |
||
122 | ``` |
||
123 | |||
124 | ``` |
||
125 | koji add-group-pkg dist-centos7-build srpm-build \ |
||
126 | bash cvs gnupg make redhat-rpm-config rpm-build shadow-utils \ |
||
127 | wget rpmdevtools |
||
128 | ``` |
||
129 | |||
130 | ``` |
||
131 | koji add-pkg --owner kojiadmin dist-centos7 binutils |
||
132 | ``` |
||
133 | |||
134 | ``` |
||
135 | koji regen-repo dist-centos7-build |
||
136 | ``` |
||
137 | |||
138 | ``` |
||
139 | koji build dist-centos7 binutils-2.27-44.base.el7.src.rpm |
||
140 | ``` |
||
141 | |||
142 | ## Сборка из репозитория git |
||
143 | |||
144 | Пример команды сборки из репозитория git |
||
145 | |||
146 | ``` |
||
147 | koji build --scratch --no-rebuild-srpm dist-el9 'git+ssh://[email protected]/specs/bash.git#90731677c307d800f0a08bc5ba9555ffaa89084a' |
||
148 | ``` |
||
149 | |||
150 | При этом в /etc/kojid/kojid.conf должно быть прописано: |
||
151 | |||
152 | ``` |
||
153 | allowed_scms=git.org.ru:/specs/*:no |
||
154 | ``` |
||
155 | |||
156 | ## Сборка из src.rpm |
||
157 | |||
158 | |||
159 | ``` |
||
160 | koji build --skip-tag dist-el9 bash-1.2.3-1.el9.src.rpm |
||
161 | ``` |
||
162 | |||
163 | ## конфигурация mock |
||
164 | |||
165 | ``` |
||
166 | koji edit-tag dist-el9.1-build -x mock.package_manager=dnf |
||
167 | koji edit-tag dist-el9.1-build -x mock.new_chroot=true |
||
168 | koji edit-tag dist-el9.1-build -x mock.releasever=9 |
||
169 | ``` |
||
170 | |||
171 | ``` |
||
172 | koji edit-tag dist-el9.1-build -x mock.package_manager=dnf |
||
173 | koji edit-tag dist-el9.1-build -x mock.new_chroot=True |
||
174 | koji edit-tag dist-el9.1-build -x mock.releasever=9 |
||
175 | koji edit-tag dist-el9.1-build -x mock.new_chroot=False |
||
176 | ``` |