擁抱 IceCat:放棄 Firefox

icecat-logo-1




我想要的,是原子筆

隨處可見,普通不過

能在支票上留下簽名

能告訴女朋友我愛妳

掉在地上也沒人想撿

不會預判我要寫什麼

價格約十元的原子筆




《反.到處都是人工智慧.宣言》



前言

雖然 Firefox 曾經是流浪貓的主力瀏覽器,也是我在大學時用來向其他同學傳教、替代 IE6 那種數位垃圾的好東西。即便當時對它有不少批評 (如:逐漸臃腫肥大、預設安裝 Pocket 等),不過這傢伙是開源社群中最大、使用者較多與資源最豐沛的瀏覽器。因此就算有諸多不滿,它仍然是值得推廣的軟體。


而壓垮浪貓的最後一根貓草,是近期 Mozilla 基金會的 CEO 不但開除將近六十名員工、關閉先前建立的 Mozilla Social 聯邦宇宙伺服器,更決定縮減多項專案、把資源聚焦在人工智慧和手機應用程式等這類有機會成功的領域。


可想像的未來,Firefox 將會淪落為人工智慧垃圾習禁評

與市場上其他瀏覽器別無二致



你又在通靈什麼了

看似雞毛蒜皮的小事,背後往往隱藏著巨大含意。這些行徑不但代表 Mozilla 將朝更加封閉、商業化的路線發展,且一旦它毫無節制地朝利益導向邁進,那就必定會為了獲利不擇手段。


例如 Google 從推翻舊時代霸主 (AIO, Yahoo) 的小清新,轉變成攝護腺肥大阿伯的歷程,以及科技巨擘對使用者人權、資安和個人隱私的侵犯,這一切的一切切,都是讓我決定 DeGoogle 的原因。


DeGoogle:從 Proton Mail 開始的去 Google 化生活

DeGoogle 系列文


很多人認為,我們應該將軟體、公司與開發者分開評估。但就跟流浪貓反覆在虛擬偶像通靈文提到的概念一樣:


「對事不對人」是一廂情願的天真幻想

「對事又對人」才是可長可久之計


軟體是由人類所建構出來的工具,主導者的想法也決定了軟體的走向。當然,作為以瀏覽器起家的 Mozilla 基金會,人家也是要吃飯洗澡睡覺付員工薪水。雖然 Google 付了不少錢給 Firefox 買下搜尋欄預設的搜尋引擎位置,但僅靠企業或支持者捐獻,往往無法穩定維持營運。


更別說 Google 的這種做法,根本就是將 Firefox 培育成可控制的側翼,創造出 Chrome 和 Firefox 有在競爭的假象,其實是自己的左手打右手。


因此火狐走上商業化的道路,完全不令人意外。當基金會的掌舵者決定營利導向的路線,那他們就勢必會為了錢做出更多妥協。


例如資安、隱私和人權


廢話這麼多,如果你也很在意這個事件背後的含意,那作為不會寫 Code 的一般使用者,該如何在這詭譎多變的網路世界優雅地生存下去?


改採其他 Gecko 核心的瀏覽器,應該是不錯的方法

例如 GNU IceCat



簡述 IceCat

雖然流浪貓先前有撰文介紹隱私強化版的 Firefox,例如 LibreFox 和 LibreWolf。但如果一開始就能買到不會漏水的桶子,為什麼要執意去買個千瘡百孔的水桶,然後回家用膠布修補破洞?


即便 Firefox 在官網強調自己有多注重隱私,但那是相對於 Chrome 而言的程度。因為網路各方高手早已證實,Firefox 其實也會偷偷把你的資料傳遞給官方和其他合作者,更別說許多設定都要使用者自己主動取消勾選,否則它預設是會將使用者資料分享給第三方合作廠商。


然而,市面上基於 Gecko 核心的類 Firefox 瀏覽器那麼多,主打隱私和保護使用者個資的更不在少數,為什麼流浪貓偏偏要挑冰貓?絕對不是因為同為貓科動物的關係


