在 Debian 和 Ubuntu 上安裝 Cutefish 可愛魚


  • 版權聲明:原創文章,未經博主允許不得轉載

CutefishOS 是一個可愛好看的新 Linux 發行版,當前最新版本為 0.8beta 。這是一個基於 Debian 的發行版,從其鏡像源配置就可以明顯地看出來。它和 Debian 的關系看起來就像 Linux Mint 和 Ubuntu 的關系。

為啥要寫這一篇呢,因為 CutefishOS 雖然基於 Debian ,但是只提供 AMD64 體系結構的官方支持。如果你的設備恰好不是 x86 的(比如 ARM 或 MIPS),那么你不能使用 CutefishOS 來體驗 Cutefish 桌面環境;反之如果你恰好使用 AMD64 體系結構的 Debian bullseye ,那么你可以心安理得地使用 CutefishOS 的軟件源,這在后面會再次提到。

CutefishOS 官方在其 github 項目的所有倉庫里都提供了構建 deb 包所需的配置文件,我們可以輕松地使用 dpkg-buildpackage 來構建其二進制軟件包。

我在 Debian11 bullseye 和 Ubuntu 21.10 及以上進行了測試,都是可以正常編譯通過的;在 Debian10 和 Ubuntu20.04 都出現了一些問題,主要是 Qt 版本太低導致的。在 Debian11 上, mips64el (龍芯)和 aarch64 (樹莓派)也都是好的。另外在 Loongarch64 上,你可以選擇在 Loongnix20 上編譯,雖然並沒有測試過(沒有設備);至於 mips64el 的 Loongnix20 ,已經測試過 Qt 版本過低(和 Debian10 的情況一致)。

由於這是一個非常年輕的桌面環境,只完成了最基本的桌面功能,對於一些復雜的配置並不支持,所以暫時只建議嘗鮮,不太建議日常使用(不過你也可以在每次倉庫出現新的 commit 時重新構建追新)。

使用官方源安裝

如果你恰好使用 AMD64 體系結構的 Debian bullseye ,那么官方源是可以使用的。

這個部分並沒有被充分測試(並沒有可供測試的機器),特別是在 bullseye 以上版本中,所以只作為一個可行的思路。

添加鏡像源和密鑰

只需要將其添加到你的 /etc/apt/sources.list 中:

deb http://packages.cutefishos.com bullseye main

然后添加 cutefishos 的 gpg key 即可,這里給出鏈接: http://packages.cutefishos.com/key/cutefishos.gpg.key

更新包緩存並安裝

$ sudo apt-get update
$ sudo apt-get install cutefish

源碼編譯安裝

正篇開始,這里默認你會使用 git 和 apt 包管理器。

配置網絡

如果你的網絡狀態不佳,那么可能需要借助一些工具。在瀏覽器,你可以通過 SwitchyOmega 來管理你的網絡連接;而對於 git ,你可以考慮設置 HTTP_PROXYHTTPS_PROXY 環境變量,這里給出一個示例,注意這個設置是臨時的:

export HTTPS_PROXY=http://127.0.0.1:7890

需要編譯的包

在 CutefishOS 的項目倉庫列表,可以看到所有的軟件包倉庫,其中大部分都是需要我們編譯的,這里列表如下:

他們的編譯過程全部都是一樣的,所以下面將以 core 為例。

准備必要的編譯工具

對於 Debian ,需要安裝 build-essentialdevscripts 兩個軟件包:

$ sudo apt-get install build-essential devscripts

對於 Ubuntu ,除了上面的兩個包,還需要安裝 equivs

$ sudo apt-get install equivs

build-essential

在 Debian 和 Ubuntu 上,該包包含了 libc6-dev 、 gcc 、 g++ 、 make 、 dpkg-dev 等編譯 deb 包所必須的軟件包。不過不包含 cmake 、 pkg-config 等同樣常用的工具。

devscripts

正如其包名所示的,它包含了一些用於輔助進行軟件包構建的腳本。之后需要用到的 mk-build-deps 命令就出自該軟件包。

mk-build-deps 是一個輔助安裝編譯依賴的腳本,它讀取 debian/control 並安裝其中列出的編譯依賴。它並不會直接安裝這些依賴包,因為直接安裝會導致它們被標記為手動安裝,編譯完成以后無法方便地卸載(畢竟只在編譯時需要,軟件包運行時大概率不需要它們),而是生成一個引用這些編譯依賴包的名為 *-build-deps 空軟件包並安裝。這樣做的結果是所有編譯依賴包被標記為自動安裝,只要卸載這個 *-build-deps ,其他軟件包通過 apt-get autoremove 就可以方便地卸載,還給我們一個干凈的系統環境。

equivs

在 Debian 下,這個軟件包被 devscripts 依賴,但是清楚為啥, Ubuntu 的 devscripts 並沒有依賴這個包並導致了后面的工作出錯,所以我們只好手動安裝之。

以 core 為例

以 core 為例,編譯 deb 包,其他包的過程與此相同。

