讨论:为什么Linux到现在也不能双击安装软件

标签: cnBeta 博文精选 | 发表时间:2011-05-24 14:23 | 作者:(author unknown) Heax
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=5OVll5Fs3hGCc1KftJCjyQ
cnBeta 博文精选

感谢匿名人士的投递
看最近cnbeta的评论,有一位仁兄矢志不渝的重复“世界上最差的系统就是linux,双击不能安装软件”,而对于该评论的观点众多,但是真正正确的确极少。综合来看,广大cber尤其是喜欢评论的cber对Linux理解的还比较少,而且很多都是跟Windows做比较(当然这里我承认高手也大有人在),所以我想在这里有必要说一下为什么Linux到现在也不能做到双击安装软件。

首先要说一下,很多Linux的发行版例如Ubuntu或者CentOS、Fedora等,已经早就可以双击安装自己发行版的安装包了,例如deb、rpm等。
那么为什么现在大部分软件还是需要下载一个tar.gz然后./configure/make/make install繁琐的命令安装呢?

其实,Linux下跟Windows的软件发布有一个最大的不同就是Linux下大部分软件都是开源的,只提供源码下载,不提供编译好的二进制下载。所以,上面的三个命令实际上是编译一个软件,然后拷贝到系统对应目录,准确来说不是安装。

但是为什么非要这三个命令,而不是双击之后自动执行上述三个命令呢?

主要还是跨平台和定制化的考虑。我们知道Linux发行版众多,Linux支持的平台也很多,从使用最多的x86到arm,solaris等,所以这个./configure脚本可以支持很多编译参数,从而让软件支持几乎所有的硬件平台。

而Windows下,由于几乎所有软件都是编译好的二进制打包发布,所以软件要么是32位版本,要么是64位版本不能通用的。好在Windows目前只支持x86和x64两个硬件平台,假若以后Windows支持其他平台,那么我们日常软件的版本区分就要更多了。而Linux下只要发布一个源码包,你用户是什么硬件平台自己编译好了。

另外稍微学过软件工程的都知道,软件开发都是模块化的,通过./configure命令加上合理参数,可以不编译不需要的模块,比如最常用的php,自带几十个模块,通常我们需要哪个编译哪个好了。

有人可能说Windows安装软件也能选择性安装,我可以不安装我不需要的模块。

其实,Windows就算你不安装你选择的模块,那也只是这个模块不安装。而主程序的模块访问是编译好的,他只不过能自动判断这个模块不存在就不加载罢了。

另外,Linux很多模块是通用的,这就是依赖关系,举例来说要用php的iconv功能,就需要系统安装libiconv库,而不同的电脑的libiconv库安装路径不同,所以需要通过./configure的参数指定你电脑的libiconv安装路径是多少,php才能顺利编译通过。Windows则是必须在C:WindowsSystem32下,可定制化太差了。

再说一下make命令。make命令就是根据刚才./configure的配置参数,来把源码编译成二进制文件,放到当前目录,而不是复制到系统目录。为什么不能把make和make install放在一起呢?

因为有些时候,我们只需要一个软件包里面的某个动态链接库,而不是整个程序。比如我们经常需要lighttpd中的spawn-fcgi,所以我们不必安装lighttpd,而是直接编译完,得到其中的spawn-fcgi即可。

最后,make install就是把编译好的二进制文件和链接库、配置文件等复制到系统的各个目录即可,安装完成。

说道这里,可能有些网友根本没看上面文字,就说:普通用户不需要知道这么多,他们就需要知道怎么用就行了。是的,话说回来了,这些人如果不用Windows,完全可以尝试Ubuntu或者Fedora,这两个发行版都可以双击安装程序。但是缺点就是无法深度定制。

我们畅想一下,如果QQ有tar.gz源码版发布,那么我希望的安装命令是:

cd qq2012-beta2/ ./configure --without-ad --without-qqshow --without-popnews --without-qzone --with-ipaddress --with-showip make;make install

相关 [linux 双击 软件] 推荐:

讨论:为什么Linux到现在也不能双击安装软件

- Heax - cnBeta全文版
看最近cnbeta的评论,有一位仁兄矢志不渝的重复“世界上最差的系统就是linux,双击不能安装软件”,而对于该评论的观点众多,但是真正正确的确极少. 综合来看,广大cber尤其是喜欢评论的cber对Linux理解的还比较少,而且很多都是跟Windows做比较(当然这里我承认高手也大有人在),所以我想在这里有必要说一下为什么Linux到现在也不能做到双击安装软件.

