系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)

修改 Makefile

以下过程介绍如何在 Makefile 中添加和删除数据库。

如何修改 Makefile 以使用特定数据库
  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”

  2. 通过添加要添加的数据库的名称来修改以单词 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

    各项的顺序不相关,但连续行开头的空白空间必须为制表符,而不是空格。

  3. Makefile 结尾添加以下行:


    auto_direct: auto_direct.time
    
    auto_home: auto_home.time
  4. 在该文件中间添加 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)或其他任何非缺省映射,应执行相同的过程。

  5. 运行 make


    # make mapname
    

    其中,mapname 是要创建的映射的名称。

如何修改 Makefile 以删除数据库

如果不希望 Makefile 为特定数据库生成映射,请按如下方式编辑 Makefile

  1. all 规则中删除数据库名称。

  2. 为要删除的数据库删除或注释掉数据库规则。

    例如,要删除 hosts 数据库,应删除 hosts.time 项。

  3. 删除时间规则。

    例如,要删除 hosts 数据库,应删除 hosts: hosts.time 项。

  4. 从主服务器和从属服务器中删除映射。