在 NAS 上安裝 Gitolite - 致命:有錯誤但日誌記錄失敗

在 NAS 上安裝 Gitolite - 致命:有錯誤但日誌記錄失敗

我正在嘗試按照以下步驟在我的 Synology DiskStation 上安裝 Gitolite指示

在下面在 DiskStation 上安裝 Gitolite 並執行安裝程序,當我執行 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>>

我對這一切都很陌生。有誰知道這意味著什麼,以及如何修復此錯誤?

答案1

2個問題:

新的 GitoliteV3 (g3) 不能很好地處理缺少“logs”目錄的問題,該目錄默認情況下應該存在於$HOME/.gitolite.
回波時間:

$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並重新啟動安裝
作為站點臂(我只能從他空洞的個人資料中假設他是西塔拉姆·查馬蒂,Gitolite 的創建者/維護者),這應該是不需要的。
從OP的回答如下, 這不是無論如何都需要。

站點臂添加:

錯誤LOGFILE訊息具有誤導性;當安裝目錄不在$PATH.

最新提交Common.pm(2012 年 6 月 16 日)確實已替換了錯誤訊息,以便不是參考不再神秘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(無 /bin 寫入存取問題)


我通常更喜歡本地安裝

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

(所以“ -to”而不是“ -ln”,在我的帳戶中使用絕對路徑而不是系統路徑):

  • github本地克隆的名稱https://github.com/sitaramc/gitolite
  • $HOME/gitolite/bin我已添加到我的$PATH.

答案2

以下命令是一個拼字錯誤:

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

在本文前面,您為 git 使用者設定了 $HOME/bin 目錄。執行相同的命令,但保留指定的 /bin 目錄參數,gitolite 將預設為 $HOME/bin,該目錄存在且可由 git 使用者寫入。

改為執行此命令:

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

答案3

我運行了命令gitolite/install -ln /usr/bin/

對我來說,符號連結錯誤是由於git用戶沒有符號連結到/usr/bin.我只是將git用戶添加到文件wheel中的群組中/etc/group,這就像一個魅力。

相關內容