![NAS に Gitolite をインストール - 致命的: エラーが発生し、ログに記録できませんでした](https://rvso.com/image/1316778/NAS%20%E3%81%AB%20Gitolite%20%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%20-%20%E8%87%B4%E5%91%BD%E7%9A%84%3A%20%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%80%81%E3%83%AD%E3%82%B0%E3%81%AB%E8%A8%98%E9%8C%B2%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F.png)
私は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} );
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の下記に回答、 これなかったとにかく必要です。
sitearm は次のように付け加えています:
この
LOGFILE
エラー メッセージは誤解を招くものであり、インストール ディレクトリが にない場合に発生します$PATH
。
の最新のコミット2012年6月16日にはCommon.pm
、エラーメッセージが置き換えられ、ないもう参照するべき謎GL_LOGFILE
:
logger_plus_stderr( "errors found before logging could be setup", "$msg" ) if not $ENV{GL_LOGFILE};
標準以外のパスに独自の perl がある場合、それらのインストール スクリプトはどれも機能しないことに注意してください。これは、.../usr/bin/perl
ではなくshebang 参照を使用するためです。/usr/bin/env perl
2番目の問題:
could not symlink /volume1/home/git/gitolite/src/gitolite to /bin
でシンボリックリンクを作成する権限があるかどうかを確認してください
下記の通り/bin
。あなたは root ですか?
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 はデフォルトで、git ユーザーによって存在し書き込み可能な $HOME/bin を使用します。
代わりにこれを実行してください:
DiskStation> /volume1/homes/git/gitolite/install -ln
答え3
コマンドを実行しましたgitolite/install -ln /usr/bin/
私の場合、シンボリックリンク エラーは、git
ユーザーがシンボリックリンクに必要な権限を持っていないために発生しました/usr/bin
。ファイル内のグループgit
にユーザーを追加するだけで、問題なく動作しました。wheel
/etc/group