การติดตั้ง Gitolite บน NAS - FATAL: มีข้อผิดพลาด แต่การบันทึกล้มเหลว


2

ฉันพยายามที่จะติดตั้งบน Gitolite Synology DiskStation ของฉันดังต่อไปนี้คำแนะนำ

ภายใต้การติดตั้ง Gitolite บน DiskStation และเรียกใช้การตั้งค่าเมื่อฉันเรียกใช้คำสั่ง Gitolite install:

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) ไม่ได้จัดการได้อย่างสง่างามขาดไดเรกทอรี 'ล็อก' $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 (ใครที่ฉันสามารถสรุปได้จากโปรไฟล์ที่ว่างเปล่าของเขาคือSitaram Chamartyผู้สร้าง / ผู้ดูแลของ Gitolite) ไม่ควรทำสิ่งนี้
และจากคำตอบของ OP ด้านล่างสิ่งนี้ไม่จำเป็น

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(ไม่มีปัญหาการเข้าถึงการเขียน / bin)


โดยทั่วไปฉันชอบการติดตั้งในเครื่อง

 $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เพื่อดูรายละเอียดเกี่ยวกับตัวเลือกต่าง ๆ ของสิ่งนี้

@sitaram ตกลงตอบแก้ไขแล้ว mkdirเป็นอย่างน้อยปัญหาของฉันกับ g3: สคริปของคุณทั้งหมดอ้างอิง#!/usr/bin/perlซึ่งเข้ากันไม่ได้กับการติดตั้ง Perl ของฉันที่ไม่ได้มาตรฐาน #!/usr/bin/env perlจะสะดวกมากขึ้น
VonC

0

คำสั่งต่อไปนี้เป็นตัวพิมพ์:

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

ก่อนหน้านี้ในโพสต์คุณได้ตั้งค่าไดเรกทอรี $ HOME / bin สำหรับผู้ใช้ git รันคำสั่งเดียวกัน แต่ปล่อยอาร์กิวเมนต์ไดเรกทอรี / bin ที่ระบุไว้และ gitolite จะมีค่าเริ่มต้นเป็น $ HOME / bin ซึ่งมีอยู่และสามารถเขียนได้โดยผู้ใช้ git

รันสิ่งนี้แทน:

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

0

ฉันรันคำสั่ง gitolite/install -ln /usr/bin/

สำหรับผมผิดพลาด symlink ก็เนื่องจากการที่gitผู้ใช้ไม่ได้มีสิทธิ์ที่จำเป็นในการ symlink /usr/binไป ฉันแค่เพิ่มgitผู้ใช้ไปยังwheelกลุ่มใน/etc/groupไฟล์และนั่นก็ใช้งานได้อย่างมีเสน่ห์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.