我遵循了 Gerrit 的安装说明。
根据说明,我的 gerrit.sh 更新是取消注释以下 3 行:
# ========================
chkconfig: 3 99 99
description: Gerrit Code Review
processname: gerrit
# ========================
问题 1:有人明白这三行在语法上的作用吗?在其他地方有人说这些是针对 redhat 的,所以可能对 Ubuntu 没有任何作用,而且我在 apt-get 列表中没有找到它们。取消注释这些后,我在手动启动 gerrit 时收到以下错误:
gerrit2@ubuntu:~$ ./bin/gerrit.sh start
./bin/gerrit.sh: 7: ./bin/gerrit.sh: chkconfig:: not found
./bin/gerrit.sh: 8: ./bin/gerrit.sh: description:: not found
./bin/gerrit.sh: 9: ./bin/gerrit.sh: processname:: not found
Starting Gerrit Code Review: OK
我的符号链接,按照说明:
gerrit2@ubuntu:~/bin$ ll /etc/init.d/gerrit
lrwxrwxrwx 1 root root 27 Jan 14 17:16 /etc/init.d/gerrit -> /home/gerrit2/bin/gerrit.sh*
和
gerrit2@ubuntu:~$ ll /etc/rc2.d/S99gerrit
lrwxrwxrwx 1 root root 18 Jan 14 10:43 /etc/rc2.d/S99gerrit -> /etc/init.d/gerrit*
我的运行级别为 gerrit2 用户,这就是我将上述链接放在 rc2.d 而不是 rc3.d 中的原因(与说明不同):
gerrit2@ubuntu:/etc/rc3.d$ who -r
run-level 2 2016-01-14 17:13
/home/gerrit2 用户已根据 Google 说明设置了 GERRIT_SITE,因此我添加了其他一些操作指南网站上看到的 /etc/default/gerritcodereview,以防它对 init.d 有帮助,但事实并非如此:
cat /etc/default/gerritcodereview
GERRIT_SITE=/home/gerrit2
问题 2:您知道我在这里做错了什么吗?
笔记:
我还尝试了 rc.3 与 rc.2。Gerrit 可以运行,今天能够推送几 GB 的源代码。当给出“start”作为参数时,Gerrit 也会从 /etc/init.d/gerrit 启动。init.d 应该负责传入 rc.d start/stop 类型的参数。Ubuntu 14.04 LTS Gerrit 2.11.4 service --status-all 将 gerrit 列为未运行的“-”而不是“+”
答案1
使用 Ubuntu 时,请忽略 google 的指示,取消注释 gerrit.sh 中的 3 行。而是遵循 StephenKing 在 stackexchange 上发布的建议,替换:
# Required-Start: $named $remote $syslog
和
# Required-Start: $all
然后运行:
sudo update-rc.d -f gerrit remove
sudo update-rc.d gerrit defaults 92
谢谢 StephenKing!我在其他地方读到的 Ubuntu 特定说明都没有提到这一点。所以肯定有一堆手动初始化的 gerrit repo。
答案2
对于仍在寻找解决方案的人。我们可以使用以下步骤运行 sysmtemd 脚本
$> echo "GERRIT_SITE=/home/gerrit/gerrit-server" > /etc/default/gerritcodereview
$> sudo systemctl edit --force --full gerrit-code
[Unit]
Description= Gerrit Code Review Service
After=network.target
[Service]
Type=forking
User=gerrit
EnvironmentFile=/etc/default/gerritcodereview
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=gerrit
ExecStart=/home/gerrit/gerrit-server/bin/gerrit.sh start
ExecStop=/home/gerrit/gerrit-server/bin/gerrit.sh stop
[Install]
WantedBy=default.target
然后启用并启动它
$> sudo systemctl enable gerrit-code
$> sudo systemctl start gerrit-code
$> sudo systemctl status gerrit-code