トップ «前の日記(2018-02-06) 最新 次の日記(2018-02-08)» 編集

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|12|
2024|01|02|03|

2018-02-07 :-)

_ [pkgsrc][NetBSD]pkgsrc Makefile の PKG_USERS

Makefile に PKG_USERS を書いておいたんだけど

PKG_USERS= hoge:hoge

make install したら最後に怒られた。

===========================================================================
The following users need to be created for hoge-package-0.1:

        hoge: hoge, /nonexistent, /sbin/nologin

===========================================================================

このメッセージは pkginstall/usergroup の CHECK-ADD で印字している。usergroup はシェルスクリプトであり、CHECK-ADD は

./usergroup CHECK-ADD

として呼び出されたときに通る処理である。

./usergroup CHECK-ADD を呼び出してるのは pkginstall/bsd.pkginstall.mk のここ。

.PHONY: su-create-usergroup
su-create-usergroup: ${_INSTALL_USERGROUP_UNPACKER}
	${RUN}								\
	cd ${_PKGINSTALL_DIR} &&					\
	${SH} ${_INSTALL_USERGROUP_UNPACKER};				\
	exitcode=1;							\
	if ${TEST} -f ./+USERGROUP &&					\
	   ./+USERGROUP ADD ${_PKG_DBDIR}/${PKGNAME} &&			\
	   ./+USERGROUP CHECK-ADD ${_PKG_DBDIR}/${PKGNAME}; then	\    ここを通過していないので exitcode が 0 とならない
		exitcode=0;						\
	fi;								\
	${RM} -f ${_INSTALL_USERGROUP_FILE:Q}				\
		${_INSTALL_USERGROUP_DATAFILE:Q}			\
		${_INSTALL_USERGROUP_UNPACKER:Q}			\
		./+USERGROUP;						\
	exit $$exitcode

CHECK-ADD で失敗しているということはその 1 行前の ADD が失敗しているということだろう。

ADD の処理を眺めると冒頭で GROUP を探している。

ADD)
	${SED} -n "/^\# GROUP: /{s/^\# GROUP: //;p;}" ${SELF} | ${SORT} -u |
	{ while read line; do

んだけど、Makefile に GROUP を書いてないのでたぶんこの while read line の line はカラッポだからすぐに while を抜ける。たぶん

その次の USER の処理。Makefile に USER は書いてあるのでこの while には入るんだろう。

	${SED} -n "/^\# USER: /{s/^\# USER: //;p;}" ${SELF} | ${SORT} -u |
	{ while read line; do

実際にユーザーを追加する処理がここか。

		case ${_PKG_CREATE_USERGROUP} in
		yes)
			group_exists $group || continue
			user_exists $user $userid
			case $? in
			0)	;;
			1)	adduser "$user" "$group" "$userid"	\
					"$descr" "$home" "$shell"
				;;
			esac
			;;
		esac

でも group に追加してないので group_exists $group || continue により、次の行の user_exists $user $userid を飛ばされる。と思う。

というわけで Makefile に GROUP を追加した。

PKG_GROUPS= hoge
PKG_USERS= hoge:hoge

make install したら user も group も追加された。おk

% grep hoge /etc/passwd /etc/group 
/etc/passwd:hoge:*:1002:1001:hoge-package hoge user:/nonexistent:/sbin/nologin
/etc/group:hoge:*:1001:

_ [艦これ][三越]「艦これ」×「三越」コラボ ─「艦これ」5周年祭─【前段作戦】 第四次作戦|三越オンラインストア

チョコレート全種類と酒種類を買いました。ジャケットも欲しいと思ったんだけどサイズを S か M (肩幅 45cm か 46cm か)で迷っているうちに完売してしまった。

ジャケットは手元に肩幅 45cm のと 46cm のがあって

  • 45cm: ちょうどよい
  • 46cm: 大きい

なので S サイズが最適だと思うんだが、えいやっと買うには値段がなかなか高い。

ところで「前段作戦」ということは後段もあるんですよね。