国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Ubuntu on Windows 10跨平臺開發環境搭建權威指南

系統 Linux Windows
本文今天會詳細講解下怎樣在 Windows10 下安裝 Ubuntu、搭建 Linux 開發環境,碰到的一些坑及其解決方案。

[[221307]]

程序猿經常爭論的一個話題是:日常開發到底 Windows 好還是 Linux 好?進而演化出另一個問題:到底選 MacBook 好還是 SurfaceBook 好?

選擇 Linux 系統或者 mac 筆記本的同學最核心的理由是 Linux/Mac 開發、編譯工具鏈比較完善,很多環境或者安裝包都系統自帶了,寫出來的程序可以很方便的通過開發、測試與線上系統對接,開發測試效率比較高,而 Windows 下開發的同學可能需要考慮開發、測試代碼的可移植性問題。就拿筆者來說,也曾經遇到過某些 java/python API 不支持 Windows 的問題,這給日常開發帶來了不小的麻煩。

在 Windows10 以前,咱們為了解決 Windows 開發環境跨平臺的問題,往往會選擇 cygwin,這個項目本身已經很成熟了,筆者也用了很多年,它能在 Windows 下模擬一套類 Linux 的環境,用它應付一般的開發測試問題不大。但它的缺點在于組件、包管理器比較弱,對于日后的環境維護相當麻煩,而且一些底層 API 模擬的并不完善,對于一些涉及 Linux 底層的系統調用等場景顯得很雞肋。幸運的是在 2016 年,微軟在 Windows10 WSL 里開始內置 Ubuntu,之后又開始在 Microsoft Store 以 UWP APP 的形式發布各個 Linux 系統。這樣對于需要搭建跨平臺開發環境的同學來說可以做到一套系統搞定多套平臺環境,又多了一個舍棄 Mac 的理由 :)

本文今天會詳細講解下怎樣在 Windows10 下安裝 Ubuntu、搭建 Linux 開發環境,碰到的一些坑及其解決方案。

1、安裝 Ubuntu on Windows10

首先更新你的 Windows10 系統到最新,然后開啟“開發人員模式”,最后在 Microsoft Store 里輸入 “Ubuntu” 然后選擇安裝,成功后即可點擊啟動。

注意:網上有些老的教程在命令行下用 lxrun /install 的形式安裝,這里不推薦,因為這是早期 WSL beta 版本的做法,現在正式版直接在 Microsoft Store 以 UWP APP 的形式獲取更便捷,也易于管理。

最終的系統安裝在如下目錄:

%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc

初始安裝時,整個目錄大概 600MB 左右,我更新了一些軟件包并升級到 16.04 后,大小在 1G。

2、開啟 sshd

2.1 設置 sshd

  • 重裝openssh

 

  1. sudo apt-get remove openssh-server  
  2. sudo apt-get install openssh-server 
  • 修改 sshd 設置,添加以下配置到/etc/ssh/sshd_config

 

  1. AllowUsers yourusername  
  2. PasswordAuthentication=yes 
  • 重啟 sshd

 

  1. sudo service ssh --full-restart 

    不出意外使用 ssh 客戶端應該可以鏈接上 Bash on windows 了。

