1
em70 2014-09-07 20:15:45 +08:00
编译安装最大的好处是不需要外部环境依赖,安装好就能用. 但yum也很方便啊,我能yum的一般不自己编译安装了
|
2
wdlth 2014-09-07 20:23:13 +08:00
有的软件要加入第三方模块,要自己重新编译。
yum、apt那些只是用于安装大多数依赖的类库。 |
3
gotounix 2014-09-07 20:26:16 +08:00
不编译安装了,不好跟踪软件漏洞,不能及时修复。
|
4
jybox 2014-09-07 20:27:48 +08:00
我所有的软件都是 apt 装的,感觉完全没有编译安装的必要
|
5
9hills 2014-09-07 21:20:11 +08:00
一般来说,直接APT/YUM 就好了,这些都是有官方质量控制的。软件版本不是越新越好的。。
|
6
est 2014-09-07 21:22:31 +08:00 via Android
除了configure才能打开的,一般不需要自己编译
|
7
julyclyde 2014-09-07 22:39:42 +08:00 via iPad
每次都编译的直接开除
|
9
zjgood 2014-09-07 23:00:27 +08:00 via Android
因为phpng没有deb包,所以只能自己编译,其余的都是直接apt-get
|
10
semicircle21 2014-09-07 23:27:35 +08:00
据我所知, redis 是有必要的, 可以编32bit 的版本, 省一点内存. 其他的就不清楚了/大概专业做运维的同学更有发言权吧.
|
11
ironblood 2014-09-07 23:32:49 +08:00
有时候你回发现源里的库不够新,这个时候你就需要自行编译安装了。
比如 Ubuntu 12.04 和 10.04 里的 libxml2 的版本就不相同。有些生产用的服务器还没有从 10.04 升级。相比较起来,编译安装个库的成本小于系统升级,对吧。 |
12
kmcool 2014-09-07 23:56:11 +08:00
有些复杂软件有时候还是得自己编译才能用,比如前几天刚折腾了GNURadio
|
13
lecher 2014-09-08 01:04:56 +08:00 2
编译安装的目的是统一环境,版本、安装位置、运行参数、启动和关闭的脚本。
一两台服务器的情况下随便怎么折腾都可以。 但是假如有多台服务器,尤其涉及服务器安装配置的时间不一致的时候,编译安装的优势就体现出来了,你总不希望时隔一年,再安装一台新的服务器的时候,环境出现细微的差别吧?尤其还有一些应用你是打了第三方扩展库的,一个版本号的差异,可能就够折腾好久。 编译安装便于统一环境的所有版本,同时也利于自动化部署。脚本写好,放着跑就行。假如操作系统环境一致,甚至不用编译安装,直接同步已经编译好的环境到新机器,一切配置都不用动,开机就可以直接用。 等你yum 安装 再根据环境配置完,别人编译安装的已经跑完好几台的环境了。 生产环境来说,编译安装这点非常重要,用linux不就是看重它便于自动化易于批量管理么。 |
15
jyhmijack 2014-09-08 09:48:52 +08:00 via iPhone
自己打rpm包
|
17
lecher 2014-09-08 11:19:03 +08:00
@Feiox 编译安装之后,假如要升级,两种方式。
1. 在其中一台写好升级修复的脚本,将需要升级或者修复的软件,重新编译安装一次,然后脚本同步到其它服务器执行。 2. 系统环境全部一致的情况下,再其中一台升级好,然后整套环境分发到其它服务器。 这样的可控性要比包管理的高一些,因为环境统一,所以需要安装哪些版本,修改哪些配置,都可以直接脚本处理。 |
18
Feiox OP @lecher 我不是专业搞运维的 ~ 轻拍 ~
那个,有没有什么比较好的运维脚本供学习么?国人的 LNMP 一键安装脚本写的如何?运维集群的时候,脚本的写法与运维一两台服务器有什么区别呢 ~ |
19
lecher 2014-09-08 12:43:39 +08:00
@Feiox
运维脚本这个东西因为不同公司的环境需求不一样,似乎没有流出来的。 LNMP一键脚本有好几个不同的版本,算是帮助普通用户快速解决了基础环境的问题,就是版本太老。实际上生产环境还是自己去写安装脚本的居多,毕竟调参数是要根据需求来处理的。 运维几台服务器的时候,可能不会特别关心软件挂了怎么处理,多台的时候,从硬件层面到应用层面各种情况都要考虑到,并且写好对应的运维脚本,尤其监控状态和异常处理,运维的脚本至少要能做到:监控到应用确实挂掉了,切换应用状态,重启应用,再不行,重启系统,还不行,这台服务器踢出来报给运维进行手工处理。 做监控数据打日志和处理异常的活,写脚本的时候会特别注意异常状态处理的事情,多台会更注重自动化部署和数据监控方面的管理,所以多台的时候:文件分发、配置变更、性能参数、故障异常这些处理脚本会用一套运维系统管理,日志会定期处理存入数据库以便分析系统状态,所以多台服务器运维通常是自己写管理系统或者用开源的运维系统,这方面在社区有不少讨论的。 |
20
julyclyde 2014-09-08 14:38:56 +08:00
@em70 依赖关系是客观存在的,并不以你装包还是编译而改变。如果你以为把编译好的软件拷贝到别的缺依赖关系而你无视这个缺的机器去也能用,那你就等着软件crash吧
|
22
em70 2014-09-08 15:36:22 +08:00
@julyclyde 你误会了,我不是那个意思,我的意思是在一个机器上能编译通过的程序,那么在本机就一定能运行,如果是从其他机器拷贝一个程序过来则无法保证,所以需要编译安装.
|
23
reverland 2014-09-08 18:40:22 +08:00
当你看源码的某些部分不爽的时候
|
24
wwek 2014-09-08 19:15:47 +08:00
能够yum apt-get的 全 这样二进制。
需要编译的情况。 需要改源码,无最新的二进制包。 生产环境的 php nginx 都是自己打包 rpm的。 |
25
msg7086 2014-09-08 20:21:28 +08:00 via iPhone
自己编译也可以用包管理。比如debian你下载git head和debian rules然后debuild就好了。编译出来的包也可以到处分发,也可以让包管理帮你装依赖。
|
28
julyclyde 2014-09-08 22:54:52 +08:00 via iPad
@em70 用包管理系统(正常使用,别用--nodeps之类的参数)只要你能装上自然可以运行,依赖关系在包内有说明,由系统保证。如果你拷贝编译出来的文件,则客观存在的依赖关系缺乏显式说明,因而无法确保。自己编译解决了包管理世界不存在的社会问题。
|
29
julyclyde 2014-09-08 22:56:12 +08:00 via iPad
这种问题其实没啥好讨论的,就是水平的试金石。寨有寨路罢了
|
31
lazyphp 2014-09-09 09:35:14 +08:00
yum apt-get安装的软件有时候 会无法找到对应的按照目录,因为他们会把软件安装得细化。这时候,如果不熟悉的话,你会感觉非常烦恼。如,你要安装某个扩展,这时候因为你不清楚环境,就很难安装上了。
编译安装的话,路径之类都是你设置的,随用随编。就是解决依赖,各种杂七杂八的问题搞死你。 |