1. 程式人生 > >深入體驗bash on windows!在windows上搭建原生的linux開發環境環境

深入體驗bash on windows!在windows上搭建原生的linux開發環境環境

原文地址:http://www.softwen.cn/375.html

今年微軟Build 2016大會最讓開發人員興奮的訊息之一,就是在Windows上可以原生執行linux bash,對開發人員來說,這是一個喜聞樂見的訊息。

1、安裝

  你必須安裝開發者預覽版本,才能使用windows的linux subsystem功能。

首先開啟你的Windows 10的設定,在"更新和安全"選項中(我的機器是英文作業系統,但中文作業系統類似),選擇"開發者",然後選擇"開發者模式";

在Windows 更新和安全選項中,選擇"Windows 更新",在"更新設定"中選擇高階選項,你必須開啟"內部預覽版本"選項,並且將內部預覽的級別設定為最快;

在"設定"->"系統"選項中,檢視當前系統資訊,你的OS版本必須是14316,如果不是這個版本,請執行線上升級,升級到這個版本;

升級完成後,開啟"控制面板"-》"程式",選擇"開啟或者關閉Windows特性",找到Windows Subsystem for linux(beta)點選並確定,系統會下載更新並提示重啟機器;

重啟完成後,進入命令列程式,激動人心的時刻來臨了,在命令列下敲bash,會提示你是否繼續,選擇yes,系統會安裝Ubuntu檔案系統等待完成後,系統會切換到你熟悉的linux bash模式,試試你熟悉的ls等命令;

開啟Windows選單,你會發現系統中多了一個Ubuntu的圖示,這個就是bash on Ubuntu on Windows;

簡單測試一下python,perl等語言,發現已經裝好了,當然,這個就是Ubuntu的bash,你可以安裝Java,Ruby等等。

下面來實際測試下ubuntu on windows環境!

2、系統檢測和更新

2.1 版本檢測

執行 uname -a 結果如下:

  [email protected]:~$ uname -a

Linux FEKETERIGO-PC 3.4.0+ #1

PREEMPT Thu Aug 1 17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux

[email protected]:~$

執行 lsb_release -a 結果如下:

  [email protected]:~$ lsb_release -a

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 14.04.4 LTS

Release: 14.04

Codename: trusty

可以看到,安裝的是ubuntu 14.04 trusty

2.2 系統更新

既然是ubuntu,就可以使用apt-get進行軟體包管理。

首先替換自帶的更新源

  sudo mv /etc/apt/sources.list /etc/apt/sources.list.save

把下面的阿里源內容貼上到 /etc/apt/sources.list

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

你也可以使用163源等,選取原則是更新速度,目前測試的情況是阿里雲的源更新速度最快。

接著執行下面的命令進行系統更新,如果速度很慢的話請嘗試使用其他的源,另外ubuntu的源是版本相關的,注意別新增錯誤版本的源。

sudo apt-get update

sudo apt-get upgrade

使用sudo命令之前可以執行 passwd 更新當前使用者的命令, bashonwindows預設執行在使用者模式,

windows會把當前使用者新增到sudoer列表中,如果想切換到超級管理員,需要手動輸入su -

3、搭建開發環境

3.1 使用apt和ppa repository安裝git

ubuntu trusty預設的git版本是1.9.1

如果你不想使用git最新版本的話可以執行sudo apt-get install git 直接安裝

如果想安裝最新的git版本參考下面的命令

sudo add-apt-repository ppa:git-core/ppa

sudo apt-get update

sudo apt-get install git

sudo add-apt-repository ppa:git-core/ppa 會在/etc/apt/sources.list.d 目錄下面生成一個git-core-ppa-trusty.list檔案,然後執行sudo apt-get update 的時候會從相應的倉庫裡面獲取新的git版本資訊。

由於每個人的網路環境不一樣, 如果你更新失敗,使用apt-get不能安裝最新版本的git的話,請到github上面下載原始碼進行編譯安裝,過程也很簡單

這裡就不寫原始碼編譯教程了, git原始碼點選:https://github.com/git/git。

3.2 使用pyenv搭建python開發環境

命令如下

sudo apt-get install curl

curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

pyenv install 2.7.11