2.2 問題1:sshd啟動報錯

 

  1. # /etc/init.d/ssh restart  
  2. sshd: ../sysdeps/posix/getaddrinfo.c:2603: getaddrinfo: Assertion `IN6_IS_ADDR_V4MAPPED (sin6->sin6_addr.s6_addr32)' failed. Aborted (core dumped) 

原因是 ipv6 的問題,修改sshd_config配置添加 ListenAddress 0.0.0.0 即可

 

  1. sudo vi /etc/ssh/sshd_config 

2.3 問題2:ssh 連接一直提示密碼錯誤

這個問題查起來還是比較復雜的,需要有比較系統的排查方法和理論,筆者這里折騰了不少時間。

現象就是 sshd 服務起來了,ps aux 和 top 都能見到,但是 ssh 連接的時候一直提示密碼錯誤或者沒有權限,但密碼確認是對的,包括新建賬戶也不行,按照上篇《記一次詭異的 ssh 互信免密碼登錄失敗》的排查思路發現 sshd 服務壓根就沒有監聽指定的 sshd 端口,換做其它端口也有同樣的問題:

 

  1. nc -l 127.0.0.1 4444  
  2. #on powershell:  
  3. netstat -a -n -q | findstr "4444" 

那可能是系統層面的問題,進一步分析 Windows 系統事件發現是 TDI 篩選器的問題:

image

在 windows/system32 下咱們可以找到這個驅動文件:

image

本質上是因為一些軟件廠商用了微軟過時的 API 導致的,比如 QQGame 和一些 VPN 軟件被證實存在這樣的問題,確認原因就好辦了,首先根據軟件名字找到對應注冊表項HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services,按圖修改:

image

重啟電腦,再次測試 ok:

image

3、sshd 開機啟動

一旦關掉 bash.exe 進程,ssh 就無法連接了。解決這個問題分三個步驟:

  1. 添加啟動項,讓 bash.exe 隨機啟動
  2. 使用命令 sudo service ssh start 啟動 sshd
  3. 因為 sudo service ssh start 命令需要輸入密碼不能自動化,所以需要 visudo 來免除輸入密碼的操作。

3.1 理清思路接下來記錄一些過程:

  • 使用 vbs 啟動隱藏窗口開啟 bash 和 運行 sudo service ssh start

 

  1. set ws=wscript.createobject("wscript.shell" 
  2. ws.run "C:\Windows\System32\bash.exe",0  
  3. ws.run "C:\Windows\System32\bash.exe  -c 'sudo /usr/sbin/service ssh --full-restart'",0 
  • 運行 sudo visudo,添加如下配置

 

  1. toor ALL = (root) NOPASSWD: /usr/sbin/service 

其中 toor 是我的用戶名。

  • 添加vbs文件到windows 啟動項,將 vbs 文件放入到如下目錄下。

 

  1. %AppData%\Microsoft\Windows\Start Menu\Programs\Startup 

重啟,測試不出意外就可以連接上 ssh 了。

另外一種方案是使用windows自帶的定時任務計劃添加開機啟動Ubuntu ssh服務的任務:

    搜索“任務計劃程序”,操作-- 創建基本任務

    觸發器:當計算機啟動時

    操作:啟動程序

    程序名:bash.exe

    參數為-c \"sudo /usr/sbin/sshd -D\"" 意思是打開bash,執行sshd命令開啟ssh服務

    選擇“點擊完成打開屬性頁”按鈕,點擊完成,打開屬性頁

    在屬性頁選擇“使用最高權限運行”,避免錯誤。

3.2 問題1:重啟/開機后無 sshd 進程

首先確保上述三步每一步的代碼都正確,其次看看系統日志是何原因失敗,我這里遇到的是 sudo 還需要密碼,導致開機的 VB 腳本執行出錯。仔細研究了下, 這個配置文件如下:

 

  1. ...  
  2. User privilege specification  
  3. root    ALL=(ALL:ALLALL  
  4. my-username   ALL=(ALL) NOPASSWD: ALL  # ---> the line added by me   
  5. # Members of the admin group may gain root privileges  
  6. %admin ALL=(ALLALL   
  7. # Allow members of group sudo to execute any command  
  8. %sudo   ALL=(ALL:ALLALL  
  9. # See sudoers(5) for more information on "#include" directives:  
  10. #includedir /etc/sudoers.d 

可以看到我的配置加在了中間,后面還有幾條配置,導致我的配置被后面的覆蓋了。解決方案是把我的配置移動到最后,再次試了下,sudo 不再需要密碼了。

3.3 問題2:secureCRT卡死/亂碼

這里的 secureCRT卡死/亂碼和字符集有關,注意設置正確的終端字符集和系統字符集,Ubuntu on Windows 默認字符集是 Latin。

 

  1. sudo vim /etc/default/locale   
  2. LANG=zh_CN.UTF-8     
  3. LANGUAGE=”zh_CN:zh”    
  4.  
  5. #################################  
  6. # sudo dpkg-reconfigure locales  
  7. # en_US.UTF-8、zh_CN.GBK、zh_CN.UTF-8  
  8.  
  9. #################################  
  10.  
  11. WARNING! Your environment specifies an invalid locale.  
  12.  The unknown environment variables are:  
  13.    LC_CTYPE=zh_CN.UTF-8 LC_MESSAGES=zh_CN.UTF-8 LC_ALL=  
  14.  This can affect your user experience significantly, including the  
  15.  ability to manage packages. You may install the locales by running:  
  16.    sudo apt-get install language-pack-zh  
  17.      or  
  18.    sudo locale-gen zh_CN.UTF-8  
  19.  
  20. To see all available language packs, run:  
  21.    apt-cache search "^language-pack-[a-z][a-z]$"  
  22. To disable this message for all users, run:  
  23.    sudo touch /var/lib/cloud/instance/locale-check.skip 

另外一種方案不修改配置,在bash中依次執行如下命令:

 

  1. apt-get update  
  2. apt-get install language-pack-zh-hans  
  3. update-locale LANG=zh_CN.UTF-8 

這幾條命令安裝了中文補丁,并且把本地編碼改為了中文編碼。

然后重啟WSL(關掉窗口,重新打開),再執行命令

 

  1. echo $LANG 

可以看到輸出為

 

  1. zh_CN.UTF-8 

之后可以看到終端中輸出的中文能夠正常顯示了。

4、WSL Ubuntu 更新

4.1 ubuntu 系統升級:

(1)版本升級   

  1. //更新軟件源,最后會讀取軟件包列表  
  2.     sudo apt-get update    
  3.     sudo update-manager -c -d 

    然后選擇 upgrade:apt-get -y --force-yes upgrade

(2)普通升級   

  1. sudo apt-get update  
  2.    sudo apt-get -y upgrade  
  3.    # apt-get -y --force-yes --fix-missing upgrade 

 

(3)升級單一軟件 

  1. sudo apt-get update  
  2. sudo apt-get upgrade package_name_your_want_to_upgrade 

 

(4)全部升級

  1. //更新所有的軟件  
  2. sudo apt-get dist-upgrade  

4.2 修改 Ubuntu 鏡像源:

WSL 自帶的 Ubuntu 更新源國內訪問非常慢,很容易出現部分源IP無法連接上,進而部分索引文件下載失敗,最后導致整個更新失敗,這里推薦阿里云的鏡像比較穩定可靠,當然也可以參考國內各個大學的鏡像源

(1)Ubuntu 的軟件源配置文件是 /etc/apt/sources.list,先將系統自帶的該文件做個備份:

    (cd /etc/apt && sudo cp sources.list sources.list.bak.`date -I`)

(2)將源文件中的 URL 替換為國內任意源,比如阿里云:http://mirrors.aliyun.com/ubuntu   

  1. deb http://cn.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse  
  2. deb http://cn.archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse  
  3. deb http://cn.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse  
  4. deb http://cn.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse  
  5. # 如要用于其他版本,把 trusty 換成版本代號就好,比如:15.10 willy、14.04 trusty  
  6. # 具體請參考:http://wiki.ubuntu.org.cn/%E6%BA%90%E5%88%97%E8%A1%A8        http://wiki.ubuntu.org.cn/%E6%A8%A1%E6%9D%BF:14.04source 

 

(3)sudo apt-get update,刷新列表使其生效。

 

  1. # 注意:一定要選對版本  
  2. # 注意:一定要執行刷新,重新加載配置 

在 vim 中可以直接:

 

  1. :%s#deb http://archive.ubuntu.com/ubuntu/#deb http://mirrors.aliyun.com/ubuntu/#g  
  2. :%s#deb http://security.ubuntu.com/ubuntu/#deb http://mirrors.aliyun.com/ubuntu/#g 

5、借助 X Server 在 WSL 上使用 GUI 桌面程序

5.1 X 窗口系統 (X Window System) 簡介

X 窗口系統( X Window System,也常稱為 X11 或 X)是一種以位圖方式顯示的軟件窗口系統。最初是 1984 年麻省理工學院的研究,之后變成 UNIX、類 UNIX、以及 OpenVMS 等操作系統所一致適用的標準化軟件工具包及顯示架構的運作協議。X 窗口系統通過軟件工具及架構協議來創建操作系統所用的圖形用戶界面,此后則逐漸擴展適用到各形各色的其他操作系統上。現在幾乎所有的操作系統都能支持與使用 X。更重要的是,今日知名的桌面環境——GNOME 和 KDE 也都是以 X 窗口系統為基礎建構成的。

X Window System 主要由 X Server 和 X Client 兩部分組成。其中 X Server 負責接受對圖形輸出 (窗口) 的請求并反饋用戶輸入,而 X Client 則是使用圖形界面的應用程序。由于 WSL 本身不支持圖形界面,我們需要額外安裝 X Server 并指定圖形輸出位置,使得帶有 GUI 的桌面程序可以被顯示和運行。

5.2 X Server 的選擇

Windows 上常用的 X Server 有:Xmanager, Xming, VcXsrv 等,簡單比較一下:

  • Xmanager 是商業軟件,需要付費
  • Xming 雖然是開源軟件,但是從從 2007 年最后一個免費版本 (6.9.0.31) 之后,就需要捐助才能下載。不過免費版本雖然老舊,但由于 X Windows System 近年來變化不大,免費版還是基本夠用
  • VcXsrv 為開源免費軟件,使用方式及界面與 Xming 極為相近,還在不斷更新,因此我最終選擇此軟件

5.3 VcXsrv 的安裝和啟動   

下載 VcXsrv 并進行安裝后,運行 XLaunch,一直點 Next 至啟動完成。

5.4 WSL 設置     

啟動 X Server 后,需要在 WSL 中輸入如下兩條指令,重啟 Bash,即可運行帶有圖形界面的 Linux 程序了

 

  1. echo export DISPLAY=:0.0>>~/.bashrc  
  2. sudo sed -i 's$<listen>.*</listen>$<listen>tcp:host=localhost,port=0</listen>$' /etc/dbus-1/session.conf 

這里對這兩條指令簡單解釋一下:

  • 第一條指令

該指令將export DISPLAY=:0.0 指令添加進 ~/.bashrc 中,使得每次開啟新的 Bash 時,自動指定圖形程序顯示的位置。

也可直接輸入以下指令運行程序,無需export,但作用效果只有一次,再運行其他程序時,還要重新輸入指令。

 

  1. DISPLAY=:0.0 gvim &    //gvim 為你想要打開的程序 

tips:gvim 后的 & 不是必須要加,它表示程序以后臺啟動的方式運行,這樣在圖形界面運行時,命令行窗口還可以繼續使用。要是忘記加 &, 也可以在程序運行時按ctrl+z, 將程序進程掛起,并輸入bg,使其在后臺運行

  •     第二條指令(可選)

第一條輸入,重啟 Bash 后 , 理論上就可以運行 Linux 程序了,但程序一般不會運行很久就掛掉了,并會提示 D-Bus異常,該異常會使得許多 Linux 的圖形程序無法很好地運行。 這是因為 D-Bus 需要使用socket來通信,但 WSL 目前并不支持 socket。

Reddit 上對此的解決方案為:用 tcp 代替 sockets 來使 D-Bus 運行。

具體實現為:在 /etc/dbus-1/session.conf 中(需要 Root 權限),將<listen>unix:tmpdir=/tmp</listen>字段替換為 <listen>tcp:host=localhost,port=0</listen>,簡單寫就是第二條指令了。

Refer:

[1] bash on windows可以升級為16.04嗎?

https://www.zhihu.com/question/49411626

[2] How can I SSH into “Bash on Ubuntu on Windows 10”?

https://superuser.com/questions/1111591/how-can-i-ssh-into-bash-on-ubuntu-on-windows-10

[3] SSHD server is running but Connection refused on WSL #2376

https://github.com/Microsoft/WSL/issues/2376

[4] Issue with WLS listening to TCP ports #1554

https://github.com/Microsoft/WSL/issues/1554

[5] 折騰 Bash on Windows 開啟 SSHD 并開機啟動

https://stray.love/itshou-zha/bash-on-windows-kai-qi-ssh-bing-kai-ji-qi-dong

[6] ubuntu16.04下安裝pip

http://blog.csdn.net/weixin_37911283/article/details/70799481

[7] Win10 linux子系統下顯示圖形界面

http://blog.csdn.net/shuzfan/article/details/73658451 

責任編輯:龐桂玉 來源: xrzs 的博客
相關推薦

2010-04-03 11:30:15

Widget開發

2020-11-03 08:36:08

Hadoop

2013-02-18 10:40:55

2025-04-16 10:00:00

跨平臺開發Uniapp開發

2011-08-17 11:28:54

Objective-C模擬開發Windows平臺

2019-11-18 14:00:40

開發工具環境搭建vagrant

2011-08-30 16:22:00

MTK開發環境

2011-07-19 14:11:07

Windows iPhone SDK

2011-06-29 10:06:27

Ubuntu 11.0Android

2013-07-31 12:50:39

搭建Windows PWindows Pho

2015-07-23 14:19:51

SSDubuntu開發環境

2011-06-07 11:35:38

Windows Pho

2015-07-20 17:12:57

2017-07-13 14:26:11

WindowsLinux前端

2011-08-16 15:41:47

UbuntuPython

2009-06-17 17:02:22

2011-09-14 15:33:33

Android 2.2

2009-10-09 09:37:46

2020-06-19 11:20:17

開發避坑支付寶

2014-08-26 10:01:18

Windows Pho平臺開發指南
點贊
收藏

51CTO技術棧公眾號

青娱乐国产91| 国内av免费| 日韩高清电影免费| 在线中文字幕日韩| 亚洲制服国产| 欧美日韩视频在线观看一区二区三区| 天天色综合4| 337p粉嫩大胆噜噜噜噜噜91av | 97在线资源| 国产精品你懂的在线欣赏| 国产精品沙发午睡系列| 国产高清不卡一区| 日韩视频在线免费播放| 蜜桃一区二区三区在线| 久久久影院一区二区三区| 亚洲乱码久久| 久久一区二区三区欧美亚洲| 亚洲精品韩国| 欧洲亚洲一区二区三区四区五区| 亚洲免费网站| 日本一区精品| 久久国产麻豆精品| 99热这里只有精品7| 久草精品在线观看| 女女同性女同一区二区三区按摩| 黑人巨大精品欧美黑白配亚洲| 一区二区精品免费视频| xxx国产在线观看| 国产欧美精品一区二区三区四区 | 精品视频在线播放色网色视频| 日本三级在线播放完整版| 欧美伊人久久大香线蕉综合69 | 视频在线这里都是精品| 日韩免费福利电影在线观看| 18视频在线观看| 亚洲国产精彩中文乱码av在线播放 | 欧美1区2区| 久久久精品美女| 一区二区三区无毛| 精品无人区太爽高潮在线播放| 国产天堂在线播放视频| 亚洲人a成www在线影院| 欧美区一区二区| 国产精品av在线| 无需播放器亚洲| 你懂的网址一区二区三区| 视频一区二区三区中文字幕| 一区二区三区我不卡| 97精品电影院| 九色免费视频| 7777精品伊人久久久大香线蕉完整版| 日本一级理论片在线大全| 中文精品99久久国产香蕉| 国产精品极品在线观看| 中文字幕亚洲欧美在线不卡| wwwwww99| 欧美日韩免费观看一区三区| 午夜日韩成人影院| 茄子视频成人在线| 亚洲精品社区| 免费看日本毛片| 五月综合激情网| 国产高清视频色在线www| 欧美成人精品一区二区三区| 第九色区aⅴ天堂久久香| 日韩中文一区| 欧美激情一区在线| 日本美女在线中文版| 色妞色视频一区二区三区四区| 亚洲最好看的视频| 欧美一进一出视频| 国产三级精品视频| 在线免费观看黄| 欧美激情视频一区二区| 在线精品一区| 日本三区在线观看| 欧美乱妇20p| 成人爽a毛片免费啪啪红桃视频| 国产精品av一区| 国产三级精品在线| 在线中文字幕第一页| 欧美一区二区三区免费视| 日本欧美在线观看| 免费在线黄色av| 国产午夜精品理论片a级探花| 久久国产电影| 日本三级免费网站| 欧美精品在线观看播放| 欧美毛片免费观看| 男女激烈动态图| 日本高清不卡视频| 综合激情久久| 大桥未久一区二区| 一本色道久久综合狠狠躁的推荐| 国产精品第一| 日韩亚洲视频| 狠狠躁18三区二区一区| 日本精品视频| 欧美日韩一级在线| 欧美裸体一区二区三区| 婷婷精品在线观看| 国产女教师bbwbbwbbw| 欧洲一区二区三区在线| 国产精品对白| 国产最新免费视频| 日韩大片免费观看视频播放| 亚洲国产1区| 婷婷婷国产在线视频| 97国产suv精品一区二区62| 懂色av一区二区三区免费看| 在线观看三级视频| 国产精品初高中精品久久| 亚洲第一在线综合网站| 综合久久成人| 男人靠女人免费视频网站| 亚洲精品xxxx| 亚洲永久字幕| av二区在线| 国产精选在线观看91| 亚洲一区二区免费视频| 久久影院资源站| 亚洲一区在线不卡| 欧美成人精品在线视频| 成人激情免费电影网址| 欧美电影免费观看网站| 裸体裸乳免费看| 亚洲精品久久久久| 蜜臀av在线播放一区二区三区| wwwav在线| 看高清中日韩色视频| 91精品一区二区三区久久久久久 | 日韩在线观看免费全集电视剧网站 | 国产精品99久久| 免费男女羞羞的视频网站中文字幕| 久久影视电视剧免费网站| 成人久久久精品乱码一区二区三区| 999精品网| 91精品国产毛片武则天| 国产一区二区三区四区福利| 成人午夜视频在线观看| 亚洲人成网站在线在线观看| 日韩在线第三页| 欧美一区二区三区……| 亚洲一区二区不卡免费| 午夜片欧美伦| 3p在线观看| 亚洲欧美99| 色视频www在线播放国产成人| 99久久精品免费精品国产| 视频二区欧美毛片免费观看| hbad中文字幕| 亚洲最大福利视频| 91精品国产91综合久久蜜臀| 蜜臀av性久久久久蜜臀aⅴ| 国产精品迅雷| 天堂av在线网站| 国产精品日韩在线一区| 欧洲精品一区二区| 久久草av在线| 日韩精品一区二区三区中文| 日韩黄色动漫| 国产欧美日韩综合一区在线观看| 亚洲白虎美女被爆操| 成人av影院在线| 在线成人动漫av| 美女av在线播放| 夜夜添无码一区二区三区| 国内精品久久久久影院 日本资源| 尤物在线观看一区| 伊人久久大香线蕉av超碰演员| 黄污视频在线观看| 久久婷婷五月综合色国产香蕉| 热久久99这里有精品| 一片黄亚洲嫩模| 日韩av最新在线观看| 国产精品18久久久久久vr| 永久免费精品视频| 日本夜爽爽一二区| 国产伦精品一区二区三区四区免费 | 浪潮av一区| 国产美女三级视频| 亚洲综合一区二区不卡| 亚洲精品美女久久久久| 国产精品成人一区二区艾草 | 日本欧美中文字幕| 日韩欧美黄色影院| 欧美精彩视频一区二区三区| 一区免费视频| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 精品国产99国产精品| 国产风韵犹存在线视精品| 8848成人影院| 黄色网址在线免费播放| 国产中文字幕免费观看| 成人欧美一区二区三区黑人免费| 综合激情国产一区| 欧美在线短视频| 国产精品久久久久久户外露出| 久久免费黄色| 欧洲乱码伦视频免费|