安装 Arch WSL 并配置

用 windows 写代码最想吐槽的就是 cmd 了!WSL 真的就是吾等救星。
之前使用的是商店里的 Ubuntu WSL ,没感觉到有啥不好的,然鹅试了 Arch WSL 以后,能体会到 Ubuntu WSL 的龟速… Arch WSL 真的是秒开哦~ 链接拿去: yuk7/ArchWSL

下载安装 Arch WSL

这里是作者的安装教程:https://github.com/yuk7/ArchWSL/wiki

我选择的是传统方式安装(不使用 AppX 方式):

  1. Release 下载最新版的 Arch.zip
  2. 解压到 C 盘根目录,(一定要在 C 盘,其他位置也可以),但是你要有该目录的读写权限,所以不能放到 Program Files 等目录中。
  3. 双击解压好的 Arch.exe 进行安装,这个 .exe 的名字 就是要创建的 WSL 实例的名字,改不同的名字就能创建多个 Arch WSL。

安装好之后,进行配置。

配置软件仓库

Arch Linux 软件仓库国内镜像

编辑 /etc/pacman.d/mirrorlist,里面有注释了的 China 的镜像,选一个你喜欢的取消注释就可以了。然后更新软件包缓存,执行: pacman -Syyu

其他跟镜像有关的可以看这里:

https://wiki.archlinux.org/index.php/Mirrors_(简体中文)

添加 ArchlinuxCN 源

Arch Linux 中文社区仓库 是由 Arch Linux 中文社区驱动的非官方用户仓库。包含中文用户常用软件、工具、字体 / 美化包等。

官方仓库地址:http://repo.archlinuxcn.org

这里我使用的是腾讯的镜像: http://mirrors.cloud.tencent.com/archlinuxcn/

使用方法:
/etc/pacman.conf 文件末尾添加以下两行:

[archlinuxcn]
Server = https://mirrors.cloud.tencent.com/archlinuxcn/$arch

之后安装 archlinuxcn-keyring 包导入 GPG key:

pacman-key --init
pacman-key --populate
pacman -Syy && pacman -S archlinuxcn-keyring

安装 AUR 助手 yay

Arch User Repository(常被称作 AUR),是一个为 Arch 用户而生的社区驱动软件仓库。Debian/Ubuntu 用户的对应类比是 PPA。

AUR 包含了不直接被 Arch Linux 官方所背书的软件。如果有人想在 Arch 上发布软件或者包,它可以通过这个社区仓库提供。这让最终用户们可以使用到比默认仓库里更多的软件。

所以你该如何使用 AUR 呢?简单来说,你需要另外的工具以从 AUR 中安装软件。Arch 的包管理器 pacman 不直接支持 AUR。那些支持 AUR 的 “特殊工具” 我们称之为 AUR 助手。

我们想从 AUR 仓库中安装东西时,就需要 AUR 助手,这里推荐 yay. Jguer/yay

pacman -S yay

安装完 yaygit 也会被一起装好。

检查本地软件包的更新:

yay

换成国内 AUR 源:

# yay --save --aururl [url]
yay --save --aururl https://aur.tuna.tsinghua.edu.cn

yay 的配置文件路径:~/.config/yay/config.json

查看 yay 配置:

yay -P -g

查看 yay 帮助:

man yay

创建 Arch 普通用户

刚安装好的 Arch 是 root 用户,为了不至于权限太大误伤系统,可以先创建一个普通用户。

添加一个用户:

useradd -m artin
# -m 参数能帮助创建 /home/artin

设置用户密码:

passwd artin

在下一步之前,可以先把系统默认编辑器设置成 vim,个人觉得还是比 vi 和 nano 好用多了…

export EDITOR=vim;

你也可以设置成自己喜欢的编辑器。

让用户可以执行 sudo 命令,这一步不能省略。使用如下系统自带命令修改 sudoers 文件。

visudo

在里面添加这一行即可:

artin ALL=(ALL) ALL

36b5901fa80f.png

这里我只把自己的用户名写进去了,你也可以设置一个用户组的权限,然后将你的用户加入到该用户组。

切换 WSL 默认用户

在 cmd 中打开你的安装目录:

c8979e233688.png

执行:

Arch.exe config --default-user artin

玩转 Arch WSL

然后就是一些我自己喜欢的配置啦。

pacman 使用方法

ArchLinux 必备命令记录 (manjaro) - weixin_42408100 的博客 - CSDN 博客 https://blog.csdn.net/weixin_42408100/article/details/82526087

