Go to the first, previous, next, last section, table of contents.


Исправление ошибок

Если у вас есть какие-то проблемы при использовании CVS, то вам поможет это приложение. Если вы видите конкретное сообщение об ошибке, то можете найти его здесь по алфавиту. В противном случае обратитесь к главе о прочих проблемах и попробуйте найти там свою.

Частичный список сообщений CVS

Вот частичный список сообщений об ошибке, которые может выдавать CVS. Это неполный список -- CVS может выдавать множество разнообразных сообщений об ошибке, часть которых выдается операционной системой. Назначение этого раздела --- перечислить обычные и/или потенциально непонятные сообщения.

Сообщения перечислены в алфавитном порядке, но вводный текст, такой как `cvs update: ' не учитывается.

В некоторых случаях в этом списке находятся сообщения, которые выдаются старыми версиями CVS (частично из-за того, что пользователи могут быть не уверены, какую версию CVS они используют в настоящий момент).

cvs command: authorization failed: server host rejected access
Это -- неспецифическое сообщение при попытке соединиться с сервером парольной аутентификации, который отказывает в авторизации без указания конкретной причины. Проверьте, что указанные имя пользователя и пароль верны, и что заданный $CVSROOT разрешен с помощью ключа `--allow-root' в `/etc/inetd.conf'. См. section Прямое соединение с парольной аутентификацией.
file:line: Assertion 'text' failed
Точный формат этого сообщения может варьироваться в зависимости от вашей системы. Это сообщение указывает на ошибку реализации CVS, что делать с которой, написано в section Что делать с ошибками в CVS и этом руководстве?.
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
Это сообщение иногда появлялось при выполнении набора тестов под RedHat Linux 3.0.3 и 4.1, причем повторить его, а также выяснить его причину, мы не смогли. Неизвестно, проявляется ли эта ошибка только под Linux (или вообще только на этой конкретной машине!). Если проблема не случается на других UNIXах, то, скорее всего, сообщением об ошибке будет `Not owner' или другое сообщение, возникающее при ошибке EPERM, вместо `Operation not permitted'. Если вы можете что-то добавить, сообщите нам, как описано в section Что делать с ошибками в CVS и этом руководстве?. Если вы сталкиваетесь с этой ошибкой при использовании CVS, следует повторить операцию, и она пройдет успешно.
cannot open CVS/Entries for reading: No such file or directory
Обычно это означает внутреннюю ошибку CVS, с которой можно справиться так же, как и с другими (see section Что делать с ошибками в CVS и этом руководстве?). Обычно эту ошибку можно обойти. Надеемся, что в конкретной ситуации будет ясно, как это сделать.
cvs [init aborted]: cannot open CVS/Root: No such file or directory
Это сообщение совершенно безвредно. Если оно не сопровождается другими сообщениями об ошибке, значит, операция завершится успешно. Это сообщение не должно появляться в свежих версиях CVS, но документировано здесь для удобства пользователей версий @cvsver{1.9} и раньше.
cvs [checkout aborted]: cannot rename file file to CVS/,,file: Invalid argument
Это сообщение, по отзывам, появляется от случая к случаю при работе с @cvsver{1.9} под Solaris 2.5. Причина неизвестна; если вы можете что-нибудь сказать по этому поводу, сообщите нам, как описано в section Что делать с ошибками в CVS и этом руководстве?.
cvs [command aborted]: cannot start server via rcmd
Это, к сожалению, довольно неспецифическое сообщение об ошибке, которое CVS версии 1.9 выдает, если вы выполняете клиента CVS и при соединении с сервером появляются проблемы. Текущие версии CVS должны выдавать более конкретное сообщение. Если вы получили это сообщение, совершенно не имея в виду запускать клиента CVS, значит, вероятно, вы забыли указать :local:, как описано в section Репозиторий.
ci: file,v: bad diff output line: Binary files - and /tmp/T2a22651 differ
@cvsver{1.9} и старше выдают это сообщение при попытке зафиксировать измененный двоичный файл, если система RCS установлена неправильно. Перечитайте инструкции из дистрибутива RCS и файл `INSTALL' в дистрибутиве CVS. Еще можно обновить версию CVS, которая сама будет заниматься фиксированием, без необходимости использовать RCS.
cvs checkout: could not check out file
При работе с @cvsver{1.9} это сообщение может означать, что программа co (из комплекта RCS) завершилась с ошибкой. Перед этим сообщением должно быть другое, с объяснением причины, однако, наблюдались и ситуации с отсутствием оного, которые так и не объяснены. При работе с текущей версией CVS, которая не использует co, появление этого сообщения без сопровождающего объяснения определенно означает ошибку в CVS (see section Что делать с ошибками в CVS и этом руководстве?).
cvs [login aborted]: could not find out home directory
Это означает, что вам требуется установить переменные окружения, которые CVS использует, чтобы найти ваш домашний каталог. См. обсуждение `$HOME', `$HOMEDRIVE' и `$HOMEPATH' в section Все переменные окружения, используемые в CVS.
cvs update: could not merge revision rev of file: No such file or directory
@cvsver{1.9} и раньше выдают это сообщение, если не смогли найти программу rcsmerge. Убедитесь, что она находится в вашем PATH, или поставьте свежую версию CVS, которая не требует внешней программы rcsmerge.
cvs [update aborted]: could not patch file: No such file or directory
Это означает, что не обнаружена программа patch. Убедитесь, что она находится в вашем PATH. Заметьте, что, несмотря на формулировку сообщения, оно не относится к файлу `file'. Если клиент и сервер оба используют текущую версию CVS, то внешняя программа patch не требуется и вы не должны получать такое сообщение. Если же клиент либо сервер используют @cvsver{1.9}, то программа patch требуется.
cvs update: could not patch file; will refetch
Это означает, что по какой-то причине клиент не смог применить файл изменений, посланный ему сервером. Можно не беспокоиться, получив это сообщение -- работа CVS просто несколько замедлится, но никак не повлияет на конечный результат.
dying gasps from server unexpected
В сервере версий @cvsver{1.9.18} и раньше имеется известная ошибка, приводящая к такому сообщению. У меня лично получалось вызывать её, используя глобальный ключ `-t'. Эта ошибка в файле `src/filesubr.c' была исправлена Энди Пайпером (Andy Piper) 14 ноября 1997 года, если кому-то интересно. Если вы видите это сообщение, просто повторите команду, или, если вы обнаружили её причину, дайте нам знать, как описано в section Что делать с ошибками в CVS и этом руководстве?.
end of file from server (consult above messages if any)
Самая распространенная причина этого сообщения -- вы используете внешнюю программу rsh и она завершилась с кодом ошибки. В этом случае она должна была напечатать сообщение, которое появится перед обсуждаемым сообщением. Дальнейшая информация о настройке клиента и сервера CVS находится в section Сетевые репозитории.
cvs commit: Executing 'mkmodules'
Это означает, что ваш репозиторий настроен для версии CVS раньше 1.8. При использовании @cvsver{1.8} и позже перед обсуждаемым сообщением появится еще одно:
cvs commit: Rebuilding administrative file database
Если вы видите оба сообщения, то база данных перестраивается дважды, что необязательно, но нестрашно. Если вы хотите избежать ненужной работы, и не используете версию @cvsver{1.7} или раньше, удалить -i mkmodules везде, где эта строка появляется в файле `modules'. Дальнейшая информация об этом файле находится в section Файл `modules'.
missing author
Обычно это происходит, если вы создали RCS-файл с пустым именем пользователя. CVS может по ошибке создать такой файл. Решение -- убедиться, что имя пользователя установлено в непустое значение и пересоздать RCS-файл.
*PANIC* administration files missing
Это обычно означает, что существует каталог `CVS/', но в нем нет административных файлов, которые обычно помещает туда CVS. Если проблема в том, что вы создали каталог `CVS/' как-то по-другому, не с помощью CVS, то ответ прост -- используйте другое имя. В противном случае это сообщение означает ошибку в CVS (see section Что делать с ошибками в CVS и этом руководстве?).
rcs error: Unknown option: -x,v/
Вслед за этим сообщением будет информация о правильном использовании RCS. Это означает, что у вас старая версия RCS (вероятно, входящая в комплект операционной системы). CVS работает только с RCS версии 5 и старше.
cvs [server aborted]: received broken pipe signal
Это сообщение вызывается какой-то очень сложной ошибкой в CVS или системах, под которыми CVS работает (мы не знаем, какой именно, потому что еще не отследили эту ошибку!). Кажется, она возникает только после завершения команды CVS, и вам, скорее всего, нужно лишь игнорировать это сообщение. Однако, если вы обнаружили причину этого сообщения, дайте нам знать, как описано в section Что делать с ошибками в CVS и этом руководстве?.
Too many arguments!
Обычно это сообщение выдается скриптом `log.pl', находящимся в каталоге `contrib/' в дистрибутиве CVS. В некоторых версиях CVS этот скрипт устанавливался по умолчанию. Он вызывается из административного файла `loginfo'. Проверьте, что аргументы, которые передаются этому скрипту из файла `loginfo', совпадают с теми, которые ожидаются. В частности, `log.pl' из @cvsver{1.3} и раньше ожидает имя журнального файла в качестве аргумента, тогда как `log.pl' версии 1.5 и новее получает имя журнального файла с помощью ключа `-f'. Конечно, если вам не нужен `log.pl', то просто закомментируйте его в `loginfo'.
cvs [login aborted]: unrecognized auth response from server
Это сообщение обычно означает, что сервер не был настроен должным образом. Например, строка в файле `/etc/inetd.conf' задает имя несуществующего исполняемого файла. Для исправления ошибок найдите журнальный файл, используемый `inetd''ом, например, `/var/log/messages'. Детали обсуждаются в section Ошибки при установке соединения с CVS-сервером, а также section Настройка сервера для парольной аутентификации.
cvs commit: Up-to-date check failed for `file'
Это означает, что кто-либо еще зафиксировал изменения в файл с тех пор, как вы последний раз делали cvs update. Сделайте cvs update и повторите cvs commit. CVS объединит изменения, которые сделали вы, с изменениями, сделанными остальными. Если не случится конфликтов, то CVS выдаст сообщение `M cacErrCodes.h', и можно сразу выполнять cvs commit. Если обнаружены конфликты, то CVS сообщит об этом, сказав, что `C cacErrCodes.h', и вам потребуется вручную устранить конфликт. Дальнейшие детали этого процесса обсуждаются в section Пример конфликта.
Usage: diff3 [-exEX3 [-i | -m] [-L label1 -L label3]] file1 file2 file3
Only one of [exEX3] allowed
Это указывает на проблему с установленными программами diff3 и rcsmerge. Точнее говоря, rcsmerge скомпилирован так, что должен использовать GNU-версию diff3, а вместо этого находит UNIX-версию. Точный текст сообщения разный на разных системах. Самым простым решением будет обновить версию CVS, которая не использует внешних программ rcsmerge и diff3.
warning: unrecognized response `text' from cvs server
Если text содержит разрешенный текст ответа (например, `ok'), за которым следует дополнительный символ возврата каретки (на многих системах это приведет к тому, что вторая часть сообщения перезапишет первую часть), то это, вероятно, означает, что вы используете метод доступа `:ext:' с такой версией rsh, которая, как большинство не-UNIX версий, не обеспечивает прозрачного потока данных. В этом случае попробуйте `:server:' вместо `:ext:'. Если в text содержится что-то ещё, это может означать проблемы с вашим CVS-сервером. Ещё раз проверьте, как вы установили CVS-сервер.
cvs commit: [time] waiting for user's lock in directory
Это нормальное сообщение, а не ошибка. Смотри section Совместный доступ нескольких разработчиков к CVS, где описаны детали.
cvs commit: warning: editor session failed
Это означает, что редактор, используемый CVS, возвращает ненулевой код завершения. Некоторые версии vi делают это даже в том случае, если при редактировании файла не было ни одной ошибки. Если это так, то пусть ваша переменная окружения `CVSEDITOR' указывает на маленький скрипт, например
#!/bin/sh
vi $*
exit 0

Ошибки при установке соединения с CVS-сервером

В этой главе обсуждается, что делать, если у вас проблемы с установкой соединения с CVS-сервером. Если вы использует клиент командной строки CVS под Windows, сначала обновите его до версии 1.9.12 или более поздней. Сообщения об ошибках в старой версии предоставляли значительно меньше информации о местонахождении проблемы. Если клиент работает под другой операционной системой, то @cvsver{1.9} вполне достаточно.

Если сообщений об ошибках недостаточно, чтобы отследить проблему, то следующие шаги сильно зависят от используемого метода доступа.

:ext:
Попробуйте запустить программу rsh из командной строки. Например,
        $ rsh servername cvs -v
должно выдать информацию о версии CVS. Если это не срабатывает, то ваш сервер нужно исправить, прежде чем беспокоиться о проблемах с CVS.
:server:
Для того, чтобы использовать этот метод доступа, программа rsh не требуется, но она может быть полезна в качестве средства отладки. Следуйте инструкциям, приведенным для метода `:ext:'.
:pserver:
Хорошим средством отладки является
        $ telnet servername 2401
После соединения напечатайте любой текст, например, `foo', нажмите RET. Если CVS работает, то ответом будет
cvs [pserver aborted]: bad auth protocol start: foo
В противном случае убедитесь, что inetd работает правильно. Замените вызов CVS в файле `/etc/inetd.conf' на программу `echo'. Например:
2401  stream  tcp  nowait  root /bin/echo echo hello
Теперь сделайте так, чтобы `inetd' перечитал свой файл конфигурации, попробуйте `telnet' ещё раз, и вы должны увидеть слово `hello', а затем сервер должен закрыть соединение. Если это не так, то нужно исправить ваш `inetd', перед тем, как беспокоиться о CVS. На системах под AIX зачастую порт 2401 уже используется системой. Это проблема AIX в том смысле, что порт 2401 зарегистрирован для CVS. Я слышал, что есть исправление этой проблемы под AIX.

Другие распространенные проблемы

Вот список проблем, не попадающих ни в одну из вышеперечисленных категорий.


Go to the first, previous, next, last section, table of contents.