转投Linux发行版

目录

由于最近工作一直在使用ROS,因此也一直在用Ubuntu。之前为了稳定性使用的是Ubuntu 16.04 LTS,而这个版本默认的桌面环境是Unity,实在是不好使,它也颇为人诟病。后来尝试了Ubuntu 18.04 LTS安装ROS Melodic,发现ROS也挺稳定的,因此18.04也用了一段时间,但是最后还是觉得不太爽,于是最终还是决定好好体验一下各种Linux选一个自己顺手的。

这篇博客里不会贴系统的截图,因为这些在网上都可以找到,而且桌面的好看与否很大程度上取决于个人的喜好和配置结果。最好的比较方法还是自己装一个系统尝试一下

至于如何尝试linux,我在Windows中使用的是Hyper-V。可以非常方便地安装各种镜像,动态分配资源,最方便的是vhdx硬盘格式可以直接mount到宿主机里。Hyper-V使用一些性能较差的Linux桌面环境时会比较卡,这个时候可以开启RemoteFX GPU(参考官方说明)。注意在Win10 1809之后,Hyper-V管理器界面不提供RemoteFX的开关了,需要用Powershell命令手动开启。

Linux Distro

所谓的Linux发行版,对应的是一个专有的英文单词distro。个人理解,Linux Distro就是一套Linux Kernel加上外围一些必要的软件包。之前我一直不理解发行版的意思,直到学会了Python使用上Anaconda之后,才知道发行版指的就是核心程序+预装的全家桶,这个全家桶通常包含包管理器(Package manager,简称PM。如Ubuntu的apt、Anaconda的conda)、内置软件(如Linux桌面环境、Anaconda预装的Scipy)以及一套系统逻辑。

Linux发行版中很重要的一点便是系统的PM,这个管理器还决定了系统的更新逻辑。而不同发行版之间最大的区别,在我看来就是PM(以及软件仓库repository),因此PM的特性与相性最终会决定我是否选择这套发行版。

常见的桌面Linux发行版有如下这些,我可以大概描述一下他们的特点(以PM为线索):

  • apt: Debian、Ubuntu系
    • 依赖树严格,能保证软件之间正确的依赖关系
    • Debian和Ubuntu的软件库数量庞大,但是确实由于保守的包更新政策,它们的包比较老
    • apt的命令行使用非常直观
    • 在国内,默认的仓库源下载很慢,但是国内有很多开源镜像可以使用
  • pacman: Arch
    • 滚动更新是Arch最大的特点
    • pacman没有严格的依赖树,而是类似于快照的概念,更新软件时整个软件池都会进行变动(个人理解)
    • pacman命令行参数是字母表,不便于记忆
    • Arch的官方软件仓库中软件较少,但是Arch有庞大的AUR体系,因此能够尝试到很多小软件和新版本,不过也要承担小白鼠的风险
  • yum/dnf: Fedora、CentOS、Redhat等
    • 使用方法和apt相似
    • 软件仓库中的数量没有Debian和Arch多
    • 包管理方便,中规中据,而且下载速度不慢
  • zypper: OpenSUSE
    • 由于OpenSUSE是真的比较小众,因此我也没有去尝试,就不妄自评论了
  • emerge: Gentoo
    • 同上,没尝试过 严格来说,上面的这些都是包分发器,而安装软件的是包安装器(dpkg,rpm等),不过前者才是我们最经常打交道的。关于这些PM以及其软件管理哲学的分析,可以参见这个知乎问题。而关于这些包管理器的一篇介绍可以参见这篇博文

Arch Linux的wiki上也有一篇关于发行版之间的对比,这里我要吹一下Arch的wiki真的良心,还有中文版! DistroWatch是一个收集了大量Linux distro的网站,可以在上面看一下流行度排名和一些评测 Linux各发行版的演化历史可以参见Wiki的历史图或者DistroWatch的图表

桌面环境

桌面环境是最终选择哪一个发行版的决定者。选择Ubuntu、Arch等只能给你决定好大方向,而最后在众多系统中作出选择的标准之一便是桌面环境。常见的桌面环境有Gnome、KDE Plasma、XFCE、LXQt等。现在众多的发行版的主要区别其实也就是PM和桌面环境的区别:

  • Ubuntu 16.04: Ubuntu + Unity
  • Ubuntu 18.04: Ubuntu + Gnome
  • KUbuntu: Ubuntu + KDE
  • XUbuntu: Ubuntu + XFCE
  • MX Linux: Debian + XFCE
  • Linux Mint: Ubuntu + Cinammon/Gnome
  • Manjaro: Arch + KDE
  • Deepin: Debian + Deepin

而这些桌面环境的特点,个人感觉如下:

  • Gnome(w/ gdm): 基于GTK开发,默认界面比较好看,但是灵活程度不够。虽然有Gnome Tweak,但是插件很少
  • KDE Plasma(w/ sddm): 基于QT开发,非常灵活,而且Plasma5默认就非常好看!占用资源也比Gnome小。
  • Unity(w/ lightdm): 别说了,换吧
  • Xfce: 听人说很不错,但是我认为比较丑
  • LXQt(w/ sddm): 适合低配环境,也不太好看

个人选择

Arch?: 在我了解Linux distro的过程中,在各种论坛、知乎问题上都有人安利Arch linux。Arch虽好,而且可以体验更新的快感,但是我本身没有太多的时间去折腾系统,或者追寻潮流,因此还是更倾向于Debian体系。同时由于我有使用ROS的需求,因此Ubuntu还是我的第一选择。

商业主导 or 社区主导: 有人说Ubuntu由于是Canonical家的产品,会有商业倾向,服从公司利益。这个情况确实存在,但是就体验上来说和Arch、Fedora等等社区主导的系统并没有太多区别,因此这个并不会是决定我选择的因素。

Gnome or KDE: 相比于GTK,我更喜欢Qt这套框架。另外KDE也有别人上传的很多插件和桌面(在KDE store上),非常棒,因此我最后选择的是KDE~

综上所述,我最后决定使用KDE Neon作为平常使用的发行版,双系统安装Ubuntu 18.04作为开发系统。之后会写一篇博客来介绍KDE的折腾记录~

使用 Hugo 构建
主题 StackedJimmy 设计,Jacob 修改