firefox-31 套件實例

  1. 緣由
    1. firefox v24 自動儲存帳號密碼功能失效。
    2. firefox v24 Google 地圖拖曳功能失效,原有為安裝了不相容的附加元件。
    3. 教師資訊系統個人資訊中有部分程式 firefox-24 版打不開,但再更新成 firefox-31 仍然有問題。
  2. 下載 SRPM 套件
    [dywang@dywH ~]$ cd rpmbuild
    [dywang@dywH rpmbuild]$ wget ftp://ftp.pbone.net/mirror/ftp.centos.org/\
    6.6/os/x86_64/Packages/firefox-31.1.0-5.el6.centos.x86_64.rpm
    

  3. 安裝 SRPM 套件
    [dywang@dywH rpmbuild]$ rpm -ivh firefox-31.1.0-5.el6.centos.src.rpm
    
  4. 查看安裝的所有檔案。
    [dywang@dywH SOURCES]$ rpm -qpl ../firefox-31.1.0-5.el6.centos.src.rpm 
    disable-webm.patch
    find-external-requires
    firefox-31.1.0esr.source.tar.bz2
    firefox-centos-default-prefs.js
    firefox-default.patch
    firefox-duckduckgo.patch
    firefox-enable-addons.patch
    firefox-enable-plugins.patch
    firefox-install-dir.patch
    firefox-langpacks-31.1.0esr-20140827.tar.bz2
    firefox-mozconfig
    firefox-mozconfig-branded
    firefox-system-nss-3.16.2.patch
    firefox.1
    firefox.desktop
    firefox.sh.in
    firefox.spec
    mozilla-python.patch
    nullptr.patch
    remove-ogg.patch
    rhbz-966424.patch
    simplejson-2.1.1.tar.gz
    xulrunner-24.0-jemalloc-ppc.patch
    xulrunner-nspr-version.patch
    
  5. 至原始碼目錄中查看檔案。
    [dywang@dywH rpmbuild]$ cd SOURCE
    [dywang@dywH SOURCES]$ ls firefox-31.1.0esr.source.tar.bz2 
    firefox-31.1.0esr.source.tar.bz2
    
  6. 解壓縮原始碼 tarball,產生 mozilla-esr31 目錄,存放原始碼。
    [dywang@dywH SOURCES]$ tar jxvf firefox-31.1.0esr.source.tar.bz2
    

  7. 至 mozilla-esr31 目錄,查看檔案。
    [dywang@dywH SOURCES]$ ls mozilla-esr31/
    accessible  config        intl         moz.build            services
    aclocal.m4  configure     ipc          mozglue              startupcache
    addon-sdk   configure.in  js           mozilla-config.h.in  storage
    Android.mk  content       layout       netwerk              testing
    AUTHORS     db            LEGAL        nsprpub              toolkit
    b2g         docshell      LICENSE      other-licenses       tools
    browser     dom           mach         parser               uriloader
    build       editor        Makefile.in  probes               view
    caps        embedding     media        profile              webapprt
    chrome      extensions    memory       python               widget
    client.mk   gfx           mfbt         rdf                  xpcom
    client.py   hal           mobile       README.txt           xpfe
    CLOBBER     image         modules      security             xulrunner
    

  8. 修改 RPM spec 規格檔,版本加入 dyw。
    [dywang@dywH SOURCES]$ vim ../SPECS/firefox.spec 
    [dywang@dywH SOURCES]$ grep dyw ../SPECS/firefox.spec -B3
    Summary:        Mozilla Firefox Web browser
    Name:           firefox
    Version:        31.1.0
    Release:        5%{?prever}%{?dist}.dyw
    
  9. 修改預設首頁到個人網頁。
    [dywang@dywH SOURCES]$ grep dyw firefox-centos-default-prefs.js
    pref("browser.startup.homepage",            "data:text/plain,browser.startup.homepage=http://dy.csie.cyut.edu.tw");
    pref("startup.homepage_override_url",       "http://dy.csie.cyut.edu.tw");
    pref("startup.homepage_welcome_url",        "http://dy.csie.cyut.edu.tw");
    
  10. 將開啟 firefox 預設改為顯示上次開啟的網頁。
    [dywang@dywH SOURCES]$ vim mozilla-esr31/browser/locales/en-US/\
    chrome/browser/preferences/main.dtd
    [dywang@dywH SOURCES]$ grep 'Show' mozilla-esr31/browser/locales/\
    en-US/chrome/browser/preferences/main.dtd --color
    <!ENTITY startupLastSession.label  "Show my windows and tabs from last time">
    <!ENTITY startupHomePage.label     "Show my home page">
    <!ENTITY startupBlankPage.label    "Show a blank page">
    
  11. 修改預設編碼為 UTF-8。
    [root@dyw219 SOURCES]# vim mozilla-esr31/toolkit/locales/en-US/\
    chrome/global/intl.properties
    [root@dyw219 SOURCES]# grep intl.charset.default mozilla-esr31/toolkit/locales/en-US/chrome/global/intl.properties
    # LOCALIZATION NOTE (intl.charset.detector, intl.charset.default, intl.charsetmenu.browser.static, intl.charsetmenu.mailedit):
    intl.charset.detector=Zh_TW
    intl.charsetmenu.browser.static=UTF-8,ISO-8859-1
    
    [dywang@dywH SOURCES]$ vim mozilla-esr31/toolkit/locales/en-US/\
    chrome/global-platform/unix/intl.properties 
    [dywang@dywH SOURCES]$ grep charset mozilla-esr31/toolkit/\
    locales/en-US/chrome/global-platform/unix/intl.properties 
    intl.charset.default=UTF-8
    
  12. 修改 x-western 及 zh-TW 兩種語系預設的字型大小。
    [dywang@dywH SOURCES]$ vim mozilla-esr31/modules/libpref/src/init/all.js
    [dywang@dywH SOURCES]$ egrep 'font.size.*(x\-western|zh\-TW)' \
    mozilla-esr31/modules/libpref/src/init/all.js
    pref("font.size.variable.x-western", 15);
    pref("font.size.fixed.x-western", 14);
    pref("font.size.variable.zh-TW", 15);
    pref("font.size.fixed.zh-TW", 15);
    pref("font.size.variable.x-western", 15);
    pref("font.size.fixed.x-western", 14);
    pref("font.size.variable.zh-TW", 15);
    pref("font.size.fixed.zh-TW", 15);
    pref("font.size.variable.x-western", 15);
    pref("font.size.fixed.x-western", 14);
    pref("font.size.variable.zh-TW", 15);
    pref("font.size.fixed.zh-TW", 15);
    pref("font.size.variable.x-western", 15);
    pref("font.size.fixed.x-western", 14);
    pref("font.size.variable.zh-TW", 15);
    pref("font.size.fixed.zh-TW", 15);
    
  13. 預設等寬字 monospace,實際使用時不會等寬,故修改成 DejaVu Sans Mono。
    [dywang@dywH SOURCES]$ vim mozilla-esr31/modules/libpref/src/init/all.js
    [dywang@dywH SOURCES]$ egrep 'font.name.monospace.*(x\-western|zh\-TW)' \
    mozilla-esr31/modules/libpref/src/init/all.js
    pref("font.name.monospace.x-western", "DejaVu Sans Mono");
    pref("font.name.monospace.zh-TW", "DejaVu Sans Mono");
    pref("font.name.monospace.x-western", "DejaVu Sans Mono");
    pref("font.name.monospace.zh-TW", "DejaVu Sans Mono");
    pref("font.name.monospace.x-western", "DejaVu Sans Mono");
    pref("font.name.monospace.zh-TW", "DejaVu Sans Mono");
    pref("font.name.monospace.x-western", "DejaVu Sans Mono");
    pref("font.name.monospace.zh-TW", "DejaVu Sans Mono");
    pref("font.name.monospace.x-western", "DejaVu Sans Mono");
    
  14. 重新打包壓縮 mozilla-esr31 目錄。
    [dywang@dywH SOURCES]$ tar jcvf firefox-31.1.0esr.source.tar.bz2 mozilla-esr31
    
  15. 建立 RPM 二進位檔,出現相依套件問題,不同的建立環境缺的套件不會相同,必須把缺的套件都安裝起來。
    [dywang@dywH SOURCES]$ rpmbuild -ba --clean --target=$(uname -m) ../SPECS/firefox.spec 
    Building target platforms: x86_64
    Building for target x86_64
    Building target platforms: x86_64
    Building for target x86_64
    error: Failed build dependencies:
    	libvpx-devel >= 1.3.0 is needed by firefox-31.1.0-5.el6.dyw.x86_64
    
  16. 安裝 firefox 開發相依套件。
    [root@dyw219 centos6]# yum install libvpx-devel
    

  17. 再同時建立 RPM 及 SRPM 二進位檔字,firefox RPM 建立要 1 小時以上,要耐心等候。成功建立的訊息最後幾行,看到產生 firefox firefox-debuginfo 二個 RPM 檔及一個 firefox SRPM 檔。
    [dywang@dywH SOURCES]$ rpmbuild -ba --clean --target=$(uname -m) ../SPECS/firefox.spec
    ...................
    BUILDROOT/firefox-31.1.0-5.el6.dyw.x86_64
    Wrote: /home/dywang/rpmbuild/SRPMS/firefox-31.1.0-5.el6.dyw.src.rpm
    Wrote: /home/dywang/rpmbuild/RPMS/x86_64/firefox-31.1.0-5.el6.dyw.x86_64.rpm
    Wrote: /home/dywang/rpmbuild/RPMS/x86_64/firefox-debuginfo-31.1.0-5.el6.dyw.x86_64.rpm
    Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.reBrVd
    + umask 022
    + cd /home/dywang/rpmbuild/BUILD
    + cd firefox-31.1.0
    + /bin/rm -rf /home/dywang/rpmbuild/BUILDROOT/firefox-31.1.0-5.el6.dyw.x86_64
    + exit 0
    
  18. 複製到 repo 套件庫。
    [dywang@dywH SOURCES]$ sudo cp ../RPMS/x86_64/firefox-31-1.0-5* /var/ftp/pub/centos6/crtPackages
    
  19. 以 root 身份重新建立 repo 資料庫,repogroup.sh 為自行撰寫的腳本。
    [root@dywH Packages]$ repogroup.sh 
    [root@dywH Packages]# repogroup.sh 
    1888/1888 - Packages/libreoffice/libreoffice-ure-3.4.5.2-16.1.el6_3.x86_64.rpm  
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Loaded plugins: fastestmirror, refresh-packagekit
    Cleaning up Everything
    
  20. 安裝 firefox。
    [dywang@dywH ~]$ sudo yum install firefox
    
  21. 安裝後第一次啟動 firefox,出現個人首頁,且預設字型大小及型式已符合個人期待。
    Image firefox31first