以下过程介绍如何在 Makefile 中添加和删除数据库。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”。
通过添加要添加的数据库的名称来修改以单词 all 开头的行:
all: passwd group hosts ethers networks rpc services protocols \ netgroup bootparams aliases netid netmasks \ auto_direct auto_home auto_direct.time auto_home.time |
各项的顺序不相关,但连续行开头的空白空间必须为制表符,而不是空格。
在 Makefile 结尾添加以下行:
auto_direct: auto_direct.time auto_home: auto_home.time |
在该文件中间添加 auto_direct.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 terminated 消息。
NOPUSH 阻止 makefile 调用 yppush,以使其不能向从属服务器传送新映射。如果未设置 NOPUSH,则会自动完成推送。
开头的 while 循环旨在消除输入文件中的所有反斜杠扩展行。sed 脚本可消除注释和空行。
对于其他所有自动挂载程序映射(如 auto_home)或其他任何非缺省映射,应执行相同的过程。
运行 make。
# make mapname |
其中,mapname 是要创建的映射的名称。
如果不希望 Makefile 为特定数据库生成映射,请按如下方式编辑 Makefile。