Mkimage: различия между версиями
м (→Отладка конфликтов и битых зависимостей: случай с конфликтами) |
Нет описания правки |
||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE:mkimage}} | {{DISPLAYTITLE: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 по шаблону. | ||
== Зачем? == | == Зачем? == | ||
Шаблон представляет собой набор Makefile’ов. Для ускорения сборки в mkimage реализовано кэширование. Есть теоретическая возможность распараллеливания сборки, но из-за особенности работы [[ | Как и <tt>spt</tt>, mkimage использует [[hasher]] для создания образа. | ||
Шаблон представляет собой набор Makefile’ов. Для ускорения сборки в mkimage реализовано кэширование. Есть теоретическая возможность распараллеливания сборки, но из-за особенности работы [[hasher]] это сейчас не работает. | |||
=== Документация === | === Документация === | ||
Строка 40: | Строка 66: | ||
==== x86_64 ==== | ==== x86_64 ==== | ||
В mkimage-profiles-desktop по умолчанию даже при сборке на архитектуре x86_64 выставляется i586<ref>в конце концов, десктоп сейчас обычно 32-битный, а вот сборочный | В 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 | Если есть желание или необходимость сделать модификацию 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>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>, содержащий ценные | При включенном <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» тут явным образом запрошенный ранее пакет: | ||
$ 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] | ||
--> |
Версия от 10:48, 25 февраля 2009
mkimage — инструмент для сборки образов Linux-системы из заданного Sisyphus-like репозитория.
Документация
mkimage использует для сборки профиль, представляющий собой набор Makefiles.
Содержание и функционирование профилей документировано в README-файле пакета mkimage.
Использование в «реальной жизни»
Основное применение mkimage — сборка дистрибутивов ALT Linux и производных от них:
История
mkimage — четвёртый и на данный момент последний среди длинного ряда сборщиков образов в рамках Sisyphus. mkimage был создан для замены spt — последний использует жёстко зашитую последовательность шелл-скриптов, а шаблоны дистрибутивов с трудом поддаются вычленению общих блоков.
Исходный код
Авторы
- Alexey Gladkov