今天想在ubuntu上安装wine,却发现软件中心已经损坏,好像是证书问题,貌似不容易解决,于是打算手动安装。本来想从wine官方网站下载源码,无奈已经被墙,最终在source forge 下到源码。编译时遇到了最让人抓狂的问题:库依赖。库依赖可能是linux用户面临的一个大问题,你为了编译一个软件,却发现最后编译了几个甚至更多的软件,而且还是能做好版本匹配的情况下(算你运气好。。。)。
其实linux系统中将库进行集中管理,可能是想降低磁盘空间占用,应该说初衷是好的。可是在版本号像火箭一样急速飙升的今天,这种策略明显已经阻碍linux的发展。下面就是几个重要的问题:
- 库函数API变得太快,也太容易
API经常改变,却很少考虑向前兼容(保留旧API),而不同软件之间并不会同步开发,使得软件A和库B之间 的版本搭配就变得比较重要,需要用户浪费时间去匹配。
- 用户并不关心你调用了哪些库,也不愿去关心
用户编译软件A时,可能会依赖库B和库C等,当库B和库C还肯能会依赖其他库,而这一切是用户并不关心的, 但用户还得无奈的去处理这些事情,浪费精力。
为了解决这些问题,我有个想法:
- linux自带一些标准库,不用太多,glibc就够了。
- 其它库在第三方软件发行时自行携带,位于自己的安装目录下
其实就是学习某软的做法,虽然会多占用一些磁盘空间,但是在磁盘已成白菜价的今天,谁还会在乎呢?
- 软件发布源码时,随身携带使用的库的源码
即库源码作为软件的一部分。虽然看起来有些冗余,但却能大大提升用户的编译体验。
最后想说说自己对linux在桌面领域的感想。linux一直标榜稳定、安全、高效,无疑这些都已经做到了,但是用户体验仍然欠缺。如果ubuntu不带软件中心,都不知道自己是否还敢用这个系统。说白了吧,如果用户体验好些,谁会过分在意你的稳定、安全、高效?