寫個.net開發者的Linux遷移指南

前言

爲何要遷移到Linux

  1. 首先我我的仍是有點軟件潔癖,之前是窮酸學生的時候也是用盜版的用戶,後來在知乎被洗腦終於有了點版權意識.而後便有了能用開源軟件的就用開源,實在不能就選社區版或者免費版。因而開始接觸了Linux逐步擺脫盜版的Windows,以及全部的破解類軟件相信國內不少用戶也是用着盜版的並且並沒意識到有什麼不妥...講真這不是裝逼而是一個很嚴肅的問題linux

  2. 自從微軟開放dotnet core,終於能夠用上docker等一些好玩的東西,可是docke這一套包括shell腳本等在Windows下並不是原生適配,還不如在Linux使用舒服。git

  3. 仍是由於工做中用了dotnet core,結果把項目部署到Linux下發現有些代碼上的東西是有坑的,舉個例子獲取系統網卡IP的方式或者獲取系統的時間有時區問題,或者時間默認值等等各方面的不一樣。正是這個緣由是我不得不下定決心切換到Linux平臺下開發以消除這些隱患github

使用模式

使用WSL

彷佛也是最近兩年才推出的東西,目前只能夠在Windows 10上纔可以使用。 優勢是不須要安裝太多東西,資源佔用低,發行版有Ubuntu,Debian,Kali等能夠選。直接在應用商店搜索便可。 缺點就是非徹底本地化的Linux,部分功能不支持好比原生docker等等,圖形界面等,部分命令不可用等等奇怪問題。但能夠確定的是這玩意存在的意義是有的。只要它獲得足夠完善,配合宇宙IDE visual studio簡直無敵web

具體開啓步驟 1.管理員權限打開powershellchrome

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

 

  

而後按照提示重啓電腦docker

再打開應用商店搜索Ubuntu安裝,或者點擊這裏直達 任意的命令行下輸入bash便可啓動WSL 截圖欣賞shell

虛擬機

vmware或者virtual box都可 好處就是完整的Linux環境支持,同時啓動多個獨立系統,且環境相互獨立,玩壞了也不影響物理機。 徹底虛擬化沒有硬件驅動兼容這方面的煩惱 缺點 資源佔用比較高,低配機器玩不起 推薦大多數新手或者想同時跑兩個系統的用戶使用此種方式數據庫

物理機安裝

適合的人羣,愛好折騰,喜歡原生體驗 優勢:性能最高,速度槓槓的。折騰一翻收穫豐富 缺點:容易翻車,遇到不少問題須要自行查找解決方案,對於debian,使用Google+英語關鍵字基本能解決問題npm

關於發行版的選擇

linux的發行版有不少redhat系的centos fedora,等等 debian系的debian,ubuntu,mint,deepin。 因爲從大二就開始折騰linux桌面系統了 使用過的有Ubuntu,Debian,Ubuntu kylin,Mint,Lubantu,Xubantu,Fedora,Deepin 基本都是debian系的, 主要是桌面環境不一樣,無非就是unity,gnome3,xfce4,cinamon。django

最終體驗下來得出如下結論

低配置選擇xfce4,好比Xubunu就是默認這個環境 喜歡傳統型桌面的選擇Cinamon,好比Mint 喜歡穩定+酷炫的使用Gnome3

比起Ubuntu,debian大法好,和ubuntu相比簡直穩如狗 不過新手仍是老老實實使用ubuntu的unity,然而都2018了,Ubunut終於拋棄超級難用的unity桌面了,如今Ubuntu也是用gnome3, 以我多年是使用經歷,最終決定首選是Debian(目前已經在我我的筆記本上跑了4年,穩定到懷疑人生)。新手能夠考慮Ubuntu上手後再轉,由於我的認爲Ubuntu上手容易,可是穩定性徹底比不上Debian

安裝指南

具體安裝就是略了,基本上就是切一個單獨的分區,格式化爲ext4,再 加一個swap分區,我用的是256g的固態,150g 已經被windows用了,剩下的100留給linux,記住,開發使用的電腦,大,是絕對沒錯的。

安裝完成後可能須要的幾件事

換源

