【问题标题】:SVN error while taking checkout using script使用脚本结帐时出现 SVN 错误
【发布时间】:2014-08-06 14:02:45
【问题描述】:

使用脚本从 svn 结帐时出现以下错误。

**[Test] $ /bin/sh -xe /tmp/hudson8576425899836211909.sh
+ sh /cvsrx/rxapp/build_dir/Jenkins_Scripts/test.sh
Could not load program svn:
Could not load module /opt/freeware/lib/libssl.so.
    Dependent module /usr/lib/libcrypto.a(libcrypto.so.1.0.1) could not be loaded.
    Member libcrypto.so.1.0.1 is not found in archive 
Could not load module svn.
    Dependent module /opt/freeware/lib/libssl.so could not be loaded.
Could not load module .
Build step 'Execute shell' marked build as failure
Finished: FAILURE**

在 test.sh 我只写了一行 svn co /path to svn branch/ 我正在进行一些测试,所以请不要问为什么不在构建 svn 插件中使用 jenkins。 在这里,我可以使用 svn co /path to svn branch/ 在命令提示符下进行结帐 但如果我在脚本中编写此命令行并在 jenkins 的执行 shell 中运行,则不会。 有什么帮助吗?

我在 AIX 7 平台上使用 jenkins。

我有从 /usr/bin/svn 到 /opt/freeware/bin/svn.SVN 的软链接安装在 /opt/freeware/bin/svn ..... 默认情况下,当我这样做时,它会显示 @987654322 @但当我删除那些软链接和导出路径时,Jenkins 根本不识别 SVN。而 which svn 命令不显示任何已安装的 svn。 jenkins 的 PFB 日志: `

/bin/sh -xe /tmp/hudson5607872610124977868.sh
+ export PATH=/opt/freeware/bin/svn/:/opt/freeware/bin/svnversion:/opt/freeware/bin/svn:/opt/freeware/bin/svnversion/:/usr/java5/lib:/opt/freeware/bin/svnversion/bin:/usr/local/bin:/usr/bin:/usr/X11R7/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/mit/bin:/sbin:/
+ echo /opt/freeware/bin/svn/:/opt/freeware/bin/svnversion:/opt/freeware/bin/svn:/opt/freeware/bin/svnversion/:/usr/java5/lib:/opt/freeware/bin/svnversion/bin:/usr/local/bin:/usr/bin:/usr/X11R7/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/mit/bin:/sbin:/opt/freeware/bin/svn/:/opt/freeware/bin/svnversion:/opt/freeware/bin/svn:/opt/freeware/bin/svnversion/:/usr/java5/lib:/opt/freeware/bin/svnversion/bin:/usr/local/bin:/usr/bin:/usr/X11R7/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/mit/bin:/sbin
+ cd /usr/local/apps/Jenkins_new/scripts
+ ./test.sh
Could not load program /opt/freeware/bin/svn:
Could not load module /opt/freeware/lib/libssl.so.
    Dependent module /usr/lib/libcrypto.a(libcrypto.so.1.0.1) could not be loaded.
    Member libcrypto.so.1.0.1 is not found in archive 
Could not load module svn.
    Dependent module /opt/freeware/lib/libssl.so could not be loaded.
Could not load module .
./test.sh[3]: svn:  not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE`

【问题讨论】:

  • 我不可能问你为什么不使用 jenkins svn 插件。你为什么不使用 jenkins svn 插件?这是您的问题的解决方案。 (或者你解决了错误的问题)
  • 我在我们的脚本中使用了一些命令,比如svn info and svn --version。还从不同的分支进行小检查。因此默认情况下不能使用 jenkins svn 插件。如果我可以通过覆盖 jenkins 插件会很棒我系统的命令行svn。 ..
  • 您可以直接从 jenkins 获取这些值...从两个不同的分支中签出是一个糟糕的举动 - 听起来您的来源没有很好地布局。你是在为自己制造问题。

标签: bash shell svn jenkins


【解决方案1】:

重新安装 Jenkins 解决了我的问题!这是由于服务器重新启动而发生的损坏的插件。 谢谢大家

