WSL的美化与开发环境的配置
Linux的最佳发行版本是什么?WSL!!!
好吧这是我口胡的,不过WSL确实在一定程度上方便了部分Linux开发,因此我也尝试了使用WSL,然后发现:真香!
网上关于WSL的配置文档很多,不过我配过几次WSL,每次都要网上找很麻烦,因此就把我自己的相关配置写下来,方便以后万一要重新配置使用。
这里选择的是Ubuntu子系统
下面的操作默认在普通用户下执行,若命令前有‘#’则代表在root下进行
以下操作来自网络以及个人亲自实践
换源(清华源)
$ sudo vim /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
系统更新
$ sudo apt update
$ sudo apt upgrade
删除文档
WSL不推荐安装桌面环境,因此文档等于无用,还占空间,因此选择删除
根据Ubuntu wiki,我们可以指示dpkg不要安装任何文档。这样可以防止apt安装任何文档(版权信息除外)。
$ sudo vim /etc/dpkg/dpkg.cfg.d/01_nodoc
加入以下内容:
path-exclude /usr/share/doc/*
# we need to keep copyright files for legal reasons
path-include /usr/share/doc/*/copyright
path-exclude /usr/share/man/*
path-exclude /usr/share/groff/*
path-exclude /usr/share/info/*
# lintian stuff is small, but really unnecessary
path-exclude /usr/share/lintian/*
path-exclude /usr/share/linda/*
接着手动删除已安装文档
$ sudo find /usr/share/doc -depth -type f ! -name copyright|xargs rm || true
$ sudo find /usr/share/doc -empty|xargs rmdir || true
$ sudo rm -rf /usr/share/man/* /usr/share/groff/* /usr/share/info/*
$ sudo rm -rf /usr/share/lintian/* /usr/share/linda/* /var/cache/man/*
当然也可以通过以下命令删除文档
$ sudo apt --purge remove ****
开启ssh
安装
$ sudo apt remove openssh-server
# 这一步是必需的
$ sudo apt install openssh-server
修改配置
$ sudo vim /etc/ssh/sshd_config
在其中找到并修改:
port 2222
PasswordAuthentication yes
启动
$ sudo service ssh --full-restart
安装mysql
安装
$ sudo apt install mysql-server
配置
不打算删除localhost的root账户,因此建立了一个用于一般工作使用的可远程访问的test账户
$ sudo service mysql start
$ sudo mysql -u root -p
CREATE USER 'test'@'%' IDENTIFIED BY 'test';
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';
FLUSH PRIVILEGES;
开启远程访问
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到bind-address,把127.0.0.1改成0.0.0.0
开启服务
$ sudo service mysql start
安装redis
安装
$ sudo apt install redis-server
配置远程访问
$ sudo vim /etc/redis/redis.conf
找到并注释掉下面一行,或者把127.0.0.1改成0.0.0.0
bind 127.0.0.1
开启服务
$ sudo service redis-server start
中文支持和字体
改系统语言为中文
$ sudo apt install language-pack-zh-hans
$ sudo update-locale LANG=zh_CN.UTF-8
不推荐安装中文,若要改回英文,则输入下面指令即可
$ sudo update-locale LANG=en_US.UTF-8
安装中文字体
$ sudo mkdir /usr/share/fonts
$ sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windows
$ sudo apt install fontconfig
$ sudo fc-cache -fv
安装git及配置SSH密钥连接Github
安装git
$ sudo apt install git
设置git账户
执行如下两条命令设置git账户的用户名和密码:
$ git config --global user.name "Your Name"
$ git config --global user.email "youremail@domain.com"
查看git config的信息:
$ git config --list
生成SSH公钥(摘自网络)
SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录。先确认是否已经有一个公钥了:
$ cd ~/.ssh
/bin/sh: cd: can't cd to /root/.ssh
主要是看是否存在 id_dsa 或 id_rsa 文件。有 .pub 后缀的文件就是 公钥,另一个文件则是密钥。
创建新的SSH密钥
如果已经存在公钥,可跳过这步。如果没有,使用 ssh-keygen 来创建:
$ cd ~
$ ssh-keygen -t rsa -C "youremail@domain.com"
示例:(xxxxxx@126.com 为我的账户邮箱)
~ # ssh-keygen -t rsa -C "xxxxxx@126.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
# 直接回车,则将密钥按默认路径及文件名进行存储。此时也可以输入特定的文件名
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
# 根据提示,你需要输入密码和确认密码。可以不填,设置为空值,直接回车
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:yFt14TcP0H+ixy9VKiILPPJ6DVevkKgrbxVFqk7mn5k xxxxxx@126.com
The key's randomart image is:
+---[RSA 2048]----+
| o. |
| . . o. |
| o . o +. |
| .... ... ..++|
| . o .So . o+|
| + o Bo= . + + .|
| = *.* + o o |
| ++o o o . . .|
| E=++ . |
+----[SHA256]-----+
查看生成的文件:
$ cd ~/.ssh
$ ls
id_rsa id_rsa.pub known_hosts
文件 id_rsa.pub 就是公钥。
在 GibHub 中添加你的公钥
复制公钥 id_rsa.pub 文件中的内容。
我这里使用 XShell 来登录的linux服务器,可以直接复制出来。或在 vim 下,可通过命令 ggVG 全选,+y 复制选中内容到+寄存器,也就是系统的剪贴板,供其他程序使用。
登陆Github网站,选择 Settings –> SSH and GPG keys 菜单,点击 New SSH key 按钮。
粘贴你的密钥到 Key 输入框中并设置 Title 信息,点击 Add SSH key 按钮完成。
连接测试
测试 SSH keys 是否设置成功,执行如下命令:
$ ssh -T git@github.com
当提示如下信息时,说明正常连通了github:
Hi xxxxxx! You've successfully authenticated, but GitHub does not provide shell access.
如果你是第一次设置连接github.com,会询问你是否继续,输入 yes 即可,这样就会将连接地址记录在本地:
$ ssh -T git@github.com
The authenticity of host 'github.com (192.30.253.112)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpxxxxxxxxARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.253.112' (RSA) to the list of known hosts.
Hi xxxxxx! You've successfully authenticated, but GitHub does not provide shell access.
然后就可以将本地的项目用github来管理了。
出错(自己遇到的问题)
如果在powershell下面已经生成过密钥,那么在测试连接时会发生如下情况:
$ ssh -T git@github.com
git@github.com: Permission denied (publickey).
这时我们查看该目录下的文件就会发现:
$ ls
known_hosts
公钥和密钥都不见了
那么我们就在win下操作,将公钥和密钥中的内容复制,在WSL下创建公钥和密钥,将内容复制进去。但是,这时连接会出现以下情况:
$ ssh -T git@github.com
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/ljw/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/ljw/.ssh/id_rsa": bad permissions
git@github.com: Permission denied (publickey).
权限不够,那么只需要运行下面一行代码即可:
$ sudo chmod 700 id_rsa
虽然不知道什么原理。
安装zsh
安装
$ sudo apt install zsh
$ sudo chsh -s $(which zsh)
$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
启动zsh
$ sudo vim ~/.bashrc
加入以下内容:
# Launch Zsh
if [ -t 1 ];
then
exec zsh
fi
开机启动ssh,mysql和redis
$ sudo vim ~/.zshrc
加入以下内容:
echo "Detect the boot startup item"
if [ ! -e "/var/run/sshd.pid" ]; then
echo 'start sshd'
sudo service ssh start
fi
if test $( pgrep -f mysql | wc -l ) -lt 1
then
echo "start mysql"
sudo service mysql start
fi
if test $( pgrep -f redis | wc -l ) -lt 1
then
echo "start redis"
sudo service redis-server start
fi
启动显示
$ sudo vim ~/.zshrc
加入以下内容:
umask 0022
export DISPLAY=localhost:0.0
修改wsl里面查看windows磁盘文件的颜色
$ dircolors -p > $HOME/.dircolors
$ vim $HOME/.dircolors
将 STICKY_OTHER_WRITABLE 后面的数字改成02;32 OTHER_WRITABLE 后面的数字改成01;34
$ sudo vim ~/.zshrc
加入以下内容:
eval $(dircolors -b $HOME/.dircolors)
修改主题
$ sudo vim ~/.zshrc
将下面这一行的值改成ys(个人觉得这个主题很好)
ZSH_THEME="rubbyrussell"
安装miniconda
虽然anaconda更省心,所有的包都有了,但是有一些可视化应用根本无法使用,因此这边选择轻量版的miniconda,当然,如果不在意这点的空间消耗的话,那就直接安装anaconda即可。
安装
$ sudo apt install wget
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ bash Miniconda3-latest-Linux-x86_64.sh
# 一直按回车然后输入yes
please answer 'yes' or 'no':
>>> yes
# 选择安装路径, 文件名前加点号表示隐藏文件
Miniconda3 will now be installed into this location:
>>> ~/.miniconda3
# 添加配置信息到 ~/.zshrc文件
Do you wish the installer to initialize Miniconda3 by running conda init? [yes|no]
[no] >>> yes
# 运行配置信息文件或重启电脑
$ source ~/.zshrc
# 测试是否安装成功
$ conda --version
# 若依旧不行
$ sudo vim ~/.zshrc
export export PATH="/home/ljw/miniconda3/bin:$PATH"
$ source ~/.zshrc
换清华源
个人觉得conda官方源挺快的,也就没改清华源。不过这边还是做一下记录,若需要修改,则:
显示所有channel
$ conda config --show
#显示出所有conda的config信息
$ conda config --show channels
#只看channels的信息
添加可用的清华源
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
$ conda config --set show_channel_urls yes
conda config --set show_channel_urls yes的意思是从channel中安装包时显示channel的url,这样就可以知道包的安装来源了。
顺带修改一下安装前的确认
$ conda config --set always_yes false
(这里的意思是安装确认中,不默认yes,而是由我来决定)
移除清华源镜像
$ conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda指令操作
基本操作
升级全部库:conda upgrade --all
升级一个包:conda update packagename
安装包(可以同时安装多个包):conda install packagename
安装固定版本的包:conda install packagename=version
移除一个包:conda remove packagename
查看所有包:conda list
删除没有用的包:conda clean -p
tar打包:conda clean -t
删除所有的安装包及cache:conda clean -y --all
管理python环境
创建虚拟环境:conda create -n env-name list of packagename
指定python版本:conda create -n env_name python2=2.7 list of packagename
激活环境:activate env_name
退出环境:deactivate env_name
删除虚拟环境:conda env remove -n env_name
显示所有虚拟环境:conda env list
安装jdk
虽然这个jdk环境不能用于直接编写代码使用,但还是可以用于运行jar包,浏览器访问没什么问题。
这里选择安装openjdk-8-jdk
$ sudo apt install openjdk-8-jdk
查看java版本,检查是否安装成功
$ java -version
如果安装了多个版本的jdk,可以通过以下指令在版本之间切换:
$ sudo update-alternatives -config java
安装GCC,GDB等
安装gcc
方法一:
$ sudo apt builed-dep gcc
方法二:
$ sudo apt install build-essential
方法三:
$ sudo apt install gcc
查看版本:
$ gcc --version
安装gdb等
$ sudo apt install gdb clang cmake
安装texlive
可以选择使用sudo apt install texlive-full一步到位,不过会占用更多空间,毕竟一些图形化软件压根没用,所以可以选择下面的安装:
安装latex:
$ sudo apt install texlive-latex-base
安装中文环境:
$ sudo apt install latex-cjk-all
安装额外包:
$ sudo apt install texlive-latex-extra
安装xelatex:
$ sudo apt install texlive-xelatex
texlive的文档占用空间很大,所以个人非常推荐先完成删除文档的操作。








