在 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_PROXY 或 HTTPS_PROXY 环境变量,这里给出一个示例,注意这个设置是临时的:
export HTTPS_PROXY=http://127.0.0.1:7890
需要编译的包
在 CutefishOS 的项目仓库列表,可以看到所有的软件包仓库,其中大部分都是需要我们编译的,这里列表如下:
- statusbar
- terminal
- updator
- fishui
- libcutefish
- screenshot
- screenlocker
- settings
- core
- launcher
- icons
- daemon
- filemanager
- kwin-plugins
- dock
- sddm-theme
- debinstaller
- texteditor
- appmotor
- qt-plugins
- gtk-themes
- cursor-themes
- calculator
- videoplayer
- calamares
- plymouth-theme
- wallpapers
他们的编译过程全部都是一样的,所以下面将以 core 为例。
准备必要的编译工具
对于 Debian ,需要安装 build-essential 和 devscripts 两个软件包:
$ 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://raw.githubusercontent.com/weilinfox/miscfiles/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 作为启动的桌面环境,直接登陆即可。
不出意外,你会得到如下图的桌面环境。

by SDUST weilinfox
在 Debian 和 Ubuntu 上安装 Cutefish 可爱鱼的更多相关文章
- 转载 :Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码
http://linux.cn/article-5015-1.html 问题:我需要为我的Debian或Ubuntu下载并安装完整树结构的内核源码以供编译一个定制的内核.那么在Debian或Ubunt ...
- Git学习系列之Debian或Ubuntu上安装Git详细步骤(图文详解)
前言 最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑.不过,慢慢地有人把它移植到了Windows上.现在,Git可以在Linux.Unix.Mac和Win ...
- 在Ubuntu上安装JDK、Ant、Jmeter和Jenkins
一.前期准备 1. 在win7下载VMware.Ubuntu(用迅雷下比较快) 2. 安装完VMware后新建虚拟机,选择iso: 3. 具体配置参考如下,至此Ubantu安装完成 二.在Ubuntu ...
- ubuntu上安装mysql 编译安装
为什么要折腾?首先说明的是ubuntu上安装mysql等软件是非常容易简单的,其简单的程度盖过windows上的安装,一句sudo apt-get install就可以搞定.如果想用最简便的方法安装m ...
- 在Ubuntu上安装Mono
在Ubuntu上安装Mono 执行以下代码授权注冊repo源并更新软件列表: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ...
- [异常解决] ubuntu上安装JLink驱动遇到的坑及给后来者的建议
一.前言 最近将整个电脑格式化,改成了linux操作系统 希望这样能让自己在一个新的世界探索技术.提升自己吧- win上的工具用多了,就不想变化了- 继上一篇<ubuntu上安装虚拟机遇到的问题 ...
- Ubuntu上安装Robomongo及添加到启动器
到目前为止,Robomongo仍是MongoDB最好的客户端管理工具,如需在Ubuntu上安装Robomongo,可直接从官网下载.tar.gz压缩包进行解压,然后直接运行bin目录下的robomon ...
- 在 Ubuntu 上安装 Android Studio
在 Ubuntu 上安装 Android Studio http://www.linuxidc.com/Linux/2013-05/84812.htm 打开terminal,输入以下命令 sudo a ...
- Ubuntu上安装Karma失败对策
在Ubuntu上安装Karma遇到超时 timeout 错误.Google了一下,国外的码农给了一个快捷的解决方案,实测可行,贴在这里: sudo apt-get install npm nodejs ...
随机推荐
- JVM学习十五 - (复习)类加载的时机、类加载过程、类加载器
一.类加载的时机 类的生命周期 类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括以下 7 个阶段: 加载 验证 准备 解析 初始化 使用 卸载 验证.准备.解析 3 个阶段统称为连接 ...
- 模仿UIApplication单例
要求:程序一启动就创建创建对象.创建的对象只能通过share的⽅方式获取对象.不能够进行alloc 操作,当执⾏行alloc时, 程序发生崩溃 1.程序一启动的时候就创建对象.当类被加载到内存的时候就 ...
- 快速搭建ELK7.5版本的日志分析系统--搭建篇
title: 快速搭建ELK7.5版本的日志分析系统--搭建篇 一.ELK安装部署 官网地址:https://www.elastic.co/cn/ 官网权威指南:https://www.elastic ...
- iOS中利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G) by徐文棋
前言: 在项目开发当中,往往需要利用网络.而用户的网络环境也需要我们开发者去注意,根据不同的网络状态作相应的优化,以提升用户体验. 但通常我们只会判断用户是在WIFI还是移动数据,而实际上,移动数据也 ...
- ACM-ICPC 2015辽宁省赛
省赛之于ACM 就是让省内的队伍互相比较而已~~~(何况弱省(本渣校 四个二等四个三等(其实是六个三道题 两个两道题,是院长后来和主办方沟通了下- - (本弱很水,但还是要吐槽:好水的省赛啊!!
- 快速搭建springboot工程
一.创建SpringBoot的三种方式 在线创建: https://start.spring.io 在IntelliJ IDEA中选择Spring Initializr创建:或者在Eclipse中选择 ...
- 第2章 selenium开发环境的搭建
前端技术: html:网页的基础,一种标记语言,显示数据: JS:前端脚本语言,解释型语言,在页面中添加交互行为 xml:扩展标记语言,用来传输和存储数据 css:层叠样式表,用来表现HTML或XML ...
- Note/Solution -「洛谷 P5158」「模板」多项式快速插值
\(\mathcal{Description}\) Link. 给定 \(n\) 个点 \((x_i,y_i)\),求一个不超过 \(n-1\) 次的多项式 \(f(x)\),使得 \(f(x ...
- suse 12 编译部署Keepalived + nginx 为 kube-apiserver 提供高可用
文章目录 编译部署nginx 下载nginx源码包 编译nginx 配置nginx.conf 配置nginx为systemctl管理 分发nginx二进制文件和配置文件 启动kube-nginx服务 ...
- Zookeeper应用之一:数据发布与订阅初体验
Zookeeper到底是什么?可以从Zookeeper提供的功能来理解.本篇小作文就是使用其提供的功能之一:数据发布与订阅. 需求:服务端开启多个实例提供服务,客户端使用服务.如果服务端某个服务下线或 ...