[devel] I: sysvinit vs systemd

Alexey Shabalin a.shabalin на gmail.com
Пт Дек 24 20:50:18 MSK 2021


пт, 24 дек. 2021 г. в 03:30, Dmitry V. Levin <ldv на altlinux.org>:
>
> On Fri, Dec 24, 2021 at 03:00:29AM +0300, Dmitry V. Levin wrote:
> > On Fri, Dec 24, 2021 at 02:36:45AM +0300, Dmitry V. Levin wrote:
> > > On Thu, Dec 23, 2021 at 06:53:56PM +0300, Alexey Shabalin wrote:
> > > > чт, 23 дек. 2021 г. в 17:20, Dmitry V. Levin <ldv на altlinux.org>:
> > > > > > Дима предложил порядок действий:
> > > > > >
> > > > > > + В startup ссылки /etc/modules и /etc/sysctl.conf заменяются на
> > > > > > зависимости.
> > > > > >
> > > > > > + Из systemd ссылка /etc/modules-load.d/modules.conf заменяется на
> > > > > > зависимость.
> > > > > >
> > > > > > + В systemd-sysctl-common ссылка /etc/sysctl.d/99-sysctl.conf заменяется
> > > > > > на файл и добавляется ссылка /etc/sysctl.conf.
> > > > > >
> > > > > > + В новом systemd-modules-common добавляется файл
> > > > > > /etc/modules-load.d/modules.conf и ссылка /etc/modules на него.
> > > > > >
> > > > > > + В обоих -common добавляются %pre, которые перемещают заменяемые файлы на
> > > > > > новые места.
> > > > > >
> > > > > > После этого startup перестанет появляться на системах с systemd и
> > > > > > вытягивать ненужные зависимости.
> > > > >
> > > > > Чтобы не было разночтений, я ожидаю, что мантейнер пакета systemd всё это
> > > > > исправит.  Если он по той или иной причине не сможет, я буду искать того,
> > > > > кто сможет.
> > > >
> > > > Тоже внесу ясность. Я жду от мантейнеров пакета startup предложенных
> > > > изменений. Он первый в списке. От изменений в нем зависит все
> > > > остальное.
> > >
> > > $ rpmquery -Rp /ALT/Sisyphus/files/SRPMS/startup-0.9.9.13-alt1.src.rpm
> > > rpmlib(PayloadIsLzma)
> > > $ rpmquery -Rp /ALT/Sisyphus/files/SRPMS/systemd-249.7-alt5.src.rpm |wc -l
> > > 54
> > >
> > > На всякий случай при таком раскладе лучше собирать пакет startup
> > > последним подзаданием в сборочном задании.
> >
> > https://git.altlinux.org/people/ldv/packages/?p=startup.git;a=tag;h=0.9.9.14-alt1
> > - я проверил, что этот пакет собирается.

https://git.altlinux.org/people/shaba/packages/systemd.git
Проверил сборку и обновление.

>
> PoC, untested:

Спасибо.

>
> %pre -n systemd-modules-common
> src=/etc/modules
> dst=/etc/modules-load.d/modules.conf
> tmp=$dst.rpmmove
> rm -f $tmp
> if [ -L $dst -a -s $src -a ! -L $src ]; then

Убрал проверку -L $dst. Потому что может не быть такого симлинка
(напрмер на системах sysv).
На самом деле не важно, есть ли там сейчас симлинк, все равно в итоге
там должен оказаться файл с содержимым /etc/modules.

>         mkdir -p ${tmp%/*}

Убрал mkdir, т.к. все эти каталоги принадлежат пакету filesystem и
обязаны присутствовать в системе.

>         mv $src $tmp

Оказалось что нельзя делать mv. При отсутствии $src выдает ошибку rpm
про cpio archive.
Заменил на cp. Rpm сам успешно преобразует $src файл в симлинк и
дополнительную помощь не приветствует.

> fi
>
> %post -n systemd-modules-common
> src=/etc/modules-load.d/modules.conf.rpmmove
> dst=/etc/modules-load.d/modules.conf
> tmp=$dst.rpmsave
> if [ -s $src ]; then
>         mv $dst $tmp
>         mv $src $dst
>         if cmp -s $dst $tmp; then
>                 rm -f $tmp
>         fi

Если мы тут создаем rpmsave вручную, то я еще добавил удаление
/etc/modules.rpmsave автоматически создаваемое rpm.

> fi
>


-- 
Alexey Shabalin


Подробная информация о списке рассылки Devel