深入体验bash on windows!在windows上搭建原生…

深入体验bash on windows!在windows上搭建原生…,第1张

深入体验bashonwindows!在windows上搭建原生…

在今年的微软Build2016大会上,最让开发者兴奋的一个消息是,linuxbash可以在Windows上原生运行,这是开发者最喜欢的消息。

1。安装

您必须安装开发者预览版才能使用windows的linux子系统功能。

  • 首先,打开你的Windows10设置。在“更新和安全”选项中(我的机器是英文 *** 作系统,中文 *** 作系统差不多),选择“开发者”,然后选择“开发者模式”;
  • 在WindowsUpdate和安全选项中,选择“WindowsUpdate”,在“更新设置”中选择高级选项。您必须打开“内部预览版本”选项,并将内部预览级别设置为最快;
  • 在“设置”->“系统”选项中,查看当前系统信息,你的OS版本必须是14316,如果不是这个版本,请运行在线升级到这个版本;
  • 升级完成后,打开“控制面板”-“程序”,选择“打开或关闭Windows功能”,找到Windows子系统forlinux(beta),点击确认,系统将下载更新并提示重启机器;
  • 重启后,进入命令行程序。激动人心的时刻来了。当您在命令行中点击bash时,会提示您是否继续。选择是,系统将安装Ubuntu文件系统。等待完成后,系统将切换到您熟悉的linuxbash模式。试试你熟悉的命令,比如ls;
  • 打开Windows菜单,你会发现系统多了一个Ubuntu图标,是bashonUbuntuonWindows;
  • 简单测试一下python,perl等语言,发现已经安装了。当然,这是Ubuntu的狂欢。可以安装Java,Ruby等等。
  • 让我们在windows环境下实际测试一下ubuntu吧!

    2。系统检测和更新

    版本2.1检测

    运行uname-a的结果如下:

    webmaster@FEKETERIGO-PC:~$uname-a LinuxFEKETERIGO-PC3.4.0+#1
    PREEMPTThuAug117:06:05CST2013x86_64x86_64x86_64GNU/Linux webmaster@FEKETERIGO-PC:~$

    运行lsb_release-a的结果如下:

    webmaster@FEKETERIGO-PC:~$lsb_release-a NoLSBmodulesareavailable. DistributorID:Ubuntu Description:Ubuntu14.04.4LTS Release:14.04 Codename:trusty

    可以看到,安装了ubuntu14.04trusty。

    2.2系统更新

    既然是ubuntu,可以用apt-get进行包管理。

    首先替换自己的更新源。

    sudomv/etc/apt/sources.list/etc/apt/sources.list.save

    将以下Alisource内容粘贴到/etc/etc/apt/sources.list中

    debhttp://mirrors.aliyun.com/ubuntu/trustymainrestricteduniversemultiverse debhttp://mirrors.aliyun.com/ubuntu/trusty-securitymainrestricteduniversemultiverse debhttp://mirrors.aliyun.com/ubuntu/trusty-updatesmainrestricteduniversemultiverse debhttp://mirrors.aliyun.com/ubuntu/trusty-proposedmainrestricteduniversemultiverse debhttp://mirrors.aliyun.com/ubuntu/trusty-backportsmainrestricteduniversemultiverse deb-srchttp://mirrors.aliyun.com/ubuntu/trustymainrestricteduniversemultiverse deb-srchttp://mirrors.aliyun.com/ubuntu/trusty-securitymainrestricteduniversemultiverse deb-srchttp://mirrors.aliyun.com/ubuntu/trusty-updatesmainrestricteduniversemultiverse deb-srchttp://mirrors.aliyun.com/ubuntu/trusty-proposedmainrestricteduniversemultiverse deb-srchttp://mirrors.aliyun.com/ubuntu/trusty-backportsmainrestricteduniversemultiverse

    也可以使用163源等。选择原则是更新速度。目前的测试显示,阿里云的更新速度最快。

    然后运行以下命令来更新系统。如果速度很慢,请尝试使用其他信号源。另外,ubuntu的源码是版本依赖的。注意不要添加错误版本的源代码。

    sudoapt-get更新

    sudoapt-get升级

    在使用sudo命令之前,可以运行passwd来更新当前用户的命令。默认情况下,bashonwindows在用户模式下运行。

    Windows会将当前用户添加到sudoer列表中。如果要切换到超级管理员,需要手动输入su-

    3。构建开发环境

    3.1用apt和ppa库安装Git

    ubuntutrusty的默认git版本是1.9.1。

    如果不想用最新版本的git,可以运行sudoapt-getinstallgit直接安装。

    如果你想安装最新的git版本,请参考下面的命令

    sudoadd-apt-repositoryppa:git-core/ppa sudoapt-getupdate sudoapt-getinstallgit

    sudoAdd-apt-RepositoryPPA:git-core/PPA会在/etc/apt/sources.list.d目录下生成一个git-core-ppa-trusty.list文件,然后当你运行sudoapt-get更新时,你会从相应的仓库中获得新的git版本信息。

    因为每个人的网络环境不同,如果你的更新失败,无法使用apt-get安装最新版本的git,请从github下载源代码编译安装,过程也很简单。

    这里就不写源代码编译教程了。点击git源代码:https://github.com/git/git.

    3.2用pyenv构建python开发环境

    命令如下

    sudoapt-getinstallcurl curl-Lhttps://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer
    |bash pyenvinstall2.7.11 pyenvinstall3.5.1 pyenvshell3.5.1

    python的2.x和3.x版本不兼容,所以在本地安装两个版本,并在必要时切换版本。使用命令pyenvshell2.7.11。

    指定的python版本。上述命令指定的python版本是3

    python的另一个有用的工具是virtualenv,它可以用pyenv切换python版本,但实现方法却大相径庭。

    Pyenv在用户模式下安装多个版本的python,但是每个python版本的包依赖于同一个安装位置,无法解决两个项目中的引用。

    同一个库中有版本冲突,但是viertualenv可以。

    Virtualenv为每个python项目安装一个内部python。具体的版本可以在初始化的时候指定,项目的依赖项也安装在内部python中。

    下面,这样可以防止与系统上其他python项目的依赖冲突,隔离性更高。不好的地方是安装和使用略显复杂。

    使用哪种工具取决于你的个人喜好。github上的pyenv更受关注,现在pyenv有了一个virtualenv插件,可以使用后者同样的功能。

    个人还是推荐用pyenv。

    3.3用rvm安装ruby

    curl-Lhttps://get.rvm.io|bash-sstable--autolibs=enabled--ruby rvminstall2.3.1 bash--login rvmuseruby-2.3.1

    在rvm帮助中输入具体命令,很容易掌握。

    3.4使用gvm安装go语言

    curl-Lhttps://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer
    |bash gvminstallgo1.6 gvmusego1.6--default

    因为hugo是用go语言开发的,所以借此机会学习一些google开发的编程语言,这个博客是用的。

    Hugo搭建的,服务器使用firebase,提供和githubpages一样的免费静态服务。

    服务器的功能和稳定性都比github好,国内github的访问速度也不能再慢了,尤其是克隆体比较大的项目。

    用go语言开发的程序有一个好处就是没有运行时依赖,打包成exe就可以直接运行,简单方便。后面会有更多的内容更新,集中在这里的开发环境。

    建立在这个主题上。

    3.5使用nvm安装nodejs

    curl-o-https://raw.githubusercontent.com/creationix/nvm/v0.30.0/install.sh
    |bash nvminstallv6.2.0 nvmusev6.2.0

    Node.js可以说是2015年以来最火的语言。node.js是后端工程师转前端的最佳工具。博主一起是java后端开发工程师。一个偶然的机会,他们学习了node.js,然后开始了自己前端工程师的进化,目标是全栈工程师。

    Node.js还有一个npm包N,可以用于版本管理。不过需要先安装node.js,用NPMInstall-GN安装这个工具,N和nvm都非常好用。你可以选择一个或两个都选。它们之间没有冲突,可以共存。

    这里请注意,如果使用的是windowsbuild14352,使用nvm安装nodejs时可能会出现错误。详情见此:https://github.com/Microsoft/BashOnWindows/issues/426.

    我装的时候有问题,但是没看到其他人遇到这个问题。如果安装的windows预览版比14352新,可以自己测试。

    3.6安装gcc工具链

    sudoapt-getinstallpython-software-properties sudoadd-apt-repositoryppa:nginx/stable sudoapt-getupdate sudoapt-getinstallnginx

    这些工具不仅被C和c++开发人员使用。如果开发node.js原生模块,还需要这些工具。

    3.7安装nginx

    sudoapt-getinstallpython-software-properties sudoadd-apt-repositoryppa:nginx/stable sudoapt-getupdate sudoapt-getinstallnginx

    就像安装git的时候,通过添加nginx的第三方库,实现apt-get方法来安装最新版本的nginx,比源码编译安装方法要方便一点。

    3.8安装带外壳的防锈漆

    命令,很简单。

    卷曲-sSfhttps://static.rust-lang.org/rustup.sh|上海

    Rust是一种和node.js一样流行的新兴编程语言,但和node.js不同的是,rust不是前端编程语言,而是系统编程语言。

    Rust安全,高并发,大量吸收现代高级编程语言,尽量避免现有编程语言的各种缺点。给我印象最深的一个特点是

    rust的垃圾收集机制

    一开始rust也是用类似java语言的垃圾收集器方法来实现垃圾收集,后来受不了gc了。

    运行时性能损失,我实现了更高效的垃圾收集机制,大大提高了系统的稳定性和性能。

    而且rust在1.0的时候就已经bootstrapped(自编译)了,以后的rust版本都是rust自己编译,包括编译器。

    唯一不好的是rustlanguage使用了极其复杂的语法,最大程度上帮助开发者避免犯错。不建议初学者学习编程语言。

    Rust,因为rust的学习曲线很陡,所以选择C或者java作为入门语言就不错了。

    4。最终总结

    本文虽然不谈一些深刻的内容(水平有限),但还是总结了一些。

    4.1关于包管理

    无论 *** 作系统,linux,mac,windows,还是编程语言,java,node.js,rust,流行的趋势是自带包管理工具。linux有apt,centos有yum,mac有brew,windows目前没有,以后也不排除。win10应用商店已经有了,估计应用管理工具也不行。

    Java没有自己的包管理工具,但是maven,node.js有npm,rust有cargo。

    使用包管理工具可以帮助开发者解决很多问题,比如版本管理、依赖管理甚至软件发布。node.jsd的包由npm发布。

    所以我觉得自带包管理工具应该是未来编程语言的趋势,而这方面做的最差的就是java,从make到ant到ivy到maven到gradle,java的包。

    管理最复杂。如果建议学习java,也可以用gradle打包android项目。是目前最好的工具。

    此外, *** 作系统的包管理工具比编程语言有更长的历史,几乎每个类似linux的 *** 作系统都有自己的包管理工具。

    4.2版本管理

    软件版本管理

    每个软件都会进行版本迭代,有时候在版本更新的时候会出现破更新。为了便于版本切换,许多编程语言

    两者都提供版本管理工具(第三方的),所以不知道能不能在编程语言中加入这个功能。简而言之,编程语言可以带有版本管理。

    工具(就像包管理工具一样),可以更快的实现版本切换。

    4.3以开发者为中心

    随着windows开始拉拢开发者和软件工程师,我认为在以开发者为中心的时代,开发者的春天正在到来

    我的个人博客网站https://ideras.me

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/764373.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-01
    下一篇 2022-05-01

    发表评论

    登录后才能评论

    评论列表(0条)

    保存