我在 ubuntu 上。
好的,首先,我正在运行一个提交后脚本。我需要 svnnotify 的路径来运行它。我正在阅读的教程中有这个路径,/usr/local/bin/svnnotify
但我的电脑上没有这个位置。我还是试了一下,得到了类似这样的结果:
Warning post-commit hook failed: not found
所以我认为我需要用正确的 svnnotify 路径替换/usr/local/bin/svnnotify
。我搜索了 ( Places>Search for Files
),svnnotify
但什么也没找到。
我知道 svnnotify 已安装,因为如果我打开命令行并运行,svnnotify
它会告诉我缺少所需的路径参数。
那么如果它不在文件系统的任何地方,该如何安装它呢?
我真的不知道 Linux 是如何工作的,它对我来说很新,所以我很困惑。
我是否遗漏了什么?
更新
我已将文件更新如下:
#!/bin/bash
REPOS="$1"
REV="$2"
/usr/bin/svnnotify --repos-path "$REPOS" --revision "$REV" --subject-cx --with-diff --handler HTML::ColorDiff --to [email protected] --from [email protected]
我让它可执行。
我像这样运行它:
myuser@linux-server:/usr/local/svn/svn_repo/hooks$ 提交后 /usr/local/svn/svn_repo 9
我得到这个作为输出:
提交后:未找到命令
答案1
/usr/local
是 Linux/Unix 中“您自己安装的东西”的传统位置。如果您从源代码编译东西并安装它,/usr/local
通常用作主安装目录 - 可执行文件放在/usr/local/bin
,库放在/usr/local/lib
,等等。
如果您从发行版的软件包存储库安装东西,这些文件将被放置在其他地方。 /usr
是典型的系统安装目录,因此如果您的软件包管理器具有或可以获取正确的软件包,它将安装到/usr/bin
、/usr/lib
等。
由于您没有提供教程链接,我不知道您尝试了什么,或者这可能与教程说明有什么冲突。但您正在寻找程序通知。如果您确定它已经安装,请尝试以下操作:
跑步哪个查看你的系统是否已经知道该命令以及在哪里找到它:
$ which svnnotify /usr/bin/svnnotify
如果找不到,则没有命令调用通知在您的 PATH 上,但也许系统上某处有一个不在 PATH 上的。
请与 核对
locate svnnotify
。$ locate svnnotify /usr/example/bin/svnnotify /usr/bin/svnnotify /usr/share/svnnotify/foo ...
如果你已经安装通知从头开始,你的包管理器可能不知道它在哪里;定位应该会有所帮助。您必须注意非标准文件位置并适当调整教程步骤。
如果你最近才安装它,请
sudo updatedb
运行定位了解文件系统的最新添加内容。
如果上述步骤未找到该文件,请确保已安装该软件包,或者从您最喜欢的软件包管理器安装它(Synaptic、apt-get、aptitude, ETC)。 在 Ubuntu 10.04 上,通知安装至/usr/bin/svnnotify通过包装libsvn-通知-perl. 如果你使用的是 Ubuntu通知您需要适当修改教程步骤。
教程演示如何创建提交后脚本。您需要修改脚本以指向正确的通知. 如果您的系统有通知在/usr/bin/svnnotify代替在/usr/local/bin/svnnotify,将脚本修改如下:
#!/bin/sh
REPOS="$1"
REV="$2"
/usr/bin/svnnotify \
--repos-path "$REPOS" \
--revision "$REV" \
--subject-cx \
--with-diff \
--handler HTML::ColorDiff \
--to <your e-mail address> \
--from <from e-mail address>
答案2
在 Ubuntu 上,svnnotify
包含在libsvn-notify-perl
软件包中。
在终端中输入 sudo apt-get install libsvn-notify-perl
,这将安装svnnotify
,然后再次尝试您的脚本。
答案3
我像这样运行它:
myuser@linux-server:/usr/local/svn/svn_repo/hooks$ 提交后 /usr/local/svn/svn_repo 9
我得到这个作为输出:
提交后:未找到命令
在 Linux 和其他 Unix 系统上,shell 默认不会在当前工作目录中查找程序(出于安全原因),因此您必须像这样运行该脚本:
myuser@linux-server:/usr/local/svn/svn_repo/hooks$ ./post-commit /usr/local/svn/svn_repo 9