1. 程式人生 > >centos6下編譯webkit時依賴庫atk/glib的安裝

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