簡單來說:想做、會做和能做,完全三碼子的事情


拯救世界、改變成真,是每個明星藝人和政客朗朗上口的空泛屁話。然目前看來看去,GNU 與自由軟體基金會 (FSF) 或許是少數幾個真的能做到捍衛自由和保護使用者隱私的組織。


另一方面,打狗要看主人

選瀏覽器,要看背後的團隊


而 IceCat 與 Firefox 系出同源,是 GNU 版本的 Firefox 瀏覽器。兩者最大的差異在於 IceCat 移除了火狐的版權商標、專利和非自由軟體的程式碼,且內建多種保護隱私的套件 (如 LibreJS, Fingerprinting countermeasures, JShelter)、不會偷偷傳送使用者資料給 Mozilla 官方伺服器,預設更不會傳送當機報告。


即便你把 IceCat 內建的擴充套件全移除,這傢伙還是比 Firefox 更注重你的個人隱私。


且因為採用相同核心的關係,擴充套件不但通用,它背後有 GNU 和自由軟體基金會撐腰,故短時間內應該不至於被放棄才對。


https://www.gnu.org/software/gnuzilla/

https://en.wikipedia.org/wiki/GNU_IceCat

https://libreplanet.org/wiki/Group:IceCat/



安裝 IceCat 的方法

部份 Linux 發行板的軟體管理中心應該有 Icecat 的安裝檔,但如果你的發行版沒有提供,可以透過以下幾種方法取得冰貓瀏覽器。


用 GNU Guix 進行安裝

現代許多 Linux 發行版都有提供 Guix ,也就是 GNU 系統的軟體套件管理程式,因此用它來安裝 Icecat 應該是最方便的模式。但這個方法實在過於簡單、不符合流浪貓自找麻煩的人設,因此你各位自行參考即可。


GNUzilla and IceCat:

The IceCat project does not currently distribute binaries, but the GNU Guix package manager can be used to install IceCat on GNU/Linux systems based on 64-bit AMD/Intel processors.

Guix can also be used to build IceCat source tarballs that are suitable for building IceCat natively for other operating systems.

https://www.gnu.org/software/gnuzilla


# 更新 guix 的版本 
$ guix pull

# 更新所有套件版本狀態 (刷新)
$ guix refresh

# 指定更新特定軟體版本
$ guix refresh -u icecat

# 搜尋 icecat 最新的版本
$ guix search icecat
> name: icecat
> version: 115.16.0-guix1

# 安裝 icecat
$ guix install icecat@115.16.0-guix1

# 將 Icecat 打包成二進位執行檔
$ guix pack icecat
> /gnu/store/…-pack.tar.gz

$ guix package -i icecat
$ guix gc
  


官方提供的二進位執行檔 (Binary file)

由於 GNU 在 2019 年 6 月 2 日後便不再提供已編譯完成的執行檔,因此如果你不在意版本老舊的問題,可以直接到官方的伺服器下載。


https://ftp.gnu.org/gnu/gnuzilla/

https://ftp.gnu.org/gnu/gnuzilla/60.7.0/icecat-60.7.0.en-US.gnulinux-x86_64.tar.bz2

https://ftp.gnu.org/gnu/gnuzilla/60.7.0/icecat-60.7.0-gnu1.tar.bz2



OpenSUSE 志願者提供的版本

這個應該是使用者自行編譯並上傳至 OpenSUSE 的版本,進入頁面後直接抓取二進位套件即可。


https://build.opensuse.org/package/show/home:losuler:icecat/icecat

https://ftp.lysator.liu.se/pub/opensuse/repositories/home%3A/losuler%3A/icecat/Debian_11/amd64/icecat_102.14.0-1_amd64.deb



硬派作風:自己的瀏覽器自己編譯!

奉勸各位,如果你沒有相關經驗、亦沒有空閒的話,真的不要浪費時間自己編譯 (Complie) 軟體。因為過程不但繁複難解,光是除錯、解決環境軟體相依性,就足以浪費掉你人生美好的時光。


