centos7 安裝firefox


系統默認版本安裝在 /usr/lib下 有一個mozilla文件夾   64位操作系統在 /usr/lib64下
whereis  firefox
firefox: /usr/bin/firefox /usr/lib64/firefox /usr/share/man/man1/firefox.1.gz
新版本安裝 下載下來后是一個 tar.bz2的文件
解壓  tar jxvf  firefox-43.0.3.tar.bz2 
解壓后有一個firefox文件夾
ln -s /soft/firefox/firefox   /root/Desktop
這樣在桌面就可以雙擊直接訪問了
 
引用:

CentOS6.5安裝最新版 firefox

替換 centOS6.5 默認安裝的舊版 firefox ,安裝最新版 firefox 全過程
在當前的 centOS6.5 安裝光盤中,自帶的 firefox web browser 版本過舊,而且是 ESR 版,也就是無法進行自動更新,這會導致安裝系統以后,默認的 17.0.10 舊版與新版的差距越來越大,參考如下截圖:
wKioL1QeMnSSv8PIAAxdzN_a1-w507.jpg

 

我們可以通過卸載這個舊版,然后安裝可以自動升級的新版 firefox 來解決這個問題:

必須指出,安裝新版的 firefox 有2種途徑:通過 yum 自動升級安裝和從 firefox 官網下載最新版來安裝;

無論是 centos 官方 yum 源服務器,還是查詢到的距離本地最近的第三方 yum 源服務器,其上的 firefox 版本雖新,但應該都還是落后於官方的最新版,甚至有可能比本地能自動更新的 firefox 版本還舊,如下所示:

wKiom1QeOYigOUp6AAkh7KLMoQQ086.jpg

注意,使用 yum 來升級到新版的 firefox 后,有時會出現問題,

例如,運行新版的 firefox 時,會提示某個 gdk 符號(通常是某個函數的名稱)未定義,然后就退出。。。。。

這牽涉到 firefox 使用的動態共享庫的依賴性問題,一個可能的原因是firefox 依賴的共享庫 /usr/lib/firefox/libxul.so

 

通過 yum 從網絡上任何軟件倉庫服務器下載升級的 firefox,由於非官方的最新版本,因此它自帶的 libxul.so 版本也不是最新的,

對於舊版的 libxul.so 而言,它又依賴於最新的 libgdk 共享庫;

如果我們不能保證 libgdk 隨時處於最新版的狀態,當 libxul.so 引用一個當前系統上的 libgdk 中不存在的符號,就會導致 firefox 啟動失敗(閃退),並且給出某某以 gdk_ 前綴的符號未定義的錯誤信息;

 

而 mozilla 官方 33.0 版本以后的 firefox ,已經解決了其自帶共享庫

libxul.so 對系統共享庫 libgdk 的依賴問題,

這就是為什么通過 yum 升級安裝的 firefox 在運行時會閃退;而官方的

firefox 可以正常啟動的原因:兩者的 libxul.so 版本差異造成的

 

另外,雖然可以通過 yum 來升級舊版 libxul.so 依賴的 libgdk 到最新版,但這無非是一個比較繁瑣,浩大的工程,而且極可能舊版的 libxul.so 還依賴於其它最新版的系統共享庫;

 

最為對上面論述的一個側面佐證,讓我們查看一下,libxul.so 的“動態依賴性”

 

 
[root@centos6-5vm 桌面]# cd /usr/lib/firefox/
[root@centos6-5vm firefox]# ll libxul.so
-rwxr-xr-x. 1 root root 60391628 10月 31 04:33 libxul.so
 
[root@centos6-5vm firefox]# ldd libxul.so
 
    linux-gate.so.1 =>  (0x0023c000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x003ff000)
    libsmime3.so => /usr/lib/libsmime3.so (0x00e04000)
    libssl3.so => /usr/lib/libssl3.so (0x00e6e000)
    libnss3.so => /usr/lib/libnss3.so (0x00ae4000)
    libnssutil3.so => /usr/lib/libnssutil3.so (0x00ee4000)
    libXrender.so.1 => /usr/lib/libXrender.so.1 (0x00f6f000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0x00cc8000)
    libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x00732000)
    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x00780000)
    libXcomposite.so.1 => /usr/lib/libXcomposite.so.1 (0x009af000)
    libmozsqlite3.so => /usr/lib/xulrunner/libmozsqlite3.so (0x00175000)
    libasound.so.2 => /lib/libasound.so.2 (0x0023d000)
    librt.so.1 => /lib/librt.so.1 (0x00203000)
    libnspr4.so => /lib/libnspr4.so (0x00329000)
    libplc4.so => /lib/libplc4.so (0x006d8000)
    libplds4.so => /lib/libplds4.so (0x006ca000)
    libmozalloc.so => /usr/lib/xulrunner/libmozalloc.so (0x0020c000)
    libdbus-glib-1.so.2 => /usr/lib/libdbus-glib-1.so.2 (0x00ab7000)
    libdbus-1.so.3 => /lib/libdbus-1.so.3 (0x00367000)
    libgobject-2.0.so.0 => /lib/libgobject-2.0.so.0 (0x003ae000)
    libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0x0041a000)
    libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0x00f78000)
    libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x0052e000)
    libgio-2.0.so.0 => /lib/libgio-2.0.so.0 (0x0054d000)
    libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x0020f000)
    libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00785000)
    libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00f3a000)
    libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x0081d000)
    libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x00667000)
    libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x00686000)
    libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x006de000)
    libcairo.so.2 => /usr/lib/libcairo.so.2 (0x008d3000)
    libgmodule-2.0.so.0 => /lib/libgmodule-2.0.so.0 (0x00d22000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0x03889000)
    libXt.so.6 => /usr/lib/libXt.so.6 (0x009b2000)
    libgthread-2.0.so.0 => /lib/libgthread-2.0.so.0 (0x003fa000)
    libdl.so.2 => /lib/libdl.so.2 (0x0073e000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x03335000)
    libm.so.6 => /lib/libm.so.6 (0x00743000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00953000)
    libc.so.6 => /lib/libc.so.6 (0x01417000)
    /lib/ld-linux.so.2 (0x00698000)
    libz.so.1 => /lib/libz.so.1 (0x00971000)
    libresolv.so.2 => /lib/libresolv.so.2 (0x00d29000)
    libselinux.so.1 => /lib/libselinux.so.1 (0x0098a000)
    libexpat.so.1 => /lib/libexpat.so.1 (0x00a0f000)
    libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x00de9000)
    libXi.so.6 => /usr/lib/libXi.so.6 (0x006b8000)
    libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x00f1e000)
    libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x00727000)
    libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00a37000)
    libpixman-1.so.0 => /usr/lib/libpixman-1.so.0 (0x00c20000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00a5f000)
    libSM.so.6 => /usr/lib/libSM.so.6 (0x00526000)
    libICE.so.6 => /usr/lib/libICE.so.6 (0x00a7f000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0x00239000)
    libuuid.so.1 => /lib/libuuid.so.1 (0x00692000)

 