pyenv install 3.5.1

pyenv shell 3.5.1

python的2.x和3.x版本不相容,所有把兩個版本多安裝到本地,方便需要的時候進行版本切換,使用命令pyenv shell 2.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 -L https://get.rvm.io | bash -s stable --autolibs=enabled --ruby

rvm install 2.3.1

bash --login

rvm use ruby-2.3.1

具體命令輸入rvm help,很好掌握。

3.4 使用gvm安裝go語言

curl -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer | bash

gvm install go1.6

gvm use go1.6 --default

由於hugo是使用go語言開發的,趁著這個機會向學習一些這個由google開發的程式語言,本部落格就是使用

hugo搭建的,伺服器使用firebase,firebase提供和github pages一樣的免費靜態服

務器的功能,穩定性比github要好,github在國內的訪問速度實在不能再慢了,特別是在clone大一點的專案的時候。

go語言開發的程式有一個好處就是沒有執行時依賴,打包成exe就能直接執行,簡單方便,更多的內容以後再更新吧,這裡集中在開發環境

搭建這個主題上面。

3.5 使用nvm安裝nodejs

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

nvm install v6.2.0

nvm use v6.2.0

node.js可以說是從2015年以來最火的語言了,node.js是後端工程師轉向前端最好的工具,博主一起就是java後端開發工程師,偶然的機會學習了node.js,然後開始了自己的前端工程師的進化之路,目標是全棧工程師。

node.js還有一個npm包n可以用來進行版本管理,不過你需要先安裝一個node.js才能使用npm install -g n安裝這個工具n和nvm都很好用,你可以隨便選擇一個,也可以兩個都安裝,他們之間沒有衝突,可以共存。

這裡注意一下,如果你使用的是 windows build 14352 的話,使用nvm安裝nodejs可能會出現錯誤,詳情參見這裡:https://github.com/Microsoft/BashOnWindows/issues/426

我安裝的時候是出現問題,但是又沒有看到其他人遇到這個問題,如果你安裝的windows預覽版是比14352更新的版本的話,你可以自己測試下。

3.6 安裝gcc工具鏈

sudo apt-get install python-software-properties

sudo add-apt-repository ppa:nginx/stable

sudo apt-get update

sudo apt-get install nginx

這些工具不僅僅是c和c++開發者才會用到,如果你開發一個node.js native模組,你也需要這些工具。

3.7 安裝nginx

sudo apt-get install python-software-properties

sudo add-apt-repository ppa:nginx/stable

sudo apt-get update

sudo apt-get install nginx

和安裝git的時候一樣,這裡通過新增nginx的第三方repository,實現apt-get方式安裝nginx最新版本,比原始碼編譯安裝方式在管理上還是要方便一點。

3.8 使用shell安裝rust-lang

安裝命令,非常簡單

curl -sSf https://static.rust-lang.org/rustup.sh | sh

rust是和node.js一樣熱門的新星程式語言,不過和node.js不同,rust不是一款前端領域的程式語言,而是一款系統程式語言。

rust的有點是安全、高併發,吸收了大量現代高階程式語言的有點,極力避免現有程式語言的各種缺點,讓我印象最深刻的一個特性是

rust的垃圾回收機制,

最開始的時候rust也是使用類似java語言的garbage collector方式實現垃圾回收,後來受不了gc的

執行時效能損耗,自己實現了一套更高效的垃圾回收機制,極大的提高的系統穩定性和效能。

而且在rust在1.0的時候已經實現了自舉(自己編譯自己),後面版本的rust都是使用rust自己編譯出來的,包括編譯器。

唯一不好的地方是rust語言為了最大程度的幫助開發人員避免犯錯誤,採用了極其複雜的語法,對於剛開始學習程式語言的人來說,不建議學習

rust,因為rust的學習曲線非常陡峭,入門語言選擇c或者java都是不錯的。

4、最後總結

雖然這篇文章沒有講一些高深的內容(水平有限), 但是還是總結一些。

4.1 關於包管理

不管是作業系統,linux、mac、windows,還是程式語言,java、node.js、rust,流行的趨勢是自帶包管理工具,linux 有apt,centos有yum,mac有brew,windows目前沒有,不排除以後不會有,win10應用商店已經有了,估計應用管理工具也不好很遠了吧,目前已經有一個第三方的10AppsManager了。

