有沒有任何選項可以從那裏查明實際的依賴關係?
是的,但你需要知道有問題的OpenSSL版本,你需要grep
。 Windows find
不會。
首先,注意違規的OpenSSL版本。爲了爭辯,說它的原因是OpenSSL 1.0.1h
。
接下來,收集您的依賴關係及其頂級文件夾的列表。爲了便於討論,說其$HOME/Desktop/aosp-app
,$HOME/sdk-a
,/usr/local/sdk-b
和/opt/local/sdk-c
。
最後,對於頂級目錄:
grep -R '1.0.1h' "$HOME/Desktop/aosp-app"
grep -R '1.0.1h' "$HOME/sdk-a"
grep -R '1.0.1h' /usr/local/sdk-b
grep -R '1.0.1h' /opt/local/sdk-c
你不需要grep -iR
,這是一個不區分大小寫(-i
)遞歸(-R
)搜索。您也不需要grep -IR
,這是一個跳過二進制文件(-I
)的遞歸(-R
)搜索。
所有這些都是有效的,因爲OpenSSL庫將它的版本作爲字符串嵌入數據部分。最終,你會遇到罪魁禍首,這可能是一個作爲共享對象預先構建的SDK,但包含OpenSSL作爲靜態庫。一個SDK似乎經常被識別出來,它使用的cURL是針對靜態OpenSSL庫構建的。
如果你有JAR files and suspect them,那麼你可以執行以下的快速測試:
find <dir> -name '*.jar' -exec grep -R '1.0.1h' {} \;
該命令將查找的目錄<dir>
及其子目錄。它將搜索擴展名爲*.jar
的文件。當它找到一個,它會運行grep
上尋找字符串。 find
會爲它找到的每個*.jar
。
來源
2016-07-04 17:56:16
jww