第 35 行與 36 行,就是 libxul.so 依賴的 libgdk 相關的共享庫;

可以看到,firefox “自帶”的共享庫 libxul.so 依賴的其它系統共享庫數量,極其驚人,通過 yum 來逐一更新這些共享庫,無疑是自找麻煩;

 

 

所以,我們推薦直接在官網上下載最新的 tar.bz2 格式的壓縮包,其中有 firefox 的二進制可執行文件,

並且這個壓縮包自包含了最新的 libxul.so共享庫;

從這個問題上,不難看出,yum 在解析軟件包依賴性,尤其是版本的兼容性方面,還存在需要加強的地方

 

總之,如果你的 centos6.5 上的 firefox 是不能自動升級的 ESR 版,而且版本過舊,那么建議按照下面的解決方案來處理:

 

1.用你本地的舊版 firefox,訪問

http://www.firefox.com.cn

 

wKiom1QePYGx9IM6AAreaVMv3ZY157.jpg

 

2. 進入存放下載文件(Firefox-latest.tar.bz2)的目錄

 
[root@centos6-5vm ~]# cd /root/下載


3. 在該目錄解壓 Firefox-latest.tar.bz2,解壓后會生成一個 firefox 子目錄,里面有最新版本的 firefox 的二進制可執行文件,以及各種擴展模塊,插件等等

 
[root@centos6-5vm 下載]# ll
總用量 41632
-rw-r--r--. 1 root root 42630327 9月  21 11:35 Firefox-latest.tar.bz2
[root@centos6-5vm 下載]# tar -xjvf Firefox-latest.tar.bz2

 

4. 刪除系統默認安裝的舊版 firefox ,通常位於 /usr/lib 目錄下

 
[root@centos6-5vm 下載]# ll
總用量 41636
drwxr-xr-x. 8  503 games     4096 9月  19 09:55 firefox
-rw-r--r--. 1 root root  42630327 9月  21 11:35 Firefox-latest.tar.bz2
[root@centos6-5vm 下載]# whereis firefox
firefox: /usr/bin/firefox /usr/lib/firefox /usr/share/man/man1/firefox.1.gz
[root@centos6-5vm 下載]# rm -rf /usr/lib/firefox

 

5. 將當前目錄下的新版 firefox 子目錄復制到 /usr/lib 目錄下

 
[root@centos6-5vm 下載]# mv firefox /usr/lib

 

6. 進入 /usr/bin 目錄,刪除其下的 firefox 腳本,回到主目錄或根目錄,創建一個軟鏈接,指向

 /usr/lib/firefox/firefox

 

 
[root@centos6-5vm 下載]# cd /usr/bin
[root@centos6-5vm bin]# ll firefox
-rwxr-xr-x. 1 root root 6546 10月 30 2013 firefox
[root@centos6-5vm bin]# rm firefox 
rm:是否刪除普通文件 "firefox"?y
[root@centos6-5vm bin]# cd
[root@centos6-5vm ~]# ln -s /usr/lib/firefox/firefox /usr/bin/firefox

 

 

7. 在 shell 終端執行 firefox 命令,就能啟動最新版的  firefox (啟動前確認已經終止所有舊版的 firefox 進程)

1
[root@centos6-5vm ~]# firefox

前面我們創建軟鏈接的原因,就是為了這一步執行 firefox 命令時,系統在搜索路徑  /usr/bin 下找到 firefox 這個軟鏈接,並且指向真正的可執行文件路徑

/usr/lib/firefox/firefox

 

注意,對於這一步而言,需要 firefox 占用一個 shell 虛擬終端(pts/n),該虛擬終端不能執行任何其它命令,直到關閉 firefox 進程,

因此,我們修改系統左上方的 firefox 瀏覽器圖標的屬性,在 “命令”字段右側的文本框中,輸入

 

 
/usr/lib/firefox/firefox %u

 

然后關閉對話框,重新點擊該圖標,就能不占用任何 shell 虛擬終端來啟動 firefox

 

wKiom1QeX1ChxrPmAAV6084eEQY859.jpg

 

 

如果你不想用上面這張截圖中帶有定制公司 logo 的版本,也可以去下面這個官方  FTP 站點下載“純凈版”:

 

http://download.cdn.mozilla.net/pub/mozilla.org/firefox/releases/latest/linux-i686/zh-CN/

 

wKioL1QeYRHxVjBRAASH6hYu9FM760.jpg

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM