如何從源碼編譯 GNOME Shell 和應(yīng)用
這是一篇如何從源碼編譯 GNOME 的快速指南,包括 Shell、mutter 和一些原生應(yīng)用。
在編譯之前,你需要確保一些事情,因?yàn)橐韵戮幾g直接來(lái)自 Gitlab 的主分支,其中包含一些開(kāi)發(fā)包。
通常,你可以選擇在任何 Linux 發(fā)行版中編譯。但是我建議使用 Fedora Rawhide(Fedora 的開(kāi)發(fā)分支,用于將來(lái)的發(fā)布)。
另外,請(qǐng)勿在穩(wěn)定系統(tǒng)中嘗試此操作。因?yàn)椴僮骺赡艹鲥e(cuò),所以你可能最終得到損壞的系統(tǒng)。
總而言之,你需要以下內(nèi)容來(lái)從源碼編譯 GNOME。
- 測(cè)試環(huán)境(虛擬機(jī) 或測(cè)試系統(tǒng))。
- Fedora Rawhide 發(fā)行版(推薦,從此處下載)。
- 確保你的發(fā)行版是最新的。
- 你已登錄X.org 會(huì)話。
我不建議你在 Wayland 會(huì)話中進(jìn)行編譯,因?yàn)槟銜?huì)遇到問(wèn)題。
從源碼編譯 GNOME
GNOME 桌面是一個(gè)基于其功能的軟件包集合。Linux 發(fā)行版的桌面組件工作于窗口管理器和 shell 之下。
因此,對(duì)于 GNOME,我將首先編譯 mutter – 它是 GNOME Shell 的窗口管理器。然后進(jìn)行 GNOME Shell 的編譯。最后,我將編譯一些原生應(yīng)用。
我將使用 meson 構(gòu)建系統(tǒng)進(jìn)行編譯。meson 是一個(gè)漂亮的構(gòu)建系統(tǒng),快速且用戶(hù)友好。
編譯 mutter
打開(kāi)終端并安裝 GNOME Shell 和 mutter 所需的軟件包。
sudo dnf build-dep mutter gnome-shell
在主目錄(或你想要的任何地方)中創(chuàng)建演示目錄。
cd ~
mkdir demo
cd demo
從 Gitlab 克隆 mutter 的主分支。
git clone https://gitlab.gnome.org/GNOME/mutter
進(jìn)入克隆目錄,然后使用以下 meson 命令來(lái)準(zhǔn)備構(gòu)建文件。默認(rèn)情況下,meson 使用 /usr/local 用于構(gòu)建文件。但是,你也可以使用前綴開(kāi)關(guān)將輸出重定向到特定文件夾(如下所示)。
cd mutter
meson _build --prefix=/usr
Compile Mutter for GNOME
使用以下命令在構(gòu)建完成時(shí),將 mutter 安裝在到系統(tǒng)中。
sudo ninja install -C _build
編譯 GNOME Shell
GNOME Shell 和其他軟件包的編譯方法類(lèi)似。首先,從 GitLab 克隆 GNOME Shell 主倉(cāng)庫(kù),然后進(jìn)行編譯和安裝。你可以按照下面的命令依次進(jìn)行。
在 GNOME Shell 中,你需要兩個(gè)依賴(lài)項(xiàng)。它們是 asciidoc 和 sassc 。請(qǐng)?jiān)跇?gòu)建 GNOME Shell 之前安裝它們。
sudo dnf install asciidoc
sudo dnf install sassc
安裝完這些依賴(lài)項(xiàng)后,按照下面的命令來(lái)構(gòu)建和安裝 GNOME Shell。在運(yùn)行這個(gè)命令之前,請(qǐng)確保你回到 demo 文件夾(我在第一步創(chuàng)建的)。
git clone https://gitlab.gnome.org/GNOME/gnome-shellcd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build
運(yùn)行 GNOME Shell
編譯完成后,你可以嘗試重新啟動(dòng) GNOME Shell 來(lái)查看來(lái)自主分支的變化。
在重啟之前,正如我之前提到的,確保你處于 X.Org 會(huì)話中。按 ALT+F2 并輸入 r。然后按回車(chē)鍵。這個(gè)命令將重啟 GNOME Shell。
Restart GNOME Shell (X11)
恭喜你! 你已經(jīng)成功地編譯了 GNOME Shell 和 Mutter。
現(xiàn)在,是時(shí)候編譯一些 GNOME 原生應(yīng)用了。
編譯 GNOME 原生應(yīng)用
這些步驟對(duì)于 GNOME 或任何應(yīng)用的所有源碼都是一樣的。你需要改變倉(cāng)庫(kù)的名字。因此,這里有一些編譯必要的 GNOME 原生應(yīng)用的命令示例。
Files(Nautilus)
git clone https://gitlab.gnome.org/GNOME/nautilus/cd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build
GNOME 軟件商店
git clone https://gitlab.gnome.org/GNOME/gnome-software/cd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build
GNOME 控制中心
git clone https://gitlab.gnome.org/GNOME/gnome-control-center/cd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build
FAQ
- 使用上述步驟,你可以編譯任何源碼分支。不僅僅是 GNOME。
- GitLab 服務(wù)器有時(shí)很慢,克隆一個(gè)倉(cāng)庫(kù)可能需要較長(zhǎng)的時(shí)間。如果git clone 失敗,我建議你再試一次。
結(jié)束語(yǔ)
我希望這個(gè)小小的高級(jí)教程能夠幫助你在新的 GNOME 功能出現(xiàn)在 GNOME 每日構(gòu)建系統(tǒng)之前嘗試它。既然你編譯了,你也可以為測(cè)試新的 GNOME 功能做出貢獻(xiàn),并在 GitLab 問(wèn)題頁(yè)面上報(bào)告任何特定包的 bug 或問(wèn)題。