终于告别了辣鸡 Windows 系统了,从 Win 10 到 LTSC ,再到 Windows Server 2019 ,就没有一个不出 bug 的,还是早日投奔 Linux 的怀抱吧,至少出了 Bug 也可以自己折腾。目前更换了主力系统为 Manjaro ,这是一个基于 Arch Linux 的衍生发行版本,继承了 Arch 滚动更新和 AUR 软件包极为丰富的优点,稳定性也十分优秀,适合长期使用。Manjaro 官方镜像按照桌面环境(DE)的不同,分为 XFCE ,KDE ,GNOME 三个版本,个人选择的是 KDE 桌面环境,更为顺手一点。
下面记录一下配置过程(缓慢施工中),一来方便自己将来万一重装后的恢复,二来方便有需要的朋友们做个参考。
在终端中执行下面这条命令:
1
| sudo pacman-mirrors -i -c China -m rank
|
在弹出的对话框中选择一个最快(或最顺眼的)的就可以了,多选几个也并不能加快速度。
系统自带的 Vi 体验简直令人发指,没有方向键(方向键是 h/j/k/l 这四个键来控制的。。), Backspace 也会变成莫名其妙的符号,直接卸载:
装上完全体的 Vim :
不建议添加此源,Manjaro 上游的包库更新要比 Arch 慢,可能会导致一些蛋疼的兼容性问题。
首先编辑 /etc/pacman.conf
这个文件,在末尾添加以下内容:
1
2
3
| [archlinuxcn]
SigLevel = Optional TrustedOnly
Server = https://repo.archlinuxcn.org/$arch
|
然后导入 archlinuxcn-keyring :
1
| sudo pacman -Sy archlinuxcn-keyring
|
最后刷新一下缓存:
3.1 安装 yay
yay 是一个 Go 语言编写的 AUR 助手,有时官方仓库内没有的软件,只能通过 AUR 来安装。详细介绍请移步文末 :)
之后安装软件就不需要 sudo pacman
了,yay 兼容 pacman 的命令,下文如无特殊说明,均用 yay
来代替 sudo pacman
。
3.2 让包管理器走代理
首先参考 简易配置终端代理 设置好系统的终端代理环境变量,然后
在最后添加下面这行:
1
| Defaults env_keep += "ftp_proxy http_proxy https_proxy"
|
保存即可,现在代理的环境变量会自动传递给 sudo 和 pacman 了,yay 会自动读取 http_proxy
和 https_proxy
的值,不需要特殊设置(其实 pacman 是可以自动读取代理的环境变量的,但是 pacman 使用时要加上 sudo,而环境变量不会自动传递给 sudo,所以此处需要特殊设置一下;又因为 yay 有些命令会调用 sudo,所以哪怕只用 yay 也是需要设置这一步的 Orz)。
4.1 安装 zsh :
4.2 安装 Oh My Zsh :
1
| sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
安装完 Oh My Zsh 后会提示替换默认的 shell 为 zsh ,若没有提示的话按照下面的步骤手动替换:
- 先查看当前系统内已安装的终端:
- 更改当前用户的默认终端:
- 更改 root 用户的默认终端:
1
2
3
| sudo su
chsh -s /bin/zsh
su USERNAME
|
且重启系统后若 zsh 有更新,Oh My Zsh 会自动提示。
如果不小心关掉了更新提示,可以执行 omz update
手动更新。
4.3 更换 Oh My Zsh 主题:
一行命令直接修改(俺使用 ys 这个主题),然后重载 zsh 的配置:
1
| sed -i '/^ZSH_THEME=/c\ZSH_THEME="ys"' ~/.zshrc && source ~/.zshrc
|
4.4 安装 Oh My Zsh 插件:
1
2
3
4
5
6
| # zsh-syntax-highlighting(代码高亮)
git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
# zsh-autosuggestions(自动建议)
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
# zsh-completions(自动补全)
git clone https://github.com/zsh-users/zsh-completions $ZSH_CUSTOM/plugins/zsh-completions && echo "fpath+=$ZSH_CUSTOM/plugins/zsh-completions/src" >> ~/.zshrc
|
一行命令直接将插件配置覆盖为需要的这几个插件,然后重载 zsh 配置:
1
| sed -i '/^plugins=/c\plugins=(sudo extract zsh-syntax-highlighting zsh-autosuggestions zsh-completions)' ~/.zshrc && sed -i '/source $ZSH\/oh-my-zsh.sh/d' ~/.zshrc && echo 'source $ZSH/oh-my-zsh.sh' >> ~/.zshrc && source ~/.zshrc
|
其中 sudo
和 extract
是 oh my zsh 自带的插件,前者的作用是在已经输入好的命令前自动加上 sudo
,双击 ESC 键即可,非常方便,后者整合了常用的解压文件的命令别名,解压文件时只需 extract <filename>
就可以,不再需要记忆不同格式的解压命令。
命令的其他部分的说明,可以参考 这里 。
todo
todo
如果系统语言设置为了中文,那么用户的家目录(也就是 ~
/ /home/<username>/
这个目录)下的默认文件夹名字会全部变为中文,类似这样:
1
2
3
| [he-sb@HE-SB-Manjaro ~]$ ls
公共 模板 视频 图片 文档 下载 音乐 桌面
[he-sb@HE-SB-Manjaro ~]$
|
在某些情况下会比较的不方便(比如你和俺一样有点强迫症……)。不过上网搜索的话,网上的教程大部分是将系统语言切换为英文再切换回来,虽然可以达到目的,但很不优雅,正好看到了 这篇教程 ,详细解释请看原文,以下是 TL;DR 版的操作记录:
1
| vim ~/.config/user-dirs.dirs
|
这个文件内容现在是下面这样:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| # This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/桌面"
XDG_DOWNLOAD_DIR="$HOME/下载"
XDG_TEMPLATES_DIR="$HOME/模板"
XDG_PUBLICSHARE_DIR="$HOME/公共"
XDG_DOCUMENTS_DIR="$HOME/文档"
XDG_MUSIC_DIR="$HOME/音乐"
XDG_PICTURES_DIR="$HOME/图片"
XDG_VIDEOS_DIR="$HOME/视频"
|
将内容修改为这样(就是修改下文件夹名称):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| # This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_TEMPLATES_DIR="$HOME/Templates"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_VIDEOS_DIR="$HOME/Videos"
|
然后挨个重命名已有的文件夹:
1
2
3
4
5
6
7
8
| mv $HOME/桌面 $HOME/Desktop
mv $HOME/下载 $HOME/Downloads
mv $HOME/模板 $HOME/Templates
mv $HOME/公共 $HOME/Public
mv $HOME/文档 $HOME/Documents
mv $HOME/音乐 $HOME/Music
mv $HOME/图片 $HOME/Pictures
mv $HOME/视频 $HOME/Videos
|
最后重启就好了。
todo
todo
Arch 系的 Linux 发行版,软件包来源有两个,Community(Arch 官方仓库),AUR(Arch User Repository, Arch 用户仓库)。用户将软件放在 AUR ,Arch 官方则定期挑选 AUR 里的优秀程序到 community,实际表现为 Community 为 AUR 的子集,Community 有的应用 AUR 都有,但 AUR 内有而 Community 没有的那部分软件可能在系统上的运行表现不大稳定。
Manjaro 自带的桌面程序软件中心(pamac-manager)既可以安装 Community 程序也可以安装 AUR 程序,区别是 AUR 程序会显示【构建】而不是【安装】;但在终端中通过自带的 pacman 只能安装 Community 程序,想要安装 AUR 程序则需要安装额外的包管理器,之前很多教程内的 yaourt 已经停止维护了,个人使用 yay (详细介绍请移步官方 Wiki:AUR helpers (简体中文) - ArchWiki )。
下面是一些包管理器的常用参数:
1.pacman
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| # 同步软件包数据库并更新系统
# y 是更新包数据库,yy 可以强制更新包数据库
# u 是更新软件包
sudo pacman -Syu
# 安装软件包
sudo pacman -S <package_name>
# 安装指定仓库中的包,例如 extra 仓库
sudo pacman -S extra/<package_name>
# 在包数据库中查找含关键字的软件包
sudo pacman -Ss <keyword>
# 清除软件缓存
# 即 /var/cache/pacman/pkg 目录下的文件
sudo pacman -Sc
# 删除单个软件包,保留其全部已经安装的依赖关系
sudo pacman -R <package_name>
# 删除指定软件包,及其所有未被其他已安装软件包使用的依赖关系
sudo pacman -Rs <package_name>
# 删除软件包,不检查依赖关系
sudo pacman -Rd <package_name>
# 列出已安装软件所包含的文件的列表
sudo pacman -Ql <package_name>
# 搜索已安装的包
sudo pacman -Qs <keyword>
# 从本地文件安装软件包
pacman -U package.tar.zx
# 显示软件包的依赖树
pactree <package_name>
|
2.yay
兼容 pacman 的命令行参数,这部分命令只需简单地将 sudo pacman
替换为 yay
即可,例如:
1
2
3
4
| # 等价于 sudo pacman -Syu
yay -Syu
# 等价于 sudo pacman -S <package_name>
yay -S <packagename>
|
其他参数类比即可。除此之外还可以:
1
2
3
4
| # 搜索含关键字的软件包,输入序号安装对应的结果项,支持多选和反选
# 若无需要安装的项,输入 q 后回车退出
# 搜索结果包含 Community 和 AUR 仓库内的包
yay <keyword>
|
Manjaro 内核的 TCP 拥塞控制默认是 cubic(可以执行 sysctl net.ipv4.tcp_congestion_control
验证),效率不是很高,俺直接换成现代的 BBR.
首先加载 BBR 内核模块:
然后配置模块开机自动加载:
1
| echo "tcp_bbr" | sudo tee -a /etc/modules-load.d/modules.conf
|
修改内核配置,将拥塞控制算法切换到 BBR:
1
2
| echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
|
使改动生效:
验证 BBR 是否开启:
1
2
3
| # 以下两行命令任选其一即可
sysctl net.ipv4.tcp_congestion_control
lsmod | grep bbr
|
确认输出为 net.ipv4.tcp_congestion_control = bbr
说明已经切换成功了。
参考链接:
- 与Manjaro相见恨晚 - 山炮不二
- Manjaro 个人新装配置 | 禾七博客
- Manjaro-KDE配置全攻略 - 知乎
- manjaro 安装配置总结 | Marsvet's Blog | Where there's a start, there's a finish.
- pacman (简体中文) - ArchWiki
- 如何将 Home 目录下的文件夹设置为英文 | Mogeko`s Blog
- sysctl - ArchWiki