копия из devel: ---- #make install <skip> sh -x ./install.sh 2.4.26 bzImage /usr/src/linux-2.4.26/System.map "" + '[' -x /root/bin/installkernel ']' + '[' -x /sbin/installkernel ']' + exec /sbin/installkernel 2.4.26 bzImage /usr/src/linux-2.4.26/System.map '' /sbin/installkernel: warning: perl not available; supposed to run manually... /sbin/installkernel: line 108: echo perl: command not found /sbin/installkernel: line 110: echo perl: command not found /sbin/installkernel: line 116: echo perl: command not found /sbin/installkernel: line 118: echo perl: command not found make[1]: Leaving directory `/usr/src/linux-2.4.26/arch/i386/boot' при этом, если просто /sbin/installkernel 2.4.26 bzImage /usr/src/linux-2.4.26/System.map то все отрабатывается нормально. Когда поломали-то ? Еще месяца три назад такого не было... С этим же ядром. ---- Нет особой уверенности, что это make, но, как мне кажется, это наиболее вероятно. Сизиф от 20040702 Steps to Reproduce: 1. распаковать оригинальный тарбол ядра 2. выполнить make dep bzImage modules modules_install install 3. наблюдать описанное в Description Actual Results:
А при чём тут make?
А кто вызывает installkernel, когда отрабатывается make install ? Мне кажется, что все дело в том, с какими параметрами окружения installkernel вызывается в этот момент. Иначе почему он правильно работает, когда сам по себе с теми же параметрами вызывается просто от рута ? Всмысле, perl находит или не находит ?
Например, окружение могло поменяться.
Так а я про что ? Когда installkernel сам по себе из баша запускается, окружение нормальное, а как из-под make, так что-то не так... Скорее всего, так оно и есть... Вот только надо крайнего найти.
Created attachment 614 [details] Proposed patch against/sbin/installkernel Это ошибка в /sbin/installkernel. Корневый Makefile в ядре устанавливает переменную PERL следующим образом: PERL = perl В новом /sbin/installkernel делается следующая проверка: if [ ! -x "$PERL" ]; then echo "$0: warning: $PERL not available; supposed to run manually..." PERL="echo $PERL" fi Предлагаемый патч -- в attachment.
Предлагаемый патч, конечно, не годится, поскольку вводит дополнительную зависимость на which(1), но идея правильная.
Вообще, если есть зависимость на Perl, мне кажется, что все остальное уже не сильно существенно... Ну, будет еще и на which. По хорошему, вообще не стоило от bash уходить, но если ушли, что уж теперь... Или я что-то еще не понимаю ?
Может быть тогда так? --- installkernel.old 2004-08-17 06:08:27 +0400 +++ installkernel 2004-10-25 14:29:52 +0400 @@ -90,12 +90,14 @@ : ${LILO_CONF:=/etc/lilo.conf} : ${GRUB_MENU_LST:=$BOOTDIR/grub/menu.lst} : ${GRUB_DEVICE_MAP:=$BOOTDIR/grub/device.map} -: ${PERL:=/usr/bin/perl} : ${LILO:=/sbin/lilo} : ${DETECTLOADER:=/usr/sbin/detectloader} : ${SHARFILE:=/usr/share/loader} # check perl +if [ -z "$PERL" -o ! -x "$PERL" ]; then + PERL=/usr/bin/perl +fi if [ ! -x "$PERL" ]; then echo "$0: warning: $PERL not available; supposed to run manually..." PERL="echo $PERL"
Приложил в 0.3.1-alt1.1 как NMU.
Предлагаю более хорошее исправление, которое сводится к этому: -if [ ! -x "$PERL" ]; then +if [ ! -x "$PERL" ] && ! type "$PERL" >/dev/null 2>&1; then и соответственно расквотить "$PERL" чтобы PERL="echo perl" работало