百科问答小站 logo
百科问答小站 font logo



为什么Linux上的软件不需要“安装”& 为什么很多软件不做成“绿色软件”? 第1页

  

user avatar   cassius-chen 网友的相关建议: 
      

最后更新:4-23 0:22,增加绿色软件解释。

先说软件安装包,一般来讲做这么几件事:

1、解压软件源文件。

2、安装依赖库(如Windows下常见的写入'C:/Windows'文件夹的情况)

3、注册(Windows下写入注册表)

无论是什么系统,安装包大抵都是这样(至于别的楼说的源码安装,我放到后面讲)

先讲依赖库:linux中所谓双击打开的软件都是编译好的二进制包,运行时会依赖一些系统内置的库比如libc、libxml2等等,这些包系统内置,于是不用安装直接运行即可。Linux下也有需要安装包的,比如Debian/Ubuntu系列有.deb的安装包、RetHat/Fedora系有.rpm安装包,其原理和windows下安装包基本一致,在windows下依赖库即为.dll动态链接库。

再来说注册:类Unix系统(比如Linux、Mac)系统内置有关于软件管理的数据库,类似于windows下的注册表(Regedit),这类表用于储存软件相关信息及记录等等,对于一些相对基础的程序,比如影音播放软件(如暴风影音)因为内置的一些解码模块是独立安装且会被别的程序调用的,所以需要在数据库中注册,也就是windows软件安装中会出现的“写入注册表”。当然,这只是其中一个用途,包括一些软件秘钥之类的配置信息都会存入注册表。在这点上Linux与Windows无太大差异。但由于Windows下软件是按照文件的绝对路径找到制定软件的,而类Unix系统是通过环境变量(PATH)中的路径来寻得软件的,打开软件的入口相对统一,且软件配置信息往往放在/etc下而不写入数据库,一些软件只需要把可执行文件放在PATH下、配置放在/etc下即可被调用,无需注册信息,故显得无需安装。

----

那么补充一下源码安装:

有人说linux下安装是make && make install,这种方式是源码安装,是从软件供应商直接取得未编译的软件源代码,然后自行编译安装。往往这种情况出现在开源软件上,尤其是可能通过配置得到不同版本的软件是(一如Nginx)。

步骤一:'./configure',一般源码目录中会有configure文件,来确定机器是否安装了所需的依赖库,然后配置编译器,告诉系统安装目录等等。用户可以在这一步使用附加选项选择需要编译的模块。

第二步:make,编译源码,打包成“安装包”

第三步:make install,编译“安装包”,形成可执行的二进制文件,完成安装。

----------

再说绿色软件,所谓绿色软件就是windows下自备依赖库的一类软件,相当于一开始所说的软件安装的第二步不需要完成。绿色软件常打包成压缩文件,用户自行解压(等同于软件安装第一步),然后进入目录运行程序。但请注意一些绿色要求用户在首次运行前运行一个.reg的文件,会弹出窗口问你是否将某某信息加入注册表,于是你就明白了,这是在手动完成软件安装第三步…

绿色软件因为其依赖库少从而可以做到解压即用、不用就删,但其实原理和安装是一样的——有安装包的程序也不是各个都要安装额外依赖库、注册信息…

而对于为什么不能全做成绿色,由软件安装的三步即可知晓:重装后依赖库丢失、注册表缺项,大部分软件不能使用,但小部分可以。这部分@海涛 的回答写的更详细,可以看看他的。

------------

所以Windows和Linux下都有不需要安装的、需要安装的软件。此致




  

相关话题

  当页表中的页表项大部分都有效的时候,多级页表还能节省空间吗? 
  如何评价 Adobe Creative Cloud 每年 7499 元的定价? 
  Linux下有哪些给你带来「快感」的软件? 
  感觉读大学无用,上大学是错误的吗? 
  与AI算法相关又能软件硬件相结合的研究方向有哪些? 
  要想完全放弃Windows操作系统而使用 Linux需要多少勇气? 
  操作系统能否知道自己处于虚拟机中? 
  Linux 系统有没有关于 rm -rf /* 的保护机制? 
  为什么现在没有人开发新的OS内核? 
  Linux交换空间可以和其他目录放在不同的硬盘中吗? 

前一个讨论
MFC、WTL、WPF、wxWidgets、Qt、GTK 各有什么特点?
下一个讨论
什么是 Agile Software Development(敏捷软件开发)?





© 2024-11-25 - tinynew.org. All Rights Reserved.
© 2024-11-25 - tinynew.org. 保留所有权利