克隆軟件倉庫

我們克隆該倉庫, --depth=1 的作用是只克隆最近一次 commit ,這樣需要拉取的數據不會過多。克隆完成后進入到克隆的目錄,此時目錄名為 core

$ git clone --depth=1 https://github.com/cutefishos/core.git
$ cd core

安裝編譯依賴包

通過前面介紹過的 mk-build-deps 來完成依賴包的安裝。 --install 選項的涵義是生成軟件包后安裝, --remove 的涵義是安裝軟件包后自動卸載, --root-cmd sudo 的涵義是提權使用 sudo 命令。但是不知道是不是我理解錯了(但是 man 是這么寫的呀),安裝生成的軟件包后並沒有自動卸載,需要手動卸載 *-build-deps

$ mk-build-deps --install --remove --root-cmd sudo

編譯軟件包

使用 dpkg-buildpackage 來自動編譯和構建, -b 的涵義是只生成二進制包:

$ dpkg-buildpackage -b -uc -us

如果出現了奇怪的編譯錯誤,可以試着關閉多線程:

$ dpkg-buildpackage -b -uc -us -J1

之前出現了奇怪的鏈接錯誤,在 Debian11 穩定復現,不知道原理,也不知道為啥關閉多線程就正常了。 Debian sid 沒發現報這個錯。

在構建完成后,你應該在上級目錄看到多出來類似如下的四個文件,將文件名中的 mips64el 替換成你自己的體系結構如 amd64 或 arm64 應該就是你得到的文件的名稱:

  • cutefish-core_0.8_mips64el.deb
  • cutefish-core-dbgsym_0.8_mips64el.deb
  • cutefish-core_0.8_mips64el.changes
  • cutefish-core_0.8_mips64el.buildinfo

其中 cutefish-core_0.8_mips64el.deb 是你需要的軟件包, cutefish-core-dbgsym_0.8_mips64el.deb 是軟件包的 debug symbol ,另外兩個可以忽略。我們通常只需要保留第一個即可,其他東西包括克隆下來的代碼都可以刪除了。

卸載編譯依賴

對於編譯 core ,你可以通過下面的命令來卸載編譯依賴:

$ sudo apt-get remove cutefish-core-build-deps
$ sudo apt-get autoremove

如果你編譯了所有軟件包,希望卸載全部依賴,首先參考下面的命令搜索所有 mk-build-deps 生成的軟件包名:

$ apt-cache search --names-only "^.*?-build-deps$"

檢查確認包名后卸載他們:

$ sudo apt-get remove <package_name>
$ sudo apt-get autoremove

安裝軟件包

由於你不清楚他們之間的依賴關系,我不推薦你逐個安裝他們,所以將所有生成的軟件包一起安裝:

$ sudo apt-get install ./xxx1.deb ./xxx2.deb ./xxx3.deb ...

或者將他們放到一個目錄中然后一起安裝:

$ sudo apt-get install ./*.deb

注意如果安裝 cutefish-sddm-theme 時提示配置文件是選擇打包者提供的版本還是已經存在的版本時,請選擇打包者提供的版本,這樣你的 sddm 會被設置成 Cutefish 的主題。

自動化的編譯腳本

我為了方便自己使用,編寫了自動化的編譯腳本。這個相對比較自動化,會從 github 逐個拉取需要構建的倉庫並構建軟件包,構建完成后記錄已經編譯的包並清理工作區。因此,如果編譯出現錯誤,你可以解決錯誤后重新運行腳本,腳本會從上次出錯的軟件包開始繼續構建。對於需要單線程構建的情況,也有 --noparallel 選項實現,具體可以查看腳本的源碼:

https://github.com/weilinfox/miscfiles/blob/master/build_script/cutefish_desktop.sh

使用方法:

$ mkdir cutefish
$ cd cutefish
$ wget https://github.com/weilinfox/miscfiles/raw/master/build_script/cutefish_desktop.sh
$ chmod +x cutefish_desktop.sh
$ ./cutefish_desktop.sh

默認多線程以加快編譯速度,如果需要以單線程的方式:

$ ./cutefish_desktop.sh --noparallel

全部構建完成后,可以在 debs 目錄中找到構建的軟件包。

注意這個腳本並不會幫你安裝這些軟件包和卸載編譯依賴,請參考上面一節中的“卸載編譯依賴”和“安裝軟件包”手動操作。

Loongnix20 for loongarch64 的特別說明

在腳本的第 124 行有一行注釋:# package on Loongnix is too old to build cutefish 。但如果你恰好是 loongarch64 版本的 Loongnix20 ,興許你可以嘗試一下編譯。請取消第 125-127 行的注釋(去除行首的 #),然后運行腳本。

從 Cutefish 啟動

Cutefish 建議從 SDDM 啟動。在 SDDM 的啟動界面,選擇 Cutefish 作為啟動的桌面環境,直接登陸即可。

不出意外,你會得到如下圖的桌面環境。

Cutefish

by SDUST weilinfox


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM