1. 聚能聊>
  2. 话题详情

Linux发行版安装软件选择:编译、软件包or容器?

gos_update
拿到服务器无论是部署 Web 服务或者是自建 MySQL 集群亦或是建设一个企业私有云储存,不管是什么模式第一步都离不开搭建环境。

不过 Linux 发行版上的软件基本上都是版本号冻结的,只是随后会打上一个补丁来修补漏洞,例如,截止发这篇聚能聊得时候:Debian 8 的 php-fpm 的版本是:php5-fpm (5.6.30+dfsg-0+deb8u1),而 php.net 官网的版本已经是 5.6.31 了。因此对于一些最求较新软件版本的程序来说特别是前端,使用操作系统的二进制软件包显然是无法满足需求的。有些发行版还会提供 backports,不过 backports 的软件毕竟只是少数并不一定会有自己想要的软件。

所以,针对操作系统软件版本跟不上需求的时候,就会有三个选择:

  1. 手动编译该软件的源码至最新稳定版
  2. 寻找使用与操作系统的软件源
  3. 使用容器解决这个问题

不过每一种方法都会有一定的缺陷:

一、编译模式的话,的确很自由但是有时候编译了一个软件就需要把连带的依赖包也给编译了,导致如果不及时关注相关的软件的版本情况就很容易忘记更新,而且升级编译源代码的时候的确很烦躁~~

二、新的软件源也增加了一定的安全隐患,万一维护网络被攻陷藏了毒怎么办?而且软件源也有一定的更新延时,做不到源码编译那样第一时间升级。还有就是,软件源如果没有第三方提供镜像,在中国下载速度恶劣的话只有 B/s 的下载速度。

三、Docker 并不是很多小白或者不喜欢Docker得并不会愿意使用,而且容器软件对于更新版本的便捷性和一些设置还是有待完善。

那么问题来了

  1. 你更倾向于那种软件安装方式?
  2. 难道你还有第四种更新方式?看快快告诉我
  3. 是否有更好的软件更新想法?
  4. 那些软件是你最想要最新版本的?

2017阿里云网络技术高峰论坛报名预约中!

参与话题

奖品区域 活动规则 已 结束

  • 奖品一

    虾米VIP月卡 x 2

  • 奖品二

    云栖定制电脑包 x 1

77个回答

1

福信富通 已获得虾米VIP月卡 复制链接去分享

你更倾向于那种软件安装方式?
编译安装,为什么?因为可以定制,大的项目服务器一般都很干净
比如PHP就专门专心跑php,不会跑java,编译能做到系统精练,相对问题就少很多。

难道你还有第四种更新方式?看快快告诉我
很多程序有提供二进制包啊,解压即用,也是不错的选择啊。

是否有更好的软件更新想法?
线下没有更好的办法。
云上最好的办法就是系统镜像咯。更新一台,然后镜像到其他机器,超级好用。
我们目前会定时打包系统镜像,然后做了弹性伸缩,好用,推荐!

那些软件是你最想要最新版本的?
不关心最新版本,只关心稳定性和效率~~~

PS:
其实,无论是哪一种方式,只要适合业务,能提高效率就好了。
我们也有很多种方式更新的软件的,比如,lib包这些基础依赖类型的基本上都yum安装(阿里云的源做的不错,HTOP都有~哈哈哈)。应用包,比如nginx这种的基本上都是编译安装。
最近docker很火,未来会更火,docker确实给了我们不一样的方式来部署应用。不过依然有坑,有些不完善。
我们的内部应用就是用docker来部署,方便是挺方便的,持续部署也挺好的,省时省力。
但是很多时候很多细节我们是需要人工去干预的,永远都没有一劳永逸的办法。

我个人还是比较推荐编译和docker的方式的。对于我们的业务来说也比较相契合。

如果是学习状态,那还是用编译的方法吧,因为在各种报错中真的能学到很多很多。
如果是生产环境,选择适合你业务的更新方式是最好的,当然编译和docker我个人是推荐的。

妙正灰 回复

