在 WSL 中配置开发环境

本帖记录了一些我常用的 WSL 设置。

安装常用包

Ubuntu:

sudo apt install build-essential

Debian:

sudo apt install gcc g++

Debian Common:

sudo apt install gdb valgrind git gpg curl wget zip unzip zsh

设置 Zsh

/bin/zsh 设置成默认 shell

chsh -s /bin/zsh

安装 oh-my-zsh 和常用插件

wget https://gist.githubusercontent.com/dingwen07/1261eac531f7f080d72b78f931a8ca01/raw/omz-setup.sh
chmod +x ./omz-setup.sh
./omz-setup.sh

编辑 ~/.zshrc 启用插件

plugins=(
    git
    zsh-autosuggestions
    zsh-syntax-highlighting
)

Java 环境

一般使用 Home | SDKMAN! the Software Development Kit Manager 管理 Java 环境。需要安装 unzip 包。

curl -s "https://get.sdkman.io" | bash

为 WSL 配置 Windows Terminal

为 CLI 程序开启鼠标滚动功能

默认情况下 WSL 中的 CLI 程序比如 lessnano 不支持鼠标滚动,需要手动设置。设置完成之后,鼠标操作将默认由应用程序接收,如需选中对应程序中的内容,需要按住 Shift 键然后再进行选择。

less (包括 man

将下面的内容保存为文本文件:

#env
LESS = --mouse

然后运行 lesskey <filename>(较新的发行版可以忽略这一步,将文本保存到 ~/.lesskey 即可)。

nano

~/.nanorc 中添加:

set mouse

vi[m]

~/.vi[m]rc 中添加:

set mouse=a

SSH Agent

使用 npiperelay.exe 将 Windows 套接字 //./pipe/openssh-ssh-agent 转发到 WSL12

首先需要确保 Windows 的 PATH 里有 npiperelay.exe,这样 WSL 内部就可以直接访问。可以通过 WinGet 安装。之后在 WSL 的系统里安装 socat

sudo apt install socat

然后将这一段脚本写入 ~/.win-ssh-agent/agent-bridge.sh

# Code extracted from https://stuartleeks.com/posts/wsl-ssh-key-forward-to-windows/ with minor modifications

# Configure ssh forwarding
export SSH_AUTH_SOCK=$HOME/.win-ssh-agent/agent.sock
# need `ps -ww` to get non-truncated command for matching
# use square brackets to generate a regex match for the process we want but that doesn't match the grep command running it!
ALREADY_RUNNING=$(ps -auxww | grep -q "[n]piperelay.exe -ei -s //./pipe/openssh-ssh-agent"; echo $?)
if [[ $ALREADY_RUNNING != "0" ]]; then
    if [[ -S $SSH_AUTH_SOCK ]]; then
        # not expecting the socket to exist as the forwarding command isn't running (http://www.tldp.org/LDP/abs/html/fto.html)
        echo "removing previous socket..."
        rm $SSH_AUTH_SOCK
    fi
    echo "Starting SSH-Agent relay..."
    # setsid to force new session to keep running
    # set socat to listen on $SSH_AUTH_SOCK and forward to npiperelay which then forwards to openssh-ssh-agent on windows
    (setsid socat UNIX-LISTEN:$SSH_AUTH_SOCK,fork EXEC:"npiperelay.exe -ei -s //./pipe/openssh-ssh-agent",nofork &) >/dev/null 2>&1
fi

之后在 .bashrc 或者 .zshrc 中添加

source $HOME/.win-ssh-agent/agent-bridge.sh

就可以了。

GnuPG

参照 在 WSL2 中使用 GPG 命令行工具以及对 Git commit 进行签名

1Password CLI

使用 op 命令行进行方便且安全的凭据存取,首先在 Windows 中安装:

winget install AgileBits.1Password.CLI

之后在 .bashrc 或者 .zshrc 中添加如下内容:

# Aliases
alias op="op.exe"
# alias sudo="sudo -S <<< $(op read "op://Personal/Account Password/password")"

# Completions
eval "$(op completion zsh)"; compdef _op op.exe

参考

  1. Use 1Password SSH Agent in WSL – DEV Community ↩︎
  2. Forwarding SSH Agent requests from WSL to Windows – stuartleeks.com ↩︎

在 WSL2 中使用 GPG 命令行工具以及对 Git commit 进行签名

网上找到的绝大多数方法都是使用 npiperelay 将 Gpg4win 的 GPG 的 Agent 的 socket 映射到 WSL2 里面,其实更简单的方法是直接在 WSL2 内部使用 gpg.exe

如果想要为 Git 签名但是私钥在智能卡里,可以直接设置 git config --global gpg.program gpg.exe,(如果GPG 不在 Windows 的 PATH 里,需要使用绝对路径,通常为 /mnt/c/Program Files (x86)/GnuPG/bin/gpg.exe,为了方便最好还是加到 PATH 里面去,加完之后需要打开一个新的终端)。

除非程序需要直接的 GPG Agent 访问或者不支持自定义 GPG 二进制,这个方案都比映射 GPG Agent 的套接字要方便不少。

使用 TinyProxy 搭建代理服务器

安装

sudo apt update
sudo apt install tinyproxy

配置

TinyProxy配置文件位于
/etc/tinyproxy.conf

注释掉 Allow 127.0.0.1 即可允许任何局域网设备连接

管理服务

启动

sudo service tinyproxy start

停止

sudo service tinyproxy stop

重新启动

sudo service tinyproxy restart

[转载] Ubuntu 18.04 安装 Docker

第一种方法

从Ubuntu的仓库直接下载安装。安装比较简单,这种安装的Docker不是最新版本,不过对于学习够用了,依次执行下面命令进行安装。

$ sudo apt install docker.io

启动Docker服务:

$ sudo systemctl start docker
$ sudo systemctl enable docker

查看是否安装成功:

$ docker -v
Docker version 17.12.1-ce, build 7390fc6

第二种方法

从Docker仓库下载安装。这种安装方式首先要保证Ubuntu服务器能够访问Docker仓库地址:https://download.docker.com/linux/ubuntu,如果能够访问,按照下面的操作步骤进行安装。

$ sudo apt update
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common

在/etc/apt/sources.list.d/docker.list文件中添加下面内容:

deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable

添加秘钥

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

安装docker-ce

$ sudo apt install docker-ce

查看是否安装成功:

$ docker -v
Docker version 18.03.1-ce, build 9ee9f40
原帖地址:https://blog.csdn.net/u010889616/article/details/80170767
作者:dmfrm

Ubuntu 安装 OpenVPN

介绍

希望通过自己的智能手机或者笔记本经由非受信网络(例如旅馆或者咖啡厅WiFi)安全访问互联网?虚拟专有网络 (VPN)无疑是最理想的解决方案。流量会首先被引导至VPN服务器,而后再前往目的地。

步骤

执行

$ sudo wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh

或者下载 openvpn-install.sh (openvpn-install) 然后执行

$ sudo bash openvpn-install.sh

安装完成后,会在当前目录生成 .ovpn 文件,将这个文件从服务器中下载。在客户端程序中导入这个文件。

 

Copyright (c) 2013 Nyr. Released under the MIT License.

GitHub: https://github.com/Nyr/openvpn-install