Linux苦痛之路(三):漫谈+Arch Linux软件配置选择
2023-02-10 11:15:49

Linux苦痛之路(三):漫谈+Arch Linux软件配置选择

写在前面

之前写的关于Arch Linux的那篇文章错误百出,也不够详细。重新写一篇。

请注意,本文主观性极强。

0. 我为什么要用Linux?

它有几个优点:

  1. 安全性高。Linux下恶意软件更少。
  2. 花销较少。至少大部分知名发行版都可以免费获取安装文件。
  3. 配置要求低。在低配置机器上表现出色。
  4. 轻量化。相对Windows来说,基本存储空间占用比较小。
  5. 客制化强。桌面环境、软件选择多种多样。
  6. (这一点对于Arch Linux一类的滚动发行版更明显)更新迅速。
  7. 开源。
  8. 很多东西配置起来比较简单。大多数编程语言环境的配置、命令行工具的配置都很简单。

这里,我想阐明几个概念:

  1. Linux严格意义上讲只是内核,我这里讲的Linux是以Linux为内核的发行版/滚动发行版(distro)。
  2. 开源不完全等于开放源代码,它不仅包括开放源代码,还包括很多与修改、分发代码有关的权利。

此外,并不是所有人都适合日常使用Linux,比如:

  1. 很忙,没时间折腾的人。
  2. 不懂得如何正确提问、获取信息的人。
  3. 重度大型游戏玩家。

0.5 怎么选择发行版?

发行版数不胜数,适合自己的才是最重要的。

如果您是新手,Linux MintZorin等是不错的选择,尤其是新版本的Linux Mint,它的桌面环境Cinnamon很漂亮,而且操作逻辑和Windows的差不了多少。您可以通过它们熟悉Linux的基本操作、文件树结构。当然,正如鸟哥说的那样,用Linux了就不要专注于图形界面,要学会在终端进行操作,这样才能成为Linux高手。

如果您差不多熟悉了Linux,可以选择其它发行版,它们更为成熟,客制化能力也比较强。

想追求较为稳定的体验,DebianUbuntu是不错的选择。Debian更为稳定,但是相应的,包版本更低。Ubuntu要比Debian更新策略激进一点,包相对较新,同时也保证了稳定性,此外也有以之为基础的LubuntuXubuntuKubuntu等使用不同桌面环境的发行版。最近(2023-01-13)新出了一个同样基于Ubuntu的,叫作Vanilla OS的发行版。

想要时刻保持系统最新,可以使用滚动发行版。滚动发行版一般在新版本组件发布之后,很快就更新。比如Arch Linux,和以之为基础的Arco LinuxArtix LinuxArchcraftManjaro;也有OpenSUSEGentooVoid Linux可供选择。

此外,也有各种针对某些特定领域开发的Linux发行版,比如针对渗透、安全开发的Kali LinuxBlackArch,针对科学计算开发的DAT Linux等等。

如果您是安全、隐私方面的偏执狂,那么可以使用Qubes OSTails OSWhonix

如果您对于systemd有着强烈的排斥感,可以选用DevuanArtix Linux

如果您想完全使用开源的、非专有的软件,请使用GNU GUIX

如果您想获得最大化的个性化配置体验,可以选用GentooArch Linux

如果您想要在服务器上运行,推荐您使用尽可能稳定的发行版。

这篇文章,我主要讲一讲我配置Arch Linux的软件选择。

1.基本环境安装

详见Arch Wiki上的安装指南

另外也有安装助手Arch Install可供使用,能在一定程度上减轻安装Arch Linux的难度。

假定您已经安装好了基本的环境,配置好了日常用户。

Arch Wiki是非常有用的信息源,你可以在上面查到应用程序的相关信息、配置方法、疑难解答等等。

不推荐您参考知乎、CSDN、各种博客等来源上的安装教程,它们的严谨性不够高,上面的信息也很有可能是过时的。

密钥问题

在安装过程中,有可能出现由于密钥产生的错误,当安装来自archlinuxcn源的软件时,这个错误十分常见。这时请确保相应的keyring安装、更新完毕,如果还是出现错误,请运行:

1
2
pacman-key --init
pacman-key --populate

这一般能解决问题。

2. 包管理器

包管理器能够帮助您安装、卸载、管理包。

系统初始只有pacman,它只能安装Arch Linux官方的包,没法安装AUR包,也就是用户软件仓库的包。AUR是Arch Linux的优势之一,它是一个由用户社区维护的库。用户可以从AUR上克隆生成脚本,在本地生成包,从而安装。

举个例子,在Ubuntu上安装deepin-wine版本的微信,那么我需要先花很大力气找到deepin-wine的安装包,之后还要再花很大力气找到deepin-wine-wechat的安装包。我在写Linux苦痛之路(一)的时候就经历过这种折磨,当时使用的是Ubuntu 22.04,不仅安装费劲,也很容易出现依赖版本对不上的问题。

