写个.net开发者的Linux迁移指南
前言
为什么要迁移到Linux
首先我个人还是有点软件洁癖,以前是穷酸学生的时候也是用盗版的用户,后来在知乎被洗脑终于有了点版权意识.然后便有了能用开源软件的就用开源,实在不能就选社区版或者免费版。于是开始接触了Linux逐步摆脱盗版的Windows,以及所有的破解类软件相信国内很多用户也是用着盗版的而且并没意识到有什么不妥...讲真这不是装逼而是一个很严肃的问题
自从微软开放dotnet core,终于可以用上docker等一些好玩的东西,但是docke这一套包括shell脚本等在Windows下并非原生适配,还不如在Linux使用舒服。
还是因为工作中用了dotnet core,结果把项目部署到Linux下发现有些代码上的东西是有坑的,举个例子获取系统网卡IP的方式或者获取系统的时间有时区问题,或者时间默认值等等各方面的不同。正是这个原因是我不得不下定决心切换到Linux平台下开发以消除这些隐患
使用模式
使用WSL
似乎也是最近两年才推出的东西,目前只可以在Windows 10上才可使用。 优点是不需要安装太多东西,资源占用低,发行版有Ubuntu,Debian,Kali等可以选。直接在应用商店搜索即可。 缺点就是非完全本地化的Linux,部分功能不支持比如原生docker等等,图形界面等,部分命令不可用等等奇怪问题。但可以肯定的是这玩意存在的意义是有的。只要它得到足够完善,配合宇宙IDE visual studio简直无敌
具体开启步骤 1.管理员权限打开powershell
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
然后按照提示重启电脑
再打开应用商店搜索Ubuntu安装,或者点击这里直达 任意的命令行下输入bash即可启动WSL
虚拟机
vmware或者virtual box均可 好处就是完整的Linux环境支持,同时启动多个独立系统,且环境相互独立,玩坏了也不影响物理机。 完全虚拟化没有硬件驱动兼容这方面的烦恼 缺点 资源占用比较高,低配机器玩不起 推荐大多数新手或者想同时跑两个系统的用户使用此种方式
物理机安装
适合的人群,爱好折腾,喜欢原生体验 优点:性能最高,速度杠杠的。折腾一翻收获丰富 缺点:容易翻车,遇到很多问题需要自行查找解决方案,对于debian,使用Google+英语关键字基本能解决问题
关于发行版的选择
linux的发行版有很多redhat系的centos fedora,等等 debian系的debian,ubuntu,mint,deepin。 由于从大二就开始折腾linux桌面系统了 使用过的有Ubuntu,Debian,Ubuntu kylin,Mint,Lubantu,Xubantu,Fedora,Deepin 基本都是debian系的, 主要是桌面环境不同,无非就是unity,gnome3,xfce4,cinamon。
最终体验下来得出以下结论
低配置选择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: :00.0 VGA compatible controller []: NVIDIA Corporation GF108 [GeForce GT ] [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
)
效果图
终端上有git的提示
输命令会有颜色提示对错,需要安装zsh-syntax-highlighting插件
当然还有各种各样的主题,比如我的远程主机使用的是这样的
编辑刚才的配置文件,修改主题为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
验证完美
私有的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 开发工具推荐
- 主力Jetbrains的Rider
除了内存占用非常大点之外,基本可以胜任VS的工作,智能感知非常棒棒,调试非常方便
如下图
- 小刀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,可以说地十分优雅了
提示下作者没有打linux包,所以自己编译 编译步骤
git clone https://github.com/luin/medis
npm install
npm run build
npm run electron
然后写个启动脚本
cd your-path
npm run electron
最后写个desktop配置添加到桌面,具体有兴趣的留言再补充吧
Git 图形管理工具
用命令行还没某些人鄙视了
既然这样,那就再来一个终端工具,自己习惯哪个用哪个,哪有这么多话
推荐强大的终端复用tmux
就是一个终端可以切分多个窗口和面板,再也不用开一堆窗口,要用的时候满地找
比如这样
快捷键有点多,但是用熟了会很爽
IM工具
目前我们公司的工作流是基于谷歌的,基本可以使用Google全家桶,所以没有腾讯qq这种牵绊
但是实在需要的,可以使用web版本
我自己装了个github上一个基于electron的微信
如果需要办公的可能要钉钉也是github上找的
dinbgding也有有人打包好了
我们公司内部还比较潮的使用了slack来协作
如下
邮件什么的跟不用说
绝地妥妥的
- 输入法
我推荐谷歌输入法,喜欢国产的可以使用sogou出的搜狗输入法linux
都用过,值的入手,还没广告 官网deb包
- 顺带提下WPS这个办公套件
linux下也可以使用,还是没广告,不过我看自带的libreoffice也是够我用的了
毕竟开发的,编辑的东西也不多,实在不行我直接丢到Google在线编辑去或者使用石墨文档和腾讯文档
已经很成熟了 WPS linux版本
- 音乐有网易云音乐linux版本
其他的chrome和Firefox之类的都有就不说了
最后全家福
其他
基本上要有的也差不多了
- 其他方面的话补充下就是如果安装xrdp远程到这电脑之类的
- 开启内网穿透远程连接
- 使用好看的主题之类的
挖个坑,暂时不想写,有必要再继续写
以上 欢迎各位反馈问题,提出来研究研究
>此文最初发布here2say
>author:Hoyho
>转载请保留此出处
写个.net开发者的Linux迁移指南的更多相关文章
- 写给移动开发者的 React Native 指南
本文原创版权归 简书 wingjay 所有,如有转载,请于文章篇头位置显示标注原创作者及出处,以示尊重! 作者:wingjay 出处:http://www.jianshu.com/p/b8894425 ...
- ROS_Kinetic_02 ROS Kinetic 迁移指南及中文wiki指南(Migration guide)
ROS_Kinetic_02 ROS Kinetic 迁移指南(Migration guide) 对于ROS Kinetic Kame有些功能包已经更新改变,提供关于这些包的迁移注意或教程.主要针对于 ...
- Oracle JDK迁移指南
Oracle JDK迁移指南 https://docs.oracle.com/en/java/javase/11/migrate/index.html#JSMIG-GUID-C25E2B1D-6C24 ...
- 为什么要从 Linux 迁移到 BSD1
为什么要从 Linux 迁移到 BSD1 作为一个操作系统,GNU/Linux 已经变得一团糟了,因为项目的分散性,内核的臃肿,以及商业利益的玩弄.从 GNU/Linux 迁移到 BSD 有几个技术上 ...
- Magento网站迁移指南
"Magento网站迁移指南":关键词:magento 网站 迁移 指南 上周五,为mkt同事迁移了一个从本机到godaddy的magento系统. 中间出了不少状况, 现在写个迁 ...
- 一个.NET Core开发者的Linux入门学习笔记
用.NET Core开发也有一段时间了,但是由于工作原因一直都是在Windows系统上进行的开发,一直想学习Linux然后把.NET Core开发的程序跑在Linux上,然后把心得体会记录一下发布再博 ...
- PHP开发者的Linux学习之路
谈起一个高效动态网站的构建,那就不得不提到LAMP,即Linux操作系统.Apache网络服务器.Mysql数据库.Perl.PHP或Python编程语言等开源产品所组成的网站架构框架,其最大的优势是 ...
- 在 VirtualBox 虚拟机中安装 Arch Linux 系统指南
How to install Arch Linux on VirtualBox 在 VirtualBox 虚拟机中安装 Arch Linux 系统指南 本文导航 1.Arch Linux 软件仓库2. ...
- Spring Cloud Alibaba迁移指南(二):零代码替换 Eureka
自 Spring Cloud 官方宣布 Spring Cloud Netflix 进入维护状态后,我们开始制作<Spring Cloud Alibaba迁移指南>系列文章,向开发者提供更多 ...
随机推荐
- Spring Boot 系列总目录
一.Spring Boot 系列诞生原因 上学那会主要学的是 Java 和 .Net 两种语言,当时对于语言分类这事儿没什么概念,恰好在2009年毕业那会阴差阳错的先找到了 .Net 的工作,此后就开 ...
- 痞子衡嵌入式:ARM Cortex-M文件那些事(3)- 工程文件(.ewp)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式开发里的project文件. 前面两节课里,痞子衡分别给大家介绍了嵌入式开发中的两种典型input文件:源文件(.c/.h/.s). ...
- javascript基础修炼(7)——Promise,异步,可靠性
开发者的javascript造诣取决于对[动态]和[异步]这两个词的理解水平. 一. 别人是开发者,你也是 Promise技术是[javascript异步编程]这个话题中非常重要的,它一度让我感到熟悉 ...
- 【转】什么是.Net以及.Net的基本语法
什么是.Net? 1. 通常意义所说的.net有5个组成部分,但最主要的部分是.NET Framework, .NET Framework实际上是运行在Windows操作系统的一个应用程序,一个可供二 ...
- [Go] golang原子函数实现goroutine同步
启动了两个goroutine,并完成一些工作.在各自循环的每次迭代之后,在goroutine 会使用LoadInt64 来检查shutdown 变量的值.这个函数会安全地返回shutdown 变量的一 ...
- [leetcode](4.21)4. 有效子数组的数目
给定一个整数数组 A,返回满足下面条件的 非空.连续 子数组的数目: 子数组中,最左侧的元素不大于其他元素. 示例 1: 输入:[1,4,2,5,3] 输出:11 解释:有 11 个有效子数组,分别是 ...
- ejs常用语法
nodejs的模板引擎有很多, ejs是比较简单和容易上手的.常用的一些语法: 用<%...%>包含js代码 用<%=...%>输出变量 变量若包含 '<' '>' ...
- Go开发之路 -- 函数详解
声明语法 func 函数名 (参数列表) [(返回值列表)] {} Golang函数特点 a. 不支持重载,一个包不能有两个名字一样的函数 b. 函数是一等公民,函数也是一种类型,一个函数可以赋值给变 ...
- windows相关命令记录
1.regedit 打开注册表 2.services.msc 打开服务列表 3.net start/stop 服务名 打开/关闭服务,例:net start mysql57,可以通过服务列表开启/关闭 ...
- #WEB安全基础 : HTML/CSS | 文章索引
本系列讲解WEB安全所需要的HTML和CSS #WEB安全基础 : HTML/CSS | 0x0 我的第一个网页 #WEB安全基础 : HTML/CSS | 0x1初识CSS #WEB安全基础 : H ...