“Linux”不等同于Linux内核:构建Linux系统的8个软件包

- - 极客范 - GeekFan.net
Linux发行版并不仅仅是Linux内核. 所有的Linux发行版都包含了除内核之外的一些必要的软件包,比如Grub引导程序、Bash shell、GNU shell工具软件、守护进程、X.org图形服务器和桌面环境等等. 所有这些不同的程序均由相互独立的开发小组开发. 这些程序被Linux发行版集成到一起从而形成一套完整的“Linux”操作系统.

Linux 下常用的 CLI 软件

- hama - Wow! Ubuntu
来自 Lanpice 的鬼屋,原文:http://lcan.info/2011/03/cli-software/. 作为 Linuxer,必须具备一定的 CLI 操作能力. 有时候用 CLI 会比用 GUI 会更方便快捷. 以下列出我所知道的一些常用CLI软件,仅供参考. 据我所知,目前主要有两个解决方案:zhcon和fbterm.

11款优秀的Linux化学软件

- cao - Solidot
Yves Perret 写道 "化学是研究物质及其变化的学科,它是一门极其活跃的科学,对分子和原子的研究有助于理解我们的世界. 化学被认为是一门核心学科,与物理和工程学、生物学和医学、地理学和地球科学联系紧密. 化学有许多不同的分支,如有机化学、无机化学、物理化学,因此能从工业、研究,教育,法医学,公共健康等不同领域找到化学.

Linux 下优秀软件推荐

- - 笨兔兔
Linux.com 从软件特性,功能,稳定性和跨平台支持方面考虑,为大家介绍了在浏览器,办公套件,视频播放器等方面的优秀软件各一款:. 网页浏览器:Firefox. 办公套件:LibreOffice. 音乐管理器:Clementine. 图片管理器:Shotwell. 邮件客户端:Thunderbird.

Linux 下的 7 款云端备份分享软件

- Esperisto - LinuxTOY
这里介绍 7 款可以应用于 Linux 平台的云端备份和分享软件. 一款基于 Mono 的开源软件,支持架设自己的云端服务器. 提供各大发行版的客户端及免费的 2GB 空间,与 Dropbox 十分相似. 来自 Canonical 的云端备份服务,和 Ubuntu 整合. 在其他平台上目前仅有 Win 版本的客户端.

八款优秀的Linux生物学软件

- Wick - Solidot
Adam McMahon 写道 "生物学是一门研究生命的自然科学,从最小的微生物延伸到已知最大的动物蓝鲸. 它划分成众多专业,包括演化、生态学、动物学、植物学、遗传学、微生物学和分子生物学,研究生命的功能、结构、起源、发展、演变、分布和分类. 生物学与我们的日常生活息息相关,它帮助我们理解生命如何工作,探索人体的奥秘.

8 个免费的 Linux 天文学软件

- iworm - LinuxTOY
如果您爱好“夜观星象”,那么在 Linux 平台上有众多的程序可以满足您此项需求. Stellarium:虚拟行星仪. Virtual Moon Atlas:实时月球观测站. 该软件深得欧洲航天局和法国教育部推荐. Celestia:实时太空模拟. 与其他行星仪不同,它允许您真正的在不同行星间漫游,而不再是局限在地球表面.

网络会议软件 Mikogo 发布 Linux 版

- Lambda - Wow! Ubuntu
免费网络会议及远程桌面控制软件 Mikogo 正式通告发布首个 Linux 平台上的 Beta 版本,完全原生的 Linux 程序. Mikogo 是一款与 TeamViewer 类似的远程控制及网络会议软件,来自德国,原先只能运行于 Windows 及 Mac 平台下. 其最大特点是体积非常小巧、可一次连接10人、传输效果好速度快,可限定共享的程序,并且能穿透局域网、防火墙.

10款优秀的Linux物理学软件

- Shan - Solidot
Oliver Cameron 写道 "物理学是一门研究自然现象背后的物质和能量法则的自然科学. 它几乎无所不包,上至宇宙下至原子,涉及力学、辐射、热、电、声、磁和原子结构. 物理学能帮助我们理解地球,邻居星球、太阳系乃至宇宙. 物理学也常常让人惊讶不已,量子力学、电动力学、混沌理论和电磁理论挑战我们的想象.