V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
tioover
V2EX  ›  Linux

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

  •  
  •   tioover ·
    tioover · 2013-01-11 10:12:43 +08:00 via Android · 11401 次点击
    这是一个创建于 4359 天前的主题,其中的信息可能已经有所发展或是发生改变。
    发行版之间的差异不是问题 包管理器能解决
    我觉得这是限制linux桌面发展的一大要素
    第 1 条附言  ·  2013-01-11 20:07:58 +08:00
    拜托
    我说的是软件包的打包方式而已
    开发者可以在自己的网站上放一个软件,而软件包不会受到发行版的限制

    就拿deb包和PRM包来说吧 没记错的话有转换的程序吧?有些时候软件包并不是要多么依赖系统的

    并不是软件包内部依赖还是外部依赖好 也不是想要否定什么Linux哲学还是UNIX哲学
    freedesktop让linux不再是Linux了?

    要谈论什么依赖的话新开一个帖子
    75 条回复    2018-12-17 12:09:02 +08:00
    sNullp
        1
    sNullp  
       2013-01-11 10:14:24 +08:00
    不都是ELF格式的么?
    你说的是dependency hell吧?
    BOYPT
        2
    BOYPT  
       2013-01-11 10:28:34 +08:00   ❤️ 1
    这个标题和某中二贴: 为什么人类不只说一种语言,我觉得这限制了人类文明的发展

    神似。
    alayii
        3
    alayii  
       2013-01-11 10:46:24 +08:00   ❤️ 1
    呃...二进制...不是一样的么,楼主是说打包格式?
    aisk
        4
    aisk  
       2013-01-11 10:55:09 +08:00   ❤️ 1
    大家都觉得自己的最好
    Radeon
        5
    Radeon  
       2013-01-11 11:00:15 +08:00
    为什么非要包管理器呢。像Windows那样做成.msi类型的installer是最好的
    tioover
        6
    tioover  
    OP
       2013-01-11 11:01:47 +08:00 via Android
    @sNullp 孤陋寡闻了
    但没有看到过发行版用这种格式 也没见什么软件用这种格式发布 不是源代码就是直接可执行文件
    fox000002
        7
    fox000002  
       2013-01-11 11:09:00 +08:00
    @Radeon 单个包或软件没有问题,批量或大规模后就需要包管理器了,msi也是一样的
    seeker
        8
    seeker  
       2013-01-11 11:09:42 +08:00
    自由的代价
    Radeon
        9
    Radeon  
       2013-01-11 11:13:45 +08:00
    @fox000002 软件包应该自带依赖。这样就不需要一个全局包管理器了。用户也可以安装同一个软件的多个版本实例,互不干扰。目前msi的做法就很好,用户指定一个安装目录就行了。
    sNullp
        10
    sNullp  
       2013-01-11 11:17:43 +08:00
    @tioover 啊,ELF就是可执行文件的格式。
    我现在知道你说的是打包的问题了,那就是dependency hell,这属于unix设计哲学的事情了,没办法。。
    clowwindy
        11
    clowwindy  
       2013-01-11 11:34:27 +08:00 via iPhone
    shared object 版本也会升级的原因。
    haohaolee
        12
    haohaolee  
       2013-01-11 11:40:45 +08:00
    说白了,linux 本质就是个核,核以上的事情都是发行版自行处理的,而大多数软件又都是动态链接的,library 版本又各自不同,所以才会有这种兼容性问题,在 Windows 上这叫做 dll hell,但是 Windows 操作系统这一块因为它从核到用户态都是封闭的,所以兼容性要好很多。
    可以静态编译,这样的程序可以直接 copy 到不同发行版上使用,前提是只要核是兼容的
    haohaolee
        13
    haohaolee  
       2013-01-11 11:43:41 +08:00
    Linux 还有个所谓的 LSB 规范,也是为了解决这个兼容性问题
    bearsprite
        14
    bearsprite  
       2013-01-11 11:47:59 +08:00
    @Radeon 没有一个全局的安装包管理,windows下的安装/卸载必然会造成垃圾遗留,因为一个程序它无法知道它安装的dll是它自己的还是别的程序的,于是卸载就不会删除。这也是windows用久之后会变慢的一大原因。如果用过linux包管理的人还会认为windows下安装模式好的话,那我真是无语了~~
    toctan
        15
    toctan  
       2013-01-11 12:01:38 +08:00   ❤️ 1
    @Radeon 老大,你用过 Linux 么? 在 Windows 下安装软件和配置开发环境是一件及其蛋疼的事。想一想,如果你在 windows 下需要安装数十个软件,首先要到这几十个软件的官网把这几十个 msi installer 下载下来,然后逐个双击这些 installer,每个installer还不知道要让你点多少下next,你不会点到想吐么?如果你要升级,卸载这些软件呢,我不知道又要点多少次next?在Linux下,因为包管理器,这些事情都是一条命令的事情。

    软件自带依赖?在Linux下,很多软件都依赖glibc这个包,每个软件都带这个依赖,不是对空间的浪费么?而且,这与UNIX的哲学不符。

    windows 卸载残留不是一两天的事了,office,vs, photoshop 这种大型一点的软件卸载不干净还会造成安装不成功,身边不知道有多少人因此重装系统了,那些uninstaller就是渣渣,蛋碎。
    wliment
        16
    wliment  
       2013-01-11 12:14:38 +08:00
    @Radeon 软件包自带依赖,如果放在自己单独一个文件夹下,不和系统的库放到一起,还好说,不过每个软件都这么做,站用的硬盘空间应该相当大. 包管理系统还是很必要的,各个发行办只是打包不一样,里面的二进制执行程序没有什么不同.
    lyric
        17
    lyric  
       2013-01-11 12:16:32 +08:00   ❤️ 1
    打嘴炮的节奏?我最喜欢了
    tioover
        18
    tioover  
    OP
       2013-01-11 12:25:42 +08:00 via Android
    如果要什么依赖 在软件包里说明就好了 包管理器处理依赖呀
    我的意思仅仅是例如ubuntu的deb archlinux的(忘了是什么格式)之类的 这些软件包格式统一起来可以互通多好
    reusFork
        19
    reusFork  
       2013-01-11 12:37:56 +08:00
    @tioover 不统一也没有什么害处,更谈不上“限制linux桌面发展”
    clww
        20
    clww  
       2013-01-11 12:41:23 +08:00   ❤️ 3
    一些人对现有的包管理器(和打的包)不满,然后搞一个自己想要的,然后搞出来后宣称这是一个可以统一的东西。。。

    http://xkcd.com/927/
    tioover
        21
    tioover  
    OP
       2013-01-11 13:13:14 +08:00 via Android
    @reusFork 比如说一个新软件 并没有收入进各种发行版的源 或者就根本不是自由软件 或者有奇怪的条款
    发布最大的障碍就是如何打包了
    尽管熟练的用户可以好好搞。不管是编译还是好好安放二进制文件,把执行文件链接到bin里面,都不是问题
    但是一个新手那如何弄呢
    cabbala
        22
    cabbala  
       2013-01-11 13:16:49 +08:00
    @tioover 哈哈。Arch党表示AUR中无所不包啊

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

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

    你再去电脑城看一看各个厂商预装的windows软件,去 卸载程序 看看这列表多乱。真是让人想吐。Microsoft开头的都快上百个了。
    tioover
        30
    tioover  
    OP
       2013-01-11 14:19:55 +08:00 via Android
    @reusFork 如果这样说 也没办法了…
    Radeon
        31
    Radeon  
       2013-01-11 14:27:50 +08:00
    @est MSI跟winsxs没有关系。Winsxs是side-by-side assembly用的。标准的windows应用是支持XCOPY部署的,需要反安装包的用户给他们提供个msi包装的版本
    marguerite
        32
    marguerite  
       2013-01-11 14:29:18 +08:00   ❤️ 1
    如果火的都是这样的帖子,那么这个站可以关掉了,流量不是钱啊。
    tioover
        33
    tioover  
    OP
       2013-01-11 14:33:00 +08:00 via Android
    @marguerite hi
    如果有不同的意见请好好说出来 拿点干货
    est
        34
    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
        35
    thcode  
       2013-01-11 14:42:34 +08:00 via iPad
    这个问题的答案和「为什么Linux不能有一个统一的发行版?」是一样的。
    Radeon
        36
    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
        37
    haohaolee  
       2013-01-11 15:26:42 +08:00   ❤️ 1
    @est 我觉得 winsxs 也不算什么错误,因为毕竟 Windows 要兼容之前的程序,而软件又要向前更新,最好的办法就是依赖都留着,如果能用空间换一点兼容性倒也无妨。
    msi 虽然私有,但是功能上却是很强大的,支持回滚,支持 transaction,支持补丁。缺点是学习曲线高,编程很难,所以很多程序确实卸载不彻底,主要是因为打包水平太差。

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

    不是所有 Windows 上面跑的东西出了问题责任都要算在 Windows 头上。
    Radeon
        38
    Radeon  
       2013-01-11 15:45:32 +08:00
    @haohaolee 说得好!
    binux
        39
    binux  
       2013-01-11 15:57:59 +08:00
    如果每个软件都自带依赖,如果它用的某个包有bug(漏洞),怎么办?
    等着每个软件作者自己升级吗?
    tioover
        40
    tioover  
    OP
       2013-01-11 16:15:56 +08:00
    这不是有点离题了么
    统一的软件包格式和依赖没有关系吧
    ……
    reusFork
        41
    reusFork  
       2013-01-11 16:21:36 +08:00
    @tioover 因为上面很多人一开始就理解错了,就像一楼那样看少了个“包”字。
    est
        42
    est  
       2013-01-11 16:26:16 +08:00
    @haohaolee 恩。所以最终结果就是跟 WMI 一样没人用。微软NIH自己造轮子也不是第一天了。

    如果码农都觉得这个打包工具学习曲线太陡,那么微软至少应该开除一位 msi 团队的产品经理。大家说是不是?

    微软发明的好东西多去了。MMC, DCOM等等,哪个不是被新技术出来替代,自己给自己挖个坑自埋了?微软的东西特性和功能都可以秒杀开源界和水果几万条街,但是你跟着微软混就等死吧。

    我还记得一个朋友花了很多时间学习.NET atlas ajax,还翻译了一本书貌似,然后微软一个beta出来。学习的就作废了。
    kaifengjin
        43
    kaifengjin  
       2013-01-11 17:11:31 +08:00
    @Radeon 你这回复相当于群嘲。。。
    haohaolee
        44
    haohaolee  
       2013-01-11 17:26:46 +08:00
    @est 是的,如果 msi 大家都用不好,那就是 MS 的错。我不是这方面的专家,我也不确定其它 msi 的封装到底如何

    确实 MS 发明了不少好东西,但是很多都夭折了。这事儿真没法说,如果好东西都推广不开的话。。。

    不过 .Net 相关的东西我觉得大家有点苛责了,因为这十几年来,.net 最基本的理念和底层机制一直没变,runtime 一直在前进,API一直在增加,这些都不算大问题。

    然后这一波快速 Web 开发风潮,又诞生了不少 MS 自己的 .Net 的框架和类库,包括 ASP.net MVC 这种,这些框架有吹的很厉害后来又夭折的,也有一直在坚持的。我的意思是,这些框架本身就属于时髦东西,不管是 MS 发明还是开源社区发明,都有可能很快淘汰,只不过开源社区那些个框架或新语言淘汰就淘汰了,也不会有人去苛责发明人抛弃用户,浪费用户时间;换到 MS 身上就成了原罪了。

    我自己的浅薄经验,付出和收获还是成比例的,越靠近下层的东西变化越少越稳定,学习时间就越长;想要快速上手的,马上出东西的,难免时效性不长。这不是说学习底层更好,而是说一分钱一分货。

    啊呃,完全跑题了。。。。不好意思
    jybox
        45
    jybox  
       2013-01-11 19:12:07 +08:00
    linux的开源软件倾向于利用已有的项目,而不是像windows上面的那些商业软件为了版权,而造轮子.
    所以linux上的依赖问题会更为复杂.
    wy315700
        46
    wy315700  
       2013-01-11 19:19:50 +08:00
    要是统一了那就不是Linux了
    Livid
        47
    Livid  
    MOD
       2013-01-11 19:28:03 +08:00
    @marguerite 你见过誰能够扭转大众的人性?

    再说,流量或许不是钱,鄙视链在我看来恐怕也没有什么钱。
    tioover
        48
    tioover  
    OP
       2013-01-11 20:16:51 +08:00
    添加了一条附言

    另外
    找到了这个东西
    http://en.wikipedia.org/wiki/Autopackage
    看起来很久没更新了 主页都没了
    clowwindy
        49
    clowwindy  
       2013-01-11 20:55:40 +08:00   ❤️ 4
    在我看来,autotools、dpkg、msi 分别是基于源码、共享对象库、静态链接下最佳的软件包解决方案。这三个方案各有优缺点,但由于他们基于不同的开发方式、商业模式,是不能相互替换的。

    比方说,你不能在 Windows 上用 dpkg 去发布软件,因为商业软件为了便于技术支持往往是静态链接或者打包所有依赖的,客户环境的不确定对你来说是个灾难。Windows 开发一般用 win32 API 或者 MFC 之类 Windows 直接提供的东西。其它的功能比方说要解析个 json,要么自己写,要么找个库打包进来。为了尽可能减小最终可执行程序的大小,会尽可能的裁剪掉依赖项里不用的功能。

    你也不能把 Linux 上所有开源软件全换成 msi 那种形式。在 Linux 上开发通常会用到很多比较 high-level 的库。每个库功能很专一,但也很全面,比方说 OpenSSL 就提供加密相关的功能,但它支持很多加密算法,所以每个库也可能比较大。如果全用静态链接,出来的每个二进制文件里有很多依赖是重复的,比方说 glibc、libstdc++、zlib 等等。这样每个二进制文件几 M 甚至几十 M。而且在共享对象发明出来之前,内存经常不够加载这些二进制文件。

    我们之前在 Hadoop 上跑 C++ 程序,为了方便,构建系统生成的是静态链接的二进制。结果几十 M 甚至上百 M 的二进制都是很常见的,影响了任务的效率。

    如果照着 LFS ( http://www.linuxfromscratch.org/ ) 从源码开始把一个可用的 Linux 基本系统搭起来,你对这个问题会有更深的认识。
    Radeon
        50
    Radeon  
       2013-01-11 21:37:10 +08:00
    二进制库的大小真不是问题。putty, winscp这些用到openssl的应用都很小巧。除了巨型软件套装(如Adobe CS、Visual Studio、MS Office之类),Win下的常见应用的大小基本都在10MB这个量级

    C++程序由于模板,展开后编译出上百MB的目标文件很正常。这是C++的设计缺陷。而且由于模板都是在客户代码(即最终应用)中展开,换用包管理器也无济于事(因为没有别的应用会和你共享实例化以后的模板)

    Linux的包管理把整个系统的代码库串联起来,缺少冗余,从结构上来说很脆弱。一个库有bug或者出现regression,所有相关应用都遭殃
    raptor
        51
    raptor  
       2013-01-11 21:39:41 +08:00
    @clowwindy 这个正解。

    MSI好个P,完全只是因为商业软件需要,Linux因为基于开源环境才有可能做全局包管理,不开源就只能静态链接以避免客户环境依赖问题。但就是好用上来说,全局包管理甩MSI几百条街。
    至于说什么DCOM之类,不过是看上去很美,实际用过的都知道,完全是坑爹货。
    开源框架淘汰,那是正常的优胜劣汰自由竞争,因为你有自由选择权。MS下只能是丫给什么你用什么,丫让你换,你就得换,所以丫那是活该挨骂。
    clowwindy
        52
    clowwindy  
       2013-01-11 21:43:28 +08:00
    @Radeon
    比方说跟 webkit link,这就是我们当时的 case,输出大小基本上就是一堆 .a 大小之和。可以想象 Linux 上每个 Qt 或者 GTK 程序都是静态链接的话会是怎么样。
    marguerite
        53
    marguerite  
       2013-01-11 21:44:18 +08:00   ❤️ 1
    @Livid 流量要你拿钱,鄙视链可以不拿钱却爽,按照你说的没人能够扭转大众的人性。那么大众肯定选择的是免费爽而不是拿钱。人民群众啊,都很鸡贼的说。看这帖子里走城门一样进出多少人您就懂了。不过这和主题有什么关系啊。

    @tioover 我已经感谢了二楼。我的观点已经表达过了。那就是我觉得火得都是这样无稽的帖子实际上在降低 V2EX 的实用性。当然我的火力不是都倾泻在您的身上,您也没必要觉得我针锋相对。空谈误国,嘴炮伤神,以前我有若干种证据证明这不科学这是违反 Linux 自由精神的,但现在我只会简单地告诉你,做不到。说别的都没有用,一个做不到就结束话题了。你这个想法实际上是个付出过一定实践的老想法,GNOME 前主席,openSUSE 现主席 vuntz 担纲搞过,就是 openSUSE 的新软件中心,但是本质上还是以 RPM 为主,在 DEB 上能用,也就是说未来的发展方向是模糊这种差异而不是彻底取消。技术上的原因放下不谈(RPM VS. DEB),因为两者侧重点不同根本没法比,RPM 的重点在制式分发,DEB 的重点在包上就完了,如果合并,请问比如我现在有一个软件包 fcitx,谁来打包?我用 openSUSE 为什么要包给 Ubuntu,你要知道这不是一个软件包的问题,用 Unity 的和不用 Unity 的那能一样吗?所以你问的问题的前提就是发行版九九归一。但你觉得背后的公司会干吗?社区发行版都不会干的。以前我只收 10 个 bug report,现在我要收 100 个,同样一份钱不拿,我活那么累干嘛?

    So just stop and enjoy life, which is full of derivatives and possibilities.

    Marguerite
    clowwindy
        54
    clowwindy  
       2013-01-11 21:46:52 +08:00
    @Radeon
    而相对 Windows 上几 MB 的 WinSCP、putty,Linux 上 scp、ssh 通常只有几十 KB。
    marguerite
        55
    marguerite  
       2013-01-11 21:55:30 +08:00   ❤️ 1
    实际上你的问题在什么时候比较合适:1980 年。那个时候大家都还没有圈地搭积木。现在各色自产的积木已经把屋造起来了,来个人过来说,我们都用一样的积木吧,那么,屋子怎么办?这是一个绕不开的话题。我不信没人做过这种尝试,但是财产私有制让得到的好处远低于损失,渐渐的就没人做了。除非天下大同,否则都不要想。
    tioover
        56
    tioover  
    OP
       2013-01-11 22:25:55 +08:00
    @marguerite 我自然也没有针对你,跑题已经跑题已经跑题到影响理解帖子的地步了,大部分的帖子都是在说依赖。
    我对你的回复意思就是文字上的意思,光抛一句否定的话,既看起来高深又不知所谓。像收到现在的回复也是令人高兴的。
    标题里面的话是疑问句而非反问,我并不是想拷问Linux 发行版,而是疑惑这种方式为什么没有得到广泛的应用,就像有一条笔直的道路,但所有人走的是小路,难道这种设想本来有问题还是说别的原因?
    唉,只有你的回复基本上解答了这个疑问。
    marguerite
        57
    marguerite  
       2013-01-11 22:30:17 +08:00   ❤️ 1
    @tioover 觉得说的好就给我加钱,还是真金白银最实在,我只有 19 个银币。。。从来没这么穷过啊。
    tioover
        58
    tioover  
    OP
       2013-01-11 22:31:55 +08:00 via Android
    @marguerite 给了呀

    嗯 既然这贴回复那么多我就给每个没跑题的人感谢吧
    bhuztez
        59
    bhuztez  
       2013-01-11 22:44:56 +08:00
    不同的二进制发行版选择不同的编译选项,打上了不同的patch,即便包格式统一了,包也不能真的通用 ... 光靠二进制包格式标准,我不觉得能有助于改善现状。

    现在这一切已经太复杂了,想要统一估计得更复杂 ...

    不如想想,为什么要发行版,为什么要二进制包?

    为什么发行版要搞包管理,而每个语言还要搞自己的包管理。各搞一套也就算了,用的时候根本就是两套系统,信息都不统一的。

    为什么这么多软件都非要发布目标架构的二进制,而不是中间代码,在最终运行的机器上再编译成目标架构的二进制。真的有这么多和指令集有关的代码么。
    zaeneas
        60
    zaeneas  
       2013-01-12 01:42:49 +08:00
    当然编译是种选择,但是用过gentoo的人也许会记得当初没有注意到python-updater和perl-cleaner的时候安装软件时纠结的查错。

    https://bbs.archlinux.org/viewtopic.php?id=42382

    我还是没有明白为什么会认为包的格式不同是一个问题
    zaeneas
        61
    zaeneas  
       2013-01-12 02:00:42 +08:00
    说起来,我觉得LZ想要的不是废掉3种包(deb,rpm,tar.xz),而是希望apt,yun,pacman能够支持一种通用的包,然后很多软件开发者就打包打成这样即可

    但是我觉得,软件开发者开始的时候大概是放出源码和某一种包看使用情况然后看后续支持吧...并且不少情况下是别的发行版的人用的很爽于是帮忙打别的包(瞎猜的)

    其实我觉得 ./configure 干的事情就是这样的(死)
    Ricepig
        62
    Ricepig  
       2013-01-12 04:53:04 +08:00
    额,我觉得ms很多时候躺着都中枪。讨论linux的各种安装包也有这么多讨论msi的。。。

    而且吧,骂微软吧,希望能用正确的证据。上面就有人说windows软件包是下载,点击,安装。linux一个包管理都搞定了。这个非常不客观,首先,用Oracle举例,Oracle for linux的版本安装一下试试,再windows下安装试试?其次,windows你可以尝试一下类似于软件助手的东西。最后,windows虽然在批量装软件的时候,对于“专家”显得不够快捷,但是对于一般用户,它的一致性绝对很好——任何软件都是下载,点击setup,下一步下一步就搞定了。而Linux软件。。。五花八门的安装方法啊。

    至少,我们父母这一辈,他们在windows下能自己装斗地主什么的。你让他们linux玩一个?另外,还有驱动精灵这种东西,驱动安装升级、windows补丁、软件安装升级全部一键搞定。Linux给我演示一个?
    Radeon
        63
    Radeon  
       2013-01-12 08:13:11 +08:00
    @clowwindy putty只有500KB,而且还是GUI程序

    举一两个应用的例子抬杠也没有意思,Windows和OSX早就证明了每个应用自带依赖没什么问题,硬盘空间照样够用。吃硬盘的不是应用而是媒体文件。这点也不用跟我争,去问问Win/OSX的用户就行

    本来软件包就该由开发方维护、发布,由发行版维护到底有什么好处呢?打一行apt-get install xyz就能用上看似很惬意,实际上问题很大。不能指定安装路径、不能指定版本、不能同时安装多个版本、配置文件、应用文件分散到不同的目录里不好找,不同的发行版使用的配置文件格式还不一样,要不停得学习新格式,这些不都是给用户找麻烦么
    iwinux
        64
    iwinux  
       2013-01-12 09:07:25 +08:00
    @tioover 这更像是社会问题而不是技术问题,同样的困境在很多地方都存在,比如:1. Python 的 Web 框架 2. Scheme / Lisp 语言的实现。(我不爽别人写的东西,于是我自己 fork 了一个,然后又被别人 fork 了——“什么?为什么要兼容他们的?让他们来兼容我们的吧……”——大概就是这样)

    这个问题是个很不错的 CS 论文的题目,有兴趣的人可以试着写写。
    Kymair
        65
    Kymair  
       2013-01-13 23:33:31 +08:00
    可以去Youtube上看看Why Linux Sucks 2012 :-)
    正好讲到了这一坨Linux让人抓狂的东西

    Blask
        66
    Blask  
       2013-01-14 01:46:44 +08:00
    表示ArchLinux的包管理才是王道啊, spec和dsc写起来都不好入门啊,而且不同的人写的风格不同,习惯也不同.
    VYSE
        67
    VYSE  
       2013-01-14 02:48:15 +08:00
    freebsd直接用源码PKG包管理就很通用,只是LINUX发行版多发布BINARY包,原因还是那啥DEPENDENCY LIBRARY各版本之间的兼容性问题,导致各发行版BINARY包不能通用。
    虽然LSB想统一这玩意,但他们给的标准库不是缺个胳膊就是缺条腿,多数代码没有按照他们的标准,经常一些库函数没法RESOLVE
    zaeneas
        68
    zaeneas  
       2013-01-14 03:27:35 +08:00
    我说,你们讨论这么久,没人提gentoo/funtoo和pkgbuild ?
    feikaras
        69
    feikaras  
       2013-01-16 09:14:47 +08:00
    @Radeon ...windows installer服务的bug率你还敢更低高点么?
    feikaras
        70
    feikaras  
       2013-01-16 09:28:57 +08:00
    @tioover 普通新软件你自己打包给各大发行版啊。linux软件包不通用本质上是依赖地狱啊。因为都是动态链接。你就算统一rpm还是deb,你不是还是很容易遇到符号问题么?
    jamesarch
        71
    jamesarch  
       2016-06-15 17:48:49 +08:00
    特地来挖坟 大一统不远啦!!! ubuntu 的 snap 出来了!!! 而且支持全平台!!! ArchLinux 、 Debian 、 Fedora 、 Debian 通通支持!!!
    看这里---->>>> http://snapcraft.io/
    jamesarch
        72
    jamesarch  
       2016-06-15 17:49:20 +08:00
    还要 Gentoo
    sammo
        73
    sammo  
       2018-12-16 13:05:23 +08:00
    补一个 2013 年的文章,聊 linux desktop 的,居然还提到了 SteamOS
    https://betanews.com/2013/09/30/the-top-5-problems-with-linux
    sammo
        74
    sammo  
       2018-12-17 11:52:14 +08:00
    @jamesarch flatpak vs snap, 作为 linux 软件的 打包技术 ( 应该可以看作对于 Windows msi 的模仿吧 )
    https://www.reddit.com/r/linux/comments/60qdtw/flatpak_vs_snap_which_format_is_better_a_rather/
    sammo
        75
    sammo  
       2018-12-17 12:09:02 +08:00
    上文链接里有一句话说的很有意思:( I don't like ) applications shipped as containers ( at all ) ( 原因一 过多的依赖 比如很多软件都自带了自己需要的 Library 这样等于浪费了硬盘空间,原因二 太多黑箱操作 让人不知道它在自己的电脑上都做了什么 以及必须信赖这个打包者的打包水平。

    实际上 Windows 的 msi 式的软件,就是 applications shipped as containers。在 Linux 平台,flatpak 是用一个 flatpak runtime 来提供各个软件通用的 Library 。我认为 这个粒度是很恰当的!既可以 保持了一个软件的打包 container,又在通过一层 flatpak runtime 试图避免重复安装 Library。对于 Linux 系统,这是一个折衷。 @Radeon 可以了解一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5376 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:16 · PVG 15:16 · LAX 23:16 · JFK 02:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.