以下过程介绍如何在 Makefile 中添加和删除数据库。
此过程要求您已配置了一台 NIS 主服务器。
有关获取合适的权限来执行特定任务的更多信息,请参见在 Oracle Solaris 11.2 中确保用户和进程的安全 中的 使用所指定的管理权限。
all: passwd group hosts ethers networks rpc services protocols \ netgroup bootparams aliases netid netmasks \ audit_user auth_attr exec_attr prof_attr \ auto_direct
各项的顺序不相关,但连续行开头的空白处必须为制表符,而不是空格。
auto_direct: auto_direct.time auto_home: auto_home.time
auto_direct.time: $(DIR)/auto_direct @(while read L; do echo $$L; done < $(DIR)/auto_direct $(CHKPIPE)) | \ (sed -e "/^#/d" -e "s/#.*$$//" -e "/^ *$$/d" $(CHKPIPE)) | \ $(MAKEDBM) - $(YPDBDIR)/$(DOM)/auto_direct; @touch auto_direct.time; @echo "updated auto_direct"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) auto_direct; fi @if [ ! $(NOPUSH) ]; then echo "pushed auto_direct"; fi
其中
CHKPIPE 确保在将结果传输给后面的命令之前管道符号 (|) 左侧的运算已成功完成。如果管道符号左侧的运算未成功完成,该进程将中止,并显示 "NIS make term nated"(NIS make 中止)消息。
NOPUSH 阻止 makefile 调用 yppush 将新映射传送到从属服务器。如果不设置 NOPUSH,将自动完成推送。
开头的 while 循环用于消除输入文件中的所有反斜杠扩展行。sed 脚本用于消除注释和空行。
对所有其他自动挂载程序映射(例如 auto_home 或任何其他非缺省映射)使用相同的过程。
# make mapname
其中,mapname 是要创建的映射的名称。
如果不希望 Makefile 为特定数据库生成映射,请按如下步骤编辑 Makefile。