From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Sat, 25 Dec 2021 16:35:56 +0300 From: "Dmitry V. Levin" To: ALT Devel discussion list Message-ID: <20211225133555.GA31036@altlinux.org> References: <2368b968-6f1d-82a3-24c9-6f19c587975a@gmail.com> <1aa23f9d-04ad-c558-d9e4-a294e737fd31@ya.ru> <20211222110106.lefwkop4rpeimr7q@example.org> <20211223142020.GA2176@altlinux.org> <20211223233645.GA8063@altlinux.org> <20211224000029.GB8063@altlinux.org> <20211224003013.GA8630@altlinux.org> <20211224180411.GC19509@altlinux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20211224180411.GC19509@altlinux.org> Subject: Re: [devel] I: sysvinit vs systemd X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Dec 2021 13:35:56 -0000 Archived-At: List-Archive: List-Post: 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