再吐槽 linux 的版本依赖

2015-06-24 14:53:28 +08:00
 cxshun
今天早上,由于维护docker环境 ,要安装一个叫Image magick的图片处理工具,这家伙最新版本为6.9.1-6,在安装它之前需要先装delegates,即类似的第三方处理工具,由它去处理png,jpeg等等的啥东西。
就是这一堆东西: http://www.imagemagick.org/download/delegates/

在这个Image magick上花了接近大半天的时间,主要是configure时死活认不出libpng,但实际上已经装完了。
后来实在没办法,硬是换回了旧版本6.9.1-1完事。

有时候,我会想,这些源代码编译软件的存在,就是为了折磨我们吗?这版本依赖的存在,相比windows和mac的一个包搞定的,简直是坑爹得不行。

遇到这样一种源代码安装,并且版本依赖非常强的软件,你们的看法是怎样的?

PS:曾经遇到过一个需要源码编译的软件,它依赖的软件,相关0.0.1都编不过,从那个时候开始,遇到需要编译安装的软件,我就觉得好日子好像又到头了。
PS2:不要说apt-get和yum哈,那两个家伙确实不错,但问题是很多源代码安装的软件不在那里面啊。
13277 次点击
所在节点    程序员
104 条回复
likuku
2015-06-24 15:43:53 +08:00
包管理器,别逗了... linux 各个发行版,基本系统和“业务应用” 都是一锅大乱炖...

可能会出现以下吐血场面:
1. 业务应用 的某依赖涉及基本系统某软件包,没办法只有顺带更新,引发连锁反应,基本系统都死掉。
2. 基本系统 某安全更新,影响到某些业务软件包,安全更新必须要,业务系统又不能关停/新旧版本冲突,结果业务系统挂掉。
szopen
2015-06-24 15:45:02 +08:00
你不会用pkg-config而已
cxshun
2015-06-24 15:45:03 +08:00
@zsj950618 难道我就下个源代码安装个软件还要改下它的编译文件,我不搞linux开发,不在上面写c,所以我不懂autoconf,我只知道make make install和configure。你可以说我不懂,这是事实。但要搞清楚,为什么一个软件不能好好地做好,而要依赖特定的版本。所以我才说mac和windows整个打包的方式好一点,没有太多依赖的问题,反正都在一起了。
@Septembers 是啊,要是哪一个so后面加个版本,就只能坑爹了。
neoblackcap
2015-06-24 15:49:31 +08:00
@cxshun 其实这样的情况本身就应该是身为开发人员你自己解决的事情,你说你是运维的话,那一样是你的事情,是你的责任。

面对责任,那没什么好说的,你其实用点心google一下,用ubuntu就找下ppa那就可以了。其实linux世界都向二进制分发迈进中,很多软件还是有人去做每夜构建版本的,你自己找找就好了。
zsj950618
2015-06-24 15:52:07 +08:00
@cxshun 你在用autoconf来编译软件,然后你说你不会,哦,好吧,就这样吧。
chilaoqi
2015-06-24 15:57:43 +08:00
Linux 存在的意义就是折腾。
mongodb
2015-06-24 15:58:42 +08:00
@likuku 所以redhat为老版本还一直提供各种安全更新其实好像挺良心——升级吧各种问题,不升级吧又有已知漏洞。然后redhat过来拍肩,别怕,老大帮你补漏洞。
Septembers
2015-06-24 15:59:58 +08:00
@neoblackcap
二进制分发 的问题是 二进制与CPU指令集不是最优匹配
(然而这个问题只有自己编译能解决
(然而一般情况而言很难遇到这个问题
fu82581983
2015-06-24 16:04:26 +08:00
cxshun
2015-06-24 16:15:41 +08:00
@zsj950618 好吧,我只是不懂里面的语法罢了。我会写简单的Make文件,但不意味着我要去维护它,所以才有后面的感慨。
@mongodb redhat确实良心。
@neoblackcap 我知道apt-get里面有,但这货就是没有最新的在apt里面。责任不可避免,我承认。但每个需要编译的都要这样去解决是很耗时的。运维花点时间还好,但作为开发人员花时间去处理环境问题,感觉比较繁琐。

用心点google,我遇到这些编译问题当然每一时间google啦,但问题是没人可以解决。而且我换了一个版本就解决了(可以识别到libpng),你告诉我这是我的问题?
@fu82581983 兄弟,我会安装。而且我已经装好。我这里吐槽的是版本依赖的东西哈。
icemanpro
2015-06-24 16:17:59 +08:00
opensu
2015-06-24 16:26:24 +08:00
@Kabie 为什么呢?小白,没有用过arch
linux40
2015-06-24 16:29:50 +08:00
arch大法好
giskard
2015-06-24 16:50:06 +08:00
借楼请教一下大家,这样的问题如何才能比较好的解决:
服务器,centos 5.x 不能连外网,没有root权限,想要在自己目录下编译一个库A,./config以后告知缺少库B和C,于是去下了B和C的源码,./config一下,被告知缺少库D和E......

请问我该怎么办?
Septembers
2015-06-24 16:57:29 +08:00
@giskard 自己本地搭建好相同的发型版的环境,进行编译打包封装成rpm 再发布到部署
holyzhou
2015-06-24 17:01:22 +08:00
@szopen 对头 应该是编译没指定Image magick需要的新版本的libpng的pc的文件 都还在默认路径找
choury
2015-06-24 17:06:12 +08:00
在debian下,如果你要编译需要装dev包,比如libpng12-dev 这种
holyzhou
2015-06-24 17:10:21 +08:00
@giskard 依赖问题还是要解决的,找个相同版本跟架构的机器用yum或者apt这种包管理方式补齐缺的库一般都是 *-devel形式的 ,debian的是lib开头的,包管理找不到就编译 ,最后直接把生成的二进制传上去用就好。
vibbow
2015-06-24 17:10:50 +08:00
@icemanpro winsxs不就是用来解决这个问题的么?
giskard
2015-06-24 17:13:53 +08:00
@holyzhou 谢谢,你的意思是把所有缺少的库以及我要安装的 A 都在本地机器编译好,然后传到服务器上,是这样吗?我去试试

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

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

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

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

© 2021 V2EX