我们为何采用安装包方式而不是编译或二进制方式安装新程序/软件呢?
2013-09-24 12:18
344 查看
在服务器上安装新服务或软件,基本上有两种方法可以实现。老式方法是获得源代码再经过编译,新方法是采用安装包的形式。当客户询问我们采用哪种方法更好时,我们的回答是,尽可能地使用安装包的形式,即使您必须要用源代码编译来生成安装包。人们采用新的源代码进行编译的时候,是因为想要获得更新的软件版本,而不想使用系统当时所分配的版本。若使用的是CentOS,人们更想采用更新的版本。这是因为系统自带版本主要考虑的是稳定性,CentOS尤为如此,软件包版本随机封装发布,五年不变。这种做法在许多方面有很好的表现,但是当今时代,一些关键软件如PHP或MySQL,其源代码开发速度快,导致很多系统跟不上时代,不安全,性能也不够好。尽管从源代码开始构建软件或服务有很多麻烦,但是有两项重要的工作,即系统升级和维护必须要从源代码编译开始。以源代码为基础实现升级很难,因为它受限于源代码构建流程和安装程序,而且升级的时候,思维不清晰、流程不明朗。但是,在现实世界中,必须要进行系统升级,以便解决与安全、稳定性及功能性有关的问题。很难对源系统进行升级,即使升级了,也会因为构建环境不同,即源代码来源不同和配置不同而问题百出。要以源代码为基础构建软件/程序,必须首先获得正确可靠的源代码,而这些源代码不是存放在同一位置。这意味着,如果您要构建相同版本的服务/程序,可能每台服务器要使用不同的源代码,因为源代码有时间差异及位置差异。即使您想构建的是同一“版本”的软件,但是因为构建时采用的源代码来源不同、配置方案不同以及编译器不同,所以,您最终也可能构建出的是不同的软件。例如,由于使用编译器时的特定场合,即源代码、环境及构建选配项的共同原因,导致在MySQL中产生了一个重要的安全方面的bug。但是,相比而言,安装包功能更强大,使用更灵活。因为它的所有组件是作为一个整体在运行,有预设的前提条件,能够用于系统升级,容易管理。但是,如上文所述,对于特定的Linux而言,可能已经过时了。要解决此问题,有两种解决方案,要么获取一个更好的安装包库,要么从源代码开始构建新的安装包。获取更好的安装包库相比较而言是一种最简单的解决方案,以CentOS为例,使用最近的Fedora repo就可以轻易地获取最新的包。同样地,供应商和MySQL项目组也会定期发布最新版的RPM和deb。如果没有合适的安装包,您也可以自己用源代码自己创建包,这看起来似乎相悖于上述建议:不要用源代码构建软件,但事实上,这是一种很好的折中的方法。您一次获取源代码,仅编译一次,生成一个包,这个包可无数次的用于所有的服务器。这总比在每台服务器上构建一个软件要好的多,而且,随着时间的推移,只对包进行管理真的是有很多的好处。总的来说,您应该尽量避免使用源代码构建软件/服务,应依赖供应商或更新库来获取最好的安装包。这样您的系统会有更好的性能,更加安全,用起来更令人满意。(Authored by Steve Mushero / ChinaNetCloud CEO & CTO 本博客英文原文请点击查看)
相关文章推荐
- 我们为何采用安装包方式而不是编译或二进制方式安装新程序/软件呢?
- linux 下的两种软件安装方式 —— 源码(编译、安装),编译好的二进制(直接安装)
- MySQL 5.5 三大安装方式:【二进制、源代码编译 和 RPM 包】 安装步骤及优缺点比较
- Centos7使用yum安装程序软件时提示未找到安装包解决方法
- Linux服务器软件为何要编译安装?
- 如何不安装opencvManager运行opencv软件(不是那种简单的jni方式)
- linux下软件编译安装 前提和方式
- InstallShield制作软件安装包:在安装过程中启动一个c#写的程序
- 教你使用rpm、yum、编译等方式安装软件
- 8.23_Linux软件包管理之编译程序包安装
- WinCE CAB Manager制作的安装包提示"您已经安装的程序可能无法正常显示,因为它是专门用于上一版本Windows Mobile 软件的"
- MySQL简介以及二进制程序方式安装
- Android模拟器安装软件提示错误 'adb' 不是内部或外部命令,也不是可运行的程序
- LAMP搭建之mysql安装(二进制免编译安装包)
- 软件安装/程序编译过程
- MySQL 5.5 三大安装方式:【二进制、源代码编译 和 RPM 包】 安装步骤及优缺点比较
- 使用tarball以编译原码方式安装软件
- Linux平台编译安装源码包,制作rpm二进制安装包。
- 源码编译方式安装软件zlib
- linux6下安装mysql 5.7.11 以编译好的二进制文件方式安装1