
/usr/lib/yp/ypinit -m刚执行就返回failed to send clear to local ypserv: RPC: Program not registered后面可能还继续打印Updating passwd.byuid...这条报错在 NIS 服务器端初始化数据库时很典型不是 passwd 或 group 文件格式先坏了而是本地 ypserv 没有在 RPC 层注册成功或者 ypinit 跑在了 ypserv、portmap/rpcbind 启动之前。遇到这种问题继续盲重启服务容易反复折腾更稳的做法是先把本机 ypserv、portmap、RPC 注册状态和 ypinit 顺序收集出来再用 Codex 逐项对照。Codex 接 TaoToken 的兼容通道时先打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentnis_ypinit_codex 创建 Key把 Codex 的 Base URL 填https://taotoken.net/api然后把/usr/lib/yp/ypinit -m的报错、rpcinfo -p localhost、ps、/etc/ypserv.conf、/etc/sysconfig/network贴给 Codex让它按 NIS 服务启动顺序做排障对照。TaoToken 只提供 Key 和兼容通道不替 ypserv 注册 RPCNIS 服务端的 RPC 注册仍要由本机 rpcbind/portmap 和 ypserv 完成。原问题与场景ypinit 报 RPC: Program not registeredNIS 服务器端初始化数据库时/usr/lib/yp/ypinit -m并不是单纯执行一次文件转换。它大致做两件事先根据/var/yp/Makefile把/etc/passwd、/etc/group、/etc/hosts等文件生成 NIS map然后向本地 ypserv 发送clear通知让 ypserv 重新读取或感知数据库变化。如果此时本地 ypserv 没有运行或者 ypserv 没有在 rpcbind/portmap 中登记ypinit发出的 RPC 调用就找不到目标程序于是出现RPC: Program not registered。很多人看到后面还有Updating passwd.byuid...会误以为数据库已经建好了。实际上那可能只是 map 生成阶段继续执行并不代表 ypserv 已经完成注册和加载。真正要确认的是rpcinfo -p localhost里有没有 ypserv 对应的程序号通常是100004进程列表里有没有 ypservNIS 域名是否设置正确/etc/ypserv.conf是否允许本机访问以及执行ypinit -m前 ypserv 是否已经处于可用状态。原文的折腾点也在这里需要先查服务再初始化。更具体地说老系统通常先启动portmap再启动ypserv和yppasswdd确认 RPC 注册成功最后才运行/usr/lib/yp/ypinit -m。新系统可能用rpcbind替代portmap服务名和 systemd 单元也不同。如果不把这一层顺序理清只在ypinit失败后反复重跑问题会一直卡在同一个地方。这个场景适合用 Codex 做辅助排障你把命令输出贴过去让 Codex 按“RPC 注册、进程状态、NIS 域名、ypserv.conf 权限、ypinit 顺序、map 文件结果”逐项判断。它不能替你启动 ypserv也不能替你注册 RPC但它能帮你把散落的输出归位减少在服务器上靠记忆试错的时间。TaoToken 前置给 Codex 一个可接入的兼容通道TaoToken 在这里的角色是给 Codex 提供 API Key 和兼容通道让 Codex 能正常对话并分析你贴出的 NIS 排障信息。它不是 NIS 组件不参与 ypserv 的 RPC 注册也不会修改/etc/ypserv.conf或/var/yp/Makefile。因此配置顺序要分清先让 Codex 能通再把 NIS 的本机状态喂给 Codex 做对照。先在 TaoToken 官网创建 Keyhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentnis_ypinit_codex创建后拿到YOUR_API_KEY。Codex 侧要改的是~/.codex/config.toml把 provider 指向 TaoTokenBase URL 使用https://taotoken.net/api注意API 地址不要加多余路径也不要写成官网首页。Codex 的模型名不要凭感觉填应该用你在 TaoToken 控制台看到的可用模型 ID。下面配置里的YOUR_MODEL_ID需要替换。可复制配置Codex config.toml 与 ypserv 检查顺序先写 Codex 配置。不同 Codex 版本字段可能略有差异以 TaoToken 接入文档和本机codex --version行为为准下面是一份可直接改的模板# ~/.codex/config.toml model YOUR_MODEL_ID model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chat然后在 shell 中导出 Key。若你的 Codex 版本只认OPENAI_API_KEY就把env_key改为OPENAI_API_KEY并对应导出export TAOTOKEN_API_KEYYOUR_API_KEY codexCodex 能启动后先不要急着问“怎么修 NIS”。先把 NIS 服务器端现场收集成一段可复制的文本。下面命令不会修改 NIS 配置只做读取{ echo date date echo os cat /etc/os-release echo nisdomainname nisdomainname echo process ps -ef | grep -E ypserv|portmap|rpcbind|yppasswdd|ypxfrd | grep -v grep echo rpcinfo rpcinfo -p localhost echo ypserv.conf cat /etc/ypserv.conf echo sysconfig network grep -E NISDOMAIN|YPSERV_ARGS|YPXFRD_ARGS /etc/sysconfig/network echo ypservers cat /var/yp/ypservers 2/dev/null } /tmp/nis-rpc-debug.txt把/tmp/nis-rpc-debug.txt内容贴给 Codex提示词可以这样写我在 NIS 服务器端执行 /usr/lib/yp/ypinit -m报错包含 RPC: Program not registered。 本机系统、nisdomainname、ypserv/portmap/rpcbind 进程、rpcinfo -p localhost、/etc/ypserv.conf、/etc/sysconfig/network、/var/yp/ypservers 如下。 请按以下顺序逐项判断 1. rpcbind 或 portmap 是否在 111 端口提供 RPC 服务 2. ypserv 进程是否存在是否以正确 NIS 域名启动 3. rpcinfo -p localhost 是否存在 100004 对应的 ypserv 注册 4. /etc/ypserv.conf 是否允许 127.0.0.1 访问 5. /etc/sysconfig/network 中 NISDOMAIN 是否与当前 nisdomainname 一致 6. /var/yp/ypservers 是否写了主服务器主机名 7. 当前是否在 ypserv 启动前执行了 /usr/lib/yp/ypinit -m。 不要建议跳过 ypserv 启动也不要让我直接删除 /var/yp 下的数据库。这类提示词能限制 Codex 不要把问题归因到无关方向。它只根据输出做判断真正的修复命令仍由你在本机确认后执行。验证请求与成功结果rpcinfo、ypcat 和 ypinit -m在 Codex 通的前提下先验证 Codex 能否正常返回。你可以问一个短问题例如“读取下面 rpcinfo 输出判断 ypserv 是否已注册”确认 Codex 不是 401、404 或模型名错误。Codex 能回答后再回到 NIS 本机验证。NIS 服务器端应先确保 RPC 服务已运行。老系统常见顺序service portmap restart service ypserv restart rpcinfo -p localhost | grep -E ypserv|yppasswdd|ypxfrd|100004|100009新系统可能是systemctl restart rpcbind systemctl restart ypserv systemctl restart yppasswdd rpcinfo -p localhost | grep -E ypserv|yppasswdd|ypxfrd|100004|100009关键成功标志是rpcinfo -p localhost中出现 ypserv 对应记录通常程序号为100004。如果只有 portmapper/rpcbind 的100000没有100004那么/usr/lib/yp/ypinit -m报RPC: Program not registered就很容易复现。确认 ypserv 已注册后再执行初始化/usr/lib/yp/ypinit -m交互中按提示输入主 NIS 服务器主机名按 CtrlD 结束输入再按 Y 确认。成功后/var/yp/nis.test/一类目录下应能看到 map 文件例如passwd.byname、passwd.byuid、group.byname、hosts.byname。再用以下命令验证ypwhich ypcat passwd ypcat hosts rpcinfo -p localhost | grep ypserv如果客户端也已配置好在客户端执行ypcat passwd能输出服务器上的账号信息说明 NIS 查询链路基本可用。此时再回头看最初的RPC: Program not registered它应该已经被消除因为 ypserv 已经在 RPC 层注册并且 ypinit 是在 ypserv 之后运行的。本篇常见错排查ypserv、portmap、ypserv.conf 顺序问题第一类错是服务名不匹配。老教程写service portmap restart但新系统可能是rpcbind。如果 rpcbind 没跑ypserv 即使启动也可能无法注册 RPC。先用rpcinfo -p localhost看 111 端口对应服务再决定启动 portmap 还是 rpcbind。第二类错是 ypserv 启动失败但没看日志。ps中看不到 ypserv 时不要直接重跑 ypinit。查看journalctl -u ypserv -n 100 --no-pager tail -n 100 /var/log/messages常见原因包括 NIS 域名未设置、主机名解析失败、/etc/ypserv.conf语法错误。第三类错是 NIS 域名不一致。nisdomainname输出应与/etc/sysconfig/network中的NISDOMAIN一致。如果命令临时设了nis.test但配置文件写的是别名重启后 ypserv 可能以空域名或旧域名启动导致 map 目录和客户端查询不匹配。第四类错是/etc/ypserv.conf顺序写反。配置格式是Host : Domain : Map : Security逐行匹配。允许本机和内网的规则要放在deny前例如127.0.0.1/255.0.0.0:*:*:none 192.168.85.0/255.255.255.0:*:*:none *:*:*:deny如果*:*:*:deny写在第一行本机 ypinit 与 ypserv 通信也可能被挡住。第五类错是/var/yp/ypservers和主机名解析。主服务器主机名要能被本机解析/etc/hosts中最好有对应记录。/var/yp/ypservers通常写主服务器主机名不要误写成 NIS 域名。第六类错是主从角色混用。主服务器用/usr/lib/yp/ypinit -m从服务器用/usr/lib/yp/ypinit -s 主服务器IP或主机名。在从服务器上跑-m或者主服务器没有启动 ypserv 就同步都会出现 RPC 相关报错。第七类错是防火墙和固定端口。NIS 依赖 RPC除了 111还可能使用随机端口。若要固定可在/etc/sysconfig/network加YPSERV_ARGS-p 666 YPXFRD_ARGS-p 667然后重启 network、ypserv、ypxfrd并用rpcinfo -p查看。放行防火墙时要把实际端口一起考虑。第八类错是 Codex 配置错误。base_url必须填https://taotoken.net/apiKey 要与env_key对应model_provider要与[model_providers.taotoken]名称一致模型 ID 要来自控制台。401 通常看 Key404 通常看 Base URL 是否多写路径model not found 通常看模型 ID。排障时不要用 Codex 输出的命令直接盲跑尤其是覆盖/etc/ypserv.conf、删除/var/yp或重建数据库的命令要先人工确认。语义一致 CTA排障接入走 API Keys 与文档如果你已经按上面的方式在 Codex 里把 Base URL 填为https://taotoken.net/api但在 NIS 排障对话中还遇到 401、404、model not found或者config.toml字段与当前 Codex 版本不一致建议先到 API Keys 页面检查 Key 状态再对照接入文档改配置。创建或查看 Keyhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_contentapi_keys_nis_ypinitutm_campaignrewrite接入文档入口https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_contentdoc_nis_ypinitutm_campaignrewrite如果你长期用 Codex 做服务器排障、NIS 初始化检查、ypserv.conf 对照这类工作也可以看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_contentcoding_plan_nis_ypinitutm_campaignrewrite最后再强调一次TaoToken 只提供 Key 和兼容通道不替 ypserv 注册 RPC也不替 portmap/rpcbind 启动服务。/usr/lib/yp/ypinit -m报RPC: Program not registered时本机要确认的顺序仍然是rpcbind/portmap 先可用ypserv 正常启动并注册 RPCNIS 域名和 ypserv.conf 无冲突最后再执行 ypinit。Codex 的作用是帮你把这些输出逐项对照减少反复试错。