流浪貓因為喜歡自找麻煩,所以才會玩到這步。你各位的人生還有救,但我沒有。就像我的某位前輩所述:


「你的人生一定出了什麼問題,才會想手動編譯軟體」


玩笑歸玩笑,如果想要獲得最新版的程式,而官方也沒有提供已編譯完成的版本,那自行編譯就是最不得已的手段了。


本段的流程主要參考自這位高手的文章,但每個人的系統、環境和軟體相依性概況都不同,因此真的只能作為參考使用。


第一步,進入 Gnuzilla 官方資源庫,下載最新的 gnuzilla-115.16.0-gnu1.tar.gz 原始碼。


第二步,將其解壓縮至你想放置的位置。


第三步,安裝編譯所需的軟體和環境。

$ sudo apt install git gpg mercurial rename python3-jsonschema clang pkg-config libasound2-dev libpulse-dev curl cbindgen nodejs libpango1.0-dev unzip libxtst-dev libxdamage-dev libxcursor-dev libxcomposite-dev libxrandr-dev libx11-dev libxcb1-dev libx11-xcb-dev nasm libgtk-3-dev libdbus-glib-1-dev make m4
$ curl -sSf https://sh.rustup.rs | sh


第四步,進入 gnuzilla-115.16.0-gnu1.tar.gz 解壓縮後的資料夾內,執行 makeicecat 這個腳本。

cd gnuzilla-115.16.0-gnu1
  
./makeicecat


第五步,進入 output 目錄,來到 icecat-115.16.0 資料夾,建立一個用來放置編譯資料的目錄 objdir,接著用 configure 指令開始編譯。

cd output/icecat-115.16.0

mkdir objdir

cd objdir

../configure --without-wasm-sandboxed-libraries --with-l10n-base=../l10n


第六步,make。注意,make install 是用來將 icecat 裝入系統的指令,可能需要搭配 sudo 才能執行。而如果你跟流浪貓一樣,只是想建立一個能帶著跑的隨身版瀏覽器,那僅須做到 make 即可。

make && make install


故障排除

如果你前世有燒好香、祖上有積德,那編譯過程應該不會出什麼問題,頂多很花時間、相當耗費系統資源,且還會產生 10.0 GB 左右的檔案。


但如果你跟流浪貓一樣倒楣、出師不利,那碰上問題應該也不是什麼令人驚訝的事情,反正就是見招拆招了。


錯誤訊息:
ICECAT The libstdc++ in use is not new enough.  Please run ./mach bootstrap to update your compiler, or update your system libstdc++ installation.

解法:
sudo apt install libstdc++-12-dev
錯誤訊息:
ERROR: cbindgen version 0.20.0 is too old. At least version 0.24.3 is required.

Please update using 'cargo install cbindgen --force' or running
'./mach bootstrap', after removing the existing executable located at
/usr/bin/cbindgen.

解法:
http://ftp.de.debian.org/debian/pool/main/r/rust-cbindgen/cbindgen_0.24.3-2~deb11u1_amd64.deb
錯誤訊息:
checking for nodejs... no
ERROR: could not find Node.js executable later than 12.22.12; ensure `node` or `nodejs` is in PATH or set NODEJS in environment to point to an executable.

    Executing `mach bootstrap --no-system-changes` should
    install a compatible version in ~/.mozbuild on most platforms.
    If you believe this is a bug, <https://mzl.la/2vLbXAv> is a good way
    to file.  More details: <https://bit.ly/2BbyD1E>
    


解法:
安裝最新版的 node.js

https://nodejs.org/zh-cn/download/package-manager

# installs nvm (Node Version Manager)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash

# download and install Node.js (you may need to restart the terminal)
nvm install 20

# verifies the right Node.js version is in the environment
node -v # should print `v20.17.0`

# verifies the right npm version is in the environment
npm -v # should print `10.8.2`

