錯誤描述
/usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/lib/libpython2.7.so.1.0)
使用vim或者編譯程序或者其他使用python的情況下就會出現
而且基於ssh的file transfer也無法使用
起因
自己對openssl中的內容進行了修改,希望使用其中的內容,靜態庫好說,可以實現,但是強迫症般的想通過動態庫調用。
將openssl編譯出的.so文件(加shared參數)復制到/usr/local/lib目錄下,並做了鏈接,而在調用的時候就出現了上述的問題
起初以為是舊的庫(位於/lib/x86_64-linux-gnu/libcrypto.so.1.0.0)沒有刪除而引起沖突所致,無奈刪除后依然無果
后來發現可能自己的方式不科學,因為是直接復制過去的(居然這么想,2了)。依照網上的說法,做鏈接到/usr/local/ssl/lib/libcrypto.so.1.0.0,依然無果
而且即使直接將.so文件復制到/lib/x86_64-linux-gnu/目錄下覆蓋原有文件也不行
這時才意識到,這個東西是應該跟上述的位置問題無關的,因為在執行ldd /usr/lib/libpython2.7.so.1的時候顯示的引用的共享庫內容已經是我自己編譯的那個了,說明在調用的時候並沒有問題,也不應該受到系統自帶的ssl庫的影響
后來想到是不是openssl對python有特殊的支持,而我config的時候參數設置有問題呢,去查看Configure/config/Makefile內容,依然無果,並沒有python相關內容
又在網上找了找,有人提到版本問題,感覺挺靠譜,繼續看下去,他提到了2進制安裝包編譯與運行環境不同的問題
尤其指出openssl編譯出的共享庫的soname中的版本號並不受openssl版本最后一位字母的影響,也就是1.0.1e和1.0.1c編譯出的共享庫看起來是一模一樣的
這時就感覺問題已經解決了
卸載了原有的python2.7(不知道有沒有必要),下載源碼,並重新編譯安裝,當然還有vim,因為在卸載python2.7的時候已經被一起刪除了
之前的錯誤提示並沒有發生,高興的去用SSH secure shell鏈接,發現file transfer可以使用了
而libpython2.7.so.1所調用的共享庫是/usr/local/lib/libcrypto.so.1.0.0,也就是我自己編譯的沒錯
問題算是解決了
2013.1.16
啊,太不幸了,因為我在另一台虛擬機上嘗試的時候ssh的file transfer還是不能用,scp也不能用,而且后來我想了一下,把依賴libcrypto.so的庫都重裝也不現實。
我后來是把舊的openssl完全卸載,所有有關的東西都刪掉,然后再裝新的,果然能用了哈。
但是它居然會一小段時間就斷開連接,過一段時間后才可以再次連,周而復始,我在想是不是什么東西給刪錯了呢。
不會看日志呀不會看日志。