apt的源使用中國鏡像源是頗有必要的,經測試廣州和深圳地區使用網易源速度十分理想 假設你已經會使用vi進行操做

su root
vi /etc/apt/sources.list

 

如下是個人配置能夠粘貼使用

#163
deb http://mirrors.163.com/debian/ stretch non-free contrib main
deb http://mirrors.163.com/debian/ stretch-updates non-free contrib main

deb http://mirrors.163.com/debian/ stretch-backports contrib non-free main
# deb-src http://mirrors.163.com/debian/ stretch main non-free contrib
# deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib


#------------------------------------------------------------------------------#
#                   OFFICIAL DEBIAN REPOS
#------------------------------------------------------------------------------#

###### Debian Main Repos
# deb http://ftp.cn.debian.org/debian/ stretch contrib main
# deb-src http://ftp.cn.debian.org/debian/ stretch contrib main

###### Debian Update Repos
#deb http://security.debian.org/ stretch/updates contrib main
#deb http://ftp.cn.debian.org/debian/ stretch-proposed-updates contrib main
#deb-src http://security.debian.org/ stretch/updates contrib main



# deb http://ftp.de.debian.org/debian-ports/ sid main
deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib
deb http://mirrors.aliyun.com/debian/ stretch-proposed-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch-proposed-updates main non-free contrib
            

  


特別提示,若是是在基於debian的系統,而且顯卡是NVIDIA的,可能出現如下狀況
  • 運行良好,可是忽然屏幕卡住不動了,只剩下鼠標能夠動,鍵盤也無相應,ctrl+ alt + F*都不能切換,只有強制重啓和REISUB可用

  • 經過ssh遠程登陸無圖形界面狀況能夠正常使用

顯然這是圖形界面的鍋 並且這個問題網上搜索不到解決方案,我是無心中發現的解決方案 實際上是須要顯卡驅動支持

首選咱們檢測下

nvidia-detect
Detected NVIDIA GPUs: 02:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF108 [GeForce GT 430] [10de:0de1] (rev a1) Your card is supported by the default drivers. It is recommended to install the    nvidia-driver package.

 

這裏提供Debian9的安裝 Debian 9 "Stretch"

支持 Geforce 4xx 以及更高的GPUs

首先添加源:

echo 'deb http://httpredir.debian.org/debian stretch-backports main contrib non-free' >> /etc/apt/sources.list

 

爲內核安裝合適的Linux headers 假設你的Debian Stretch使用的是4.9 Linux 內核:
apt-get install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//')

 

若是你的分支是 stretch-backports則應該這樣安裝

apt-get install -t stretch-backports linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//')

 

如今就能夠安裝包nvidia-driver了

apt-get update
apt-get install -t stretch-backports nvidia-driver

DKMS會幫你的系統編譯相應的nvidia模塊而後重啓你的電腦就能夠開始狂歡了,圖形驅動完美解決

對於其餘的版本安裝能夠參考debian官方驅動安裝指南

docker 權限問題

docker安裝過程省略*

若是非管理員權限執行docker的命令會提示:

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

  

  • 方案一
 sudo usermod -a -G docker $USER

 

  • 方案二
sudo addgroup --system docker
sudo adduser $USER docker
newgrp docker

 


安裝oh my zsh以及配置超級好用的插件

爲啥要特別說起這個?不就是一個普通輔助麼

由於zsh實在太好用了,有了它,bash簡直弱爆了,正所謂磨刀不誤砍柴功

很少說直接開擼

安裝

sudo apt install zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

 


開啓下插件
vim ~/.zshrc

 

找到plugin,個人是這樣的

plugins=(
  git
  adb
  debian
  django
  emoji
  pyenv
  sudo
  tmux
  virtualenv
  vim-interactio
  vi-mode
  zsh-syntax-highlighting
)

 


效果圖

zsh

終端上有git的提示

zsh2

輸命令會有顏色提示對錯,須要安裝zsh-syntax-highlighting插件

固然還有各類各樣的主題,好比個人遠程主機使用的是這樣的

remote

編輯剛纔的配置文件,修改主題爲ZSH_THEME="agnoster"而後重啓終端便可 覺的強大好用的話就設置爲默認的shell

chsh -s /bin/zsh

 

基礎環境說了這麼多就不繼續了

