Установка Gitolite на NAS - FATAL: есть ошибки, но запись не удалась

2699
Jay

Я пытаюсь установить Gitolite на Synology DiskStation, следуя этим инструкциям .

При установке Gitolite на DiskStation и запуске программы установки я запускаю команду установки Gitolite:

DiskStation> /volume1/homes/git/gitolite/install -ln /bin 

Я получаю следующую ошибку:

FATAL: have errors but logging failed!  2012-05-31.00:10:22 no GL_LOGFILE env var 2012-05-31.00:10:22 die could not symlink /volume1/home/git/gitolite/src/gitolite to /bin<<newline>> at /volume1/home/git/gitolite/install line 71<<newline>> 

Я очень новичок во всем этом. Кто-нибудь знает, что это значит, и как я могу исправить эту ошибку?

2

3 ответа на вопрос

1
VonC

2 вопроса:

Новый GitoliteV3 (g3) не изящно обрабатывает отсутствие каталога 'logs', который должен присутствовать по умолчанию в $HOME/.gitolite.
Смотрите Rc.pm :

$rc = "$ENV/.gitolite/logs/gitolite-%y-%m.log"; $rc = $ENV ||= gen_lfn( $rc ); 

Common.pm:

sub gl_log { # the log filename and the timestamp come from the environment. If we get # called even before they are set, we have no choice but to dump to STDERR # (and probably call "logger").  logger_plus_stderr( "$ts no GL_LOGFILE env var", "$ts $msg" ) if not $ENV; open my $lfh, ">>", $ENV or logger_plus_stderr( "open log failed: $!", $msg ); 

Создайте каталог журналов mkdir -p $HOME/.gitolite/logsи перезапустите установку,
Поскольку sitearm (который, я могу только предположить из его пустого профиля, является Ситарам Чамарти, создатель / хранитель Gitolite), это не должно быть необходимо.
И из ответа ОП ниже, это не было нужно в любом случае.

Sitearm добавляет:

Сообщение LOGFILEоб ошибке вводит в заблуждение; это происходит, когда каталог установки не находится в $PATH.

Последний коммит на Common.pm(16 июня 2012) действительно заменил сообщение об ошибке, чтобы не ссылаться больше таинственное GL_LOGFILE:

logger_plus_stderr( "errors found before logging could be setup", "$msg" ) if not $ENV; 

Обратите внимание, что если у вас есть собственный perl по нестандартному пути, ни один из этих скриптов установки не будет работать, так как их ссылки на shebang /usr/bin/perlвместо /usr/bin/env perl...


Второй выпуск:

could not symlink /volume1/home/git/gitolite/src/gitolite to /bin 

Проверьте, есть ли у вас права на символическую ссылку в /bin. Вы рут? Как упомянуто ниже

DiskStation> /volume1/homes/git/gitolite/install -ln 

(без /bin) будет держать все под $HOME(нет / бин доступ к записи)


Я вообще предпочитаю локальную установку

 $HOME/gitolite/github/install -to $HOME/gitolite/bin 

(поэтому ' -to' вместо ' -ln', с абсолютным путем в моей учетной записи, а не системным путем) с помощью:

  • github название местного клона https://github.com/sitaramc/gitolite
  • $HOME/gitolite/binкаталог, который я добавил в свой $PATH.
Пожалуйста, не предлагайте решения, которые включают что-либо, чего нет в документации. `mkdir -p ...` является одним из таких благонамеренных, но ошибочных предложений. Если вы считаете, что это необходимо, дайте мне знать, что в моей документации чего-то не хватает, и мы можем это обсудить. Сообщение об ошибке LOGFILE вводит в заблуждение; это происходит, когда каталог установки не находится в $ PATH. Пожалуйста, запустите `./install -h` для получения подробной информации о различных опциях. 11 лет назад 0
@sitaram хорошо, ответ отредактирован. `mkdir` - это наименьшая из моих проблем с g3: все ваши скрипты ссылаются на` #! / usr / bin / perl`, что несовместимо с моей нестандартной установкой perl. `#! / Usr / bin / env perl` было бы более удобно. VonC 11 лет назад 0
0
Ryan

Следующая команда была опечаткой:

DiskStation> /volume1/homes/git/gitolite/install -ln /bin 

Ранее в этом посте вы установили каталог $ HOME / bin для пользователя git. Запустите ту же команду, но оставьте указанный аргумент каталога / bin отключенным, и gitolite по умолчанию будет иметь значение $ HOME / bin, которое существует и доступно для записи пользователю git.

Запустите это вместо:

DiskStation> /volume1/homes/git/gitolite/install -ln 
0
scottyseus

Я управлял командой gitolite/install -ln /usr/bin/

Для меня ошибка символической ссылки произошла из-за того, что у gitпользователя не было необходимых разрешений на символическую ссылку /usr/bin. Я просто добавил gitпользователя в wheelгруппу в /etc/groupфайле, и это сработало как шарм.

Похожие вопросы