Bug 24709 - /etc/sysconfig/installkernel misplacement
: /etc/sysconfig/installkernel misplacement
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/bootloader-utils)
: unstable
: all Linux
: P3 major
Assigned To:
:
:
:
: 24707
:
  Show dependency tree
 
Reported: 2010-12-08 01:09 by
Modified: 2010-12-08 04:29 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2010-12-08 01:09:47
+++ This bug was initially created as a clone of Bug #24707 +++

(In reply to comment #22)
> (In reply to comment #20)
> > Добавил.
> 
> Спасибо, конфиг теперь в правильном месте.

Я почти уверен, что при переезде может возникнуть одна из двух проблем:

1. Пакет make-initrd был установлен, и файл /etc/sysconfig/installkernel был
модифицирован.  Тогда по окончании обновления файла
/etc/sysconfig/installkernel не будет вообще, и make-initrd не будет
использоваться.
2. Пакет make-initrd не был установлен, и файл /etc/sysconfig/installkernel не
существовал.  Тогда по окончании обновления файл /etc/sysconfig/installkernel
будет настроен на использование make-initrd.

Обе эти ситуации нужно исправить за те несколько часов, пока Сизиф не
опубликован.
------- Comment #1 From 2010-12-08 01:20:28 -------
> Я почти уверен, что при переезде может возникнуть одна из двух проблем:
> 
> 1. Пакет make-initrd был установлен, и файл /etc/sysconfig/installkernel был
> модифицирован.  Тогда по окончании обновления файла
> /etc/sysconfig/installkernel не будет вообще, и make-initrd не будет
> использоваться.

Как это может случиться? С обновлением make-initrd приедет новый
bootloader-utils с этим файлом. 

> 2. Пакет make-initrd не был установлен, и файл /etc/sysconfig/installkernel не
> существовал.  Тогда по окончании обновления файл /etc/sysconfig/installkernel
> будет настроен на использование make-initrd.

С обновлением человеку приедет make-initrd. В чём тогда проблема?

> 
> Обе эти ситуации нужно исправить за те несколько часов, пока Сизиф не
> опубликован.

Я только "за", но пока не понимаю даже где проблема
------- Comment #2 From 2010-12-08 01:29:20 -------
(In reply to comment #0)
> Я почти уверен, что при переезде может возникнуть одна из двух проблем:
> 
> 1. Пакет make-initrd был установлен, и файл /etc/sysconfig/installkernel был
> модифицирован.  Тогда по окончании обновления файла
> /etc/sysconfig/installkernel не будет вообще, и make-initrd не будет
> использоваться.

При _обновлении_ make-initrd _и_ bootloader-utils при этом, скорее всего,
возникнет следующая картинка:
/etc/sysconfig/installkernel переименуется в
/etc/sysconfig/installkernel.rpmsave, а новый файл будет создан под именем
/etc/sysconfig/installkernel.rpmnew

Если это так (я уверен, но надо проверить на всякий случай),
то надо _попробовать_ сделать триггер следующего вида:

%triggerpostun -- make-initrd < 0.4.3-alt2
[ $1 -ge 1 -a $2 -ge 1 ] || exit 0
f=/etc/sysconfig/installkernel
[ ! -f $f ] || exit 0
if [ -f $f.rpmsave ]; then
  cp -a $f.rpmsave $f
elif [ -f $f.rpmnew ]; then
  cp -a $f.rpmnew $f
fi

> 2. Пакет make-initrd не был установлен, и файл /etc/sysconfig/installkernel не
> существовал.  Тогда по окончании обновления файл /etc/sysconfig/installkernel
> будет настроен на использование make-initrd.

Если файла /etc/sysconfig/installkernel не было до начала _обновления_ пакета
bootloader-utils, то и по окончании обновления в этом файле не должно быть
ничего раскомментированного.  Можно _попробовать_ решить эту проблему следующим
образом:

%pre
[ $1 -gt 1 ] || exit 0
f=/etc/sysconfig/installkernel
[ -f $f ] || touch $f
------- Comment #3 From 2010-12-08 01:35:12 -------
(In reply to comment #2)
> > 1. Пакет make-initrd был установлен, и файл /etc/sysconfig/installkernel был
> > модифицирован.  Тогда по окончании обновления файла
> > /etc/sysconfig/installkernel не будет вообще, и make-initrd не будет
> > использоваться.
> 
> При _обновлении_ make-initrd _и_ bootloader-utils при этом, скорее всего,
> возникнет следующая картинка:
> /etc/sysconfig/installkernel переименуется в
> /etc/sysconfig/installkernel.rpmsave, а новый файл будет создан под именем
> /etc/sysconfig/installkernel.rpmnew
> 
> Если это так (я уверен, но надо проверить на всякий случай),
> то надо _попробовать_ сделать триггер следующего вида:
> 
> %triggerpostun -- make-initrd < 0.4.3-alt2
> [ $1 -ge 1 -a $2 -ge 1 ] || exit 0
> f=/etc/sysconfig/installkernel
> [ ! -f $f ] || exit 0
> if [ -f $f.rpmsave ]; then
>   cp -a $f.rpmsave $f
> elif [ -f $f.rpmnew ]; then
>   cp -a $f.rpmnew $f
> fi

Ха, оказывается, я уже делал нечто подобное в апреле 2003 года, см.
rpmquery --triggers service.
------- Comment #4 From 2010-12-08 01:37:20 -------
(In reply to comment #2)
> При _обновлении_ make-initrd _и_ bootloader-utils при этом, скорее всего,
> возникнет следующая картинка:
> /etc/sysconfig/installkernel переименуется в
> /etc/sysconfig/installkernel.rpmsave, а новый файл будет создан под именем
> /etc/sysconfig/installkernel.rpmnew
> 
> Если это так (я уверен, но надо проверить на всякий случай)

Проверил, так не получается:
[root@hataraki ~]# rpm -qf /etc/sysconfig/installkernel 
make-initrd-0.3.9-alt1
[root@hataraki ~]# cat /etc/sysconfig/installkernel 
INITRD_GENERATOR=make-initrd
MKINITRD=/usr/sbin/mkinitrd-make-initrd
[root@hataraki ~]# apt-get install
/space/ALT/Sisyphus/files/x86_64/RPMS/make-initrd-0.4.3-alt2.x86_64.rpm
/space/ALT/Sisyphus/files/noarch/RPMS/bootloader-utils-0.4.10-alt1.noarch.rpm 
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Выбрано make-initrd для
'/space/ALT/Sisyphus/files/x86_64/RPMS/make-initrd-0.4.3-alt2.x86_64.rpm'
Выбрано bootloader-utils для
'/space/ALT/Sisyphus/files/noarch/RPMS/bootloader-utils-0.4.10-alt1.noarch.rpm'
Следующие дополнительные пакеты будут установлены:
  bootloader-utils libacl make-initrd udev udev-extras udev-initramfs
udev-rule-generator udev-rules
Следующие пакеты будут ОБНОВЛЕНЫ:
  bootloader-utils libacl make-initrd udev udev-extras udev-initramfs
udev-rule-generator udev-rules
8 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 550 не будет
обновлено.
Необходимо получить 0B/520kB архивов.
После распаковки потребуется дополнительно 69,3kB дискового пространства.
Продолжить? [Y/n] y
Совершаем изменения...  
Preparing...                                                
###################################################################################################
[100%]
1: udev-rules                                               
###################################################################################################
[ 12%]
2: udev                                                     
###################################################################################################
[ 25%]
Stopping udevd service: [ DONE ]
Starting udevd service: [ DONE ]
3: libacl                                                   
###################################################################################################
[ 37%]
4: udev-extras                                              
###################################################################################################
[ 50%]
5: udev-rule-generator                                      
###################################################################################################
[ 62%]
6: udev-initramfs                                           
###################################################################################################
[ 75%]
7: bootloader-utils                                         
###################################################################################################
[ 87%]
8: make-initrd                                              
###################################################################################################
[100%]
Running /usr/lib/rpm/posttrans-filetriggers
Завершено.
[root@hataraki ~]# ls -la /etc/sysconfig/installkernel 
-rw-r--r-- 1 root root 85 Дек  8 00:35 /etc/sysconfig/installkernel
[root@hataraki ~]# rpm -qf /etc/sysconfig/installkernel 
bootloader-utils-0.4.10-alt1
[root@hataraki ~]# cat /etc/sysconfig/installkernel 
        INITRD_GENERATOR=make-initrd
        MKINITRD=/usr/sbin/mkinitrd-make-initrd
------- Comment #5 From 2010-12-08 01:40:12 -------
(In reply to comment #4)
> Проверил, так не получается:
> [root@hataraki ~]# rpm -qf /etc/sysconfig/installkernel 
> make-initrd-0.3.9-alt1
> [root@hataraki ~]# cat /etc/sysconfig/installkernel 
> INITRD_GENERATOR=make-initrd
> MKINITRD=/usr/sbin/mkinitrd-make-initrd

Это не тот случай, о котором я говорил:

(In reply to comment #0)
> 1. Пакет make-initrd был установлен, и файл /etc/sysconfig/installkernel был
> модифицирован.
------- Comment #6 From 2010-12-08 01:40:42 -------
(In reply to comment #2)
> Если файла /etc/sysconfig/installkernel не было до начала _обновления_ пакета
> bootloader-utils, то и по окончании обновления в этом файле не должно быть
> ничего раскомментированного.  Можно _попробовать_ решить эту проблему следующим
> образом:
> 
> %pre
> [ $1 -gt 1 ] || exit 0
> f=/etc/sysconfig/installkernel
> [ -f $f ] || touch $f

Т.к. мы уже выставили зависимость на make-initrd, не стоит ли считать
умолчательное его использование нормой?
------- Comment #7 From 2010-12-08 01:41:15 -------
(In reply to comment #5)
> (In reply to comment #4)
> > Проверил, так не получается:
> > [root@hataraki ~]# rpm -qf /etc/sysconfig/installkernel 
> > make-initrd-0.3.9-alt1
> > [root@hataraki ~]# cat /etc/sysconfig/installkernel 
> > INITRD_GENERATOR=make-initrd
> > MKINITRD=/usr/sbin/mkinitrd-make-initrd
> 
> Это не тот случай, о котором я говорил:
> 
Да, понял, торможу
------- Comment #8 From 2010-12-08 01:45:43 -------
(In reply to comment #6)
> Т.к. мы уже выставили зависимость на make-initrd, не стоит ли считать
> умолчательное его использование нормой?

Мы ведь не хотим сломать систему, которая не использовала make-initrd, при
_обновлении_ bootloader-utils?

Можем ли мы рассчитывать на то, что никто из пользователей mkinitrd не
обновляет пакеты из Сизифа?  Если можем, то без %pre можно обойтись, но тогда
mkinitrd надо удалить из Сизифа совсем.
------- Comment #9 From 2010-12-08 01:46:33 -------
(In reply to comment #7)
> Да, понял, торможу

# apt-get install
/space/ALT/Sisyphus/files/x86_64/RPMS/make-initrd-0.4.3-alt2.x86_64.rpm
/space/ALT/Sisyphus/files/noarch/RPMS/bootloader-utils-0.4.10-alt1.noarch.rpm 
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Выбрано make-initrd для
'/space/ALT/Sisyphus/files/x86_64/RPMS/make-initrd-0.4.3-alt2.x86_64.rpm'
Выбрано bootloader-utils для
'/space/ALT/Sisyphus/files/noarch/RPMS/bootloader-utils-0.4.10-alt1.noarch.rpm'
Следующие пакеты будут ОБНОВЛЕНЫ:
  bootloader-utils make-initrd
2 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 550 не будет
обновлено.
Необходимо получить 0B/64,7kB архивов.
После распаковки потребуется дополнительно 3043B дискового пространства.
Совершаем изменения...  
Preparing...                                                
###################################################################################################
[100%]
1: bootloader-utils                                          warning:
/etc/sysconfig/installkernel created as /etc/sysconfig/installkernel.rpmnew
###################################################################################################
[ 50%]
2: make-initrd                                              
###################################################################################################
[100%]
Running /usr/lib/rpm/posttrans-filetriggers
Завершено.
[root@hataraki ~]# ls -la /etc/sysconfig/installkernel
installkernel         installkernel~        installkernel.rpmnew
# cat /etc/sysconfig/installkernel
INITRD_GENERATOR=make-initrd
MKINITRD=/usr/sbin/mkinitrd-make-initrd
BNYA=bnya

всё равно не получается
------- Comment #10 From 2010-12-08 01:55:22 -------
(In reply to comment #9)
> всё равно не получается

Зависит от порядка:

# apt-get install
/space/ALT/Sisyphus/files/noarch/RPMS/bootloader-utils-0.4.10-alt1.noarch.rpm
/space/ALT/Sisyphus/files/x86_64/RPMS/make-initrd-0.4.3-alt2.x86_64.rpm
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Выбрано bootloader-utils для
'/space/ALT/Sisyphus/files/noarch/RPMS/bootloader-utils-0.4.10-alt1.noarch.rpm'
Выбрано make-initrd для
'/space/ALT/Sisyphus/files/x86_64/RPMS/make-initrd-0.4.3-alt2.x86_64.rpm'
Следующие пакеты будут ОБНОВЛЕНЫ:
  bootloader-utils make-initrd
2 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 550 не будет
обновлено.
Необходимо получить 0B/65,0kB архивов.
После распаковки потребуется дополнительно 3027B дискового пространства.
Совершаем изменения...  
Preparing...                                                
###################################################################################################
[100%]
1: make-initrd                                              
###################################################################################################
[ 50%]
warning: /etc/sysconfig/installkernel saved as
/etc/sysconfig/installkernel.rpmsave
2: bootloader-utils                                         
###################################################################################################
[100%]
Running /usr/lib/rpm/posttrans-filetriggers
Завершено.
[root@hataraki ~]# cat /etc/sysconfig/installkernel
[root@hataraki ~]#
------- Comment #11 From 2010-12-08 02:31:13 -------
(In reply to comment #10)
> 
> Зависит от порядка

Всё, вобщем, плохо с предложенными скриптами: в одной последовательности
триггер не вызывается совсем, в другой ему мешает %pre - файл получается всегда
пустым. Сейчас попробую более сложную конструкцию...
------- Comment #12 From 2010-12-08 02:48:38 -------
(In reply to comment #11)
> (In reply to comment #10)
> > 
> > Зависит от порядка
> 
> Всё, вобщем, плохо с предложенными скриптами: в одной последовательности
> триггер не вызывается совсем, в другой ему мешает %pre - файл получается всегда
> пустым. Сейчас попробую более сложную конструкцию...

Порядок можно фиксировать с помощью PreReq.
------- Comment #13 From 2010-12-08 02:58:57 -------
Рабочим вариантом мне кажется
http://git.altlinux.org/people/vitty/packages/?p=bootloader-utils.git;a=commitdiff;h=864685f841a3d4023690e2bacd5352f5220bed3f

при этом сомнительна необходимость файлтриггера вообще. Более красивый вариант
пока не придумался. Когда там, кстати, публикация?
------- Comment #14 From 2010-12-08 03:09:55 -------
(In reply to comment #13)
> Рабочим вариантом мне кажется
> http://git.altlinux.org/people/vitty/packages/?p=bootloader-utils.git;a=commitdiff;h=864685f841a3d4023690e2bacd5352f5220bed3f

При отсутствии возражений я готов отправить это в Сизиф в течение 15 минут
------- Comment #15 From 2010-12-08 03:34:03 -------
(In reply to comment #14)
> (In reply to comment #13)
> > Рабочим вариантом мне кажется
> > http://git.altlinux.org/people/vitty/packages/?p=bootloader-utils.git;a=commitdiff;h=864685f841a3d4023690e2bacd5352f5220bed3f
> 
> При отсутствии возражений я готов отправить это в Сизиф в течение 15 минут

Это отправлять не надо.

Для фиксации порядка установки надо заменить Requires на PreReq.
Надеюсь, PreReq ещё работает так, как надо.

Далее, проверка на .rpmsave в %pre не годится: старый забытый .rpmsave приведет
к проблемам по окончании обновления.
------- Comment #16 From 2010-12-08 03:44:45 -------
(In reply to comment #15)
> Далее, проверка на .rpmsave в %pre не годится: старый забытый .rpmsave приведет
> к проблемам по окончании обновления.

Хотя, с другой стороны, откуда при отсутствующем /etc/sysconfig/installkernel
может взятся /etc/sysconfig/installkernel.rpmsave?

%post
f=/etc/sysconfig/installkernel
[ -f $f.install ] || exit 0
cp -a $f $f.rpmnew ||:
mv $f.install $f

Если PreReq работает, то %triggerpostun не нужен.
------- Comment #17 From 2010-12-08 03:50:07 -------
(In reply to comment #15)
> Для фиксации порядка установки надо заменить Requires на PreReq.

Ok, зафиксировали. PreReq в bootloader-utils приводит как раз к обратному
порядку - make-initrd, затем - bootloader-utils. При этом триггер не
выполняется.

> Далее, проверка на .rpmsave в %pre не годится: старый забытый .rpmsave приведет
> к проблемам по окончании обновления.

Если у человека есть rpmsave и нет самого файла - это, очевидно, переезд. Если
он, конечно, rpmsave руками создал... Но только зачем? Я пока не придумал
ничего лучше.

http://git.altlinux.org/people/vitty/packages/?p=bootloader-utils.git;a=commitdiff;h=de7040c771dd4e1d001f7ca3f98a37c0f7740a4c

Триггер не выполняется никогда. Вся работа делается в pre/post.
------- Comment #18 From 2010-12-08 03:53:00 -------
(In reply to comment #16)
> 
> Если PreReq работает, то %triggerpostun не нужен.

Вот и я о том же. 

Сейчас тестирую: 
http://git.altlinux.org/people/vitty/packages/?p=bootloader-utils.git;a=commitdiff;h=9d52d75b51f9a0a05646d508d6af3821272d5af2
------- Comment #19 From 2010-12-08 04:01:59 -------
В сизиф собирается отправиться
http://git.altlinux.org/people/vitty/packages/?p=bootloader-utils.git;a=commitdiff;h=21b7e1487666b2af5d170e003832ca92f33c140a

Жду ack
------- Comment #20 From 2010-12-08 04:12:09 -------
(In reply to comment #19)
> В сизиф собирается отправиться
> http://git.altlinux.org/people/vitty/packages/?p=bootloader-utils.git;a=commitdiff;h=21b7e1487666b2af5d170e003832ca92f33c140a
> 
> Жду ack

В %pre сразу после
f=...
хорошо бы добавить
rm -f $f.install
(чтобы левый .install не испортил обновление)

В %post первой строкой можно на всякий пожарный добавить
[ $1 -gt 1 ] || exit 0

%changelog лучше переписать на что-нибудь вроде

- Fixed /etc/sysconfig/installkernel migration issues (closes: #24709):
  + do not switch from mkinitrd to make-initrd if
    make-initrd was not enabled before the update;
  + inherit locally modified config left after make-initrd update.
------- Comment #22 From 2010-12-08 04:20:52 -------
Застестировал. Поехали!
------- Comment #23 From 2010-12-08 04:21:19 -------
(In reply to comment #21)
> http://git.altlinux.org/people/vitty/packages/?p=bootloader-utils.git;a=commitdiff;h=2edf2aa7c75d93751d22d85fabe663d6aad69a2b

ack, до публикации остался 1 час
------- Comment #24 From 2010-12-08 04:29:59 -------
bootloader-utils-0.4.10-alt2 -> sisyphus:

* Tue Dec 07 2010 Vitaly Kuznetsov <vitty@altlinux> 0.4.10-alt2
- Fixed /etc/sysconfig/installkernel migration issues (ALT #24709):
  + do not switch from mkinitrd to make-initrd if
    make-initrd was not enabled before the update;
  + inherit locally modified config left after make-initrd update