Gitolite auf NAS installieren – SCHWERWIEGEND: Es treten Fehler auf, aber die Protokollierung ist fehlgeschlagen.

Gitolite auf NAS installieren – SCHWERWIEGEND: Es treten Fehler auf, aber die Protokollierung ist fehlgeschlagen.

Ich versuche, Gitolite auf meiner Synology DiskStation zu installieren, und zwar mit diesenAnweisungen.

UnterInstallieren Sie Gitolite auf der DiskStation und führen Sie das Setup aus, wenn ich den Gitolite-Installationsbefehl ausführe:

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

Ich erhalte die folgende Fehlermeldung:

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>>

Ich bin in all dem völlig neu. Weiß jemand, was das bedeutet und wie ich diesen Fehler beheben kann?

Antwort1

2 Probleme:

Das neue GitoliteV3 (g3) kommt mit dem Fehlen eines „logs“-Verzeichnisses, das standardmäßig in vorhanden sein sollte, nicht gut zurecht $HOME/.gitolite.
SieheRc.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 );

Erstellen Sie ein Protokollverzeichnis: mkdir -p $HOME/.gitolite/logsund starten Sie die Installation neu.
Alssitearm(der, wie ich anhand seines leeren Profils nur annehmen kann,Sitaram Chamarty, der Ersteller/Betreuer von Gitolite), sollte dies nicht nötig sein.
Und aus der Sicht des OPAntwort unten, Daswar nichtwird sowieso benötigt.

sitearm fügt hinzu:

Die LOGFILEFehlermeldung ist irreführend; sie tritt auf, wenn sich das Installationsverzeichnis nicht in befindet $PATH.

Derletztes Commitam Common.pm(16. Juni 2012) hat die Fehlermeldung tatsächlich ersetzt, umnichtVerweisen Sie mehr auf das Geheimnisvolle GL_LOGFILE:

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

Beachten Sie, dass keines dieser Installationsskripte funktioniert, wenn Sie Ihr eigenes Perl in einem nicht standardmäßigen Pfad haben, da deren Shebang-Referenzen /usr/bin/perlanstelle von /usr/bin/env perl... vorliegen.


Zweites Problem:

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

Überprüfen Sie, ob Sie über die Rechte zum Erstellen symbolischer Links verfügen /bin. Sind Sie Root? Wie unten erwähnt

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

(ohne /bin) würde alles darunter halten $HOME(kein Problem mit /bin-Schreibzugriff)


Ich bevorzuge grundsätzlich eine lokale Installation

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

(also ' -to' statt ' -ln', mit einem absoluten Pfad in meinem Konto statt einem Systempfad) mit:

  • githubder Name des lokalen Klons vonhttps://github.com/sitaramc/gitolite
  • $HOME/gitolite/binein Verzeichnis, das ich zu meinem hinzugefügt habe $PATH.

Antwort2

Der folgende Befehl war ein Tippfehler:

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

Weiter oben im Beitrag wurde Ihnen gesagt, dass Sie ein $HOME/bin-Verzeichnis für den Git-Benutzer einrichten müssen. Führen Sie denselben Befehl aus, lassen Sie jedoch das angegebene /bin-Verzeichnisargument weg. Gitolite verwendet dann standardmäßig $HOME/bin, das existiert und in das der Git-Benutzer schreiben kann.

Führen Sie stattdessen Folgendes aus:

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

Antwort3

Ich habe den Befehl ausgeführtgitolite/install -ln /usr/bin/

Bei mir lag der Symlink-Fehler daran, dass der gitBenutzer nicht über die erforderlichen Berechtigungen zum Erstellen eines Symlinks verfügte /usr/bin. Ich habe den gitBenutzer einfach zur wheelGruppe in /etc/groupder Datei hinzugefügt und das hat wunderbar funktioniert.

verwandte Informationen