mkimage

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
м (Отладка конфликтов и битых зависимостей: случай с конфликтами)
Строка 1: Строка 1:
{{DISPLAYTITLE:mkimage}}
{{DISPLAYTITLE:mkimage}}
-
{{MovedFromFreesourceInfo|AltLinux/Sisyphus/devel/mkimage}}
+
[[Категория:Utils]]
 +
'''mkimage''' — инструмент для сборки образов Linux-системы из заданного Sisyphus-like репозитория.
 +
 
 +
== Документация ==
 +
 
 +
mkimage использует для сборки ''профиль'', представляющий собой набор Makefiles.
 +
 
 +
Содержание и функционирование профилей документировано в [http://git.altlinux.org/people/legion/packages/mkimage.git?p=mkimage.git;a=blob;f=doc/README.ru;hb=HEAD README-файле] пакета <tt>mkimage</tt>.
 +
 
 +
== Использование в «реальной жизни» ==
 +
 
 +
Основное применение mkimage — сборка дистрибутивов ALT Linux и производных от них:
 +
* [[Mkimage/Desktop|семейство профилей для desktop-дистрибутивов]]
 +
 
 +
== История ==
 +
 
 +
mkimage — четвёртый и на данный момент последний среди длинного ряда [[ImageGeneratorsHistory|сборщиков образов]] в рамках Sisyphus. mkimage был создан для замены [[spt]] — последний использует жёстко зашитую последовательность шелл-скриптов, а шаблоны дистрибутивов с трудом поддаются вычленению общих блоков.
 +
 
 +
== Исходный код ==
 +
 
 +
* [http://git.altlinux.org/people/legion/packages/mkimage.git mkimage.git]
 +
 
 +
== Авторы ==
 +
 
 +
* Alexey Gladkov
 +
 
 +
<!--
 +
 
{{викифицировать}}
{{викифицировать}}
Строка 7: Строка 34:
mkimage — инструмент для сборки образов системы из заданного репозитория ALT Linux по шаблону.
mkimage — инструмент для сборки образов системы из заданного репозитория ALT Linux по шаблону.
-
mkimage — четвёртый и на данный момент последний среди длинного ряда сборщиков образов в рамках Sisyphus. Более подробно о том, кто кого сменял, можно узнать в [[ImageGeneratorsHistory|истории]].
 
== Зачем? ==
== Зачем? ==
-
mkimage был создан для замены [[spt|spt]] — последний использует жёстко зашитую последовательность шелл-скриптов, а шаблоны дистрибутивов с трудом поддаются вычленению общих блоков.
 
-
Как и <tt>spt</tt>, mkimage использует [[hasher|hasher]] для создания образа.
 
-
Шаблон представляет собой набор Makefile’ов. Для ускорения сборки в mkimage реализовано кэширование. Есть теоретическая возможность распараллеливания сборки, но из-за особенности работы [[hasher|hasher]] это сейчас не работает.
+
Как и <tt>spt</tt>, mkimage использует [[hasher]] для создания образа.
 +
 
 +
Шаблон представляет собой набор Makefile’ов. Для ускорения сборки в mkimage реализовано кэширование. Есть теоретическая возможность распараллеливания сборки, но из-за особенности работы [[hasher]] это сейчас не работает.
=== Документация ===
=== Документация ===
Строка 40: Строка 66:
==== x86_64 ====
==== x86_64 ====
-
В mkimage-profiles-desktop по умолчанию даже при сборке на архитектуре x86_64 выставляется i586<ref>в конце концов, десктоп сейчас обычно 32-битный, а вот сборочный сервер — 64-битный… хотя после ветки 4.1 и официального выпуска 64-битного десктопа это соображение может быть и пересмотрено</ref>; посему для сборки 64-битного варианта требуется передать configure-скрипту ключик <tt>--with-arch=x86_64</tt>, а также убедиться, что в sources.list, упомянутом в <tt>--with-aptconf=/где/тут/apt.conf</tt> (по умолчанию /etc/apt/apt.conf и соответственно /etc/apt/sources.list) упомянуты репозитории x86_64 и noarch.
+
В mkimage-profiles-desktop по умолчанию даже при сборке на архитектуре x86_64 выставляется i586<ref>в конце концов, десктоп сейчас обычно 32-битный, а вот сборочный сервер — 64-битный… хотя после ветки 4.1 и официального выпуска 64-битного десктопа это соображение может быть и пересмотрено</ref>; посему для сборки 64-битного варианта требуется передать configure-скрипту ключик <tt>--with-arch=x86_64</tt>, а также убедиться, что в sources.list, упомянутом в <tt>--with-aptconf=/где/тут/apt.conf</tt> (по умолчанию /etc/apt/apt.conf и соответственно /etc/apt/sources.list) — упомянуты репозитории x86_64 и noarch.
<source lang="bash">
<source lang="bash">
Строка 48: Строка 74:
==== ALTSP5 ====
==== ALTSP5 ====
-
Если есть желание или необходимость сделать модификацию ALT Linux 4.0 Terminal — начинать стоит с:
+
Если есть желание или необходимость сделать модификацию ALT Linux 4.0 Terminal — начинать стоит с:
<source lang="bash">
<source lang="bash">
apt-get install etersoft-build-utils
apt-get install etersoft-build-utils
Строка 77: Строка 103:
==== altlinux-release-* ====
==== altlinux-release-* ====
С одной стороны, <tt>altlinux-release</tt> стал виртуальным пакетом.
С одной стороны, <tt>altlinux-release</tt> стал виртуальным пакетом.
-
С другой — сейчас его требует <tt>basesystem</tt>.
+
С другой — сейчас его требует <tt>basesystem</tt>.
Результат таков, что сперва в базовую систему устанавливается какой-либо из кандидатов (сейчас это обычно <tt>altlinux-release-terminal</tt> по лексикографическому старшинству), а потом apt не может его заменить уже явно указанным.
Результат таков, что сперва в базовую систему устанавливается какой-либо из кандидатов (сейчас это обычно <tt>altlinux-release-terminal</tt> по лексикографическому старшинству), а потом apt не может его заменить уже явно указанным.
Объезд: прибить в конфигурации гвоздиком нужный вариант.
Объезд: прибить в конфигурации гвоздиком нужный вариант.
Строка 129: Строка 155:
==== conflicts ====
==== conflicts ====
-
При включенном <tt>GLOBAL_VERBOSE=1</tt> в процессе работы скрипта <tt>mki-copy-pkgs</tt> (цель <tt>copy-packages</tt>) образуется подкаталог <tt>.work/mki-copy-pkgs.verbose/</tt>, содержащий ценные данные -- список пакетов для установки и stderr, полученный при его формировании apt'ом.
+
При включенном <tt>GLOBAL_VERBOSE=1</tt> в процессе работы скрипта <tt>mki-copy-pkgs</tt> (цель <tt>copy-packages</tt>) образуется подкаталог <tt>.work/mki-copy-pkgs.verbose/</tt>, содержащий ценные данные — список пакетов для установки и stderr, полученный при его формировании apt’ом.
Поскольку индивидуально конфликтующие пакеты устанавливаются, то диагностика может быть нетривиальной и следует оперировать именно списком пакетов, чтобы понять, что это не анмет, а конфликт.
Поскольку индивидуально конфликтующие пакеты устанавливаются, то диагностика может быть нетривиальной и следует оперировать именно списком пакетов, чтобы понять, что это не анмет, а конфликт.
Строка 152: Строка 178:
* наконец было осознано, что в файлик req попадают _и_ ltsp-client, _и_ ltsp-server, а потом замечено и вспомнено, что они же конфликтуют!
* наконец было осознано, что в файлик req попадают _и_ ltsp-client, _и_ ltsp-server, а потом замечено и вспомнено, что они же конфликтуют!
-
* вот как можно яснее понять, в чём проблема -- "protected" тут явным образом запрошенный ранее пакет:
+
* вот как можно яснее понять, в чём проблема — «protected» тут явным образом запрошенный ранее пакет:
   $ cd profiles/main/.work
   $ cd profiles/main/.work
   $ aptbox/apt-get install -y -o Debug::pkgProblemResolver=1 $(cat mki-copy-pkgs.verbose/req)
   $ aptbox/apt-get install -y -o Debug::pkgProblemResolver=1 $(cat mki-copy-pkgs.verbose/req)
Строка 171: Строка 197:
* [http://lists.altlinux.org/pipermail/devel/2008-August/077836.html Обзор планов mike@ по лету 2008]
* [http://lists.altlinux.org/pipermail/devel/2008-August/077836.html Обзор планов mike@ по лету 2008]
-
[[Категория:Utils]]
+
-->

Версия 07:48, 25 февраля 2009

mkimage — инструмент для сборки образов Linux-системы из заданного Sisyphus-like репозитория.

Содержание

Документация

mkimage использует для сборки профиль, представляющий собой набор Makefiles.

Содержание и функционирование профилей документировано в README-файле пакета mkimage.

Использование в «реальной жизни»

Основное применение mkimage — сборка дистрибутивов ALT Linux и производных от них:

История

mkimage — четвёртый и на данный момент последний среди длинного ряда сборщиков образов в рамках Sisyphus. mkimage был создан для замены spt — последний использует жёстко зашитую последовательность шелл-скриптов, а шаблоны дистрибутивов с трудом поддаются вычленению общих блоков.

Исходный код

Авторы

  • Alexey Gladkov


 
Личные инструменты