FreeBSD 12.0-RELEASE は /etc/passwd と /etc/group に ntpd ユーザが必要なので installworld DESTDIR= は失敗する ― 2018年12月13日 13時30分31秒
要約すると installworld が /etc/passwd と /etc/group に ntpd を使ってディレクトリやファイルを作成するので installworld DESTDIR= は失敗する。
DESTDIR 無しの、installworld だと、mergemaster -p を行って ntpd ユーザを追加するように促される。その後の installworld は問題なく処理される。このバグ自体は今までずっとあったバグの様で、FreeBSD 12.0-RELEASE だから失敗するわけではない。
修正方法としては、DESTDIR/etc を見るようにすれば、いい。以下のものが修正の一案。
--- Makefile.inc1
+++ Makefile.inc1
@@ -837,7 +837,7 @@
DB_FROM_SRC= yes
.endif
-.if defined(DB_FROM_SRC)
+.if defined(DB_FROM_SRC) || defined(DESTDIR)
INSTALLFLAGS+= -N ${.CURDIR}/etc
MTREEFLAGS+= -N ${.CURDIR}/etc
.endif
@@ -853,7 +853,7 @@
.if defined(BUILD_PKGS)
INSTALLFLAGS+= -h sha256
.endif
-.if defined(DB_FROM_SRC) || defined(NO_ROOT)
+.if defined(DB_FROM_SRC) || defined(NO_ROOT) || defined(DESTDIR)
IMAKE_INSTALL= INSTALL="install ${INSTALLFLAGS}"
IMAKE_MTREE= MTREE_CMD="mtree ${MTREEFLAGS}"
.endif
@@ -1187,13 +1187,13 @@
_installcheck_world: __installcheck_UGID
__installcheck_UGID: .PHONY
.for uid in ${CHECK_UIDS}
- @if ! `id -u ${uid} >/dev/null 2>&1`; then \
+ @if ! `grep "^${uid}:" ${DESTDIR}/etc/passwd > /dev/null 2>&1`; then \
echo "ERROR: Required ${uid} user is missing, see /usr/src/UPDATING."; \
false; \
fi
.endfor
.for gid in ${CHECK_GIDS}
- @if ! `find / -prune -group ${gid} >/dev/null 2>&1`; then \
+ @if ! `grep "^${gid}:" ${DESTDIR}/etc/group > /dev/null 2>&1`; then \
echo "ERROR: Required ${gid} group is missing, see /usr/src/UPDATING."; \
false; \
fi
最近のコメント