下一个: , 上层: Troubleshooting


F.1 部分错误消息列表

这里是你从 cvs 看到的部分错误消息列表。它不是一个完整的列表 –cvs 可以打印很多很多的错误消息,其中一部分通常由操作系统提供, 这里是要列出通用和/或易误解的错误消息。

这些消息按字母顺序排列,但是指导文字如 `cvs update: ' 不按这种次序。

某些情况下列表包含了旧版本 cvs (部分原因是因为用户在特定时刻无法确认所 使用的 cvs 版本) 打印的消息。

file:line: Assertion 'text' failed
准确的消息格式会因不同的系统而变。它指出 cvs 里面有 bug,参见 BUGS 了解如何处理。
cvs command: authorization failed: server host rejected access
连接 pserver 服务器,认证失败时的一般的响应。检查用户名与密码是否正确, 在 inetd.conf 的 `--allow-root' 是否允许 CVSROOT。 参见 Password authenticated
cvs command: conflict: removed file was modified by second party
此消息显示你删除了一个文件,但同时另外有人还在修改它。要解决此冲突,首先要运行 `cvs add file'。如果需要,查看别人的修改以决定是否仍旧删除。如果不再 删除,结束。如果仍要删除,继续执行 `cvs remove file' 命令并提交。
cannot change permissions on temporary directory
          Operation not permitted
     

当我们在 Red Hat Linux 3.0.3 和 4.1 上测试客户机/服务器测试套件时, 此消息以不重现和偶然的方式出现。我们不清楚造成的原因,也无法知道是否仅在 Linux (甚至是仅在某个特定的机器)上出现。如果问题出现在其他 Unix 机器上, `Operation not permitted' 可能是读了 `Not owner' 或者是有问题系统使用了 unix EPERM 错误。如果你有其他信息补充,请参考 BUGS 然后让我们知道。 使用 cvs 时,你碰到这个错误,再执行操作应该可以工作良好。

cvs [server aborted]: Cannot check out files into the repository itself
产生这个消息明显的原因(特别是非客户机/服务器 cvs),是由于 cvs 的根为, 比如,/usr/local/cvsroot,但你要检出到它的子目录,像 /usr/local/cvsroot/test。但还有一种微妙的原因,是将服务器上的临时目录设为 根的子目录(这也是不允许的)。如果这就是原因,将临时目录改成其他地方,例如 /var/tmp; 参考 Environment variables 里面的 TMPDIR, 了解如何设置临时目录。
cannot commit files as 'root'
参阅 `'root' is not allowed to commit files'.
cannot open CVS/Entries for reading: No such file or directory
通常这是一个 cvs 内部错误,需要通过解决其他 cvs bug 处理(参阅 BUGS)。 一般情况下有一个工作环境–性质决定于状态,但希望能指出。
cvs [init aborted]: cannot open CVS/Root: No such file or directory
此消息是无害的。无其他错误时,操作可以成功执行。此消息不会出现在现在的 cvs 版本里面,写在这里是为 cvs 1.9 和之前的版本。
cvs server: cannot open /root/.cvsignore: Permission denied
cvs [server aborted]: can't chdir(/root): Permission denied
参阅 Connection.
cvs [checkout aborted]: cannot rename file file to CVS/,,file: Invalid argument
该消息在 Solaris 2.5 的 cvs 1.9 上偶尔会出现。原因不明; 如果你知道造成的 原因请让我们知道,见 BUGS
cvs [command aborted]: cannot start server via rcmd
很不幸,如果你运行的客户端是 cvs 1.9,这是相对非特异性的错误消息,并在连接 服务器时有错误。当前版本的 cvs 应该显示更多特定的错误消息。如果你看到这个 消息,并没有打算作为客户端,你应该指定 :local:,参考 Repository
ci: file,v: bad diff output line: Binary files - and /tmp/T2a22651 differ
cvs 1.9 和更早版本中,如果 rcs 没有正确安装,提交二进制文件, 将显示此消息。请再读一次 rcs 发布版的指示以及 cvs 发布版的 install 文件。或者,升级到当前的 cvs 版本,它不会使用 rcs,而是自己提交文件。
cvs checkout: could not check out file
cvs 1.9 中,这意味着 co 程序(rcs 的一部分)返回错误。在此之前 应该还有其他的错误消息,但没看到其他错误消息会让这个信息难以理解。在当前版本的 cvs 中,因为不再使用 co,如果没有伴随其他错误消息,可以说是 cvs 的 bug (参阅 BUGS)。
cvs [login aborted]: could not find out home directory
意思是你需要设置环境变量,使得 cvs 可以找到 home 目录。参见 Environment variables 里面的 HOMEHOMEDRIVEHOMEPATH 讨论。
cvs update: could not merge revision rev of file: No such file or directory
cvs 1.9 和更早的版本中,如果搜索 rcsmerge 程序有问题,将显示 此消息。请确保它在你的 PATH 之中,或者更新到现在的 cvs 版本, 因为它不再使用外部的 rcsmerge 程序。
cvs [update aborted]: could not patch file: No such file or directory
意思是搜索 patch 程序遇到问题。请确保它在你的 PATH 之中。注意, 尽管显示的消息不是指是否可以找到 file。如果客户端和服务器都运行当前版本的 cvs,它们不使用外部的 patch 程序,所以也不会有这样的消息。但如果客户端 或服务器运行的是 cvs 1.9,那么你就要使用 patch 程序。
cvs update: could not patch file; will refetch
这意味着客户端无论如何也不会打服务器发来的补丁。因为不能打补丁,只会降低速度, 对 cvs 也没有影响,所以消息是无关紧要的。
dying gasps from server unexpected
cvs 1.9.18 和更早的版本中,这是一个已知的 bug。我使用 `-t' 全局选项 时会重现。如果有人想了解情况,它已经被 Andy Piper 于 1997 年 11 月 14 日更改 src/filesubr.c 而修复。如果你见到这个消息,可在执行一次失败的操作,并让我们知道, 见 BUGS
end of file from server (consult above messages if any)
通常造成的原因是你使用了外部 rsh 程序,并返回一个错误。在这种情况下, rsh 程序应该在上面消息前面打印一个错误消息。了解建立 CVS 客户机和服务器的 更多信息,见 Remote repositories
cvs [update aborted]: EOF in key in RCS file file,v
cvs [checkout aborted]: EOF while looking for end of string in RCS file file,v
这意味着在 rcs 文件里面有语法错误。注意,即使 rcs 可以正确读取这个文件; cvs 要对 rcs 文件做更多的错误检测。这也是从 cvs 1.9 升级到 1.10 时看到这个消息的原因。可能是硬件、操作系统或者类似的因素造成错误。当然,如果 你发现是 cvs 造成的,请报告(参阅 BUGS)。这个错误消息会因 cvsrcs 文件里面发现的不同语法错误,有其他一些变化。


cvs commit: Executing 'mkmodules'
这个消息意味着你的参考是在 cvs 1.8 之前的版本下建立的。当使用 cvs 1.8 以后的版本,这个消息前会有
          cvs commit: Rebuilding administrative file database
     

如果你看到所有的两条消息,数据库重建了两次,虽没有必要,但是无害。如果你希望 避免重复,并且没有使用 cvs 1.7 和更早的版本,对每个出现的 modules 文件,用删除 -i mkmodulesmodules 文件的更多信息, 见 modules

missing author
当你创建 RCS 文件时将用户名设为空,这条消息将显示。cvs 将假装创建一个作者 字段没有值的非法的 RCS。解决方法是确保用户名非空并重新建立 RCS 文件。
cvs [checkout aborted]: no such tag tag
此消息的意思是 cvs 不知道 tag 标签。经常是由于你打错了标签名。 偶尔也会因创建的标签的用户没有权限写 CVSROOT/val-tags 文件(参考 参阅 File permissions 了解更多情况)。

cvs 1.12.10 之前的版本里面,有时是一些隐含的原因造成,其中标签是在仓库 里面的档案文件中创建,但是 cvs 要求用户试用其他的涉及此标签的 cvs 命令,直到发现让 cvs 更新 val-tags 文件的命令,然后最初失败的命令 才能工作。同样可以修理因前面权限造成 val-tags 过期的问题。每个标签只需要 更新一次 - 一旦标签列入 val-tags 文件,它就留在那里。

注意使用 `tag -f' 不要求标签匹配,也不覆盖此检查(参阅 Common options)。

*PANIC* administration files missing
一般这是因为名为 cvs 的目录下并没有包含 cvs 使用的管理文件。如果 这个问题是因为该 cvs 目录是由非 cvs 程序创建,那么简单的处理方法是 将它改成其他名字。如果不是上述原因,这意味着是 cvs 的 bug (参阅 BUGS)。
rcs error: Unknown option: -x,v/
这条消息之后会紧跟着 rcs 的使用方法。这意味着你使用的是旧版本的 rcs (也许是你的操作系统提供的),和旧版本的 cvs。在 cvs 1.9.18 和更早的 版本只与 rcs 5 及以后的版本一起工作; 当前版本的 cvs 不再需要运行 rcs 程序。
cvs [server aborted]: received broken pipe signal
这条消息是因为 loginfo 程序从标准输入读取所有的日志信息失败造成。如果你发现 它在其他环境下产生,请让我们知道,见 BUGS
'root' is not allowed to commit files
当提交一个永久性的更改,cvs 会为提交修改的人建立一个日志条目。如果你的提交 被当作 "root" (不是使用 "su" 或者其他具有 root 授权的程序) 记录,cvs 将无法 判断是谁做了真正的修改。正因为此,CVS 默认不允许登录为 "root" 来提交。(你可以在 configure 里面加上 --enable-rootcommit 选项并重新编译来禁止此选项。 在有些系统上面需要在编译 cvs 前修改对应的 config.h 文件)。
Too many arguments!
一般该消息是 log.pl 脚本打印,此脚本位于 cvs 源码发布版的 contrib 目录下面。在某些版本的 cvs 中,log.plcvs 默认安装的一部分。log.pl 脚本从 loginfo 管理文件里面调用。请检查 传递给 loginfo 的参数是否匹配你所用的 log.pl 脚本。特别是 cvs 1.3 和更早的版本里面的 log.pl 用日志文件作为参数,而 cvs 1.5 和更新的版本的 log.pl 需要用 `-f' 来指定日志文件。当然,如果你不需要 log.pl,请从 loginfo 里面将其注释掉。
cvs [update aborted]: unexpected EOF reading file,v
参见 `EOF in key in RCS file'.
cvs [login aborted]: unrecognized auth response from server
这个消息一般是指服务器没有正确建立。例如,inetd.conf 指向了一个不存在 的 cvs 执行文件。为了进一步调试,请查找 inetd 的日志文件(/var/log/messages 或者其他你系统里面 inetd 所采用的)。详细情况,参阅 Connection, 和 Password authentication server
cvs commit: Up-to-date check failed for `file'
它的意思是自从你上次 cvs update 以后,有人提交了这个文件的修改。所以, 在进行 cvs commit 之前需要先 cvs updatecvs 将合并你与他人 所做的修改。如果没有检测到冲突,将提示 `M file',你可以进行 cvs commit。如果发现冲突,将打印 `C file',你需要手动解决冲突。 要了解更详细的处理过程,见 Conflicts example
Usage: diff3 [-exEX3 [-i | -m] [-L label1 -L label3]] file1 file2 file3
          Only one of [exEX3] allowed
     

这指明了安装 diff3rcsmerge 的问题。特别是 rcsmerge 编译需要寻找 GNU diff3,但由搜索到的 unix diff3 替代。确切的消息内容会根据不同的 系统变化。最简单的解决方法是升级当前的 cvs 版本,它不再需要使用外部的 rcsmergediff3 程序。

warning: unrecognized response `text' from cvs server
假如 text 包含有意义的回答(像 `ok'),跟随着一个额外的回车符(在某些 系统上,这会使第二部分的消息覆盖第一部分),那么也许是你用 `:ext:' 访问方式 所采用的 rsh 程序,如非 unix 的 rsh 版本,它们默认不提供传输数据报文。在这种 情况下,你也许需要采用 `:server:' 替代 `:ext:'。如果 text 是其他内容,它预示着你的 cvs 服务器有问题。请再次确认安装是否符合 cvs 服务器架设的要求。
cvs commit: [time] waiting for user's lock in directory
这是一条普通消息,不是错误。参见 Concurrency 了解详细情况。
cvs commit: warning: editor session failed
这是指 cvs 使用的编辑器返回了非零状态。一些版本的 vi 即使编辑正常也会这样。 那么将 CVSEDITOR 环境变量指向一个小的脚本,如:
          #!/bin/sh
          vi $*
          exit 0
     

cvs [server aborted]: Secondary out of sync with primary!
这通常出现是 cvs 运行在一个第二服务器上面,并且第一服务器 (参阅 Write proxies) 与其不是同一个。如果客户端支持重定向,将不会发生。

这里版本号并不重要,但是支持列表需要服务器提供给客户端。因此,如果第二服务器 编译的有 GSSAPI 支持,然而第一服务器没有,那么两个服务器提供的支持列表会不同, 并且第二服务器将不能作为第一服务器的传输代理。反之,如果两个服务器都提供相同 的客户端请求支持,一个的版本可能是 1.12.10,另一个可能是 1.12.11。