常用命令 解释
pacman -Sy abc 和源同步后安装名为 abc 的包
pacman -S abc 从本地数据库中得到 abc 的信息,下载安装 abc 包
pacman -Sf abc 强制安装包 abc
pacman -Ss abc 搜索有关 abc 信息的包
pacman -Si abc 从数据库中搜索包 abc 的信息
pacman -Syu 同步源,并更新系统
pacman -Sy 仅同步源
pacman -R abc 删除 abc 包
pacman -Rc abc 删除 abc 包和依赖 abc 的包
pacman -Rsn abc 移除包所有不需要的依赖包并删除其配置文件
pacman -Sc 清理 /var/cache/pacman/pkg 目录下的旧包
pacman -Scc 清除所有下载的包和数据库
pacman -Sd abc 忽略依赖性问题,安装包 abc
pacman -Su --ignore foo 升级时不升级包 foo
pacman -Sg abc 查询 abc 这个包组包含的软件包
pacman -Q 列出系统中所有的包
pacman -Q package 在本地包数据库搜索 (查询) 指定软件包
pacman -Qi package 在本地包数据库搜索 (查询) 指定软件包并列出相关信息
pacman -Q | wc -l 统计当前系统中的包数量
pacman -Qdt 找出孤立包
pacman -Rs $(pacman -Qtdq) 删除孤立软件包(递归的,小心用)
pacman -U abc.pkg.tar.gz 安装下载的 abs 包,或新编译的本地 abc 包
pacman-optimize && sync 提高数据库访问速度

安装网络相关的工具

参考 http://www.linuxdiyf.com/view_218403.html 安装 archlinux 以后没有 ifconfig, route, nslookup 等命令

  • ifconfig、route 在 net-tools 中
  • nslookup、dig 在 dnsutils 中
  • ftp、telnet 等在 inetutils 中
  • ip 命令在 iproute2 中
pacman -S net-tools dnsutils inetutils iproute2

配置基本环境

安装 fakeroot、binutils 等打包基本工具

pacman -S base-devel

我这里会提示 fakeroot 被 ignore 了,因为 /etc/pacman.conf 里写了~

不输入数字的话默认会安装 base-devel 里的所有包。

安装配置 zsh

安装 zsh 和 oh-my-zsh

zsh 又好看又好用又强大~

先将代理设置为我本地的代理链接,因为等下 oh-my-zsh 的脚本会从 github 下载东西,国内下的慢~

export ALL_PROXY="http://127.0.0.1:7890"
export all_proxy="http://127.0.0.1:7890"

先安装 zsh,再装 oh-my-zsh

在终端执行:

sudo pacman -S zsh
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

配置 alias

之后要经常修改 zsh,先配置几个方便、快捷的 alias。

编辑 ~/.zshrczsh 的配置文件。

vim ~/.zshrc

在文件的最后几行加上:

alias vizsh="micro ~/.zshrc"
alias ohmyzsh="micro ~/.oh-my-zsh"
alias rezsh="source ~/.zshrc"

这里的 micro 是我在用的编辑器:

zyedidia/micro

你可以改成你喜欢的, whatever.

保存后要在终端里激活一下 zsh 的配置文件:

source ~/.zshrc

即可~

配置 PATH 变量

WSL 中的环境变量会来自 Windows 系统,所以如果你两边都装了 npm 或者 python,可能会引起各种报错…

b8ea5455abef.png

所以手动的精简一些环境变量,从上面这个图中拿下来一点就好啦。

编辑 ~/.zshrc

vizsh

添加:

export PATH="$HOME/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export PATH="/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:$PATH"
# 添加 `c/WINDOWS/system32` 这些目录是为了支持在 `vscode` 的 `remote-wsl`。
export PATH="/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:$PATH"
# 为了使用 vscode 的 `code .`
export PATH="/mnt/c/Users/withw/AppData/Local/Programs/Microsoft VS Code/bin:$PATH"

这里的都是我需要的,你可以根据自己的需要来判断用什么。

2d667f7ba442.png

zsh 的其他的一些配置

配置 oh-my-zsh 的自带几个插件:

找到下面这一行,填入即可。

plugins=(git npm node history)

配置 zsh「不匹配通配符」:这个蛮有用的,比如想用 find *.txt 的时候。

setopt no_nomatch

设置几个顺手的函数:

proxy () {
    export ALL_PROXY="http://127.0.0.1:7890"
    export all_proxy="http://127.0.0.1:7890"
    http --follow -b https://api.ip.sb/geoip
}

unpro () {
    unset ALL_PROXY
    unset all_proxy
    http --follow -b https://api.ip.sb/geoip
}

# 参考自:
# 来源:Ubuntu「一键」设置代理 | Sukka's Blog
# 链接:https://blog.skk.moe/post/enable-proxy-on-ubuntu/

ip_ () {
    http --follow -b https://api.ip.sb/geoip
}

git-config() {
    echo -n "Please input Git Username: "
    read username
    echo -n "Please input Git Email: "
    read email
    echo -n "Done!"
    git config --global user.name "${username}"
    git config --global user.email "${email}"  
}
# 参考自:
# 链接:https://github.com/SukkaW/dotfiles

上面的脚本中的 http 命令来自 httpie
安装:

pacman -S httpie

在 VSCode 中使用 WSL

待补充

更多优化配置

可参考知乎这篇:利用 WSL 打造 Arch 开发环境

大概就先写这么多吧~

总得有个结尾吧