menu Chancel's blog
rss_feed
Chancel's blog
秋雨一何碧,山色倚晴空。

Manjaro使用指南

作者:Chancel Yang, 时间:2022 Jul 12, 阅读:101

Hi,Manjaro是我最喜欢的Linux发行版之一,这篇文章用来记录我个人使用Linux作为开发环境的一些经验

先介绍下我的开发环境信息

  • 常用语言:Python/Golang/PHP以及其他
  • 常用工具:Visual Studio Code/PyCharm/DBeaver/QEMU虚拟机/Chrome/Termius/Syncthing等等

开发环境的重点是需要VSC、Chrome、虚拟机三个部分

通常来说,使用Linux作为开发系统主要缺点是国产软件大部分缺失或第三方版本不稳定

然而得益于移动设备的增强,听歌/邮件处理/下载等需求都可以借助移动设备完成了

实在需要Windows平台的国产软件,也可以借助虚拟机搭配Xfreerdp实现非常优秀的客户端体验

但我仍建议挑选一个Linux发行版作为开发环境前,要考虑清楚需求

相较于Windows,Linux在办公上的体验是多多少少不太舒服的,如果非常介意这点,MacOS或许是个更好的选择

在我看来,Windows在现在来看依旧是不可或缺的,许多客户端都只有Windows端或者Windows端更稳定兼容性更强

如果对Linux桌面环境(非CLI)有过初步接触,那么在这篇文章里,你能找到一些有趣的工具

限于个人能力,也很欢迎指出文中的错误不足之处,本文权当抛砖引玉

1. Linux常见发行版

1.1. 什么是Linux发行版?

引用维基百科的解释

