如今,还需要自行编译安装生产环境的各个软件吗?

2014-09-07 20:12:04 +08:00
 Feiox
相比于 yum apt-get 安装编译好的包,自行编译除了能够用上最新的稳定版(似乎生产环境不能这么玩),还有什么其他的好处?
我看现在各种运行参数都可以通过配置文件进行随时按需修改,似乎,编译安装 ……
另外,根据需要在编译期间拿掉用不到的组件,现在这样做还有意义么?不拿掉是否有益于性能和安全性?
7281 次点击
所在节点    Linux
32 条回复
em70
2014-09-07 20:15:45 +08:00
编译安装最大的好处是不需要外部环境依赖,安装好就能用. 但yum也很方便啊,我能yum的一般不自己编译安装了
wdlth
2014-09-07 20:23:13 +08:00
有的软件要加入第三方模块,要自己重新编译。

yum、apt那些只是用于安装大多数依赖的类库。
gotounix
2014-09-07 20:26:16 +08:00
不编译安装了,不好跟踪软件漏洞,不能及时修复。
jybox
2014-09-07 20:27:48 +08:00
我所有的软件都是 apt 装的,感觉完全没有编译安装的必要
9hills
2014-09-07 21:20:11 +08:00
一般来说,直接APT/YUM 就好了,这些都是有官方质量控制的。软件版本不是越新越好的。。
est
2014-09-07 21:22:31 +08:00
除了configure才能打开的,一般不需要自己编译
julyclyde
2014-09-07 22:39:42 +08:00
每次都编译的直接开除
julyclyde
2014-09-07 22:41:14 +08:00
@em70 建议你学习一下唯物主义哲学
zjgood
2014-09-07 23:00:27 +08:00
因为phpng没有deb包,所以只能自己编译,其余的都是直接apt-get
semicircle21
2014-09-07 23:27:35 +08:00
据我所知, redis 是有必要的, 可以编32bit 的版本, 省一点内存. 其他的就不清楚了/大概专业做运维的同学更有发言权吧.
ironblood
2014-09-07 23:32:49 +08:00
有时候你回发现源里的库不够新,这个时候你就需要自行编译安装了。

比如 Ubuntu 12.04 和 10.04 里的 libxml2 的版本就不相同。有些生产用的服务器还没有从 10.04 升级。相比较起来,编译安装个库的成本小于系统升级,对吧。
kmcool
2014-09-07 23:56:11 +08:00
有些复杂软件有时候还是得自己编译才能用,比如前几天刚折腾了GNURadio
lecher
2014-09-08 01:04:56 +08:00
编译安装的目的是统一环境,版本、安装位置、运行参数、启动和关闭的脚本。
一两台服务器的情况下随便怎么折腾都可以。
但是假如有多台服务器,尤其涉及服务器安装配置的时间不一致的时候,编译安装的优势就体现出来了,你总不希望时隔一年,再安装一台新的服务器的时候,环境出现细微的差别吧?尤其还有一些应用你是打了第三方扩展库的,一个版本号的差异,可能就够折腾好久。
编译安装便于统一环境的所有版本,同时也利于自动化部署。脚本写好,放着跑就行。假如操作系统环境一致,甚至不用编译安装,直接同步已经编译好的环境到新机器,一切配置都不用动,开机就可以直接用。
等你yum 安装 再根据环境配置完,别人编译安装的已经跑完好几台的环境了。
生产环境来说,编译安装这点非常重要,用linux不就是看重它便于自动化易于批量管理么。
em70
2014-09-08 01:19:37 +08:00
@julyclyde 不明白,有问题你可以说你的观点,别拐弯抹角,没啥意思
jyhmijack
2014-09-08 09:48:52 +08:00
自己打rpm包
Feiox
2014-09-08 11:07:50 +08:00
@lecher 编译安装之后,是如何升级修复相关组件的呢?
lecher
2014-09-08 11:19:03 +08:00
@Feiox 编译安装之后,假如要升级,两种方式。
1. 在其中一台写好升级修复的脚本,将需要升级或者修复的软件,重新编译安装一次,然后脚本同步到其它服务器执行。
2. 系统环境全部一致的情况下,再其中一台升级好,然后整套环境分发到其它服务器。
这样的可控性要比包管理的高一些,因为环境统一,所以需要安装哪些版本,修改哪些配置,都可以直接脚本处理。
Feiox
2014-09-08 11:35:37 +08:00
@lecher 我不是专业搞运维的 ~ 轻拍 ~
那个,有没有什么比较好的运维脚本供学习么?国人的 LNMP 一键安装脚本写的如何?运维集群的时候,脚本的写法与运维一两台服务器有什么区别呢 ~
lecher
2014-09-08 12:43:39 +08:00
@Feiox

运维脚本这个东西因为不同公司的环境需求不一样,似乎没有流出来的。
LNMP一键脚本有好几个不同的版本,算是帮助普通用户快速解决了基础环境的问题,就是版本太老。实际上生产环境还是自己去写安装脚本的居多,毕竟调参数是要根据需求来处理的。
运维几台服务器的时候,可能不会特别关心软件挂了怎么处理,多台的时候,从硬件层面到应用层面各种情况都要考虑到,并且写好对应的运维脚本,尤其监控状态和异常处理,运维的脚本至少要能做到:监控到应用确实挂掉了,切换应用状态,重启应用,再不行,重启系统,还不行,这台服务器踢出来报给运维进行手工处理。
做监控数据打日志和处理异常的活,写脚本的时候会特别注意异常状态处理的事情,多台会更注重自动化部署和数据监控方面的管理,所以多台的时候:文件分发、配置变更、性能参数、故障异常这些处理脚本会用一套运维系统管理,日志会定期处理存入数据库以便分析系统状态,所以多台服务器运维通常是自己写管理系统或者用开源的运维系统,这方面在社区有不少讨论的。
julyclyde
2014-09-08 14:38:56 +08:00
@em70 依赖关系是客观存在的,并不以你装包还是编译而改变。如果你以为把编译好的软件拷贝到别的缺依赖关系而你无视这个缺的机器去也能用,那你就等着软件crash吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/132232

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX