centos6下編譯webkit時依賴庫atk/glib的安裝
轉載請務必註明出處及連線,謝謝!
最近的一個專案是關於網頁抓取的,其中遇到的一個問題是js後渲染,這種頁面的html內容是通過ajax渲染才得到的。
在爬蟲抓取的過程中,如果不採用一些方法,抓下來的資料基本上都是無用的。由於是定向抓取,因此開始的時候我們針對每個站點都編寫相應的抓取模板,但後來站點越來越多,且抓取的站點也不定,即使是已經開發抓取模板的站點也總在變幻頁面結構,很難保證模板的實時更新,所以,我們希望通過另外的方法來解決。
經過慎重考慮後,我們打算採取:一定的抓取規則+瀏覽器核心渲染的方式,完成對頁面的內容抓取,這樣的好處就是不需要每個站點都開發模板,一方面減少了人力的消耗,另一方面減少了維護帶來的成本。
瀏覽器核心選用了webkit,具體為什麼選擇它,其實就是看著它在多個平臺下都有很好的表現。人云亦云吧。但沒想到剛上來遇到了很鬱悶的問題,webkit在編譯時,對依賴庫的版本要求非常高,同時使用了很多不常用的包,無奈之下,只好一個個的安裝,一個依賴另一個,就這麼一個個的安裝,非常的費勁。即使是這樣,還不是最糟糕的,根據官方的介紹中,將相關的安裝包安裝之後,重新編譯webkit居然發現有個atk需要安裝更新的,於是下載atk,編譯,又提示glib需要安裝更新的,下載原始碼包,解壓,然後:
./configure --prefix=/usr
make
make install
非常順利,繼續安裝atk,沒想到問題來了,根據提示看意思是沒有找到glib-2.0,還提示嘗試配置PKG_CONFIG_PATH,好吧,那就:
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
再編譯akt,又有提示了:
modversion glib-2.0' returned 2.33.6, but GLIB (2.22.5)
*** was found! If pkg-config was correct, then it is best
*** to remove the old version of GLib. You may also be able to fix the error
*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing
*** /etc/ld.so.conf. Make sure you have run ldconfig if that is
*** required on your system.
*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH
*** to point to the correct configuration files
。。。。。。。。。。。。。。。。
暈呀,版本號又對不上了,怎麼辦?網上搜索了很久,終於找到一個根救命稻草:
http://space.doit.com.cn/?uid-51460-action-viewspace-itemid-4945
這篇文章中遇到的問題,跟我出奇的相似,我就用這個大哥的方法:
make uninstall //反安裝DOIT部落格 l,R!VKB.JU'xZ
#rm /usr/bin/glib* -f //刪除系統自帶DOIT部落格]whqVY-oH
#rm /usr/local/lib/glib-2.0 -fr //同上
#./configure && make //重新配置編譯 glib 還在/usr/local目錄下, 然後配置環境變數
#export LD_LIBRARY_PATH=/usr/local/lib
#export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
make install
然後再編譯atk,ok,順利通過!!
在次的這個編譯安裝過程中,也受到的很多的誤導,有的說將glib直接解除安裝,然後重新安裝。可憐這些說話不負責的,這個庫一旦解除安裝,系統就崩潰了!問題有多嚴重,不言而喻吧?
webkitgtk的低版本倒是在早前編譯通過了,也進行了簡單的測試,算是簡單入個門,但這方面的知識實在匱乏,歡迎有這相關開發的朋友多指點、交流。
8j.e,h:S/Kq/i0