Linux苦痛之路(三):漫谈+Arch Linux软件配置选择
写在前面
之前写的关于Arch Linux的那篇文章错误百出,也不够详细。重新写一篇。
请注意,本文主观性极强。
0. 我为什么要用Linux?
它有几个优点:
- 安全性高。Linux下恶意软件更少。
- 花销较少。至少大部分知名发行版都可以免费获取安装文件。
- 配置要求低。在低配置机器上表现出色。
- 轻量化。相对Windows来说,基本存储空间占用比较小。
- 客制化强。桌面环境、软件选择多种多样。
- (这一点对于Arch Linux一类的滚动发行版更明显)更新迅速。
- 开源。
- 很多东西配置起来比较简单。大多数编程语言环境的配置、命令行工具的配置都很简单。
这里,我想阐明几个概念:
- Linux严格意义上讲只是内核,我这里讲的Linux是以Linux为内核的发行版/滚动发行版(distro)。
- 开源不完全等于开放源代码,它不仅包括开放源代码,还包括很多与修改、分发代码有关的权利。
此外,并不是所有人都适合日常使用Linux,比如:
- 很忙,没时间折腾的人。
- 不懂得如何正确提问、获取信息的人。
- 重度大型游戏玩家。
0.5 怎么选择发行版?
发行版数不胜数,适合自己的才是最重要的。
如果您是新手,Linux Mint
、Zorin
等是不错的选择,尤其是新版本的Linux Mint
,它的桌面环境Cinnamon
很漂亮,而且操作逻辑和Windows的差不了多少。您可以通过它们熟悉Linux的基本操作、文件树结构。当然,正如鸟哥说的那样,用Linux了就不要专注于图形界面,要学会在终端进行操作,这样才能成为Linux高手。
如果您差不多熟悉了Linux,可以选择其它发行版,它们更为成熟,客制化能力也比较强。
想追求较为稳定的体验,Debian
、Ubuntu
是不错的选择。Debian
更为稳定,但是相应的,包版本更低。Ubuntu
要比Debian
更新策略激进一点,包相对较新,同时也保证了稳定性,此外也有以之为基础的Lubuntu
、Xubuntu
、Kubuntu
等使用不同桌面环境的发行版。最近(2023-01-13)新出了一个同样基于Ubuntu的,叫作Vanilla OS
的发行版。
想要时刻保持系统最新,可以使用滚动发行版。滚动发行版一般在新版本组件发布之后,很快就更新。比如Arch Linux
,和以之为基础的Arco Linux
、Artix Linux
、Archcraft
、Manjaro
;也有OpenSUSE
、Gentoo
、Void Linux
可供选择。
此外,也有各种针对某些特定领域开发的Linux发行版,比如针对渗透、安全开发的Kali Linux
、BlackArch
,针对科学计算开发的DAT Linux
等等。
如果您是安全、隐私方面的偏执狂,那么可以使用Qubes OS
、Tails OS
、Whonix
。
如果您对于systemd
有着强烈的排斥感,可以选用Devuan
、Artix Linux
。
如果您想完全使用开源的、非专有的软件,请使用GNU GUIX
。
如果您想获得最大化的个性化配置体验,可以选用Gentoo
、Arch Linux
。
如果您想要在服务器上运行,推荐您使用尽可能稳定的发行版。
这篇文章,我主要讲一讲我配置Arch Linux
的软件选择。
1.基本环境安装
另外也有安装助手Arch Install可供使用,能在一定程度上减轻安装Arch Linux的难度。
假定您已经安装好了基本的环境,配置好了日常用户。
Arch Wiki是非常有用的信息源,你可以在上面查到应用程序的相关信息、配置方法、疑难解答等等。
不推荐您参考知乎、CSDN、各种博客等来源上的安装教程,它们的严谨性不够高,上面的信息也很有可能是过时的。
密钥问题
在安装过程中,有可能出现由于密钥产生的错误,当安装来自archlinuxcn
源的软件时,这个错误十分常见。这时请确保相应的keyring安装、更新完毕,如果还是出现错误,请运行:
1 | pacman-key --init |
这一般能解决问题。
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. 显示管理器
它允许你登录到桌面环境,相当于从启动过程到桌面环境的一个桥梁。比较常见的有sddm
、lightdm
等等。如果嫌丑,github上有很多相关的主题可供选择。
3.5 桌面环境
如果您嫌麻烦,不愿配置窗口管理器,那么可以直接下载桌面环境。所谓桌面环境,就是一堆组件包,包括窗口管理器、实用小组件、文件管理器等等,开箱即用,而且大多数桌面环境可配置能力也很强。比较出名的有:
GNOME
,其也是Ubuntu
的桌面环境。KDE
,定制性非常强,缺点是系统占用比较多。Xfce
,轻量化的桌面环境,就是有点丑。
4. 窗口管理器
窗口管理器和桌面环境有什么不同?窗口管理器提供了图形界面,它允许你操纵窗口,打开应用程序,但是不提供状态栏、文件管理器等工具。桌面环境包括窗口管理器,同时也提供了一些设置工具、状态栏、组件等等。使用窗口管理器相对来说定制性强,更加轻量化,能够自定义自己想要用的工具包,缺点是配置起来更加麻烦。
窗口管理器有三大门派,一派是层叠式窗口管理器,另一派是平铺式窗口管理器,还有一派是动态窗口管理器。
层叠式窗口管理器
这种窗口管理器就像Windows的窗口管理器一样,窗口之间可以重叠,比较出名的是KDE
桌面自带的KWin
,Xfce
桌面自带的Xfwm
等等。
平铺式窗口管理器
这种窗口管理器的窗口之间一般没有重叠,平铺在桌面上,占据着不同的空间。当你打开一个软件时,它占据整个屏幕,当您打开另一个软件时,它们会各自占据一半屏幕。
这种窗口管理模式对于键盘操作非常友好,可以通过快捷键选中、操纵窗口,比较出名的有Bspwm
,i3wm
等等。
Bspwm
可以结合sxhkd
来设置快捷键,二者的配置非常简单、方便。
动态窗口管理器
它们结合不同的管理方法,可以应用层叠式的,也可以应用平铺式的,功能比较强大,比较出名的有Xmonad
, awesome
,dwm
。
PS:dwm
打补丁有些麻烦。
额外配置
这些窗口管理器遵循UNIX原则,通常不提供状态栏,您可以通过polybar
进行配置。
如果想要配置背景透明度和窗口渐入渐出动画,可以使用picom
。
快速启动应用,可以使用rofi
。
配色
我比较喜欢的配色方案是nord和nipponcolor。
5.电源管理
有很多用户报告说,Linux比Windows更耗电。我还没有验证过这个结论。但是用Linux日常工作,我的笔记本风扇声音更小,温度更低。内存占用、CPU占用也更少。
如果您想配置电源,可以使用powertop
和tlp
两个工具,我更推荐前者,后者导致我的无线网经常断连。
6.浏览器
我使用Firefox
和ungoogled-chromium
。其中,对于Firefox,我应用了arkenfox/user.js,对隐私保护进行了优化,如果嫌麻烦,可以直接使用LibreWolf
。此外,可以使用Vimium
插件将Vim键位应用到网页浏览上。
您可以通过此网站测试您浏览器的隐私程度。
7.安全
防火墙
您需要它。的确,Linux下的恶意软件更少,但是仍然面临着被黑入的风险。
firewalld
和ufw
都是不错的选择,它们分别使用nftables
和iptables
作为后端。我日常使用后者,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游戏也做了相应的优化,体验还算不错,但是在游戏过程中,游戏内存占用会不断增长,最终导致系统卡死。
我也听说过使用DXVK
、lutris
和play on linux
的方案,不知道体验如何。
9.编辑器
如果您习惯了键盘操作,那么您也许会发现,工作效率也会有显著的提高。此外,流畅的键盘操作更容易进行流畅的编码,免去切换鼠标带来的思路卡顿。
以键盘操作为主的编辑器,无非是Emacs和Vim,一直以来始终有一个争论:Emacs还是Vim?
这个问题和“哪个发行版最好”一样毫无意义,不过是茶余饭后闲聊的谈资而已。
Emacs功能强大,可以作为邮件客户端、笔记软件、音乐软件、图片查看器等,被称为“神之编辑器”。
Vim/Neovim键位更友好,大大提升编码效率,被称为“编辑器之神”。
对于Emacs,有很多开箱即用的用户预配置版本:doomemacs
、spacemacs
。
对于Vim,则有:Lunarvim
等。
此外,我也经常使用IDEA
等编辑器。工具嘛,哪个好用用哪个。
10.输入法
输入法参考维基,安装fcitx5就好,不过我想在这里写下一个问题的解决方法。
fcitx5无法输入中文中括号的解决方案
在/usr/share/fcitx5/punctuation/punc.mb.zh_CN
这个文件中,
将[,]两行改为:
1 | [ 【 |
如果您想打出中文的人名分隔符的话:
在文件末尾添加:
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提供的ghc
,ghci
,正确的方法是只安装官方库的ghcup
,通过ghcup
安装相关的包。
发行版彼此不同
Manjaro
、Arco Linux
、Artix Linux
不是Arch Linux
,它们是基于Arch Linux
的发行版。
Ubuntu
不是Debian
,它是基于Debian
的发行版。
也就是说,举个例子,在Manjaro
发行版上遇到的问题,尽量去Manjaro
专门的论坛,而不是去Arch Linux
的论坛寻求解答;在Debian
上遇到的问题就尽量去Debian
论坛寻求解答。
软件替代品
您可以去alternativeto.net查询Windows下软件在Linux系统上的替代品。
一寸光阴一寸金
不要花费太多时间在切换、尝试不同的Linux发行版上,也不要花费太多时间在配置桌面环境、选择软件上。能用就行。