到底应该选择那种Linux.NET的部署方式?

    当前部署Linux.NET环境的方式可谓是五花八门,既有传统的源码编译的方式、又有各式各样的一键安装脚本、还有绿色包安装方式,而随着Mono官方的新站上线,更增长了采用RPM包的部署方式。那对于一名Linux.NET的初学者来讲,咱们又该如何选择?下面,本文将对这几种的安装方式进行优缺点的比较,从而协助各位读者选择出最佳的部署方式。网络

    本文中,咱们将对下列的部署方式展开讨论:学习

      一、源码编译测试

      二、一键安装脚本.net

      三、RPM包命令行

      四、绿色包继承


1、源码编译教程

    经过源代码编译安装部署Linux.NET可谓是最传统而且最原始可靠的方式,经过获取源代码,并在物理机(虚拟机)中进行编译,编译器可以有针对性的给机器编译出最适合改机器运行的二进制执行文件。同时,经过源代码编译的方式也是全部部署方式中最稳定靠谱的方式。同时,采用源码编译的方式部署也是最灵活的。要想深刻学习的读者必需要掌握此方式部署。部署

    想要经过源码编译的方式安装部署Linux.NET,咱们须要事先Get到一份源代码,目前得到Mono源代码的方式主要分为两种,一种是经过GitHub将Mono的托管代码Pull下来执行autogen再执行make install的方式进行编译安装部署,另一种则是经过Mono/Source所发行的源码包(tar.gz或者tar.bz2包)进行./Configuration再执行make install的方式编译。get

    事实上,若是读者们采用前者(也就是Git Pull的方式)来编译部署环境,所获取到的版本通常都会比从Mono/Source中发行的版本高(固然在可以编译的状况下),对但愿可以尽快使用最高版本或者想尝鲜的读者,使用这种方式不失为一个好选择。但选择这个方式也有必定的缺点,那就是咱们在编译以前须要先进行Git Clone或者Git Pull代码,这将使咱们可能面临上G的Git代码仓库须要下载,同时因为Mono中的external目录下又包含了其余.NET项目的GIT仓库,执行autogen时,系统会检查包括external目录的代码是否完整,所以编译时系统也有可能再次的执行Git Pull拉去相关代码。另外还有一点,在咱们进行Git Pull Master以后,咱们也未必能够编译经过。所幸的是,文章发布以后,LexLi给予了一些提醒,经过他的思路,咱们发现了其实GitHub/Mono的Readmd中是有一盏当前代码是否可以编译的“提示灯”,经过观察此“灯”所显示的颜色咱们就能够知道当前的代码是否能够编译,另外在这里也有一个版本编译测试历史记录,咱们也能够根据它的编译测试记录获知那一个提交版本的的源码是能够编译,而后只需把代码ReSet到此版本便可再次进行编译。编译器

    而采用Mono/Source所发行的源码包编译的读者,可靠性则大幅度提升,毕竟这个是Release版本。虽然当中有个别的发行包由于文件缺失没法编译,可是总得来讲仍是最可靠的,而且源码包发行版大小通常都在百兆之内,相比于Git仓库的上G代码可谓是小巧得多。

    最后,各位读者不管是采用以上两种方式中的那种,都须要花费一段或漫长或短暂的编译等待时间,而且编译时可能会遇到一些Make Error的现象,这都须要各位读者本身进行克服处理。但不管怎么样,这仍是对想深刻学习Linux.NET的读者要求必须掌握的部署方式。(有须要的读者能够参详《Linux.NET学习手记》)

 

2、一键安装脚本

    因为采用源码编译方式都是直接采用Shell命令来操做,所以有很多的人士将这些Shell命令提取出来从新组装成一个Shell脚本,只要执行该脚本便可完成环境的部署,其中更有爱好者别出心裁,在命令行的基础上加以改进,提供相似“界面”之流的方式,给予了较好的与用户的交互。采用脚本式部署环境是解放生产力的标志。

    但即使如此,采用脚本安装的方式仍然存在着至关的不足,那即是采用脚本安装其实只是一个“礼盒”,“礼盒”里面的内容依然是源代码编译方式,所以,采用脚本安装所遇到的问题不会比采用源码安装的少。同时,采用脚本安装仍然存在这“兼容性”的问题,这里值得注意,所谓的“兼容性”并非指脚本的命令行不通用,而是由源码编译所“继承”下来的“不兼容”,也就是环境的复杂性形成不一样的Make Error所带来的“不兼容”。此外,因为每一个人都有本身的安装风格,有的人可能喜欢将东西安装在“/usr”中(像宇内、善友的教程等),有人喜欢安装到“/usr/local/”中(个人风格,《Linux.NET学习手记》的教程路径),也有人喜欢安装到“/opt”中……总而言之,脚本中所编写的安装路径纯属由撰写者决定,安装目录可能并非各位读者所但愿的路径,这点也有必定的不足。

 

3、RPM包

    伴随着Mono新版官网的上线,依赖于Yum的RPM安装方式也悄悄的出如今各位读者的视野,一段时间以来,很多朋友开始或是为了尝鲜(没办法,体验到Yum的甜头以后恐怕很难回头了)或是收到“官方”的指引纷纷采用了此种办法部署Linux.NET环境。

    我没有尝试过这种方式(懒得本身添加镜像源),不过从很多朋友反(bao)馈(yuan)回(ma)来(niang)的信息来看,这种方式彷佛是几种方法中最残(zi)念(sha)的了。因为RPM包隶属于二进制包的一种,安装路径已经在包中预配置,没法更改,咱们也没法获知它到底安装到哪里(只能find了),从一些经过此方式安装的朋友所提供的资料来看,基本上会安装到“/opt”目录中(不过没有具体目录,有“/opt/”、“/opt/mono”甚至“/opt/201408xx/”目录)。此外,采用RPM包方式安装还有一项很是严重的问题,那就是采用此种方式安装居然没有向环境变量注册Mono/bin路径,致使系统没法找到mono。

    所以,我我的尤为不推荐此中安装方式。

 

4、绿色包(jws.mono)

    以上三种方式都有一个共同的特色,那就是都须要在有网络条件的状况下进行。而绿色包与前者不一样,绿色包是从使用源码编译好的机器中进行抽取重组并进行适当的修改变成新的解压便可运行的绿色版的Linux.NET运行环境。

    使用绿色包具备如下的几项优势:

      (1)、快速部署,因为采用此方式部署仅仅须要执行一条解压命令(有须要的可自行注册环境变量),没有编译过程,大大节省了由于环境部署所须要消耗的宝贵时间。

      (2)、针对性强:因为每一款的绿色包都是针对其标注的Linux发行版进行编译,所以绿色包具备比较强的发行版针对性。

      (3)、精致而不失功能:使用过绿色包的读者可能会发现,它的打包文件大小甚至会比Mono/Source所发行的源码包还会小,但功能却又没有减小。这个秘密就在于Mono与MS.NET不一样,Mono的库是向下兼容的,所以,在每款的绿色包中,咱们都会对“重复”的库进行剔除,让包变得足够精致。

    但金无足赤,绿色包一样也面临一些问题,第一就是它没法升级(这项即将获得改善,在下个发行包中提供可用于升级的脚本),第二就是制做发行包是一项工做量大且耗时的活。咱们须要对应编译并制做相应发行版的包。

    不过对于初学者和须要快速部署、大规模部署的读者来讲,绿色包仍是最佳选择,由于它足够容易,由于它足够快。


    固然了,仁者见仁智者见智,以上观点乃我利用Linux.NET编译的时间写出的(已经失败了差很少十次)的主观观点和建议,不喜勿弹哈,谢谢。

    原文首发连接:http://jhonge.net/Home/Single/3788111

相关文章
相关标签/搜索