firefox-24 套件實例

  1. firefox-18 版不適用 https://mega.co.nz/,必須更新版本,firefox-24.2.0 為CentOS 6 最接近 18 的版本,用此版本要更動的相依套件最少。
  2. 下載 SRPM 套件
    [dywang@dywH ~]$ cd rpmbuild
    [dywang@dywH rpmbuild]$ wget ftp://ftp.icm.edu.pl/vol/rzm5/linux-slc/\
    updates/slc6X/SRPMS/firefox-24.2.0-1.el6_5.src.rpm
    

  3. 安裝 SRPM 套件
    [dywang@dywH rpmbuild]$ rpm -ivh firefox-24.2.0-1.el6_5.src.rpm
    
  4. 至原始碼目錄中查看檔案。
    [dywang@dywH rpmbuild]$ cd SOURCE
    [dywang@dywH SOURCES]$ ls firefox-24*tar*
    firefox-24.2.0esr.source.tar.bz2
    
  5. 解壓縮原始碼 tarball,產生 mozilla-esr24 目錄,存放原始碼。
    [dywang@dywH SOURCES]$ tar jxvf firefox-24.2.0esr.source.tar.bz2
    

  6. 至 mozilla-esr24 目錄,查看檔案。
    [dywang@dywH SOURCES]$ ls mozilla-esr24/
    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
    

  7. 修改 RPM spec 規格檔,版本加入 dyw。
    [dywang@dywH SOURCES]$ vim ../SPECS/firefox.spec 
    [dywang@dywH SOURCES]$ grep dyw ../SPECS/firefox.spec 
    Release:        1%{?prever}%{?dist}.dyw
    
  8. 修改 RPM spec 規格檔,在 %install 段落中,將 firefox-bin 執行檔連結到 firefox,以降低不必要的檔案儲存。
    [dywang@dywH SOURCES]$ vim ../SPECS/firefox.spec 
    [dywang@dywH SOURCES]$ grep 'ln -sf' -B2 ../SPECS/firefox.spec 
    %{__rm} -rf ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries
    ln -s %{_datadir}/myspell ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries
    (cd $RPM_BUILD_ROOT/%{mozappdir}; ln -sf firefox firefox-bin)
    
  9. 修改預設首頁到個人網頁。
    [dywang@dywH SOURCES]$ grep dyw firefox-redhat-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. 修改預設編碼為 UTF-8。
    [root@dyw219 SOURCES]# vim mozilla-esr24/toolkit/locales/en-US/chrome/global/intl.properties
    [root@dyw219 SOURCES]# grep intl.charset.default mozilla-esr24/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.default=UTF-8
    intl.charsetmenu.browser.static=UTF-8, ISO-8859-1
    
    [dywang@dywH SOURCES]$ vim mozilla-esr24/toolkit/locales/en-US/chrome/global-platform/unix/intl.properties 
    [dywang@dywH SOURCES]$ grep charset mozilla-esr24/toolkit/locales/en-US/chrome/global-platform/unix/intl.properties 
    intl.charset.default=UTF-8
    
  11. 修改 x-western 及 zh-TW 兩種語系預設的字型大小。
    [dywang@dywH SOURCES]$ vim mozilla-esr24/modules/libpref/src/init/all.js
    [dywang@dywH SOURCES]$ egrep 'font.size.*(x\-western|zh\-TW)' \
    mozilla-esr24/modules/libpref/src/init/all.js
    pref("font.size.variable.x-western", 14);
    pref("font.size.fixed.x-western", 14);
    pref("font.size.variable.zh-TW", 15);
    pref("font.size.fixed.zh-TW", 14);
    pref("font.size.variable.x-western", 14);
    pref("font.size.fixed.x-western", 14);
    pref("font.size.variable.zh-TW", 15);
    pref("font.size.fixed.zh-TW", 14);
    pref("font.size.variable.x-western", 14);
    pref("font.size.fixed.x-western", 14);
    pref("font.size.variable.zh-TW", 15);
    pref("font.size.fixed.zh-TW", 14);
    pref("font.size.variable.x-western", 14);
    pref("font.size.fixed.x-western", 14);
    pref("font.size.variable.zh-TW", 15);
    pref("font.size.fixed.zh-TW", 14);
    pref("font.size.variable.x-western", 14);
    pref("font.size.fixed.x-western", 14);
    pref("font.size.variable.zh-TW", 15);
    pref("font.size.fixed.zh-TW", 14);
    
  12. 預設等寬字 monospace,實際使用時不會等寬,故修改成 DejaVu Sans Mono。
    [dywang@dywH SOURCES]$ vim mozilla-esr24/modules/libpref/src/init/all.js
    [dywang@dywH SOURCES]$ egrep 'font.name.monospace.*(x\-western|zh\-TW)' \
    mozilla-esr24/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", "Source Code Pro");
    pref("font.name.monospace.zh-TW", "Source Code Pro");
    pref("font.name.monospace.x-western", "DejaVu Sans Mono");
    pref("font.name.monospace.zh-TW", "Droid Sans Mono");
    pref("font.name.monospace.x-western", "DejaVu Sans Mono");
    
  13. 重新打包壓縮 mozilla-esr24 目錄。
    [dywang@dywH SOURCES]$ tar jcvf firefox-24.2.0esr.source.tar.bz2 mozilla-esr24
    
  14. 重新建立 RPM 二進位檔,由於檔案是由不同的主機同步過來,因此出現群組權問題。
    [dywang@dywH SOURCES]$ rpmbuild -ba --clean --target=$(uname -m) ../SPECS/firefox.spec 
    Building target platforms: x86_64
    Building for target x86_64
    error: Bad owner/group: /home/dywang/rpmbuild/SOURCES/firefox-24.2.0esr.source.tar.bz2
    
  15. 查看檔案 uid gid 508 不屬於任何用戶。
    [dywang@dywH SOURCES]$ ll firefox*bz2
    -rw-rw-r--. 1 508 508 119863962 Apr  8 21:48 firefox-24.2.0esr.source.tar.bz2
    -rw-rw-r--. 1 508 508  25759295 Dec  6  2013 firefox-langpacks-24.2.0esr-20131206.tar.bz2
    
  16. 將 SOURCE 目錄下的所有檔案及次目錄,用戶及群組都改成 dywang。
    [dywang@dywH SOURCES]$ sudo chown dywang.dywang -R .
    
  17. 再重新建立 RPM 二進位檔,出現相依套件問題,不同的建立環境缺的套件不會相同,必須把缺的套件都安裝起來。
    [dywang@dywH SOURCES]$ rpmbuild -ba --clean --target=$(uname -m) ../SPECS/firefox.spec 
    Building target platforms: x86_64
    Building for target x86_64
    error: Failed build dependencies:
    	nasm is needed by firefox-24.2.0-1.el6.dyw.x86_64
    	hunspell-devel is needed by firefox-24.2.0-1.el6.dyw.x86_64
    	bzip2-devel is needed by firefox-24.2.0-1.el6.dyw.x86_64
    	libIDL-devel is needed by firefox-24.2.0-1.el6.dyw.x86_64
    	gnome-vfs2-devel is needed by firefox-24.2.0-1.el6.dyw.x86_64
    	libgnome-devel is needed by firefox-24.2.0-1.el6.dyw.x86_64
    	libgnomeui-devel is needed by firefox-24.2.0-1.el6.dyw.x86_64
    	startup-notification-devel is needed by firefox-24.2.0-1.el6.dyw.x86_64
    	libnotify-devel is needed by firefox-24.2.0-1.el6.dyw.x86_64
    	autoconf213 is needed by firefox-24.2.0-1.el6.dyw.x86_64
    
  18. 安裝 firefox 開發相依套件。
    [dywang@dywH SOURCES]$ sudo yum install nasm hunspell-devel bzip2-devel \
    libIDL-devel gnome-vfs2-devel libgnome-devel libgnomeui-devel \
    startup-notification-devel libnotify-devel autoconf213
    
  19. 同時建立 RPM 及 SRPM 二進位檔字,無法成功建立的訊息最後幾行如下,顯示函式 libgdk-x11-2.0.so 錯誤。
    checking for NSPR - version >= 4.10.2... no
    configure: error: your don't have NSPR installed or your version is too old
    
  20. 更新適合版本的 nspr 套件。
    [dywang@dywH Packages]$ yum upgrade nspr-* --nogpgcheck
    
  21. 再重新建立 RPM 二進位檔,出現以下錯誤訊息。
    [dywang@dywH SOURCES]$ rpmbuild -ba --clean --target=$(uname -m) ../SPECS/firefox.spec 
    ../../dist/bin/libxul.so: undefined reference to `SEC_PKCS7VerifyDetachedSignatureAtTime@NSS_3.15'
    collect2: ld returned 1 exit status
    make[6]: *** [plugin-container] Error 1
    .................
    RPM build errors:
        Bad exit status from /var/tmp/rpm-tmp.zCukuN (%build)
    

  22. firefox-24 已經將 libxul.so 納入,不需要再安裝套件 xulrunner。上述問題經查為目前安裝的 firefox-18,其相依套件 xulrunner-last 不相容。先不考慮其他套件相依問題,只移除 xulrunner-last 套件本身。
    [dywang@dywH ~]$ rpm -e  xulrunner-last --nodeps
    

  23. 再同時建立 RPM 及 SRPM 二進位檔字,firefox RPM 建立要 1 小時以上,要耐心等候。成功建立的訊息最後幾行,看到產生 firefox firefox-debuginfo 二個 RPM 檔及一個 firefox SRPM 檔。
    [dywang@dywH SOURCES]$ rpmbuild -ba --clean --target=$(uname -m) ../SPECS/firefox.spec
    ...................
    Wrote: /home/dywang/rpmbuild/SRPMS/firefox-24.2.0-1.el6.dyw.src.rpm
    Wrote: /home/dywang/rpmbuild/RPMS/x86_64/firefox-24.2.0-1.el6.dyw.x86_64.rpm
    Wrote: /home/dywang/rpmbuild/RPMS/x86_64/firefox-debuginfo-24.2.0-1.el6.dyw.x86_64.rpm
    Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.UXFrIf
    + umask 022
    + cd /home/dywang/rpmbuild/BUILD
    + cd firefox-24.2.0
    + /bin/rm -rf /home/dywang/rpmbuild/BUILDROOT/firefox-24.2.0-1.el6.dyw.x86_64
    + exit 0
    
  24. 複製到 repo 套件庫。
    [dywang@dywH SOURCES]$ sudo cp ../RPMS/x86_64/firefox-24* /var/ftp/pub/centos6/crtPackages
    
  25. 以 root 身份重新建立 repo 資料庫,repogroup.sh 為自行撰寫的腳本。
    [root@dywH Packages]$ repogroup.sh 
    [root@dywH Packages]# repogroup.sh 
    1854/1854 - 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
    
  26. 安裝 firefox。
    [dywang@dywH ~]$ sudo yum install firefox
    
  27. 查看 firefox-bin 執行檔,已變成連結檔。
    [dywang@dywH ~]$ sudo ls -l /usr/lib64/firefox/firefox*
    -rwxr-xr-x. 1 root root 98184 Apr 10 11:54 /usr/lib64/firefox/firefox
    lrwxrwxrwx. 1 root root     7 Apr 10 12:00 /usr/lib64/firefox/firefox-bin -> firefox
    -rwxr-xr-x. 1 root root 98184 Apr 10 11:54 /usr/lib64/firefox/firefox
    lrwxrwxrwx. 1 root root     7 Apr 10 12:00 /usr/lib64/firefox/firefox-bin -> firefox
    

  28. 安裝後第一次啟動 firefox,出現個人首頁,且預設字型大小及型式已符合個人期待。
    Image firefoxfirst