编译我觉得更新不太方便

福信富通 回复

其实不会,在我个人的理解,服务器的环境一般不大会一直更改,软件的版本也几乎不更改,除非需要用的新的特性。更改最多的是配置文件。
现在云是一个很方便的东西。假如我需要新特性必须更新最新版本,通常我的做法是撤下一台服务器,更新好了以后测试没有问题了,打包镜像,然后再逐步更新到其他的服务器。
也许有人觉得这样很麻烦,其实用API就不麻烦啦。也可以自己写一个脚本。
还有,感谢你的虾米vip,我相比会员,我更喜欢实物。啊哈哈哈。还是谢谢!

评论
1

北方的郎 已获得虾米VIP月卡 复制链接去分享

你更倾向于那种软件安装方式?
如果是对性能要求较高的架构传统的生产系统,肯定是损耗越小越好,主要考虑方案2。如果系统本身就是容器化或者微服务化的系统,肯定是Docker。
如果就是测试平台,那么用Docker或者搭个虚机也行啊。
难道你还有第四种更新方式?看快快告诉我
呵呵,虚机也是一种选择,虽然它的性能损耗比Docker还大。
是否有更好的软件更新想法?
感觉这个主要是在方便性/适用性以及性能损耗上取得一个平衡。现在看Docker还是未来的趋势。
那些软件是你最想要最新版本的?
Python的各种包,各种更新,各种编译,有时候搞得人很烦。

妙正灰 回复

虚机的化损耗实在太大,还是算了

评论
1

海洋的云 已获得云栖定制电脑包 复制链接去分享

你更倾向于哪种软件安装方式?
Docker!
难道你还有第四种更新方式?看快快告诉我
Docker,Docker,Docker!哈哈,意外吧~
是否有更好的软件更新想法?
暂时还没有,但是其实个人更偏向于稳定版而不是最新版。
那些软件是你最想要最新版本的?
不一定是最新版,但是用Docker省时省力。

题外话啊,个人还是比较看重Docker的发展前景的,尤其是目前企业里在准备把各路业务都往Docker上布的时候,其实感觉这个方向还是对的。
Docker包含了运行环境和可执行程序,可以跨平台和主机使用;可以快速部署和启动,节约时间精力;方便进行SOA和微服务架构的构建,节约成本,虽然还是有一定的缺点,但是那些优点,对于一个企业来说已经是很大的福利了。
至于说软件是否要最新版,我一直觉得最新版刚出的时候都会各种坑,对于企业来说是不敢轻易尝试最新版的,都会在版本更新中,不断选择稳定版本中的最新版,所以,楼主还是选择用Docker吧!

ps:我不是Docker的托哦,哈哈,是真心推荐的,对Docker了解也不是很深,都是个人想法,大家有什么建议的话,欢迎各位多多指教啊!

妙正灰 回复

一般来说像PHP还是非常值得跟进最新稳定版的,等到 X.X.3 的时候一般就比较稳定了

海洋的云 回复

嗯嗯

评论
1

麦老师 复制链接去分享

你更倾向于那种软件安装方式?
看好多人都说docker的,估计也有很多人没用过,当然包括我,几乎所有服务都是编译安装,非必须情况很少升级,像最近nginx的漏洞,肯定是要升级的,本地虚拟机测试下升级,线上在跑一遍。

难道你还有第四种更新方式?看快快告诉我
docker这个容器,看着挺不错的,工作也没时间抽空去研究,具体怎么样还是用过才知道啊~

是否有更好的软件更新想法?
如果是编译装的话,也只有编译去升级了
如果不是特别的服务,直接yum就可以了

那些软件是你最想要最新版本的?
生产环境不会去追新,稳定就好
不升级也可能会存在问题,但是升级了,问题可能会更多

妙正灰 回复

我觉得像nginx完全就可以追新,Nginx 的稳定和主线的区别只是API的稳定性,安全性都是一致的

评论
0

1251997551582656 复制链接去分享

您好,老师!我前段时间注册的域名www.shengyi0769.com为何我打不开或登录不了?

