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]]
-->

Версия от 10:48, 25 февраля 2009

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

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

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

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

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

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

История

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

Исходный код

Авторы

  • Alexey Gladkov