- 主题:[转载]容器化打包格式不是 Linux 应用的未来
打包地狱不就是另一个依赖地狱么?没区别的。
你这个例子属于quassel自己的问题。正常情况只会带上FFMPEG的包(libavformat,libavcodec等那几个),不可能把vlc也扯进来。除非quassel就是用system("vlc xxx.mp3")来给你发出咚的一声。
那这样容器化打包你一样得有vlc和ffmpeg。
【 在 ayaka 的大作中提到: 】
: 当年遇到过这种事情,那时候玩irc,想尝试下quassel,然后装那个,连着vlc带着ffmpeg一块下载了,当时整个人是傻的,去发行版频道里问为啥,人回答,这样,你在收到通知的时候,你的音箱或耳机可以发出咚的一声,我可QTMD吧
--
FROM 180.109.232.*
首先,没有哪个发行版会把qt和kde捆上,更大的可能性是你装的那个东西依赖了kde的某个组件,顺带牵上了整个kde+qt。
讨论问题首先要基于一个正确的事实。不然你装啥都可以说成要下载200G依赖。毕竟所有的软件都要libc,按你的逻辑既然都能跟libc捆上,也就是任何包都能关联所有的包了。
其次,打包地狱和依赖地狱本质上是一回事。本质上是足够丰富足够庞大的生态自带的复杂现象。好比perl的哲学认为世界是复杂的,所以就应该There's more than one way to do it一样。这只是一种哲学路线的选择。所以既然打包地狱和依赖地狱没区别,那就选择依赖地狱,至少比打包地狱好一点。这也是我上次在这里发帖的时候说的不喜欢用docker的原因。因为打包地狱这种思路只是用起来爽,并不符合整个系统的设计哲学。
如果类似apple那样,有个强力的管理手段,该淘汰就淘汰,该升级就升级,该不兼容就不兼容,那自然会简化很多。然而这里是个一言不合就fork的开源世界,既然你有了选择的自由,那你就要接受选择的代价,就要具备做出正确选择的能力。
最后,以上是对错的问题,明确对错之后再来讨论好坏的问题。比如某个包它实现的很垃圾,整合程度很低,导致打包的时候依赖关系一大堆啥都要带上,那也只是这个包自己实现的不好的问题,而不是这套机制有什么问题。linux如果老老实实的都走package manager,舒服的很本就没这么多事。
【 在 ayaka 的大作中提到: 】
: 这样至少比依赖地狱强点……你想想,假设你装了gnome桌面,然后你想装的一款软件的UI是QT的,然后你的发行版又把QT和KDE捆在了一起……然后你原本想装一款50M的软件,最后因为依赖下载了700M的包,额外占用1G硬盘……
--
FROM 180.109.232.*
静态链接是个可选的折中方案。毕竟静态库再大也就是几十兆,代价还是可以接受的。
但容器化打包要解决的并不是静态链接能解决的问题。比如我代码其实就几行,但包了个web框架进去之类的。
总的来说我认为容器化的思路都是劣币驱逐良币的邪路,跟短视频本质上是一样的东西。靠快速满足用户来达成自己快速铺开生态的目的,至于后面的麻烦,哪管身后洪水滔天。
【 在 Knightmare 的大作中提到: 】
: 还不如静态链接呢
: go语言给出的答案挺实用的
: 就是你怕依赖的库多,那就别依赖别的库呗
: ...................
--
修改:lvsoft FROM 180.109.232.*
FROM 180.109.232.*
一个技术当然有它的定位和价值,容器在强调快速迭代的运维部署上用的就很舒服。
但如果因此导致泛滥了,以至于所有的东西都容器化打包,那这个就是邪路。
这个问题的关键就在于,“如果链接做的好其实没多大”这个前提不存在。我相信你和这里的很多人都能毫无问题的做到这点,但架不住千千万万的后来人做不到甚至是懒得考虑到这一点。因为容器化的本质是鼓励你不用在打包上花费太多心思。一个哲学上就走糙快猛的路线的方案是不会催生出精细的结果的。现实的结果就是大家都塞个浏览器进去当UI,都是起步就是100M,什么几M的web框架根本就不重要。
【 在 Knightmare 的大作中提到: 】
: 邪路吧,谈不上。
: 其实就是本来应该在编译期解决的问题丢给了部署期,最后就是看哪边能力强呗。
: 至于web框架,如果链接做的好其实没多大,可能也就几M。
: ...................
--
修改:lvsoft FROM 180.109.232.*
FROM 180.109.232.*
我看了下没有呀,而且尝试安装也没让我装vlc啊。
我觉得是你让它把某个依赖包的推荐包都装上了吧
【 在 ayaka 的大作中提到: 】
: 我觉得这个事你得问debian那个打包的是怎么想的,你想装quassel他就是会给你装vlc,不过有折衷的办法,就是你装一个虚拟的声音服务还是什么的,忘了,反正就挺麻烦

--
FROM 180.109.232.*
那我的观点就是,如果能力还不足以正确的解决这个问题,要么提升能力到能正确解决为止,要么就转行别走这条路,去做自己更擅长的事,然后雇个专业的人来解决这个问题。
能用发行版安装的包都不是事,不能用发行版安装的,有些复杂一点的大型系统,配一个月都是很正常的。你这里这些所谓的“说不清的混乱”,只是毛毛雨罢了。
【 在 ayaka 的大作中提到: 】
: 正确的事实是正确的事实,实际的现象是实际的现象,对你来说可以分清,对其他人就不一定了,我要装一个东西,发行版的打包者决定的依赖造成的问题,有时候不是上游开发能决定的,你可以说我不需要XXX,我只要YYY,然而发行版打包的认为你YYY需要zzz,然后zzz强依赖XXX,到时候就是说不清的混乱,所以现在看见装软件包就发怵,到最后/usr/local里还是有一些自己编译的包,原因很简单,发行版的打包参数不符合自己的需求
--
FROM 180.109.232.*
你看,这不就有个推荐嘛,
debian这种又保守又严谨的风格,不太会出现这种乱七八糟的事情的。
【 在 ayaka 的大作中提到: 】
: [upload=1][/upload]
--
FROM 180.109.232.*