而在Arch Linux上,我只需要从Arch Wiki的AUR搜索面板找到deepin-wine-wechat,将生成脚本克隆到本地,输入两行命令构建、安装,就可以了。甚至,如果我安装了AUR助手,直接输入一行命令就可以安装了,省时省力。

AUR助手我主要用yay,它用go语言编写而成,解析依赖的能力比较强。

也有一些图形化的工具可以搜索包,但是我个人一般直接上Wiki查找,用不到。

如何管理您的包也是很重要的一部分,详情见推荐阅读中的系统维护页面。

3. 显示管理器

它允许你登录到桌面环境,相当于从启动过程到桌面环境的一个桥梁。比较常见的有sddmlightdm等等。如果嫌丑,github上有很多相关的主题可供选择。

3.5 桌面环境

如果您嫌麻烦,不愿配置窗口管理器,那么可以直接下载桌面环境。所谓桌面环境,就是一堆组件包,包括窗口管理器、实用小组件、文件管理器等等,开箱即用,而且大多数桌面环境可配置能力也很强。比较出名的有:

  1. GNOME,其也是Ubuntu的桌面环境。
  2. KDE,定制性非常强,缺点是系统占用比较多。
  3. Xfce,轻量化的桌面环境,就是有点丑。

4. 窗口管理器

窗口管理器和桌面环境有什么不同?窗口管理器提供了图形界面,它允许你操纵窗口,打开应用程序,但是不提供状态栏、文件管理器等工具。桌面环境包括窗口管理器,同时也提供了一些设置工具、状态栏、组件等等。使用窗口管理器相对来说定制性强,更加轻量化,能够自定义自己想要用的工具包,缺点是配置起来更加麻烦。

窗口管理器有三大门派,一派是层叠式窗口管理器,另一派是平铺式窗口管理器,还有一派是动态窗口管理器

层叠式窗口管理器

这种窗口管理器就像Windows的窗口管理器一样,窗口之间可以重叠,比较出名的是KDE桌面自带的KWinXfce桌面自带的Xfwm等等。

平铺式窗口管理器

这种窗口管理器的窗口之间一般没有重叠,平铺在桌面上,占据着不同的空间。当你打开一个软件时,它占据整个屏幕,当您打开另一个软件时,它们会各自占据一半屏幕。

这种窗口管理模式对于键盘操作非常友好,可以通过快捷键选中、操纵窗口,比较出名的有Bspwmi3wm等等。

Bspwm可以结合sxhkd来设置快捷键,二者的配置非常简单、方便。

动态窗口管理器

它们结合不同的管理方法,可以应用层叠式的,也可以应用平铺式的,功能比较强大,比较出名的有Xmonad, awesomedwm

PS:dwm打补丁有些麻烦。

额外配置

这些窗口管理器遵循UNIX原则,通常不提供状态栏,您可以通过polybar进行配置。

如果想要配置背景透明度和窗口渐入渐出动画,可以使用picom

快速启动应用,可以使用rofi

配色

我比较喜欢的配色方案是nordnipponcolor

5.电源管理

有很多用户报告说,Linux比Windows更耗电。我还没有验证过这个结论。但是用Linux日常工作,我的笔记本风扇声音更小,温度更低。内存占用、CPU占用也更少。

如果您想配置电源,可以使用powertoptlp两个工具,我更推荐前者,后者导致我的无线网经常断连。

6.浏览器

我使用Firefoxungoogled-chromium。其中,对于Firefox,我应用了arkenfox/user.js,对隐私保护进行了优化,如果嫌麻烦,可以直接使用LibreWolf。此外,可以使用Vimium插件将Vim键位应用到网页浏览上。

您可以通过此网站测试您浏览器的隐私程度。

7.安全

防火墙

您需要它。的确,Linux下的恶意软件更少,但是仍然面临着被黑入的风险。

firewalldufw都是不错的选择,它们分别使用nftablesiptables作为后端。我日常使用后者,gufw包提供了一个图形界面来配置ufw的规则、端口等等。

密码管理器

您可能将大部分密码保存在浏览器里,但是我不推荐这种方法,因为浏览器并不是为管理密码设计的。我更推荐用专用的密码管理器。

现在的密码管理器大概分为两种,一种将密码库放在云端,另一种将密码库存储在本地。前者比较方便,可以多设备同步,但是面临着数据泄露的风险,比如LastPass密码库泄露事件。所以我更推荐使用后者,只要你能够妥善保管,就很安全,我日常使用的是KeePassXC

这里也推荐一个方法,在设置密钥时,可以在设置密码的同时设置密钥文件,这样基本上没有暴力破解的可能性。

加密卷

如果您有些敏感信息要存放,可以使用Veracrypt,它不仅可以创建加密卷,也可以加密U盘、硬盘等,是很强大的工具。

同样,采用密钥文件+密码的模式,会很安全。