大鱼海棠294 回复

没有网站就一个域名打开个毛啊

滕云龙 回复

笑死我了

评论
1

luneice 复制链接去分享

1.重装Ubuntu的第一步换成清华的源。
2.大部分软件还是通过apt-get安装,少部分软件到官网下载源代码自己编译然后安装。比如mongodb、redis比较新的版本还是要到官网找,像nodejs运行环境更是要到官网下载,然后自己编译安装。普通方法安装的版本太低,而有些库必须是6.0以上版本。
3.能用容器解决的就用容器解决方便快速。

木青山 回复

我也是这么操作,不过docker没怎么接触

luneice 回复

嗯,我对容器也没怎么接触,感觉有点高大上,但是一定会用它的。

评论
1

巴洛克上校 复制链接去分享

你更倾向于那种软件安装方式?
Docker!为什么答案很简单方便快速!传统的,安装 配置 运行,好麻烦

难道你还有第四种更新方式?看快快告诉我
Docker!Docker!Docker!Docker!
复制 运行。完美!

是否有更好的软件更新想法?
没有,毕竟平时工作中几乎用不到,我也就很少接触,接触的也纯为了自己想搞点事情,所以我就认为Docker最好!

那些软件是你最想要最新版本的?
这个我不太关心,只知道我要搞得东西好用最后能搞成了就好了,更不跟新对于我无所谓,话说!我一个搞前端的搞起了linux是不是有点不务正业!!

优酷VIP在向我招手

1

reyoung729 复制链接去分享

生产环境我只会选第二种,并且选择友好的 ubuntu server。生产环境的软件使用最新版,这种场景很少。一般确保软件不存在安全隐患即可。

1

shawn.ss 复制链接去分享

你更倾向于那种软件安装方式?
docker镜像,一次安装,永久使用
难道你还有第四种更新方式?看快快告诉我
把所有的包build好,不用动态依赖,全部静态应用,做一个巨大无比的二进制执行文件包,拷贝进去就能用(笑cry)
是否有更好的软件更新想法?
docker还是最好的方案,屏蔽操作系统差异来说
软件更新什么时候能够做到拷贝进去就能用就好了,docker的build file也不用写,哈哈
那些软件是你最想要最新版本的?
nodejs以及nodejs下面一大堆的各类npm包,还有就是redis,jdk,opencv之类的

0

1819304144864919 复制链接去分享

什么都不懂

a0387682 回复

什么都不懂

评论
0

1063610553883389 复制链接去分享

在对docker有足够的了解,充分使用之后,感觉Docker是个好东西,可以方便配置和“复制”到其他服务器上。不过有的软件还是不得不自己编译。

0

cky2005 复制链接去分享

软件包吧 编译对新手有点复杂麻烦 容器貌似又太容易学不到东西 所以折中选软件包.

0

29231148 复制链接去分享

高手

0

chenzhi186 复制链接去分享

打酱油的,看看大神的见解

0

dadfd 复制链接去分享

容器,容器,容器,最要的事情说3。。。。

0

1313804957597784 复制链接去分享

这个礼物我不喜欢,拒绝回答

0

hellc丶 复制链接去分享

安装源挺好,而且源并不少
0

是你普洱 复制链接去分享

CentOS rpm yum

0

大鱼海棠294 复制链接去分享

感觉还docker好用

0

殇陌柒 复制链接去分享

进来学习一下 第一次来

4
7363
浏览
1
收藏
邀请他人互动
关注
4
粉丝
524
话题
50

感兴趣or擅长的领域:

简介:

阿里云开发者论坛知名版主,目前专注新零售实践和开发,有多年服务器运维经验,曾参与AMH4.2开发。
提供了高性能可伸缩的容器应用管理服务,支持在一组云服务器上通过Docker容器来进行应用生命周期管理。

操作审计(ActionTrail)会记录您的云账户资源操作,提供操作记录查询,并可以将记录文件保存到您指定的OS...

一种高性能、高可靠、可平滑扩容的分布式内存数据库服务。

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...