【讨论】:

    【解决方案2】:

    我没有看到你在 test.sh 中使用的 svn 的确切命令,但建议你在调用行中提供 SVN 的完整路径,例如 /usr/bin/svn co ..... 如果也可以在您的 test.sh 中为导出 PATH 和导出 LD_LIBRARY_PATH 设置条目,将它们设置为上述 .so 文件的路径值

    【讨论】:

    • 我已经告诉过我必须使用“svn co”命令 :::: svn co corp/svn ,,,, 该命令在服务器命令行执行时有效,但在写入时无效脚本并在之后执行它
    • 我还导出了 lib 和 svn 的路径,但仍然出现同样的错误。现在很困惑
    • 您是否尝试在 LD_LIBRARY_PATH 中找到 .so 和 .a 文件并导出它们各自的路径?
    • 是的,我先做了....但它没有用。然后我尝试使用export LIBPATH!哇它有效!1 我有 envplugin,这个想法让我印象深刻。但令我惊讶的是,为什么 LD_LIBRARAY_PATH 不起作用?
    【解决方案3】:

    我看到您正在使用 Hudson/Jenkins。 Hudson 和 Jenkins 在从 Subversion 签入和签出内容时在内部使用 SVNKit。这意味着你的系统可能没有安装命令行svn客户端,或者它可能有其他问题。

    您的系统上也可能有多个svn 客户端。例如,您可能在/usr/bin/svn 下有一个,在/usr/local/bin/svn 下有一个。如果 Subversion 在命令行中运行,但不在脚本中,当您从命令行执行时,您可能有不同的$PATH 设置与来自 Hudson/Jenkins 的脚本。您可以将type svn 行添加到您的脚本(如果它是BASH)中,以查看您执行svn 的位置。它可能与您在命令行中使用的不同。将$PATH 作为脚本的一部分打印出来也是不错的选择。

    查看您的脚本正在执行的svn 命令并告诉我们您要执行的操作也会很有帮助。您还可以在脚本中添加以下行:

    PS4="\$LINE: "
    set -xv
    

    这些行将打开 shell 脚本调试,并帮助您定位脚本出现问题的位置。

    这将为您提供一些关于您的脚本出了什么问题的线索。

    回复

    谢谢大卫。这里只存在 1 个 svn 路径 (usr/bin/svn) 但创建为软链接 请参阅 -->cd /usr/bin/svn lrwxrwxrwx 1 root system 26 Jul 1 14:34 svn -> ../../opt/免费软件/bin/svn。还创建了 libs.so 的软链接,请参见 --> lrwxrwxrwx 1 root system 15 Sep 13 18:15 libssl.so -> libssl.so.1.0.1 .......... 软链接是否可能制造这些问题??在请求删除这些软链接之前,我需要确认这些软链接会造成问题。

    软链接对于 Unix 来说并不罕见。例如,我在 Mac 上的 /opt 下安装了 Ant、Grails、Maven、Subversion 和许多其他软件包。为了不必在我的路径中包含每一个,我将这些程序的所有二进制文件软链接到/usr/local/bin 下。 /usr/local/bin 下大约 80% 的程序只是其他地方的软链接。

    图书馆软链接也很常见。这通常与版本编号有关。当程序请求一个库时,它可能包含也可能不包含库的版本号。所以,你的驱动器上有libfoo-2.0.3.so。这是 foo 的实际版本。但是,很少有程序会请求该特定版本。相反,他们可能只是要求他们需要版本 #2 的 foo,或者只是说他们需要链接到 foo。

    要处理这个问题,您将有 libfoo2.0.3.so 软链接到 libfoo-2.so 以供指定它们需要 foo 版本 2 的程序。然后,libfoo-2.so 将软链接到libfoo.so。这样,无论如何都会调用 libfoo。如果我安装 libfoo2.0.4.so,我可以将链接更改为 libfoo-2.so 以指向版本 2.0.4 而不是版本 2.0.3,任何依赖于 Foo 的东西都会选择正确的版本。

    相反,让我们看看错误信息:

    无法加载模块 /opt/freeware/lib/libssl.so。
    无法加载依赖模块/usr/lib/libcrypto.a(libcrypto.so.1.0.1)。
    在存档中找不到成员 libcrypto.so.1.0.1

    由于某种原因,它无法访问文件/usr/lib/libcryto.a。这个文件在你的机器上吗?是在/usr/lib 吗?如果没有,它在哪里?

    那么,您从哪里获得这个版本的 Subversion?为什么是/opt/freeware/bin/ 目录的链接?这是您系统的一部分吗?

    可能是您系统上的 Subversion 不完整且从未运行过。在 Jenkins 中,Subversion 存储库由嵌入在 Je​​nkins/Hudson 自身中的 SVNKit Jarfile 访问,因此发现 Subversion 二进制文件不起作用也就不足为奇了。

    你能从命令行用 Subversion 做任何事情吗?如果没有,您可能必须从 Perzl 安装新版本的 Subversion,这是 CollabNet 为 Subversion 的 AIX 版本指向的位置。 (至少在 1.8.4 版本上是最新的)。

    您甚至可能想要更改/usr/bin/svn 处的软链接以指向更新的、可工作的 Subversion 版本。

    【讨论】:

    • 谢谢大卫。这里只存在 1 个 svn 路径(usr/bin/svn),但创建为软链接,请参见 -->cd /usr/bin/svn lrwxrwxrwx 1 root system 26 Jul 1 14:34 svn -> ../../opt/freeware/bin/svn. 也创建了 libs.so 的软链接,请参见 --> lrwxrwxrwx 1 root system 15 Sep 13 18:15 libssl.so -> libssl.so.1.0.1 ....... ...软链接是否有可能造成这些问题?在请求删除这些软链接之前,我需要确认这些软链接正在造成问题
    • 感谢 David 的正确解释。SVN 安装在位置 --> /opt/freeware/bin/ 具有到 /usr/bin/svn 的软链接。我认为这个系统上的 SVN 没有任何问题,因为我可以在命令行上执行任何 svn 命令。但不是通过 jenkins 中的脚本。今天,我尝试删除软链接并将路径导出到opt/freeware/bin/svn,但后来 jenkins 根本无法识别 svn。我认为我们的 svn 服务器和安装在 jenkins 中的 svn 插件之间存在一些不匹配。但仍然不知道......现在有什么想法吗?
    • 不要删除软链接!如果 SVN 在命令行上工作,而不是在脚本上工作,就会发生一些事情。以实际执行 Jenkins/Hudson 的用户身份登录,查看svn 命令的来源!你能以 Jenkins 用户的身份在不通过 Jenkins 的情况下执行脚本吗?
    • 谢谢大卫! ISSUE 现在已解决,我将 export LIBPATH 默认设置为 /usr/bin,然后重置为 /opt/freeware/lib
    猜你喜欢
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    相关资源
    最近更新 更多