快照/备份

滚动更新面临着系统崩溃的风险,而Arch Linux的更新策略尤为激进。所以您需要定期备份,好在系统崩溃时回滚,相关工具有timeshift等等。

权限

妥善管理好文件的权限!

此外,用sudo代替 su root

看到过许多Linux用户,常年用root用户操作……为他们捏把汗。

不过也有些单用户的发行版,就不太需要考虑权限的事情,比如说Haiku

三思而后行

在执行命令前,看清楚语法是否正确。举个例子,

1
rm -rf ./ ss

这个命令会删除你所在文件夹的所有内容,如果只想删除ss,

1
rm -rf ./ss

我就曾经多打了一个空格,导致删除了我所有的配置文件和重要文档。

8.游戏

我没有找到一个完美的方案。

如果游戏支持Linux,直接运行即可。

对于Windows独占的游戏,Steam上的游戏可以使用Steam自带的Proton运行,Proton集成了wine等有用的工具,对于steam游戏也做了相应的优化,体验还算不错,但是在游戏过程中,游戏内存占用会不断增长,最终导致系统卡死。

我也听说过使用DXVKlutrisplay on linux的方案,不知道体验如何。

9.编辑器

如果您习惯了键盘操作,那么您也许会发现,工作效率也会有显著的提高。此外,流畅的键盘操作更容易进行流畅的编码,免去切换鼠标带来的思路卡顿。

以键盘操作为主的编辑器,无非是Emacs和Vim,一直以来始终有一个争论:Emacs还是Vim?

这个问题和“哪个发行版最好”一样毫无意义,不过是茶余饭后闲聊的谈资而已。

Emacs功能强大,可以作为邮件客户端、笔记软件、音乐软件、图片查看器等,被称为“神之编辑器”。

Vim/Neovim键位更友好,大大提升编码效率,被称为“编辑器之神”。

对于Emacs,有很多开箱即用的用户预配置版本:doomemacsspacemacs

对于Vim,则有:Lunarvim等。

此外,我也经常使用IDEA等编辑器。工具嘛,哪个好用用哪个。

10.输入法

输入法参考维基,安装fcitx5就好,不过我想在这里写下一个问题的解决方法。

fcitx5无法输入中文中括号的解决方案

/usr/share/fcitx5/punctuation/punc.mb.zh_CN这个文件中,

将[,]两行改为:

1
2
[ 【
] 】

如果您想打出中文的人名分隔符的话:

在文件末尾添加:

1
` ·

即可。

11.个性化配置

键位绑定

可以使用xmodmap工具,比如,您可以用它将Caps Lock键和Ctrl键映射互换。

外设配置/灯效配置

如果您要配置鼠标的额外按键功能、RGB灯效的话,可以使用piper,但有可能出现无法绑定键位的错误。

灯效可以通过openrgb进行配置。

终端模拟器/Shell

对于终端模拟器,Alacritty是个不错的选择,支持跨平台操作,也支持一定程度的自配置。

Shell则纯看个人喜好,我使用zsh,搭配oh-my-zsh的示例配置文件。

系统监测

htop可以查看进程。

neofetch可以查看系统信息。

dotfiles

所谓dotfiles,就是您的自定义配置文件,因为大多配置文件都以.开头,或者储存在.config文件夹内,您可以通过git或者其他管理工具管理它们,上传到github,这样在配置新系统时会很方便。

Ex.注意事项

Emacs的使用

将Emacs设置为守护进程将节省启动的时间。开机时启动守护进程,Emacs就将始终在后台运行,每次打开Emacs(Client)即可,免去加载时间。

1
/usr/bin/emacs --daemon &

NVIDIA驱动

不要从NVIDIA官网安装!参见Arch Wiki:NVIDIA

信息源

Arch Wiki中包含大多数常用包的说明、设置方法、疑难解答。

Arch Forum中包含很多用户遇到的问题和解决方案。

Github上有许多包的源码,可以在issue中查看一些问题的解决方法。

Haskell配置

不要使用Arch Linux提供的ghcghci,正确的方法是只安装官方库的ghcup,通过ghcup安装相关的包。

发行版彼此不同

ManjaroArco LinuxArtix Linux不是Arch Linux,它们是基于Arch Linux的发行版。

Ubuntu不是Debian,它是基于Debian的发行版。

也就是说,举个例子,在Manjaro发行版上遇到的问题,尽量去Manjaro专门的论坛,而不是去Arch Linux的论坛寻求解答;在Debian上遇到的问题就尽量去Debian论坛寻求解答。

软件替代品

您可以去alternativeto.net查询Windows下软件在Linux系统上的替代品。

一寸光阴一寸金

不要花费太多时间在切换、尝试不同的Linux发行版上,也不要花费太多时间在配置桌面环境、选择软件上。能用就行。

推荐阅读

Arch Wiki:系统维护

fcitx5中文输入法方括号问题的解决