写个.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

>转载请保留此出处

相关文章
相关标签/搜索