下面說說和.net相關的。

首先若是安裝dotnet core的sdk就看官方介紹便可

官網介紹

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget -q https://packages.microsoft.com/config/debian/9/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list

sudo apt-get update
sudo apt-get install dotnet-sdk-2.1

 


輸入驗證完美dotnet --info

dotnet

私有的nuget源怎麼配置

咱們公司會架設本身的nuget服務器,目前linux下不支持加密存儲的配置,因此我都是配置明文密碼到配置中

具體能夠參考個人另外一篇文章在linux下設置私有的nuget

簡而言之就是編輯~/.nuget/NuGet/NuGet.Config

以下

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="https://www.nuget.org/api/v2/" value="https://www.nuget.org/api/v2/" />
    <add key="xxxyyy" value="https://nuget.xxxxxxx.com/nuget" />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
  <packageSourceCredentials>
     <xxxyyy>
      <add key="Username" value="xxx" />
      <add key="ClearTextPassword" value="xxx" />
    </xxxyyy>
  </packageSourceCredentials>
</configuration>

 

如今再執行dotnet restort就完美還原了

dotnet core 開發工具推薦

  1. 主力Jetbrains的Rider

除了內存佔用很是大點以外,基本能夠勝任VS的工做,智能感知很是棒棒,調試很是方便

以下圖 

 


  1. 小刀Visual Studio Code

如今你看到的這篇文章就是在vscode中打出來的,藉助強大的插件。簡直是利器

因此我如今寫寫小的dotnet core項目,Python,或者PHP等等我都會優選選擇vscode,強推!

 


數據庫管理工具

我使用的是開源免費跨平臺的Dbeaver

支持MySQL, PostgreSQL, MariaDB, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access 十分強大

地址


Redis管理工具 能夠的話本身編譯Redis Desktop Manager

我使用的是開源跨平臺的Medis,能夠說地十分優雅了

直達github

 

提示下做者沒有打linux包,因此本身編譯 編譯步驟

git clone https://github.com/luin/medis
npm install
npm run build
npm run electron

 

而後寫個啓動腳本

cd your-path
npm run electron

 


最後寫個desktop配置添加到桌面,具體有興趣的留言再補充吧

 

Git 圖形管理工具

gitkraken

 

 

用命令行還沒某些人鄙視了

既然這樣,那就再來一個終端工具,本身習慣哪一個用哪一個,哪有這麼多話

推薦強大的終端複用tmux

就是一個終端能夠切分多個窗口和麪板,不再用開一堆窗口,要用的時候滿地找

好比這樣

 

快捷鍵有點多,可是用熟了會很爽

tmux介紹

 

IM工具

目前咱們公司的工做流是基於谷歌的,基本可使用Google全家桶,因此沒有騰訊qq這種牽絆

可是實在須要的,可使用web版本

我本身裝了個github上一個基於electron的微信

 


若是須要辦公的可能要釘釘也是github上找的

dinbgding也有有人打包好了 dingtalk


咱們公司內部還比較潮的使用了slack來協做

也有slack的客戶端

以下

郵件什麼的跟不用說

絕地妥妥的

  • 輸入法

我推薦谷歌輸入法,喜歡國產的可使用sogou出的搜狗輸入法linux

都用過,值的入手,還沒廣告 官網deb包

  • 順帶提下WPS這個辦公套件

linux下也可使用,仍是沒廣告,不過我看自帶的libreoffice也是夠我用的了

畢竟開發的,編輯的東西也很少,實在不行我直接丟到Google在線編輯去或者使用石墨文檔和騰訊文檔

已經很成熟了 WPS linux版本

  • 音樂有網易雲音樂linux版本

網易雲音樂

其餘的chrome和Firefox之類的都有就不說了

最後全家福 

 

其餘

基本上要有的也差很少了

  • 其餘方面的話補充下就是若是安裝xrdp遠程到這電腦之類的
  • 開啓內網穿透遠程鏈接
  • 使用好看的主題之類的

挖個坑,暫時不想寫,有必要再繼續寫

以上 歡迎各位反饋問題,提出來研究研究

>此文最初發布here2say

>author:Hoyho

>轉載請保留此出處

相關文章
相關標籤/搜索