Воспроизводится при установке ALT Education 11.2 (x86_64, build 2026-09-09), в состав которого входит alterator-kopidel-1.1.2-alt1. alterator-kopidel жёстко требует stage2-пакеты инсталлятора: Requires: installer-alterator-fs >= 1.0.0 Requires: installer-common-base-stage2 Requires: installer-scripts-remount-stage2 Из-за этого эти пакеты (и их зависимости, например installer-common-functions, alterator-wizardface) устанавливаются в целевую систему. Косвенный признак в логе установки — сообщения вида: cp: not replacing '/usr/share/install2/postinstall.d/90-firsttime.sh' cp: not replacing '/usr/share/install2/postinstall.d/10-increase-raid-limit.sh' ... т.е. /usr/share/install2 уже существует в устанавливаемой системе до копирования туда postinstall.d инсталлятором. Далее штатная постустановочная очистка ломается. В postinstall.d/00-remove-installer-pkgs.sh есть «hack for kopidel»: при установленном alterator-kopidel из списка удаляемых пакетов (rpmquery -a 'installer*') исключаются его прямые installer-зависимости. Но исключаются только прямые requires, поэтому rpmi -ev падает атомарно (не удаляется ничего, apt-get autoremove не запускается): Running postinstall script [00-remove-installer-pkgs.sh] alterator-kopidel-1.1.2-alt1.noarch error: Failed dependencies: installer-common-functions = 1.16.38-alt1:p11+425359.200.4.1 is needed by (installed) installer-common-base-stage2-1.16.38-alt1.x86_64 /usr/sbin/install2-init-functions is needed by (installed) installer-alterator-fs-1.0.1-alt1.noarch /usr/sbin/install2-init-functions is needed by (installed) alterator-kopidel-1.1.2-alt1.noarch /usr/sbin/install2-sh-functions is needed by (installed) alterator-preinstall-0.9.2-alt1.noarch FAILED Следующий скрипт падает каскадом, потому что stage2/stage3-пакеты остались в системе: Running postinstall script [01-remove-installer-desktop-pkgs.sh] error: Failed dependencies: alterator-wizardface is needed by (installed) installer-common-base-stage2-1.16.38-alt1.x86_64 alterator-wizardface is needed by (installed) alterator-setup-base-0.5.5-alt1.noarch alterator-luks is needed by (installed) installer-distro-alt-education-stage3-11.1-alt6.noarch FAILED Фактический результат: в установленной системе остаются installer-common-base-stage2, installer-alterator-fs, installer-common-functions, alterator-luks, alterator-wizardface и прочие пакеты инсталлятора, которые должны были быть удалены на этапе postinstall. Ожидаемый результат: установка системы без остаточных пакетов инсталлятора и без FAILED в postinstall-скриптах очистки.
Created attachment 22208 [details] логи
Копидел переиспользует пакеты установщика для создаваемых образов. То, что тянет в образ - это ожидаемое поведение. То, что скрипт падает - это баг.
Не надо устанавливать Копидел при установке. Он должен устанавливаться на предварительно настроенной системе, готовой к запаковке, чтобы исключить удаление лишнего при развёртывании. Сами себе проблему придумали, а теперь героически решаете.
(Ответ для Антон Мидюков на комментарий #3) > Не надо устанавливать Копидел при установке. Он должен устанавливаться на > предварительно настроенной системе, готовой к запаковке, чтобы исключить > удаление лишнего при развёртывании. Сами себе проблему придумали, а теперь > героически решаете. Нет, установка его при установке системы - это его основная фича.
(Ответ для Anton Farygin на комментарий #4) > (Ответ для Антон Мидюков на комментарий #3) > > Не надо устанавливать Копидел при установке. Он должен устанавливаться на > > предварительно настроенной системе, готовой к запаковке, чтобы исключить > > удаление лишнего при развёртывании. Сами себе проблему придумали, а теперь > > героически решаете. > > Нет, установка его при установке системы - это его основная фича. Зачем нужна эта фича?
(Ответ для Антон Мидюков на комментарий #5) > (Ответ для Anton Farygin на комментарий #4) > > (Ответ для Антон Мидюков на комментарий #3) > > > Не надо устанавливать Копидел при установке. Он должен устанавливаться на > > > предварительно настроенной системе, готовой к запаковке, чтобы исключить > > > удаление лишнего при развёртывании. Сами себе проблему придумали, а теперь > > > героически решаете. > > > > Нет, установка его при установке системы - это его основная фича. > > Зачем нужна эта фича? Что бы можно было перенести свою систему на другую машину. Антон, всё есть в описании пакета.
(Ответ для Anton Farygin на комментарий #6) > (Ответ для Антон Мидюков на комментарий #5) > > (Ответ для Anton Farygin на комментарий #4) > > > (Ответ для Антон Мидюков на комментарий #3) > > > > Не надо устанавливать Копидел при установке. Он должен устанавливаться на > > > > предварительно настроенной системе, готовой к запаковке, чтобы исключить > > > > удаление лишнего при развёртывании. Сами себе проблему придумали, а теперь > > > > героически решаете. > > > > > > Нет, установка его при установке системы - это его основная фича. > > > > Зачем нужна эта фича? > > Что бы можно было перенести свою систему на другую машину. Антон, всё есть в > описании пакета. Нет. Я знаю зачем нужен Копидел. Я спрашиваю зачем фича "установка Копидел при установке". Я считаю, что система должна быть настроена до установки Копидел, чтобы тот не привносил в настроенную систему сайд-эффекты.
(Ответ для Антон Мидюков на комментарий #7) > (Ответ для Anton Farygin на комментарий #6) > > (Ответ для Антон Мидюков на комментарий #5) > > > (Ответ для Anton Farygin на комментарий #4) > > > > (Ответ для Антон Мидюков на комментарий #3) > > > > > Не надо устанавливать Копидел при установке. Он должен устанавливаться на > > > > > предварительно настроенной системе, готовой к запаковке, чтобы исключить > > > > > удаление лишнего при развёртывании. Сами себе проблему придумали, а теперь > > > > > героически решаете. > > > > > > > > Нет, установка его при установке системы - это его основная фича. > > > > > > Зачем нужна эта фича? > > > > Что бы можно было перенести свою систему на другую машину. Антон, всё есть в > > описании пакета. > > Нет. Я знаю зачем нужен Копидел. Я спрашиваю зачем фича "установка Копидел > при установке". > Я считаю, что система должна быть настроена до установки Копидел, чтобы тот > не привносил в настроенную систему сайд-эффекты. У меня по этому поводу другое мнение - копидел должен работать в любой установленной системе без сайд-эффектов, а всё что привносит эти сайд-эффекты надо поправить.
(Ответ для Anton Farygin на комментарий #8) > (Ответ для Антон Мидюков на комментарий #7) > > (Ответ для Anton Farygin на комментарий #6) > > > (Ответ для Антон Мидюков на комментарий #5) > > > > (Ответ для Anton Farygin на комментарий #4) > > > > > (Ответ для Антон Мидюков на комментарий #3) > > > > > > Не надо устанавливать Копидел при установке. Он должен устанавливаться на > > > > > > предварительно настроенной системе, готовой к запаковке, чтобы исключить > > > > > > удаление лишнего при развёртывании. Сами себе проблему придумали, а теперь > > > > > > героически решаете. > > > > > > > > > > Нет, установка его при установке системы - это его основная фича. > > > > > > > > Зачем нужна эта фича? > > > > > > Что бы можно было перенести свою систему на другую машину. Антон, всё есть в > > > описании пакета. > > > > Нет. Я знаю зачем нужен Копидел. Я спрашиваю зачем фича "установка Копидел > > при установке". > > Я считаю, что система должна быть настроена до установки Копидел, чтобы тот > > не привносил в настроенную систему сайд-эффекты. > > У меня по этому поводу другое мнение - копидел должен работать в любой > установленной системе без сайд-эффектов, а всё что привносит эти > сайд-эффекты надо поправить. Тогда Копидел не должен иметь зависимостей :)
ну или работать по другому, вероятно да. Но сейчас можно и в скриптах поправить.
(Ответ для Антон Мидюков на комментарий #9) > (Ответ для Anton Farygin на комментарий #8) > > (Ответ для Антон Мидюков на комментарий #7) > > > (Ответ для Anton Farygin на комментарий #6) > > > > (Ответ для Антон Мидюков на комментарий #5) > > > > > (Ответ для Anton Farygin на комментарий #4) > > > > > > (Ответ для Антон Мидюков на комментарий #3) > > > > > > > Не надо устанавливать Копидел при установке. Он должен устанавливаться на > > > > > > > предварительно настроенной системе, готовой к запаковке, чтобы исключить > > > > > > > удаление лишнего при развёртывании. Сами себе проблему придумали, а теперь > > > > > > > героически решаете. > > > > > > > > > > > > Нет, установка его при установке системы - это его основная фича. > > > > > > > > > > Зачем нужна эта фича? > > > > > > > > Что бы можно было перенести свою систему на другую машину. Антон, всё есть в > > > > описании пакета. > > > > > > Нет. Я знаю зачем нужен Копидел. Я спрашиваю зачем фича "установка Копидел > > > при установке". > > > Я считаю, что система должна быть настроена до установки Копидел, чтобы тот > > > не привносил в настроенную систему сайд-эффекты. > > > > У меня по этому поводу другое мнение - копидел должен работать в любой > > установленной системе без сайд-эффектов, а всё что привносит эти > > сайд-эффекты надо поправить. > > Тогда Копидел не должен иметь зависимостей :) По сути, всё, что ему нужно, должно быть в каком-то каталоге, из которого он всё копирует. Понятное дело, что ему будет всё ещё нужен альтератор, но он в базовой конфигурации, поэтому не страшно. Т.е. требуется копирование инсталлятора внутрь. Той части скриптов инсталлятора, которые ему действительно нужны. Так устроен, например, make-initrd. Всё нужное в /usr/share/make-initrd.
ну или наоборот - всё что ставит из пакета инсталятор не должно использоваться.
Если я избавлюсь от runtime requires на installer пакеты, добавлю их в buildrequires и буду в копиделе создавать копии нужных файлов, то при исправлении/изменении installer пакетов придётся копидел каждый раз ребилдить. Это допустимый урон? Ну и содержимое пакета будет меняться без изменения сорцов. Можно пойти ещё собирать kopidel подпакеты в нужных installer пакетах, которые будут их полными аналогами, но устанавливаться будут в копидельную папку. Эти подпакеты не будут попадать под regex installer-* и пересборка не нужна будет. Эти варианты дикие. Мне кажется, что лучший вариант - вообще не устанавливать временные installer пакеты в destdir, чтобы потом их не пришлось удалять. Сейчас мы их удаляем, так как они временно нужны во время установки, настройки целевой системы.
(Ответ для Ajrat Makhmutov на комментарий #13) > Мне кажется, что лучший вариант - вообще не > устанавливать временные installer пакеты в destdir, чтобы потом их не > пришлось удалять. Сейчас мы их удаляем, так как они временно нужны во время > установки, настройки целевой системы. Это делается с двумя целями: 1. Ставим installer-distro-имя_дистрибутива-stage3, чтобы он поставил модули альтератора, которые должны быть запущены в установленной системы. 2. Установить опциональные installer-feature через группы пакетов. Уж от первого точно хотелось бы избавиться, да и от второго не мешало. При этом это никак не связано с тем, что Копидел не должен вносить значительные изменения в установленную систему, которую требуется запаковать. Это совершенно другая задача, которая всё время игнорируется. Идеальный вариант, чтобы Копидел запускался из live, а не из установленной системы. (Ответ для Ajrat Makhmutov на комментарий #13) > Если я избавлюсь от runtime requires на installer пакеты, добавлю их в > buildrequires и буду в копиделе создавать копии нужных файлов, то при > исправлении/изменении installer пакетов придётся копидел каждый раз > ребилдить. Это допустимый урон? Ну и содержимое пакета будет меняться без > изменения сорцов. > Так точно не надо делать. Можно нужные скрипты включить в git Копидел и обновлять их там по мере необходимости. Плюс, что при разработке инсталлятора не нужно будет оглядываться на Копидел.
(Ответ для Антон Мидюков на комментарий #14) > (Ответ для Ajrat Makhmutov на комментарий #13) > > Мне кажется, что лучший вариант - вообще не > > устанавливать временные installer пакеты в destdir, чтобы потом их не > > пришлось удалять. Сейчас мы их удаляем, так как они временно нужны во время > > установки, настройки целевой системы. > > Это делается с двумя целями: > 1. Ставим installer-distro-имя_дистрибутива-stage3, чтобы он поставил модули > альтератора, которые должны быть запущены в установленной системы. > 2. Установить опциональные installer-feature через группы пакетов. > > Уж от первого точно хотелось бы избавиться, да и от второго не мешало. > > При этом это никак не связано с тем, что Копидел не должен вносить > значительные изменения в установленную систему, которую требуется > запаковать. Это совершенно другая задача, которая всё время игнорируется. > Идеальный вариант, чтобы Копидел запускался из live, а не из установленной > системы. Установка installer пакетов - значительные изменения для целевой системы? Мне кажется, что они для конечного пользователя не сильно заметно. > (Ответ для Ajrat Makhmutov на комментарий #13) > > Если я избавлюсь от runtime requires на installer пакеты, добавлю их в > > buildrequires и буду в копиделе создавать копии нужных файлов, то при > > исправлении/изменении installer пакетов придётся копидел каждый раз > > ребилдить. Это допустимый урон? Ну и содержимое пакета будет меняться без > > изменения сорцов. > > > > Так точно не надо делать. Можно нужные скрипты включить в git Копидел и > обновлять их там по мере необходимости. Плюс, что при разработке > инсталлятора не нужно будет оглядываться на Копидел. Инсталлер и не должен оглядываться на копидел, копидел должен оглядываться на инсталлер. Если инсталлер обновился, поменял логику - копидел должен догнать, обновиться.
(Ответ для Ajrat Makhmutov на комментарий #15) > (Ответ для Антон Мидюков на комментарий #14) > > Так точно не надо делать. Можно нужные скрипты включить в git Копидел и > > обновлять их там по мере необходимости. Плюс, что при разработке > > инсталлятора не нужно будет оглядываться на Копидел. > > Инсталлер и не должен оглядываться на копидел, копидел должен оглядываться > на инсталлер. > Если инсталлер обновился, поменял логику - копидел должен догнать, > обновиться. Тем не менее, обновление installer может поломать kopidel. И это нужно ловить при тестировании. Представьте ситуацию, что систему обновили, запаковывают и она не устанавливается из-за обновлённого installer. Так что ещё как надо оглядываться. От installer нужно не так много, чтобы тащить его всего. И скорее всего этот код не нужно будет модифицировать годы.
(Ответ для Антон Мидюков на комментарий #16) > (Ответ для Ajrat Makhmutov на комментарий #15) > > (Ответ для Антон Мидюков на комментарий #14) > > > Так точно не надо делать. Можно нужные скрипты включить в git Копидел и > > > обновлять их там по мере необходимости. Плюс, что при разработке > > > инсталлятора не нужно будет оглядываться на Копидел. > > > > Инсталлер и не должен оглядываться на копидел, копидел должен оглядываться > > на инсталлер. > > Если инсталлер обновился, поменял логику - копидел должен догнать, > > обновиться. > > Тем не менее, обновление installer может поломать kopidel. И это нужно > ловить при тестировании. Представьте ситуацию, что систему обновили, > запаковывают и она не устанавливается из-за обновлённого installer. Так что > ещё как надо оглядываться. Уже есть vm-run end-to-end тесты в копиделе на x86_64. Сейчас допилил и на aarch64. Обновление installer'а в p11 со сломанным копиделом не пройдёт, а в сизифе упадёт в FTBFS. Это нормальный рабочий процесс обновления мажорных версий, если речь идёт о сломе API. > > От installer нужно не так много, чтобы тащить его всего. И скорее всего этот > код не нужно будет модифицировать годы. (Ответ для Антон Мидюков на комментарий #9) > Тогда Копидел не должен иметь зависимостей :) Копидельный разливочный образ - это обычный установочный autoinstall образ и он использует весь функционал установщика. Чтобы избавиться от зависимости на текущий установщик, нужно будет написать или использовать другой установщик. Заниматься вендорингом не буду, так как это анти-паттерн сопровождения. Исправлю скрипт на стороне installer'а так, чтобы раз и навсегда.
Я так понимаю, надо всего лишь в alterator-kopidel указать явную зависимость на installer-common-functions. Прошу сопровождающего alterator-kopidel проверить это предположение.
(Ответ для Антон Мидюков на комментарий #18) > Я так понимаю, надо всего лишь в alterator-kopidel указать явную зависимость > на installer-common-functions. > Прошу сопровождающего alterator-kopidel проверить это предположение. Спасибо. Таск с исправлением: https://packages.altlinux.org/en/tasks/433430/
Проверено на ALT Education 11.2 (x86_64) 2026-10-07 с пакетами задания 433717: alterator-kopidel-1.1.3-alt1, installer-distro-alt-education-11.2-alt1. Сценарий — postinstall-очистка при установленном в систему alterator-kopidel (состояние целевой системы во время установки ALT Education): штатный скрипт /usr/share/install2/postinstall.d/00-remove-installer-pkgs.sh прогнан против установленной системы. В 1.1.3 kopidel явно требует installer-common-functions: Requires: installer-alterator-fs >= 1.0.0 Requires: installer-common-base-stage2 Requires: installer-common-functions Requires: installer-scripts-remount-stage2 Поэтому «hack for kopidel» в 00-remove-installer-pkgs.sh теперь исключает installer-common-functions из списка удаляемых, и транзакция rpmi -ev завершается без атомарного срыва: Running postinstall script [00-remove-installer-pkgs.sh] alterator-kopidel-1.1.3-alt1.noarch Preparing packages... installer-distro-alt-education-11.2-alt1.noarch [OK, exit 0; далее штатный apt-get autoremove] В системе после очистки остаётся только замыкание requires kopidel: # rpm -qa 'installer*' installer-alterator-fs-1.0.1-alt1.noarch installer-common-base-stage2-1.16.38-alt1.x86_64 installer-common-functions-1.16.38-alt1.noarch installer-feature-stop-md-dm-stage2-0.7.0-alt1.noarch installer-scripts-remount-stage2-0.7.0-alt1.noarch Также в installer-distro-alt-education-stage2 11.2-alt1 отсутствует postinstall.d/01-remove-installer-desktop-pkgs.sh (в 11.1-alt6 присутствовал) — каскадного падения этого скрипта больше нет. kopidel после очистки работает: # kopidel --version 1.1.3 Фактический результат соответствует ожидаемому: установка без остаточных пакетов инсталлятора и без FAILED в postinstall-скриптах очистки. Ошибка более не воспроизводится при условиях: alterator-kopidel 1.1.3-alt1 (с явным Requires: installer-common-functions) + installer-distro-alt-education 11.2-alt1, kopidel установлен в систему во время установки.