重啟終端機
錯誤訊息:
checking the wasm C compiler can find wasi headers... 
DEBUG: Creating `/tmp/conftest.9cq684ja.c` with content:
DEBUG: | #include <string.h>
DEBUG: | int
DEBUG: | main(void)
DEBUG: | {
DEBUG: | 
DEBUG: |   ;
DEBUG: |   return 0;
DEBUG: | }
DEBUG: Executing: `/usr/bin/clang -std=gnu99 --target=wasm32-wasi /tmp/conftest.9cq684ja.c -c`
DEBUG: The command returned non-zero exit status 1.
DEBUG: Its error output was:
DEBUG: | /tmp/conftest.9cq684ja.c:1:10: fatal error: 'string.h' file not found
DEBUG: | #include <string.h>
DEBUG: |          ^~~~~~~~~~
DEBUG: | 1 error generated.
ERROR: Cannot find wasi headers or problem with the wasm compiler. Please fix the problem. Or build with --without-wasm-sandboxed-libraries.

解法:
$ ../configure --without-wasm-sandboxed-libraries --with-l10n-base=../l10n


編譯完成後,即可在下面這個路徑找到冰貓瀏覽器。

/output/icecat-115.16.0/objdir/dist/icecat

執行
./icecat


你也能到下面這個資料夾,用 make 打包完整的冰貓 tarball,完成後會自動歸檔到 dist 資料夾內。


cd ./objdir/browser/installer
make

./objdir/dist/icecat-115.16.0.en-US.linux-x86_64.tar.bz2



ヽ(✿゚▽゚)ノ



結語

如果說 icecat 有什麼缺點,那大概就是預設隱私設定過於嚴苛以及 js 封鎖太多,導致使用者幾乎無法正常瀏覽一般的社群媒體和影音網站。不過這倒也不是問題,反正就是調整擴充套件,依據自己使用偏好進行修正即可。


當然,你也可以將下載或編譯完成的冰貓,用這篇自製免安裝 Firefox Portable 的教學,把它包成能將個人資料帶著走的隨身瀏覽器。最後,流浪貓再次提醒各位:




珍惜人生、遠離編譯





後紀:好奇心會害流浪貓失眠

雖然成功在 Linux 系統上編譯了最新版的 Icecat,但昨晚仍被一個小問題困擾到輾轉難眠:「用 Guix 安裝會比較快嗎?」


既然睡不著,反正明天也是颱風假,不如就起床試試看


長話短說,用 Guix 安裝冰貓的確比較方便,因為它會幫你解決軟體相依性和環境的問題。但近代的 Gnu Icecat 不提供二進位執行檔,故它是下載冰貓原始碼之後,在你的系統內進行編譯。


因此安裝過程會花上不少時間、消耗大量系統資源和硬碟空間,且如果系統目錄 (/) 的空間不夠,可能會跳出編譯錯誤的訊息。


guix 'install' phasenote: build failure may have been caused by lack of free disk space



另一方面,GNU 可能因為比較小眾、伺服器頻寬不足的關係,造成更新 Guix 套件版本的速度相當緩慢。前幾天 GNU 網站和伺服器甚至都還出現 404 的錯誤,害我以為他們跑路了呢。


但無論如何,不管你是偏好 Gnu FTP 伺服器提供的舊版、OpenSUSE 熱情網友贊助版、Guix 安裝版或自己下載原始碼編譯的硬派作風,流浪貓至少證明了任何人都可以從不同管道,獲得最純正的官方版冰貓瀏覽器。


最後,感謝 GNU 與自由軟體基金會多年的努力,讓我學到了這麼好玩且有用的軟體。






延伸閱讀

Gnu Icecat 官方的推薦擴充套件

Fedora 提供的 Icecat

Guix 的 Icecat 介紹頁

更多 Firefox 相關文章

更多 Vivaldi 相關文章

更多 Chrome 相關文章

更多 DeGoogle 相關介紹





留言

這個網誌中的熱門文章

寶鐘瑪琳中之人前世照片、年齡分析