Mkimage/debug: различия между версиями

Материал из ALT Linux Wiki
(+filesystem@$arch)
(→‎Обновите mkimage: по мотивам antique@)
Строка 1: Строка 1:
== Обновите mkimage ==
При каких-либо проблемах сборки образов обычно стоит обновить {{pkg|mkimage}} до последней версии из Sisyphus, загрузив и установив [http://packages.altlinux.org/ru/Sisyphus/srpms/mkimage/get одиночный пакет] (как правило, он прекрасно работает и на бранчах).  Известные исправления ошибок, приводящих к характерным взрывам:
* mkimage [http://git.altlinux.org/people/legion/packages/?p=mkimage.git;a=commitdiff;h=2e3f85bee8b1d80ed7a0d74775c118fc4aac584c < 0.1.7-alt1] при включенном GLOBAL_VERBOSE:
Reading Package Lists...
Building Dependency Tree...
E: Couldn't find package mkdir:
hsh-install: failed to calculate package file list.
hsh-install: Failed to generate package file list.
make[2]: *** [prepare-workdir] Error 1
* mkimage [http://git.altlinux.org/people/legion/packages/?p=mkimage.git;a=commitdiff;h=32a297df154a54463ccf676c388355dd8f60bf5f < 0.1.7-alt1] при сборке из [[Mkimage/Profiles/next|mkimage-profiles.git]] на [[Branches/5.1|5.1/branch]]:
/bin/sh: command substitution: line 7: syntax error near unexpected token `('
/bin/sh: command substitution: line 7: `/usr/share/mkimage/tools/mki-expand-pkgs regexp ^kernel-(image|modules-())-()$'
make[2]: *** [build-image] Error 1                                                                                   
make[1]: *** [install2] Ошибка 2
== Отладка сборки профилей mkimage ==
== Отладка сборки профилей mkimage ==
Общие рекомендации, не являющиеся специфическими для какого-либо профиля или семейства.  Вообще помогает понимание логики работы apt и знание про -o Debug::pkgProblemResolver=true.
Общие рекомендации, не являющиеся специфическими для какого-либо профиля или семейства.  Вообще помогает понимание логики работы apt и знание про -o Debug::pkgProblemResolver=true.

Версия от 20:24, 12 июля 2011

Обновите mkimage

При каких-либо проблемах сборки образов обычно стоит обновить mkimage до последней версии из Sisyphus, загрузив и установив одиночный пакет (как правило, он прекрасно работает и на бранчах). Известные исправления ошибок, приводящих к характерным взрывам:

  • mkimage < 0.1.7-alt1 при включенном GLOBAL_VERBOSE:
Reading Package Lists...
Building Dependency Tree...
E: Couldn't find package mkdir:
hsh-install: failed to calculate package file list.
hsh-install: Failed to generate package file list.
make[2]: *** [prepare-workdir] Error 1
/bin/sh: command substitution: line 7: syntax error near unexpected token `('
/bin/sh: command substitution: line 7: `/usr/share/mkimage/tools/mki-expand-pkgs regexp ^kernel-(image|modules-())-()$'
make[2]: *** [build-image] Error 1                                                                                     
make[1]: *** [install2] Ошибка 2

Отладка сборки профилей mkimage

Общие рекомендации, не являющиеся специфическими для какого-либо профиля или семейства. Вообще помогает понимание логики работы apt и знание про -o Debug::pkgProblemResolver=true.

filesystem и архитектуры

E: Package filesystem has no installation candidate обычно встречается при попытке собрать i586-дистрибутив на x86_64-узле, если «разъехались» по архитектурам --with-aptconf и --with-arch (например, сборка пытается пройти для x86_64, а apt нацелен на i586).

Конфликты и битые зависимости

Два существенно разных случая: unmets (битые зависимости) и conflicts (конфликтующие пакеты, по отдельности сами по себе устанавливающиеся, но оказавшиеся вместе).

unmets

Если возникают проблемы вроде неустанавливающихся пакетов:

The following packages have unmet dependencies:
  installer-ltsp-stage2: Depends: installer-stage2 but it is not going to be installed
E: Broken packages

То может иметь смысл проверить вручную так:

hasher32:~/mkimage/build-LTSP/profiles/install2> hsh-install .work installer-stage2
Reading Package Lists...
[...]
The following packages have unmet dependencies:
  installer-stage2: Depends: installer (= 0.2-alt2) but it is not going to be installed
E: Broken packages
hsh-install: failed to calculate package file list.
hsh-install: Failed to generate package file list.
hasher32:~/mkimage/build-LTSP/profiles/install2>

conflicts

При включенном GLOBAL_VERBOSE=1 в процессе работы скрипта mki-copy-pkgs (цель copy-packages) образуется подкаталог .work/mki-copy-pkgs.verbose/, содержащий ценные данные — список пакетов для установки и stderr, полученный при его формировании apt’ом.

Поскольку индивидуально конфликтующие пакеты устанавливаются, то диагностика может быть нетривиальной и следует оперировать именно списком пакетов, чтобы понять, что это не анмет, а конфликт.

Огромная благодарность Алексею Гладкову (legion@altlinux) за доброе и терпеливое участие в разборе случая, получившегося при адаптации профиля Desktop 5.0a по мотивам Terminal 4.0 вследствие наличия в последнем заведомо конфликтующих пакетов ltsp-server и ltsp-client в компонентах base и disk, которые там уже были смержены в одну main.

Пример в итоге получился такой:

  • make давал останов с таким сообщением:
 The following packages have unmet dependencies:
   ltsp-client-full: Depends: ltsp-client (>= 5.1)
 E: Broken packages
  • в .work/mki-copy-pkgs.verbose/err содержались те же данные
  • hsh-install .work ltsp-client замечательно отрабатывал
  • а вот при попытке поставить весь раскрытый из $(IMAGE_PACKAGES) список пакетов и воспроизводился облом:
 $ cd profiles/main/.work
 $ hsh-install -v . $(cat mki-copy-pkgs.verbose/req)
  • наконец было осознано, что в файлик req попадают _и_ ltsp-client, _и_ ltsp-server, а потом замечено и вспомнено, что они же конфликтуют!
  • вот как можно яснее понять, в чём проблема — «protected» тут явным образом запрошенный ранее пакет:
 $ cd profiles/main/.work
 $ aptbox/apt-get install -y -o Debug::pkgProblemResolver=1 $(cat mki-copy-pkgs.verbose/req)
 [...]
 Investigating alterator-ltsconf
 Package alterator-ltsconf has broken dep on ltsp-server
   Considering ltsp-server 2 as a solution to alterator-ltsconf 9999
     Reinst Failed because of protected ltsp-client

Live-images

Все вышесказанное справедливо и для Live-образов с поправкой на изменения пути. Например:

 cd profiles/live/.work