[devel] I: sysvinit vs systemd
Dmitry V. Levin
ldv на altlinux.org
Сб Дек 25 16:35:56 MSK 2021
On Fri, Dec 24, 2021 at 09:04:11PM +0300, Dmitry V. Levin wrote:
> On Fri, Dec 24, 2021 at 08:50:18PM +0300, Alexey Shabalin wrote:
> [...]
> > > %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 файл в симлинк и
> > дополнительную помощь не приветствует.
>
> Если mv нельзя, то надо, видимо, делать cp -a.
При обновлении с не изменёнными /etc/sysctl.conf и /etc/modules получается:
'/etc/sysctl.conf' -> '/etc/sysctl.d/99-sysctl.conf.rpmmove'
systemd-sysctl-common-1:249.7-alt7.x86_64
renamed '/etc/sysctl.d/99-sysctl.conf' -> '/etc/sysctl.d/99-sysctl.conf.rpmsave'
renamed '/etc/sysctl.d/99-sysctl.conf.rpmmove' -> '/etc/sysctl.d/99-sysctl.conf'
'/etc/modules' -> '/etc/modules-load.d/modules.conf.rpmmove'
systemd-modules-common-1:249.7-alt7.noarch
renamed '/etc/modules-load.d/modules.conf' -> '/etc/modules-load.d/modules.conf.rpmsave'
renamed '/etc/modules-load.d/modules.conf.rpmmove' -> '/etc/modules-load.d/modules.conf'
При обновлении с изменёнными /etc/sysctl.conf и /etc/modules получается:
'/etc/sysctl.conf' -> '/etc/sysctl.d/99-sysctl.conf.rpmmove'
systemd-sysctl-common-1:249.7-alt7.x86_64
warning: /etc/sysctl.conf saved as /etc/sysctl.conf.rpmsave
renamed '/etc/sysctl.d/99-sysctl.conf' -> '/etc/sysctl.d/99-sysctl.conf.rpmsave'
renamed '/etc/sysctl.d/99-sysctl.conf.rpmmove' -> '/etc/sysctl.d/99-sysctl.conf'
'/etc/modules' -> '/etc/modules-load.d/modules.conf.rpmmove'
systemd-modules-common-1:249.7-alt7.noarch
warning: /etc/modules saved as /etc/modules.rpmsave
renamed '/etc/modules-load.d/modules.conf' -> '/etc/modules-load.d/modules.conf.rpmsave'
renamed '/etc/modules-load.d/modules.conf.rpmmove' -> '/etc/modules-load.d/modules.conf'
Я думаю, мы можем сделать лучше, если будем проверять .rpmsave,
которые создаёт rpm, например:
%pre modules-common
src=/etc/modules
dst=/etc/modules-load.d/modules.conf.rpmmove
rm -f $dst
if [ -s $src -a ! -L $src ]; then
cp -a $src $dst
fi
%post modules-common
src=/etc/modules.rpmsave
dst=/etc/modules-load.d/modules.conf
tmp=$dst.rpmmove
new=$dst.rpmnew
if [ -f $tmp ]; then
if cmp -s $src $tmp; then
mv -v -f $dst $new
mv -v $src $dst
fi
rm -f $tmp
fi
--
ldv
Подробная информация о списке рассылки Devel