Напоролся опять на эту проблему. Впервые проблема была у zerg@: https://lists.altlinux.org/pipermail/devel-distro/2020-September/002060.html Если в /var/lib/install3/.base: ## DOT_BASE ^kernel-(image|modules-(virtualbox-addition|virtualbox-addition-guest|vmware|scsi|drm|bcmwl|staging|rtl8188fu|rtl8192eu|rtl8723de|rtl8812au|rtl8821ce|rtl8821cu|rtl88x2bu|rtl8723bu|bcmwl|ndiswrapper|drm|drm-nouveau|drm-radeon|drm-ancient|alsa|sound|e1000e|igb|r8125|staging|kvm|virtualbox))-(std-def)$ То alterator-pkg ничего не устанавливает, что видно и без установки по требуемому месту. Достаточно удалить один из элементов, чтобы установка ядра и модулей проходила успешно. Временным решением может быть выкидывание застарелых модулей, которых давно нет, из mkimage-profiles. Но нужно разбираться с alterator-pkg. Что это за странное ограничение? Проблема сейчас наличествует при сборкe workstation из mkimage-profiles v1.4.5-alt1 и 1.4.6-alt1.
(Ответ для Антон Мидюков на комментарий #0) > Но нужно разбираться с alterator-pkg. Что это за странное ограничение? Возможно, дело в apt -- попробуй ручками такое поставить.
Есть мысль не кормить такой сложный список alterator-pkg, а преобразовывать его в нормальный при сборке. Т.е. проверять наличие пакетов в локальном репо при сборке и генерировать нормальный список пакетов для установки. Конечно, если это возможно.
Такое, конечно, можно закостылить в mkimage и даже mkimage-profiles, вот только лучше бы исправить первопричину (или задокументировать ограничение и тогда уже думать, как с ним дальше быть).
drm и bcmwl в условии встречаются дважды, может это даёт наводку? Можно взять за правило сортировать тут этот список и убирать дубли. И что мешает упростить здесь же условие выборки? Разве данный regex не является одним из многих для выбора пакетов базовой системы? Например, так: ## DOT_BASE ^kernel-(image|modules-(virtualbox-addition|virtualbox-addition-guest|vmware|scsi|staging|alsa|sound|igb|staging|kvm|virtualbox))-(std-def)$ # Networking ^kernel-modules-(rtl8188fu|rtl8192eu|rtl8723de|rtl8812au|rtl8821ce|rtl8821cu|rtl88x2bu|rtl8723bu|r8125|e1000e|bcmwl|ndiswrapper)-(std-def)$ # DRM ^kernel-modules-(drm|drm-nouveau|drm-radeon|drm-ancient)-(std-def)$
(In reply to Антон Мидюков from comment #2) > Есть мысль не кормить такой сложный список alterator-pkg, а преобразовывать > его в нормальный при сборке. Т.е. проверять наличие пакетов в локальном репо > при сборке и генерировать нормальный список пакетов для установки. Лучше переписать make_manifest() в backend3. Хотя ошибка, скорее всего, в APT'е при работе с параметром --manifest, когда манифест получается слишком сложный. Это легко локализовать, но проще исправить в backend3.
(In reply to Антон Мидюков from comment #0) > ^kernel-(image|modules-(virtualbox-addition|virtualbox-addition-guest|vmware|scsi|drm|bcmwl|staging|rtl8188fu|rtl8192eu|rtl8723de|rtl8812au|rtl8821ce|rtl8821cu|rtl88x2bu|rtl8723bu|bcmwl|ndiswrapper|drm|drm-nouveau|drm-radeon|drm-ancient|alsa|sound|e1000e|igb|r8125|staging|kvm|virtualbox))-(std-def)$ Длина этого регулярного выражения -- ровно 300 символов. А теперь посмотрите в начало реализации команды apt-get install: http://git.altlinux.org/gears/a/apt.git?a=blob;f=apt/cmdline/apt-get.cc;h=a26c93c2490fb76677491b21ea44f540d545c894#l1257 Я даже скопирую сюда: [...] for (const char **I = CmdL.FileList + 1; *I != 0; I++) { // Duplicate the string unsigned int Length = strlen(*I); char S[300]; if (Length >= sizeof(S)) continue; strcpy(S,*I); [...] То есть, все аргументы apt-get install с длиной более 300 *молча* игнорируются. Хоть бы warning написали какой.
Это какой-то позор...
(Ответ для Ivan A. Melnikov на комментарий #6) > char S[300]; Н-да. Предлагаю обновить как минимум до S[400], а то и до S[500]. Если уж не делать совсем как положено.
(Ответ для Michael Shigorin на комментарий #8) > (Ответ для Ivan A. Melnikov на комментарий #6) > > char S[300]; > Н-да. Предлагаю обновить как минимум до S[400], а то и до S[500]. > Если уж не делать совсем как положено. Ну, надо как минимум добавить сообщение об ошибке и, пожалуй, завершение программы.
(In reply to Michael Shigorin from comment #8) > Н-да. Предлагаю обновить как минимум до S[400], а то и до S[500]. > Если уж не делать совсем как положено. [~/src/alt/apt]$ git grep -F 'S[300]' | wc -l 25 [~/src/alt/apt]$ git grep -F 'S[400]' | wc -l 10 [~/src/alt/apt]$ git grep -F 'S[500]' | wc -l 4 И это только S.