linux软件安装与win的区别
在win中,我们进行软件安装通常是运行一个.exe
的可执行文件,由这个可执行文件进行引导来对程序进行安装。这个过程中,安装程序会自行验证安装包完整性,再将软件文件提取,创建软件安装目录,将文件复制进安装目录,将软件信息写入注册表,创建必要的环境变量参数,最后再生成桌面、开始菜单或者快速启动栏的快捷方式。
但在Linux中,这个过程大多数会需要用户自行完成,由于Linux为开源系统,社区维护者也在这方面也各展才能,后来再经过标准化规定与演变,也就诞生了几种不同的linux软件的安装方法。
这里就简单介绍一下源码包的安装方式。
源码包是什么
源码包也就是社区开发者等开发的软件的未编译的源码,大部分用C语言写的。
c语言编写的程序要想运行,需要一个操作——编译。
而编译需要一个组件 gcc 。
这里又产生了一个先有鸡还是先有蛋的问题,因为不懂安装,也就没有gcc,这个问题将可以用其他安装方式解决,这里不进行赘述。
安装源码包的过程
这里以senes9x为例:
- 先获取一个源码包,获取有多种方式,它通常是一个
.gz
或者.bz2
或其它格式的压缩包: - 将其解压缩
tar -xf snes9x-1.60.tar.gz
- 查看其目录下的内容:
通常这个目录下会存在这么几个关键性文件:
带有readme
字样的文件,通常是一个.txt
或者.html
,这个文件描述了你要安装程序时可以修改的脚本参数以及安装流程。
一个名为configure
的可执行文件,这是安装脚本,里面写的是编译过程执行的操作,包括一部分安装参数,可以参照readme
进行修改。
但是很显然,这个包的目录不一般,他没有我上面说的文件,怎么办呢?不要慌,想想我们的系统是linux,但是貌似也没有跟linux有关的东西,这时候,只剩下了一个希望之地,Linux的爸爸Unix,而恰好有这么个目录。
果然,这里面找到了configure
:
那说明文档又在哪里呢,就在这个 docs
的目录里:
- 回到刚刚
configure
的目录,修改参数,执行下列指令完成脚本配置,然后准备进行编译:
./configure --prefix=/usr/local/snes9x-1.60 # 为其指定安装位置,通常是/usr/local/下
执行结果:
这个过程会分析是否编译的必须组件存在,软件运行的必要组件是否存在,如果全部通过则成功,缺少组件会失败。
- 接下来进行编译,如果上一步成功这个时候会多出来一个
Makefile
文件,接下来在这个目录执行:
make
编译是个非常容易失败的过程,由于这里大概率需要程序员背锅,而且会出现非常多的可能,如果失败请自行百度解决。
- 编译结束后,我们将做最后的安装,比如编译后的文件扔到当初我们指定的目录(此时目录还未生成)或者将指令写入/bin等:
make install
就算这一步失败,这里也会出现一个可执行程序,可以手动执行。
- 现在安装过程就结束了,通常会在安装目录生成一个可执行文件或指令可用。