目录

Windows Subsystem for Linux(WSL)使用体验

由于工作的原因,个人的主要开发环境是Unix/Linux,所以一直对Linux桌面系统抱有很大的期望。然而一晃多年,尽管Linux已经统治了服务器领域,但在桌面领域的表现依旧可怜,所以后来就转用Mac了。

不过,随着微软在Windows 10上推出Windows Subsystem for Linux(WSL),从而能够在Windows上直接运行Linux二进制代码,顿时眼前一亮:如果能将Windows桌面与Linux环境结合,各自取长补短,不也是一个很好的解决方案吗?

于是,就在一台Windows 10机器上操练起来了。

本文的素材写于2018年10月,随着时间推移,WSL也在不断进化,所以内容可能有过时的部分,仅供参考。

安装

安装过程可参考微软的官方文档:

这里安装的版本是Ubuntu。

首次启动,需要创建一个用户名和密码,之后就如同在Linux下操作了。

使用

更新系统

使用过程中需要不时更新下系统,以便获得软件最新的版本和补丁:

$ sudo apt-get update
$ sudo apt-get upgrade

个人常用aptitude代替apt-get:

$ sudo apt-get install aptitude
$ sudo aptitude update
$ sudo aptitude upgrade

操作Windows文件

WSL缺省把磁盘分区挂载到/mnt/的相应目录下,比如C盘的目录是/mnt/c/,可以进入相关路径操作Windows系统上的文件。

如果要手动挂载其他分区,可使用mount命令,比如挂载E盘:

$ mount -t drvfs e: /mnt/e

安装软件

使用apt工具安装,比如安装一些网络工具:

$ sudo aptitude install traceroute
$ sudo aptitude install nmap
$ sudo aptitude install fping
$ sudo aptitude install httping
$ sudo aptitude install lynx
$ sudo aptitude install lftp
$ sudo aptitude install curl
$ sudo aptitude install whois
$ sudo aptitude install httpie

安装一些开发工具:

$ sudo aptitude install build-essential
$ sudo aptitude install flex
$ sudo aptitude install bison
$ sudo aptitude install autoconf
$ sudo aptitude install libtool
$ sudo aptitude install cvs
$ sudo aptitude install subversion
$ sudo aptitude install git git-doc git-svn git-email
$ sudo aptitude install mercurial

运行服务器程序

虽然WSL的主要目的是使用一些客户端工具,但运行服务器程序也是可以的。

比如安装redis服务:

$ sudo aptitude install redis-server

启动redis:

$ sudo service redis-server start

这时,你如果运行netstat命令,是看不到监听服务的,但实际服务已经在运行了。

运行redis-cli,可以看到服务是正常的:

$ redis-cli
127.0.0.1:6379> keys *
...
127.0.0.1:6379>

其实,在Windows的命令提示符运行netstat命令,是可以看到redis监听的6379端口的:

也就是说,WSL中的服务和Windows的服务之间是互通的。假设Windows下有一个http代理服务,监听在8118端口,我们可以在WSL下设置相应的环境变量来直接使用,而不需要在WSL中再单独安装类似的服务:

export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118

运行图形界面程序

WSL是字符界面,本身不能运行图形界面程序,是因为缺少Xwindow Server,但我们可以在Windows下启动一个Xwindow Server来解决。VcXsrv 就是这么一个工具。

启动VcXsrv后,在终端设置环境变量:

$ export DISPLAY=localhost:0

之后,就可以运行图形应用了,比如运行gitk: xserver.jpg

如果显示有乱码,那可能是缺少字体的缘故,安装相应字体就可以了。

总结

总体来说,WSL的表现还是不错的,大部分的工作都能完成。以前想在Windows下运行Linux,或者用虚拟机,或者是Cygwin,比较起来,WSL有自己的优势,而且WSL还在不断迭代发展,值得尝试和期待。