2013-12-12 43 views
0

使用腳本從svn結帳時,出現以下錯誤。使用腳本結帳時出現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 /路徑SVN分公司/ 我在一些測試中間,爲什麼在建SVN插件,我不使用詹金斯請不要問。 在這裏,我可以檢查使用svn co/svn branch/ 的命令提示符。但是,如果我在腳本中編寫此命令行並在jenkins的執行shell中運行,則不行。 請幫忙嗎?

我在AIX 7平臺上使用jenkins。

我有從/ usr/bin/svn到/opt/freeware/bin/svn.SVN的軟鏈接安裝在/ opt/freeware/bin/svn .....默認情況下,當我做哪個svn它顯示/usr/bin/svn但是,當我刪除這些軟鏈接和導出路徑時,詹金斯根本沒有認出SVN。並且which svn命令沒有顯示任何svn安裝。詹金斯的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` 
+0

我不可能問你爲什麼不使用jenkins svn插件。你爲什麼不使用jenkins svn插件?這是解決您的問題的方法。 (或者你正在解決錯誤的問題) – thekbb

+0

我在我們的腳本中使用了一些類似'svn info和svn --version'的命令。還從不同的分支中做了一個小的結賬。這裏使用了jenkins默認的svn plugin.It如果我可以用我的系統的命令行svn覆蓋jenkins插件,那就太好了。 .. – Kaku

+0

你可以直接從詹金斯那裏得到這些值......從兩個不同的分支中檢查是一個壞的舉動 - 聽起來像你的來源不是很好。你正在爲自己製造麻煩。 – thekbb

回答

0

我還沒有看到你在test.sh使用SVN的確切命令,但會建議你給SVN的完整路徑,在您的電話線路,例如,/ usr/bin/svn co ..... 如果還可以在你的test.sh文件中輸入PATH並導出LD_LIBRARY_PATH,將它們設置爲所提及的.so文件路徑的值

+0

我已經告訴過我使用「svn co」命令:::: svn co https:// corp/svn/,,,,這個命令在服務器的命令行中執行,但在腳本中寫入時不起作用之後執行 – Kaku

+0

我也爲lib和svn導出了路徑,但我仍然得到同樣的錯誤。非常困惑 – Kaku

+0

您是否嘗試查找.so和.a文件並將其各自的路徑導出到LD_LIBRARY_PATH中? –

0

我看到你了使用哈德森/詹金斯。 Hudson和Jenkins在內部檢查Subversion的內部和外部時使用SVNKit。這意味着命令行svn客戶端可能未安裝在您的系統上,或者它可能有其他問題。

也可能系統上有多個svn客戶端。例如,您可能在/usr/bin/svn下有一個,在/usr/local/bin/svn下有一個。如果Subversion正在從命令行運行,但不在腳本中運行,那麼當從命令行執行命令或從Hudson/Jenkins運行腳本時,您可能會設置不同的$PATH設置。您可以添加到您的腳本(如果它是BASH)行type svn,看看你的執行svn從哪裏。它可能與您在命令行中使用的不同。將$PATH作爲腳本的一部分打印出來也可能很好。

查看您的腳本正在執行的svn命令也會有幫助,並告訴我們您要做什麼。您還可以添加到您的腳本下面幾行:

PS4="\$LINE: " 
set -xv 

這些線路將開啓shell腳本調試,並幫助您找到您的腳本有問題。

這會給你一些線索,說明你的腳本中出了什麼問題。

回覆

感謝大衛。這裏只有1個svn路徑存在(usr/bin/svn),但創建爲一個softlink,參見 - > cd/usr/bin/svn lrwxrwxrwx 1 root system 26 Jul 1 14:34 svn - > ../../opt/免費軟件/斌/ SVN。另外還創建了libs.so的soflink鏈接,請參閱 - > lrwxrwxrwx 1 root system 15 Sep 13 18:15 libssl.so - > libssl.so.1.0.1 ..........是否有可能softlink是造成這些問題?在請求刪除這些軟鏈接之前,我需要確認這些軟鏈接是否會產生問題。

對於Unix來說,軟連接並不罕見。例如,我在我的Mac上安裝了Ant,Grails,Maven,Subversion和其他許多軟件包,其中包含/opt。爲了不必在我的路徑中包含每一個這樣的內容,我將這些程序的所有二進制文件都鏈接到/usr/local/bin下。大約80%的程序/usr/local/bin之下僅僅是其他地方的軟鏈接。

圖書館軟鏈接也很常見。這通常與版本編號有關。當一個程序請求一個庫時,它可能包含或不包含庫的版本號。所以,你的驅動器上有libfoo-2.0.3.so。這是foo的實際版本。但是,很少有程序會要求特定的版本。相反,他們可能會簡單地要求他們需要foo的第2版或者只是說他們需要鏈接到foo。

要處理這個問題,您將有libfoo2.0.3.so軟鏈接到libfoo-2.so爲程序,指定他們需要版本2的foo。然後,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版本庫被嵌入在Jenkins/Hudson內部的SVNKit Jarfile訪問,因此發現Subversion版本不起作用並不令人意外。

你是否可以使用Subversion從命令行執行任何操作?否則,您可能需要安裝Perzl的新版Subversion,這是CollabNet指向AIX版本Subversion的地方。 (至少在1.8.4版本中是最新的)。

您甚至可能想要將/usr/bin/svn的軟鏈接更改爲指向更新的Subversion版本。

+0

謝謝大衛。這裏只有1個svn路徑存在(usr/bin/svn),但是創建爲一個softlink,參見 - >'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' .... ......軟鏈接是否可能造成這些問題?在請求刪除這些軟鏈接之前,我需要確認這些軟鏈接正在創建問題 – Kaku

+0

請參閱上面的我的回覆。 –

+0

感謝David給予了正確的解釋.SVN安裝在位置 - >'/ opt/freeware/bin /'上,它已經和'/usr/bin/svn'軟鏈接了。我不認爲SVN在這個系統上有任何問題因爲我能夠在命令行上執行任何svn命令。但不能通過jenkins中的腳本。今天,我嘗試刪除軟鏈接並將路徑導出到'opt/freeware/bin/svn',但jenkins根本沒有識別svn 。我認爲我們的svn服務器和安裝在jenkins中的svn插件之間存在一些不匹配,但仍然沒有線索......現在有什麼想法? – Kaku

1

重新安裝Jenkins解決了我的問題!這是由於服務器重啓導致發生了損壞的插件。 謝謝大家