Linux 发行版(英语:Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件。Linux发行版通常包含了包括桌面环境、办公包、媒体播放器、数据库等应用软件。这些操作系统通常由Linux内核、以及来自GNU计划的大量的函数库,和基于X Window的图形界面。

简单说,选择一个Linux发行版,本质上就是选择包管理器与桌面环境

先说包管理器,当前Linux包管理器,比较常见的两种软件包管理系统

  1. DEB包:如Debian/Ubuntu系的apt-get
  2. RPM包:如CentOS/Fedora/openSUSE的yum/dnf/ZYpp

这两个也是国内最常见发行版Ubuntu跟CentOS的包管理器

1.2. 有哪些常见的Linux发行版?

基于Dkpg软件包管理器的debian系发行版,最有名气的大约是Ubuntu系列了

Debian系的Ubuntu是一个非常适合体验Linux桌面发行版的操作系统

常见的Debian发行版列表如下

名称 特点
Ubuntu 一个非常流行的发行版
Debian 信奉自由软件、由志愿者开发维护
Kubuntu 使用KDE桌面的Ubuntu
Linux Mint 从Ubuntu派生并与Ubuntu兼容的系统
Knoppix 第一个Live CD系统
OpenGEU Ubuntu的派生版
Elementary OS 基于Ubuntu,酷似Mac OS X

基于RPM软件包管理器的REd Hat系发行版威名远播

如老生常谈的Cent7OS就是基于RPM包的

如下是常见的Red Hat系的发行版列表

名称 特点
Red Hat Enterprise Linux RPM家最具代表性发行版
openSUSE 由Slackware分离出来的发行版
Fedora Red Hat的社区版
PCLinuxOS Mandriva的派生版本
CentOS 由志愿者维护的基于Red Hat发行版
Megeia Mandriva发展而来的系统

除了Debian/Red Hat系列,还有许许多多优秀的第三方发行版可供选择

这其中较有名气当属Arch Linux系列,下面都是除了Debian/Rad Hat外也值得尝试的发行版

名称 特点
ArchLinux 一个基于KISS(keep it simple and tupid)的滚动更新发行版
Manjaro 一个基于Arch的发行版,兼顾了Arch系的新颖又不失稳定性
CHakra ArchLinux的KDE桌面版
GENtoo 一个面向高级用户的发行版(需要自动编译)
Slackware 最早的linux发行版之一

2. Manjaro

Manjaro是一个基于Arch的发行版,兼顾了Arch系的新颖又不失稳定性

采用pacman的包管理器,优点是硬件兼容强、内核切换方便、第三方包极其丰富(完败DPKG)、上手难度低

2.1. 桌面环境选择

访问 manjaro.org,选择下载,可以看到主要提供3个桌面选择

分别是Gnome/Xfce/Plasma(KDE)三个桌面选择,我在3个桌面之间也反复使用过好几年

我推荐的版本还是Plasma,相较于而言Plasma功能齐全,稳定性高,唯一的缺点是上手成本较高

此外,Gnome也是不错的选择,功能不太多但稳定性高上手成本低

Xfce则有些简陋了,基本功能也比较少

2.2. 系统安装

2.2.1. 引导

打开电脑BIOS,选择启动方式(boot),并将U盘调整到启动第一顺序,这是我在Google上找到一张BIOS图,BIOS启动设置都是差不多的

可以根据你的主板型号+Bios启动设置作为关键字搜一下Google相关信息

2.2.2. 安装

设置好引导之后我们就可以顺利进入到了Manjaro的安装了,在欢迎第一个界面处调整安装界面参数

在桌面上我们选择Install Manjaro Linux,然后地区选择上海

键盘与系统语言建议选择英文,如果选择使用Linux发行版,请尽量使用英文环境,中文环境所带来的麻烦远超过认识几个常见英文单词的麻烦程度

接下来我们选择手动调整分区,如果硬盘未初始化,则应该选择初始化(New Partition Table),并选择GPT分区,对于GPT分区与MBR分区,GPT分区是UEFI规范的一部分,相对MBR的优势

  • 无限分区表
  • 每个分区可以有独立的名字

这是最直观的好处,对于非上古机器而言,GPT无可挑剔

初始化硬盘后,我们开始分区,对于Linux的分区,大部分发行版在UEFI模式安装下只需要认识好“/boot”与“/”这两个分区

"/boot"分区对应Windows的efi启动分区,根分区“/”对应Windows的C盘

我的硬盘未初始化且启动方式为UEFI,初始化为MBR格式,并创建挂载好"/boot"与"/"分区,注意"/boot"分区的两个要求(第三张图红框处)

  • FAT32格式
  • ESP标志

下面是我的分区图例

如果你在分区这里失败了,可以参考Arch中文wiki的资料,仔细研读相信你会知道如何做好Linux的分区

Partitioning - ArchLiunux

在输入好机器名称与选择好Office套件之后,会得到一个系统安装预览,我的预览如下

点击安装即可完成安装系统

2.3. 软件源选择

安装系统后通常需要手动更新一下系统,软件源一般默认是国外的

国外更新系统非常缓慢,如果会魔法爱国的话,那可以考虑直接选择速度最快的镜像源即可

sudo pacman-mirrors -i 

如果受限于网络环境,也可以输入以下指令强制指定国内,在测试完成延迟之后,选择离你最快的源即可

sudo pacman-mirrors -i -c China -m rank

最后更新系统

sudo pacman -Syyu

2.4. yay扩展包管理

pacman作为Arch的仓库,包含了大量的软件

但如果我们需要一些AUR特有的安装包(如Chrome),就需要使用 yay 进行安装

什么是yay?简单说他是一个用GO写的AUR社区/pacman仓库包管理器

Yet another yogurt. Pacman wrapper and AUR helper written in go.

安装yay后,github上绝大多数的软件都支持自动安装

sudo pacman -S yay

2.5. OH-MY-ZSH

官方仓库已经收录ZSH了,稍微新一些的Manjaro版本都已经收录默认zsh作为默认shell了

先查看一下当前已经安装的虚拟终端

cat /etc/shells
# 如果没有zsh,使用下面的指令进行安装
sudo pacman -S zsh

自定义ZSH的配置比较繁琐,如果对自定义ZSH无兴趣,则直接采用oh-my-zsh

oh-my-zsh采用下面任一命令进行一键安装(官方提供,无需担心)

# curl方式安装
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

# wget方式安装
sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

ZSH主题更换需要编辑"~/.zshrc"文件,然后更改“ZSH_THEME”的值,至于主题有哪些?可以查看ZSH主题列表

ZSH比起Bash,支持很多插件,例如

  • 高亮已知的命令:zsh-syntax-highlighting
  • 提示历史命令:zsh-autosuggestions
  • 自动跳转目录:autojump

其他强大的欢迎插件可以自行Google查找

2.6. Theme/Icons配置

Gnome

Gnome的主题可以在www.gnome-look.org中下载安装

Plasma

KDE的主题可以在store.kde.org中下载安装

2.7. 输入法

2.7.1. 安装

首先卸载所有关于fcitx的包

sudo pacman -Rs $(pacman -Qsq fcitx)

然后安装fcitx5以及相关的安装包

sudo pacman -S fcitx5-im fcitx5-configtool fcitx5-rime fcitx5-chinese-addons

2.7.2. 环境配置

配置环境变量 vim ~/.xprofile*

GTK_IM_MODULE DEFAULT=fcitx
QT_IM_MODULE  DEFAULT=fcitx
XMODIFIERS    DEFAULT=\@im=fcitx
SDL_IM_MODULE DEFAULT=fcitx

然后根据需要配置输入模式(五笔、拼音、双拼等)

创建配置文件夹并编辑配置文件,通常需要自行创建文件夹与配置文件

mkdir -p ~/.local/share/fcitx5/rime/

vim ~/.local/share/fcitx5/rime/default.custom.yaml

内容参考

# default.custom.yaml
# save it to: 
#   ~/.config/share/fcitx5/rime  (linux)
#   ~/Library/Rime       (macos)
#   %APPDATA%\Rime       (windows)

patch:
  schema_list:
    #    - schema: luna_pinyin          # 朙月拼音
        - schema: luna_pinyin_simp     # 朙月拼音 简化字模
    #    - schema: luna_pinyin_tw       # 朙月拼音 臺灣正體模式
    #    - schema: terra_pinyin         # 地球拼音 dì qiú pīn yīn
    #    - schema: bopomofo             # 注音
    #    - schema: bopomofo_tw          # 注音 臺灣正體模式
    #    - schema: jyutping             # 粵拼
    #    - schema: cangjie5             # 倉頡五代
    #    - schema: cangjie5_express     # 倉頡 快打模式
    #    - schema: quick5               # 速成
    #    - schema: wubi86               # 五笔86
    #    - schema: wubi_pinyin          # 五笔拼音混合輸入
    #    - schema: double_pinyin        # 自然碼雙拼
    #    - schema: double_pinyin_mspy   # 微軟雙拼
    #    - schema: double_pinyin_abc    # 智能ABC雙拼
    #    - schema: double_pinyin_flypy  # 小鶴雙拼
    #    - schema: wugniu        # 吳語上海話(新派)
    #    - schema: wugniu_lopha  # 吳語上海話(老派)
    #    - schema: sampheng      # 中古漢語三拼
    #    - schema: zyenpheng     # 中古漢語全拼
    #    - schema: ipa_xsampa    # X-SAMPA 國際音標
    #    - schema: emoji         # emoji表情
    # # # "translator/dictionary": luna_pinyin.extended

2.7.3. 词库

对输入法而言最重要的当然是词库,这里推荐2个Wiki的词库,非常全面

在Github的页面中选择Release并下载词典文件(YAML格式)

把下载的词典移动到词库文件夹中

mv moegirl.dict.yaml ~/.local/share/fcitx5/rime/
mv zhwiki.dict.yaml ~/.local/share/fcitx5/rime/

创建配置文件

mkdir -p ~/.local/share/fcitx5/rime/
vim ~/.local/share/fcitx5/rime/luna_pinyin.custom.yaml

patch:
    "translator/dictionary": extended # 词典名字可自定义,与接下来的第二个文件名(extended.dict.yaml)保持一致即可

vim ~/.local/share/fcitx5/rime/extended.dict.yaml

name: extended
version: "2021.02.19"
sort: by_weight
use_preset_vocabulary: true
import_tables:
  - luna_pinyin
  # 此处对应2个词典的名称
  - zhwiki
  - moegirl

注销用户(重启fcitx5)后,打开 fcitx Configuration,选择添加rime即可使用

PS:如何验证词库加载成功?打个“刘畊宏”试试看能不能匹配出来

2.7.4. 输入法皮肤

可参考Github仓库:https://github.com/thep0y/fcitx5-themes.git

皮肤安装方法如下

git clone https://github.com/thep0y/fcitx5-themes.git
cp -r fcitx5-themes/spring ~/.local/share/fcitx5/themes
cp -r fcitx5-themes/summer ~/.local/share/fcitx5/themes
cp -r fcitx5-themes/autumn ~/.local/share/fcitx5/themes
cp -r fcitx5-themes/winter ~/.local/share/fcitx5/themes
cp -r fcitx5-themes/green ~/.local/share/fcitx5/themes
cp -r fcitx5-themes/transparent-green ~/.local/share/fcitx5/themes
rm -r fcitx5-themes

然后编辑配置文件
vim ~/.config/fcitx5/conf/classicui.conf

Vertical Candidate List=False # 关闭垂直候选列表
PerScreenDPI=True # 根据屏幕DPI调整后选词大小
Font="Smartisan Compact CNS 13"
Theme=spring

2.8. 虚拟机

安装KVM以及相关依赖项

# 连接网络依赖ebtables dnsmasq bridge-utils openbsd-netcat等包
sudo pacman -S qemu virt-manager virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat ebtables iptables

启动KVM后台服务并启动GUI管理界面

sudo systemctl enable libvirtd.service
sudo systemctl start libvirtd.service
virt-manager

2.9. Windows远程桌面(RDP)

2.9.1. remmina

Use other desktops remotely, from a tiny screen or large monitors.

官网链接:https://remmina.org/contributing-to-remmina/

remmina是我最喜欢的远程桌面软件之一,功能非常全面,支持的协议包括但不限于RDP、VNC、SPICE、NX、XDMCP、SSH等等,同时也兼顾非常优秀的界面

支持非常复杂的远程协议配置选项

各个操作系统的安装方式可以参考官方Wiki文档 - How to install remmina

Manjaro下安装Remmina非常简单,只需要使用

sudo pacman -S remmina

# 如果要支持RDP协议,则需要安装FreeRDP
sudo pacman -S freerdp

Remmina的优点如下

  • 优秀的界面设计(颜值是第一生产力)
  • 远程协议的配置选项丰富足以应对复杂的远程桌面(加密方式/认证方式等修改配置)
  • 强大的软件快捷键,如Ctrl+→可以快速切换远程桌面,这在应对多个远程桌面比Windows自带远程桌面还要优秀
  • 丰富的远程协议支持,不管是SSH还是RDP还是NX等远程协议均可以在一个远程客户端中配置完是非常Geek体验
  • 支持配置文件的导出导入
  • ...

如果你没有使用过Linux下的远程桌面客户端,那我非常推荐使用Remmina,他在大多数发行版上表现还是非常稳定的

2.9.2. Xfreerdp

FreeRDP是一款开源专用于RDP远程协议的软件,Remmina也是他们的产品

FreeRDP支持的配置非常详细,Remmina的RDP插件也是基于FreeRDP实现的,所以才有非常丰富的配置选项

❯ xfreerdp -h                                                                 ~
Usage: xfreerdp [file] [options] [/v:<server>[:port]]

Syntax:
    /flag (enables flag)
    /option:<value> (specifies option with value)
    ...

More documentation is coming, in the meantime consult source files

使用例子

xfreerdp /v:10.0.0.3 /u:username /p:"password" /size:1920x1080 /audio-mode:0

参数解释

  • /audio-mode: 0表示本机播放,1表示远程机器播放
  • /size: 分辨率
  • /v: 远程地址

FreeRDP在我机器Gnome3的桌面环境下表现良好

  • 默认非常优秀的清晰画面
  • 支持音频传输到本机播放
  • 支持文字复制粘贴

将远程的命令注册成全局快捷键,如Ctrl+Alt+1,远程桌面体验极其舒服

3. 软件

3.1. deepin

Deepin版计算器

  • 安装:sudo pacman -S deepin-calculator

Deepin截图,非常类似于QQ截图,十分好用

  • 安装:sudo pacman -S deepin-screenshot

系统资源监视器

  • 安装:sudo pacman -S deepin-system-monitor

3.2. 开发工具

数据库管理

  • 安装:sudo pacman -S dbeaver

pycharm社区版

  • 安装:sudo pacman -S pycharm-community-edition

intellij-idea社区版

  • 安装:sudo pacman -S intellij-idea-community-edition

文本编辑

  • 安装:sudo pacman -S atom

Visual Studio Code

  • 安装:yay -S visual-studio-code-bin

3.3. 系统工具

磁盘占用分析

  • 安装:sudo pacman -S baobab

SSH客户端

  • 安装:sudo pacman -S termius

网络工具分析(dig、nslookup等)

  • 安装:sudo pacman -S net-tools dnsutils iptraf-ng mtr

网络隧道

  • 安装:sudo pacman -S shadowsocks-libev

系统备份

  • 安装:sudo pacman -S timeshift

系统资源监控

  • 安装:sudo pacman -S glances

3.4. 日常使用

Telegram

  • 安装:sudo pacman -S telegram-desktop

Chromium

  • 安装:sudo pacman -S chromium

下载工具

  • 安装:yay -S freedownloadmanager

4. 参考资料

输入法

[[replyMessage== null?"发表评论":"发表评论 @ " + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageResponse.total]])

还没有可以显示的留言...
[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[getEnviron(messageItem.m_environ)]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[getEnviron(messageItem.m_environ)]]
目录