Debian下将Subversion(SVN)的svnserve加入启动服务项

!本文可能 超过1年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使用方面,本人不保证相应的兼容和可操作性。

前面两篇文章简单的介绍了SVN的使用,其中讲到了如何通过svnserve直接启动SVN服务,但是每次都使用svnserve -d -r ~/repos这样的命令还是略显麻烦,尤其是当我们需要停止或者重启svnserve时还要调用kill命令,十分不便,接下来介绍的是如何将其作为系统服务,让其可以被Debian的invoke-rc.d命令管理。

说是系统服务,说白了就是我们需要启动脚本,大家可以到/etc/init.d路径下看到一堆启动脚本,比如有我们熟悉的nginx,有了初始脚本(initscript)我们就可以通过update-rc.d创建文件链接的方式将其链入启动级别(runlevel)中去了,同样也可以被invoke-rc.d管理。

你可以随意查阅/etc/init.d路径下的某些程序的脚本文件,大体上能知道这类文件的写法,当然今天我不是介绍initscript的写法的,更何况网上已经有现成的脚本可用了,参考文章《running Subversion’s svnserve on a Debian system》,我将其脚本修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/sh
 
### BEGIN INIT INFO
# Provides:          subversion
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the subversion daemon
# Description:       starts subversion using start-stop-daemon
### END INIT INFO
 
# sudo svnserve -d -r /home/pi/repos
# http://www.everville.de/pages/howtos/linux/svnserve/index.html
 
# start/stop subversion daemon
 
test -f /usr/bin/svnserve || exit 0
 
# 这里是svnserve执行的参数,/home/pi/repos改为你自己的版本库地址
OPTIONS="-d -T -r /home/pi/repos"
 
case "$1" in
	start)
		echo -n "Starting subversion daemon:"
		echo -n " svnserve"
		# 这里的pi:pi为member:group,即用户:组名,改为适合你自己的
		start-stop-daemon --start --quiet --oknodo --chuid pi:pi --exec /usr/bin/svnserve -- $OPTIONS
		echo "."
    	;;
 
	stop)
		echo -n "Stopping subversion daemon:"
		echo -n " svnserve"
		start-stop-daemon --stop --quiet --oknodo --exec /usr/bin/svnserve
		echo "."
		;;
 
	reload)
		;;
 
	force-reload)
	$0 restart
		;;
 
	restart)
	$0 stop
	$0 start
		;;
 
	*)
		echo "Usage: /etc/init.d/subversion (start|stop|reload|restart)"
		exit 1
		;;
 
esac
 
exit 0

大家可能注意到了BEGIN INIT INFO这样的信息,这其实是LSB信息,里面标识着这个服务运行的参数,当然在Debian 5及以下版本的系统中可以略去,但是在Debian 6及最新系统中会提示missing LSB information的错误信息,LSB信息是可以被服务加载器读取的,建议大家在不明白的情况下不要变动。

将上面的脚本按注释提示修改后保存为subversion文件,路径为/etc/init.d,添加执行属性:

chmod +x /etc/init.d/subversion

添加启动项:

update-rc.d /etc/init.d/subversion defaults

当然这个方法可能在Debian 6及高版本的Debian下不再适用,不过通过LSB信息,我们可以直接使用insserv命令来安装服务。

insserv -v -d /etc/init.d/subversion
若无特别说明,本网站文章均为原创,原则上这些文章不允许转载,但是如果阁下是出于研究学习目的可以转载到阁下的个人博客或者主页,转载遵循创作共同性“署名-非商业性使用-相同方式共享”原则,请转载时注明作者出处谢绝商业性、非署名、采集站、垃圾站或者纯粹为了流量的转载。谢谢合作!
请稍后...

发表评论

电子邮件地址不会被公开。 必填项已用*标注