<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>21914</bug_id>
          
          <creation_ts>2009-10-11 23:04:49 +0400</creation_ts>
          <short_desc>/sbin/installkernel exit status</short_desc>
          <delta_ts>2009-10-13 14:31:21 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>bootloader-utils</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Artem Zolochevskiy">azol</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>at</cc>
    
    <cc>boyarsh</cc>
    
    <cc>cetus</cc>
    
    <cc>ender</cc>
    
    <cc>evg</cc>
    
    <cc>glebfm</cc>
    
    <cc>ldv</cc>
    
    <cc>placeholder</cc>
    
    <cc>sem</cc>
    
    <cc>slazav</cc>
    
    <cc>vitty</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>101270</commentid>
    <comment_count>0</comment_count>
    <who name="Artem Zolochevskiy">azol</who>
    <bug_when>2009-10-11 23:04:49 +0400</bug_when>
    <thetext>скрипт /sbin/installkernel возвращает 0 даже при таком:

$ /sbin/installkernel `uname -r`
/sbin/installkernel: line 75: cd: /boot: Отказано в доступе
mkinitrd: Directory &quot;/lib/modules/2.6.30-std-def-alt12&quot; doesn&apos;t exist
or not accessible.
/sbin/installkernel: line 96: cd: переменная OLDPWD не установлена
cp: невозможно открыть `/etc/lilo.conf&apos; для чтения: Отказано в доступе
Cannot open /etc/lilo.conf
sed: невозможно прочитать /etc/lilo.conf: Отказано в доступе
$ echo $?
0

наверное, если в работе скрипта возникли сложности, то exit status должен быть ненулевой.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101277</commentid>
    <comment_count>1</comment_count>
    <who name="Afanasov Dmitry">ender</who>
    <bug_when>2009-10-12 00:33:32 +0400</bug_when>
    <thetext>предлагаю заранее повесить баг, блокирующий текущий, на пакеты, что вызывают installkernel, чтобы добавить к вызову хотя бы ||:

в данный момент там используются всякие %post_kernel_image из rpm-build-kernel, при раскрытии которых вызывается простой /sbin/installkernel.

если installkernel начнет возвращать ошибки при отвалах, можем получить историю a-la man-pages - прекращение всей rpm транзакции. а значит пока не будет зафикшен вызов в %post и %pre, лечить текущую багу нельзя.

одно но - куда вешать не знаю. rpm-build-kernel? все kernel-image-*-*?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101279</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-10-12 00:48:39 +0400</bug_when>
    <thetext>(In reply to comment #1)
&gt; предлагаю заранее повесить баг, блокирующий текущий, на пакеты, что вызывают
&gt; installkernel, чтобы добавить к вызову хотя бы ||:

Если вы найдёте ошибку, скажем, в grep(1), вы станете вешать баги на все пакеты, использующие grep?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101295</commentid>
    <comment_count>3</comment_count>
    <who name="Andrey Rahmatullin">wrar</who>
    <bug_when>2009-10-12 11:58:31 +0400</bug_when>
    <thetext>*** Bug 21913 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101296</commentid>
    <comment_count>4</comment_count>
    <who name="Afanasov Dmitry">ender</who>
    <bug_when>2009-10-12 12:22:01 +0400</bug_when>
    <thetext>(В ответ на комментарий №2)
&gt; Если вы найдёте ошибку, скажем, в grep(1), вы станете вешать баги на все
&gt; пакеты, использующие grep?
если изменится поведение grep - станет, к примеру, по умолчанию установится поведение grep -v, - я полагаю так взорвать сизиф не позволите вы лично :)

а тут мы меняем именно поведение: grep начинает действовать как grep -v.

отменяем багу? или всё-таки развешиваем блоки?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101318</commentid>
    <comment_count>5</comment_count>
    <who name="Vladislav Zavjalov">slazav</who>
    <bug_when>2009-10-12 15:22:38 +0400</bug_when>
    <thetext>Может, все не так страшно...

Как я понимаю, считается, что отсутствие lilo.conf или menu.lst -- не ошибка, так как мы допускаем работу с разными загрузчиками.

Ошибку можно возвращать в случае невозможности расставить симлинки на ядра и в случае ошибки при запуске lilo. Наверное и то и другое - действительно серьезные проблемы, достойные отваливания всего. 

(Еще непонятно, надо ли отваливаться при отсутствии прав на запись в существующие lilo.conf или menu.lst или просто тихо пропускать их. Но это мало на что повлияет, т.к. если есть права на запись в /boot, то и lilo.conf наверняка можно писать...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101320</commentid>
    <comment_count>6</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2009-10-12 15:26:24 +0400</bug_when>
    <thetext>(В ответ на комментарий №5)
&gt; Может, все не так страшно...

но в любом случае диагностика могла бы быть и более ясной.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101323</commentid>
    <comment_count>7</comment_count>
    <who name="Vladislav Zavjalov">slazav</who>
    <bug_when>2009-10-12 15:44:02 +0400</bug_when>
    <thetext>&gt; но в любом случае диагностика могла бы быть и более ясной.

Да, конечно. Но сперва надо понять, что считать ошибкой, а что тихо пропускать...
Оно вот сейчас даже при отсутствии perl не сильно обижается:

if [ ! -x &quot;$PERL&quot; ] &amp;&amp; ! type &quot;$PERL&quot; &gt;/dev/null 2&gt;&amp;1; then
  echo &quot;$0: warning: PERL=$PERL not available; supposed to run manually...&quot;
  PERL=&quot;echo $PERL&quot;
fi</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101330</commentid>
    <comment_count>8</comment_count>
    <who name="Vladislav Zavjalov">slazav</who>
    <bug_when>2009-10-12 16:06:05 +0400</bug_when>
    <thetext>Вот моя предварительная версия:
http://git.altlinux.org/people/slazav/packages/?p=bootloader-utils.git;a=commit;h=dbf35148e20b7e040ecb6243981d4952edd87b48

1) -е
2) явная проверка возможности записи в /boot + сообщение об ошибке
3) почти все остальное оставляю без ||: (в том числе mkinitrd!)
3) тихо пропускаю запись в lilo.conf и menu.lst, если нельзя туда писать
4) убрать ||: у запуска lilo у меня пока рука не поднялась :)

Что в таком варианте может сломаться? Или не стоит действовать так радикально, и убрать -e?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101331</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2009-10-12 16:10:41 +0400</bug_when>
    <thetext>(In reply to comment #8)
&gt; Вот моя предварительная версия:
&gt; http://git.altlinux.org/people/slazav/packages/?p=bootloader-utils.git;a=commit;h=dbf35148e20b7e040ecb6243981d4952edd87b48
&gt; 
&gt; 1) -е
&gt; 2) явная проверка возможности записи в /boot + сообщение об ошибке
&gt; 3) почти все остальное оставляю без ||: (в том числе mkinitrd!)
&gt; 3) тихо пропускаю запись в lilo.conf и menu.lst, если нельзя туда писать
&gt; 4) убрать ||: у запуска lilo у меня пока рука не поднялась :)
&gt; 
&gt; Что в таком варианте может сломаться? Или не стоит действовать так радикально,
&gt; и убрать -e?

Боюсь что в таком варианте может сломаться установка пакетов с ядрами, что было бы существенно хуже.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101337</commentid>
    <comment_count>10</comment_count>
    <who name="Vladislav Zavjalov">slazav</who>
    <bug_when>2009-10-12 16:25:32 +0400</bug_when>
    <thetext>Хорошо, тогда уберу -e. Остальное кажется безобидным, устанавливать пакет с ядрами при ! [ -w &quot;$BOOTDIR&quot; ] все равно довольно глупо...

Кстати, заметил там забавную логику с симлинками: старое ядро всегда vmlinuz, а новое - по-разному, может быть и vmlinuz-xen например. Зачем такое было сделано?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101402</commentid>
    <comment_count>11</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2009-10-13 14:31:21 +0400</bug_when>
    <thetext>bootloader-utils-0.4.4-alt1 -&gt; sisyphus:

* Tue Oct 13 2009 Vladislav Zavjalov &lt;slazav@altlinux&gt; 0.4.4-alt1

- installkernel: improve error messages (closes: #21914)</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>