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
>Organization:
>Environment:
System: NetBSD mirage 9.0_RC1 (GENERIC) #0: Wed Nov 27 16:14:52 UTC 2019 mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/i386/compile/GENERIC i386
Architecture: i386, but maybe all
Machine: i386
>Description:
postinstall fix no longer update /etc/rc.subr while it did in 8.1 and prior.

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

See also:
 https://mail-index.netbsd.org/netbsd-bugs/2019/12/05/msg064842.html

Even after 9.0_RC1 is installed:
---
# ident /etc/rc.subr
/etc/rc.subr:
     $NetBSD: rc.subr,v 1.100.4.1 2018/04/04 16:07:33 martin Exp $
# tar zxpf etc.tgz
# ident etc/rc.subr
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
/etc/rc.subr:
     $NetBSD: rc.subr,v 1.100.4.1 2018/04/04 16:07:33 martin Exp $
# 

---

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

In src/usr.sbin/postinstall/postinstall.in 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 \
		${rc_644_files}
	failed=$(( ${failed} + $? ))
---
% grep rc_444_files /usr/src/usr.sbin/postinstall/postinstall.in
	local rc_444_files="$(select_set_files /etc/rc \
% grep rc_644_files /usr/src/usr.sbin/postinstall/postinstall.in
		${rc_644_files}
---

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