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
如果显示有乱码,那可能是缺少字体的缘故,安装相应字体就可以了。
总结
总体来说,WSL的表现还是不错的,大部分的工作都能完成。以前想在Windows下运行Linux,或者用虚拟机,或者是Cygwin,比较起来,WSL有自己的优势,而且WSL还在不断迭代发展,值得尝试和期待。