java沒有自帶的包管理工具,但是maven,node.js有npm,rust有cargo。

使用包管理工具能幫助開發者解決很多的問題,例如版本管理,依賴管理,甚至軟體釋出都可以使用包管理工具來完成,node.jsd的包就是使用npm進行釋出的。

所以我覺得自帶包管理工具應該是以後程式語言的趨勢,這方面做得最差的是java,從make到ant到ivy再到maven再到gradle,java的包

管理是最複雜的,如果是心學習java的推薦學習gradle,gradle還能用來打包android專案,是目前最優秀的工具。

另外作業系統的包管理工具比程式語言又更悠久的歷史,幾乎每一個類linux作業系統都有自己的包管理工具。

4.2 版本管理

軟體版本管理

每一個軟體都會進行版本迭代,有時候進行版本更新的時候又會有broken update,為了方便實現版本切換,現在很多程式語言

都提供了版本管理工具(第三方的),所以我在想能不能把這個功能新增在程式語言上面,簡而言之就是程式語言能自帶一個版本管理

工具(就像自帶包管理工具一樣),這樣能更快的實現版本切換。

4.3 以開發人員為中心

隨著windows開始各種拉攏開發人員和軟體工程師隊伍的壯大,我認為以開發人員為中心的時代,廣大開發人員的春天就要到來了。


相關推薦

深入體驗bash on windows,在windows搭建原生linux開發環境,酷

今年微軟Build 2016大會最讓開發人員興奮的訊息之一,就是在Windows上可以原生執行Linux bash,對開發人員來說,這是一個喜聞樂見的訊息。 1 安裝 你必須安裝開發者預覽版本,才能使用windows的linux subsystem功能。 首先開啟你的Wi

深入體驗bash on windowswindows搭建原生linux開發環境環境

原文地址:http://www.softwen.cn/375.html 今年微軟Build 2016大會最讓開發人員興奮的訊息之一,就是在Windows上可以原生執行linux bash,對開發人員來說,這是一個喜聞樂見的訊息。 1、安裝   你必須安裝開發者預覽版本,

svn從Windows服務器遷移到Linux

linux 個人 yum write aaa oev lin none ner svn從Windows服務器遷移到Linux服務器 author:headsen chen 2017-10-16 16:50:32 個人原創,轉載請註明。否則依法追究法律責任

Windows原生Linux容器(盆盆的Kubecon課程分享)

您測試過Windows上的Linux容器嗎? 這是本週末剛閉幕的Kubecon大會,筆者在課堂上提出的問題。 關於這個問題,大家常有的困惑就是,我們為什麼要在Windows上執行Linux容器?(以下是我的PPT截圖) 答案有以下三點: 節省資源 Windo

Windows搭建React-Native開發環境

技術是進步的,如果你還在為糾結學習Android還是IOS,那麼你已經OUT了,這是網友說的。React-Native怎麼樣我還不知道,只知道要學習這個東西。今天給大家說一說,如何在Windows上搭建React-Native的開發環境。 第一步:如果你是An

windows下的基於Eclipse的STM32開發除錯環境搭建

這段時間在玩STM32,但官方庫的程式碼也確實是有點多,記憶力有點不太好了。突然就想起了以前用Eclipse的那個程式碼提示功能,谷歌了一段時間, (一)安裝編譯環境 1.下載和安裝JAVA虛擬機器 因為Eclipse是基於Java的,所以Linux下也可

Windows下用Eclipse搭建C/C++開發環境

本文假定你已經熟悉Java,Eclipse的安裝,並能順利啟動和執行Eclipse.此外因為各軟體版本在不斷更新,有些地方可能不準確,以最新的、原文資料為準。 距上一次寫和調C++程式,已經5、6年了,光陰荏苒歲月無情,現在再重新拾起來,很多東西都要從頭來。Windows下C/C++的IDE有很多,我知道的就

