为什么linux发行版之间不能有一个统一的二进制软件包标准?

2013-01-11 10:12:43 +08:00
 tioover
发行版之间的差异不是问题 包管理器能解决
我觉得这是限制linux桌面发展的一大要素
11408 次点击
所在节点    Linux
75 条回复
tioover
2013-01-11 13:13:14 +08:00
@reusFork 比如说一个新软件 并没有收入进各种发行版的源 或者就根本不是自由软件 或者有奇怪的条款
发布最大的障碍就是如何打包了
尽管熟练的用户可以好好搞。不管是编译还是好好安放二进制文件,把执行文件链接到bin里面,都不是问题
但是一个新手那如何弄呢
cabbala
2013-01-11 13:16:49 +08:00
@tioover 哈哈。Arch党表示AUR中无所不包啊

另外包管理器和桌面还是命令行无关,为啥会限制桌面发展,而不是限制命令行发展呢。。
tioover
2013-01-11 13:24:38 +08:00
@cabbala
AUR也要人来打包
GUI 背后调用的也是CLI 不然就不算是UNIX了
cabbala
2013-01-11 13:27:29 +08:00
@tioover 那windows也要有人来打包啊。。
tioover
2013-01-11 13:37:31 +08:00
@cabbala 你这个发行版要自己打包一下 那个发行版打包一次 还要有人来打包 新兴软件知名度不大还没人来打包(也限制了新软件的传播)
如果是一些和系统本身结构关系很大的软件自然不太好用统一的包来解决, 但普通的应用软件实际上并没有要特殊处理的地方
声明依赖,声明执行文件,还有别的一些信息,很容易做到一次打包到处使用。多好
python软件还不是一个setup.py走天下
linux发行版林立但是本质上差异没那么大,为什么不能通用呢
Radeon
2013-01-11 13:37:51 +08:00
这年头居然有人认为Windows下卸载程序一定会留下残留,真是让人无语。这是要分installer的作者有没有用心去写的好不好,写的好的软件,卸载自然不会有垃圾残留的
Radeon
2013-01-11 13:42:39 +08:00
@wliment 自带依赖根本不会让软件膨胀多少。C/C++库都是百KB ~ 几十MB级别而已。当然,巨型软件总是很大的,但是膨胀的部分往往不是库而是资源文件、帮助文档之类,反正瞎搞是没下限的

Windows、OSX下这么多年下来也没有多少人表示软件包的平均大小让人吃不消吧
reusFork
2013-01-11 14:11:13 +08:00
@tioover 不管新手熟手都应该首先看README,如果想自己编译的话。或者说,新手也可以像熟手一样,看看README就可以自己编译了,不需要更多的照顾了。
提供bin包的软件,一般都会提供压缩包,直接解压就行了
est
2013-01-11 14:14:50 +08:00
@Radeon 你真是没见过msi的烂啊。。。Win+R 输入 winsxs 看看这玩意多大,多乱就知道了

你再去电脑城看一看各个厂商预装的windows软件,去 卸载程序 看看这列表多乱。真是让人想吐。Microsoft开头的都快上百个了。
tioover
2013-01-11 14:19:55 +08:00
@reusFork 如果这样说 也没办法了…
Radeon
2013-01-11 14:27:50 +08:00
@est MSI跟winsxs没有关系。Winsxs是side-by-side assembly用的。标准的windows应用是支持XCOPY部署的,需要反安装包的用户给他们提供个msi包装的版本
marguerite
2013-01-11 14:29:18 +08:00
如果火的都是这样的帖子,那么这个站可以关掉了,流量不是钱啊。
tioover
2013-01-11 14:33:00 +08:00
@marguerite hi
如果有不同的意见请好好说出来 拿点干货
est
2013-01-11 14:36:44 +08:00
@Radeon winsxs就是用来解决dllhell的啊。但是解决的办法是用一坨新的bug去解决老的bug。。。。

如果linux或者 OS X,再或者android 搞个类似 winsxs 的目录,不知道会被喷成啥样子。。。

msi 只是一套安装脚本和文件打包。这个专有技术有啥好?

我可以吐槽每次VC++2008/2012安装包都被msi反复安装么?DX也是。
thcode
2013-01-11 14:42:34 +08:00
这个问题的答案和「为什么Linux不能有一个统一的发行版?」是一样的。
Radeon
2013-01-11 14:52:22 +08:00
@est DLL hell是历史了。目前的Windows应用都推荐做成支持XCOPY的。话说回来, dll hell就是没有严格执行“每个应用自带依赖”造成的

MSI至少是个操作系统支持的规范,好处是用户如果安装msi型的软件,他永远都能找到卸载的入口。OSX的pkg格式没有规范,就导致反安装方式无法八门

另外,无需提OSX的.app(bundle)格式。自带依赖并支持XCOPY部署本来不就应该是理所当然的么??
haohaolee
2013-01-11 15:26:42 +08:00
@est 我觉得 winsxs 也不算什么错误,因为毕竟 Windows 要兼容之前的程序,而软件又要向前更新,最好的办法就是依赖都留着,如果能用空间换一点兼容性倒也无妨。
msi 虽然私有,但是功能上却是很强大的,支持回滚,支持 transaction,支持补丁。缺点是学习曲线高,编程很难,所以很多程序确实卸载不彻底,主要是因为打包水平太差。

比较 Linux 和 Windows 别忘了目标用户和使用哲学,点 next 不是 Windows 的错吧。那我还说,每个发行版都要自己 Host 一大堆二进制的东东,是浪费空间呢,Windows 没这困扰,第三方的东西就在第三方那里

不是所有 Windows 上面跑的东西出了问题责任都要算在 Windows 头上。
Radeon
2013-01-11 15:45:32 +08:00
@haohaolee 说得好!
binux
2013-01-11 15:57:59 +08:00
如果每个软件都自带依赖,如果它用的某个包有bug(漏洞),怎么办?
等着每个软件作者自己升级吗?
tioover
2013-01-11 16:15:56 +08:00
这不是有点离题了么
统一的软件包格式和依赖没有关系吧
……

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

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

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

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

© 2021 V2EX