Установка Gitolite на NAS - FATAL: есть ошибки, но запись не удалась
Я пытаюсь установить 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>>
Я очень новичок во всем этом. Кто-нибудь знает, что это значит, и как я могу исправить эту ошибку?
3 ответа
2 вопроса:
Новый GitoliteV3 (g3) не изящно обрабатывает отсутствие каталога 'logs', который должен присутствовать по умолчанию в $HOME/.gitolite
,
Смотрите Rc.pm :
$rc{LOG_TEMPLATE} = "$ENV{HOME}/.gitolite/logs/gitolite-%y-%m.log";
$rc{GL_LOGFILE} = $ENV{GL_LOGFILE} ||= gen_lfn( $rc{LOG_TEMPLATE} );
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{GL_LOGFILE};
open my $lfh, ">>", $ENV{GL_LOGFILE} 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{GL_LOGFILE};
Обратите внимание, что если у вас есть собственный 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
,
Следующая команда была опечаткой:
DiskStation> /volume1/homes/git/gitolite/install -ln /bin
Ранее в этом посте вы установили каталог $HOME/bin для пользователя git. Запустите ту же команду, но оставьте указанный аргумент каталога / bin отключенным, и gitolite по умолчанию будет иметь значение $HOME/bin, которое существует и доступно для записи пользователю git.
Запустите это вместо:
DiskStation> /volume1/homes/git/gitolite/install -ln
Я управлял командой gitolite/install -ln /usr/bin/
Для меня ошибка символической ссылки была из-за git
пользователь не имеет необходимых разрешений на символическую ссылку на /usr/bin
, Я просто добавил git
пользователь к wheel
группа в /etc/group
файл, и это сработало как шарм.