Flask在windows下安裝及在eclipse下開發環境配置

       上一張已經介紹了linux下flask的環境的搭建,由於linux下開發python非常不方便,因此python程式碼的開發我是在windows下開發、除錯和驗證的,驗證好之後,再放到linux下執行,我在windows下使用的整合開發環境是eclipse,由

在Ubuntu17.04搭建Android Studio開發環境

term ora jdk1.8 png ava upd com all img 在實驗課上都是在Ubuntu環境下,雖然之前都是在windows系統裏寫android程序,但是我還是準備在Ubuntu下配置一個Android Studio環境。 通過百度,我先看到一個最簡單

Windows10搭建Kinect 2 開發環境

app 應用 系統版本 開發 環境 windows 面向 文檔 comm 因為Visual Studio 2017的應用最低只能面向windows10,而Kinect SDK 2.0的系統版本要求是windows 8,所以不得不下載Visual Studio



《從0到1學習Flink》—— Mac 搭建 Flink 1.6.0 環境並構建執行簡單程式入門

準備工作 1、安裝檢視 Java 的版本號,推薦使用 Java 8。 安裝 Flink 2、在 Mac OS X 上安裝 Flink 是非常方便的。推薦通過 homebrew 來安裝。 brew install apache-flink 複製程式碼 3、檢查安裝: flink --

《從0到1學習Flink》—— Mac 搭建 Flink 1.6.0 環境並構建執行簡單程式入門

準備工作 1、安裝檢視 Java 的版本號,推薦使用 Java 8。 安裝 Flink 2、在 Mac OS X 上安裝 Flink 是非常方便的。推薦通過 homebrew 來安裝。 brew install apache-flink 3、檢查安裝: f

在樹莓派2B搭建indigo ros 開發環境

第一次接觸ros,感覺無從下手,在學了了官網wiki20篇教程後對ros有了一個初步的瞭解。由於我所在的科研小組專案的需要,需要在raspberry pi 2B上搭建indigo ros的開發環境,在經過兩天的努力後終於搞定,在pi2上執行也十分流暢。 1、在https:/

在Mac搭建React Native開發環境

概述 前面我們介紹過在window環境下開發React Native專案,今天說說怎麼在mac上搭建一個RN的開發環境。 配置mac開發環境 基本環境安裝 1.先安裝Homebrew:用於安裝NodeJS和其他工具。 注:Homebrew詳

在IntelliJ IDEA搭建Spring+SpringMVC+Mybatis+Shiro環境搭建(一)

IntelliJ IDEA 下載地址:http://www.jetbrains.com/idea/ 都是最新版本的,只要破解一個版本,其他版本可以共用,具體參考百度O(∩_∩)O Maven Reposity Maven倉庫地址:http://mvnrepository.c

Eclipse搭建Spring的開發環境

              一、安裝Spring Tool Suite外掛 如圖:   點選Finish之後等待安裝,安裝完之後彈窗點選yes重啟Eclipse,重啟後顯示如下介面:

在cetos7搭建簡單的Python3虛擬環境

交代一下我的操作環境  Python版本是Python3.6  Linux系統是 centos7.6.1810 首先我們先安裝Python3.6 使用網易和阿里的yum源可以比較方便的安裝 Python3.6 以及pip3 網易yum源下載地址:http://mirror

利用VS2013在win7 64位機器搭建xgboost 0.6+Anaconda3 環境

1.所需材料: xgboost xgboost 0.6 如果不想使用 git clone –recursive https://github.com/dmlc/xgboost 這個命令,嫌棄網速慢的同學,請移步 下載 如果想使用老版本 xgboost 0

15分鐘在筆記本搭建 Kubernetes + Istio開發環境

實例 整合 cpu iyu -- win yun power fault 11月13~15日,KubeCon 上海大會召開,雲原生是這個秋天最火熱的技術。很多同學來問如何上手 Kubernetes和Istio 服務網格開發。本文將幫助你利用Docker CE桌面版,15分鐘

MAC搭建eclipse+android開發環境

下載eclipse 找到“Eclipse IDE for java Developers”,選擇“Mac OS X(Cocoa)” 根據你的mac處理器,去選在是下載64bit或32bit, 這裡我的Pro是i5處理器支援64位,點選右邊的“Mac OS X 64bit”。(如何檢視MAC處理器多少