NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

bin/54741: postinstall(8) fix no longer update /etc/rc.subr etc.

>Number:         54741
>Category:       bin
>Synopsis:       postinstall(8) fix no longer update /etc/rc.subr etc.
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Dec 06 13:40:00 +0000 2019
>Originator:     Izumi Tsutsui
>Release:        NetBSD 9.0_RC1
System: NetBSD mirage 9.0_RC1 (GENERIC) #0: Wed Nov 27 16:14:52 UTC 2019 i386
Architecture: i386, but maybe all
Machine: i386
postinstall fix no longer update /etc/rc.subr while it did in 8.1 and prior.

Update NetBSD from 7.x (or prior) to 9.0_RC1.
/etc/rc complains
> eval: checkyesnox: not found

See also:

Even after 9.0_RC1 is installed:
# ident /etc/rc.subr
     $NetBSD: rc.subr,v 2018/04/04 16:07:33 martin Exp $
# tar zxpf etc.tgz
# ident etc/rc.subr
     $NetBSD: rc.subr,v 1.103 2018/09/23 23:02:39 kre Exp $
# postinstall -s etc.tgz fix > /dev/null 2>&1
# ident /etc/rc.subr
     $NetBSD: rc.subr,v 2018/04/04 16:07:33 martin Exp $


In postinstall(8) in 8.x, it had an explicit entry:
# XXX Generate these from ../../distrib/sets/lists
	compare_dir "${op}" "${SRC_DIR}/etc" "${DEST_DIR}/etc" 644 \

In src/usr.sbin/postinstall/ has a definition
of rc_444_files, but there no reference of it.

	# rc* files in /etc/
	local rc_444_files="$(select_set_files /etc/rc \
	    "/etc/\(rc[^[:space:]/]*\)" ${etcsets})"
	compare_dir "${op}" "${SRC_DIR}/etc" "${DEST_DIR}/etc" 644 \
	failed=$(( ${failed} + $? ))
% grep rc_444_files /usr/src/usr.sbin/postinstall/
	local rc_444_files="$(select_set_files /etc/rc \
% grep rc_644_files /usr/src/usr.sbin/postinstall/

However, the above "rc_444_files" (or rc_644_files) by
select_set_files() includes rc.conf and rc.d which
should not be updated by the fix op:
rc fix:
	Copied /tmp/_postinstall.6231.0/etc.tgz/etc/rc.conf to /etc/rc.conf
	Copied /tmp/_postinstall.6231.0/etc.tgz/etc/rc.subr to /etc/rc.subr
rm: /etc/rc.d: is a directory
	Can't copy /tmp/_postinstall.6231.0/etc.tgz/etc/rc.d to /etc/rc.d
	(Checking for blacklistd from /tmp/_postinstall.6231.0/etc.tgz/etc/rc.d instead of /tmp/_postinstall.6231.0/etc.tgz/external/bsd/blacklist/etc/rc.d)

I'm afraid there is no proper way to extrace them from
set files and we should have an explicit list for them like 8.x one.

Izumi Tsutsui

Home | Main Index | Thread Index | Old Index