2016-08-22 36 views
5

我遇到過一個問題,我需要在我的項目中需要(=使用)的所有PEAR包的列表。 是否有一種工具可以通過簡單閱讀代碼獲取我的源代碼中使用的所有PEAR包列表? 閱讀所有安裝的軟件包是不夠的,我真的只需要那些真正使用的軟件包。 我需要這個,所以我可以升級軟件包,或者更好 - 用可通過作曲者安裝的新庫替換它們。查找項目中所需的所有PEAR包(源代碼)

我遇到了PEAR包PHP_CompatInfo,但這並沒有給我帶來好的結果,而且它也只列出了在插件本身註冊的包。

+0

您運行的是哪個版本的PHP? –

+0

我正在運行PHP 5.3。但如果它有幫助,我可以升級到任何5.x版本 – Asped

回答

2

我會先評估所安裝的PEAR類系統

上,如果你認爲某些利布斯的項目中使用可能會丟失,你需要下載本地整個PEAR庫

全部下載包執行:

pear config-set preferred_state alpha 
pear remote-list | awk '{print $1}' > tmp-list ; tail -n +5 tmp-list > pear-list ; rm tmp-list 
cat pear-list | xargs -n 1 pear install 

然後創建所有類的列表:

cd /usr/share/php #(or different path to pear libs) 

find . ! -path "*/tests/*" ! -path "*/examples/*" -name "*.php" -type f | xargs grep -Pho "^class ([a-zA-Z0-9_]+)" | sed -e "s/^class //" -e "" > all_pear.txt 

那將造成保存到all_pear.txt

所有梨類的列表然後我會尋找我的代碼中所有引用

cd my_project; 

while read line; do find . -name "*.php" -type f | xargs grep -Pho $line; done < path/to/all_pear.txt | sort | uniq > used_classes.txt 

,將創建列表關閉在項目中使用的所有PEAR類,並將其保存進入文件列表used_classes.txt

+0

似乎是一個很好的解決方案,但是 - 您需要首先下載所有pear libs +我仍然得到一些奇怪的軟件包,如「C」或「abc」,「d」我不知道 – Asped

+0

這可能是這些「a」「b」類來自測試目錄我更新答案並排除測試和示例目錄。還添加了如何下載所有梨類的基本說明..(仍然在下載某些庫時顯示一些PHP擴展名缺失),所以可能應該有一個更好的方式來下載所有沒有依賴關係檢查的包。 –

+0

我基本上不太喜歡這個想法,因爲我必須通過安裝所有的梨包來污染我的系統,以便在它們中搜索。但我想在我的情況下,我不需要,因爲我的應用程序工作,所以我認爲我需要的所有庫已經安裝。我只想過濾掉那些我不需要的東西 – Asped

相關問題