如何從源碼編譯 GNOME Shell 和應用
這是一篇如何從源碼編譯 GNOME 的快速指南,包括 Shell、mutter 和一些原生應用。
在編譯之前,你需要確保一些事情,因為以下編譯直接來自 Gitlab 的主分支,其中包含一些開發包。
通常,你可以選擇在任何 Linux 發行版中編譯。但是我建議使用 Fedora Rawhide(Fedora 的開發分支,用于將來的發布)。
另外,請勿在穩定系統中嘗試此操作。因為操作可能出錯,所以你可能最終得到損壞的系統。
總而言之,你需要以下內容來從源碼編譯 GNOME。
- 測試環境(虛擬機 或測試系統)。
- Fedora Rawhide 發行版(推薦,從此處下載)。
- 確保你的發行版是最新的。
- 你已登錄X.org 會話。
我不建議你在 Wayland 會話中進行編譯,因為你會遇到問題。
從源碼編譯 GNOME
GNOME 桌面是一個基于其功能的軟件包集合。Linux 發行版的桌面組件工作于窗口管理器和 shell 之下。
因此,對于 GNOME,我將首先編譯 mutter – 它是 GNOME Shell 的窗口管理器。然后進行 GNOME Shell 的編譯。最后,我將編譯一些原生應用。
我將使用 meson 構建系統進行編譯。meson 是一個漂亮的構建系統,快速且用戶友好。
編譯 mutter
打開終端并安裝 GNOME Shell 和 mutter 所需的軟件包。
sudo dnf build-dep mutter gnome-shell
在主目錄(或你想要的任何地方)中創建演示目錄。
cd ~
mkdir demo
cd demo
從 Gitlab 克隆 mutter 的主分支。
git clone https://gitlab.gnome.org/GNOME/mutter
進入克隆目錄,然后使用以下 meson 命令來準備構建文件。默認情況下,meson 使用 /usr/local 用于構建文件。但是,你也可以使用前綴開關將輸出重定向到特定文件夾(如下所示)。
cd mutter
meson _build --prefix=/usr
Compile Mutter for GNOME
使用以下命令在構建完成時,將 mutter 安裝在到系統中。
sudo ninja install -C _build
編譯 GNOME Shell
GNOME Shell 和其他軟件包的編譯方法類似。首先,從 GitLab 克隆 GNOME Shell 主倉庫,然后進行編譯和安裝。你可以按照下面的命令依次進行。
在 GNOME Shell 中,你需要兩個依賴項。它們是 asciidoc 和 sassc 。請在構建 GNOME Shell 之前安裝它們。
sudo dnf install asciidoc
sudo dnf install sassc
安裝完這些依賴項后,按照下面的命令來構建和安裝 GNOME Shell。在運行這個命令之前,請確保你回到 demo 文件夾(我在第一步創建的)。
git clone https://gitlab.gnome.org/GNOME/gnome-shellcd gnome-shellmeson _build --prefix=/usrsudo ninja install -C _build
運行 GNOME Shell
編譯完成后,你可以嘗試重新啟動 GNOME Shell 來查看來自主分支的變化。
在重啟之前,正如我之前提到的,確保你處于 X.Org 會話中。按 ALT+F2 并輸入 r。然后按回車鍵。這個命令將重啟 GNOME Shell。
Restart GNOME Shell (X11)
恭喜你! 你已經成功地編譯了 GNOME Shell 和 Mutter。
現在,是時候編譯一些 GNOME 原生應用了。
編譯 GNOME 原生應用
這些步驟對于 GNOME 或任何應用的所有源碼都是一樣的。你需要改變倉庫的名字。因此,這里有一些編譯必要的 GNOME 原生應用的命令示例。
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 服務器有時很慢,克隆一個倉庫可能需要較長的時間。如果git clone 失敗,我建議你再試一次。
結束語
我希望這個小小的高級教程能夠幫助你在新的 GNOME 功能出現在 GNOME 每日構建系統之前嘗試它。既然你編譯了,你也可以為測試新的 GNOME 功能做出貢獻,并在 GitLab 問題頁面上報告任何特定包的 bug 或問題。