再吐槽 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哈,那两个家伙确实不错,但问题是很多源代码安装的软件不在那里面啊。
13659 次点击
所在节点    程序员
104 条回复
cattyhouse
2015-06-24 23:18:49 +08:00
如果你需要编译的软件比较多,直接gentoo,省心
southwolf
2015-06-24 23:26:34 +08:00
233 最近给 Ubuntu 15.04 升级了 4.0 内核(笔记本嘛,总有些诡异的驱动,内核肯定越新越好) ,然后要装 Docker, 然后 Docker 依赖 linux-image-virtual, 然后 linux-image-virtual 依赖 kernel 3.19......
monnand
2015-06-24 23:27:14 +08:00
你为什么要自己编译代码啊……你需要修改这个程序吗?你需要给这个项目做贡献吗?如果不需要,为什么不直接用源里现成的?如果闲版本地,为什么不直接下载.deb, .rpm的二进制包?
lilydjwg
2015-06-24 23:27:38 +08:00
@cbsw 我最开始是手工编译安装的,参见 http://lilydjwg.is-programmer.com/posts/21162.html
后来是修改 PKGBUILD 的,参见 https://github.com/archlinuxcn/repo/tree/master/linux-lily

修改是基于发行版的内核配置的,所以成功率很高。不过很难自动化,所以版本会比较旧。不过正因为如此,我逃过了两次文件系统损坏的 bug =w=

Arch Linux 的确新鲜又原汁原味,偶尔大版本更新比如 systemd 的引入等需要一定时间来习惯,颇为费神。不过我现在已经喜欢上 systemd 啦。另外就是经常受新引入 bug 的影响,其中大部分会很快被修复,少数得慢慢等上游解决所以只好先降级用。

我发现在各软件上游,Arch Linux 的出镜率挺高的,经常上游一改坏什么东西,马上就被 Archer 发觉了~

其实我早不用 abs 了。把官方两个源的 PKGBUILD git 仓库 clone 了回来,方便好用 :-)
nikoukou
2015-06-24 23:37:57 +08:00
arch要是保证滚不挂,收费我也用。。。
lirau
2015-06-24 23:38:44 +08:00
从非技术角度安慰下你吧,如果你掌握了,就是你比别人强的技能点。。
LeoQ
2015-06-24 23:39:43 +08:00
我以前最开始用linux的时候想安视频播放器 于是去mplayer官方网站下了源码,经百度知道要./configure make , make install
然后一路下去,make了上十分钟,但是什么文件也不能顺利打开,后来我发现config的时候有些地方不OK,我就一个个的谷歌,安装,再后来,我就悟到了,最主要的就是要安装gcc, g++ 各种视频格式的dev包,alsa的dev包,然后再编译,安装,就可以了。


当然现在说起来很轻松,当时就为了简单的看个视频,我钻研了好几周,但是不得不说,我觉得这段经历还是很有价值的,至少我知道了依赖是什么。
cbsw
2015-06-25 00:00:37 +08:00
@nikoukou 无脑升级,任何系统都可能会挂掉,那些安装微软更新的出问题不照样一大堆吗。那些可能会导致系统挂掉的升级,pacman 前都会询问你是否覆盖或强制更新,没搞明白你就随手输个 y,挂掉了能怪谁。出现这种不兼容的升级并不是三天两头,可能一年也就碰到一两次而已,去官网瞅一眼看看指导基本不会出任何问题
@lilydjwg 原来还有一个 archlinuxcn 仓库啊,用了这么久 arch 我竟然不知道,汗颜啊。回头试试
pubby
2015-06-25 01:34:11 +08:00
@likuku 开个jail,搞定业务需要的运行环境。碰到软件升级就复制jail升级调试完切换。配合zfs更灵活。//FreeBSD
feikaras
2015-06-25 01:59:40 +08:00
@cxshun 还没搞懂规则就先弄规则。抱怨啥。本来编译就不是给用户用的。既然是开发者就有学习的义务。别提msi,玩坏了只能装系统。
MetroWind
2015-06-25 03:07:08 +08:00
你是自己编译的么……?体力活啊…… IM 这种东西还是得用个包管理器。

不过 IM 神器啊!!!!
valkjsaaa
2015-06-25 05:23:14 +08:00
给楼主和大家推荐一个不用换发行版,源码编译,保持最新的管理神器,而且还不需要 root 权限: Linuxbrew。没错,就是 Homebrew 的 Linux port…
endrollex
2015-06-25 06:55:46 +08:00
要找到lib的判断路径,像centos的软件要装最新版只能自己折腾,这个是经常遇到的问题
lilydjwg
2015-06-25 08:00:08 +08:00
@jackieyang51 和 Gentoo Prefix 相比如何呀?
lilydjwg
2015-06-25 08:05:25 +08:00
@LeoQ 呃,mplayer configure 出错了不会报错退出么,还是说只是可选依赖?又或者是你的 shell 没有显示上条命令的退出码所以你没有注意到 configure 失败了?

我记得我学会编译安装东西的时候已经对 Linux 命令行比较了解了,也会盯着命令输出看。在那之前只用软件源。Ubuntu 的软件源里东西还是挺丰富的。后来换 Arch 了,自己主系统上也是只用 pacman 了,如果源里没有我就去打包一个 :-D
lilydjwg
2015-06-25 08:21:21 +08:00
@jackieyang51 看它们的 issues,linuxbrew 好像连安装 Python 都有问题呢。
sheaven
2015-06-25 08:21:35 +08:00
redhat/centos/fedora 系,有一个源叫epel 可以解决楼主困惑
holulu
2015-06-25 08:46:23 +08:00
pkgs.org 搜一下,看第三方仓库有没有你要的,有些项目自身也有软件仓库的,从他们的仓库一般可以安装不同的版本。
aec4d
2015-06-25 09:29:44 +08:00
@southwolf 我昨天do-release-upgrade升级到15.04也是4.0内核 docker报错了https://github.com/docker/docker/issues/12002
然后sudo systemctl enable docker就可以了 或许你也是这个问题~~~
Dongdong36
2015-06-25 09:34:49 +08:00
自从用了Fedora, 我也不编译软件了,人生苦短,远离编译

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

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

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

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

© 2021 V2EX