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

linux grafana 源码包 部署_源码包


那说明文档又在哪里呢,就在这个 docs 的目录里:

linux grafana 源码包 部署_源码包_02

  • 回到刚刚configure的目录,修改参数,执行下列指令完成脚本配置,然后准备进行编译:
./configure --prefix=/usr/local/snes9x-1.60               # 为其指定安装位置,通常是/usr/local/下

执行结果:

linux grafana 源码包 部署_源码包_03


这个过程会分析是否编译的必须组件存在,软件运行的必要组件是否存在,如果全部通过则成功,缺少组件会失败。

  • 接下来进行编译,如果上一步成功这个时候会多出来一个 Makefile 文件,接下来在这个目录执行:
make

编译是个非常容易失败的过程,由于这里大概率需要程序员背锅,而且会出现非常多的可能,如果失败请自行百度解决。

  • 编译结束后,我们将做最后的安装,比如编译后的文件扔到当初我们指定的目录(此时目录还未生成)或者将指令写入/bin等:
make install

就算这一步失败,这里也会出现一个可执行程序,可以手动执行。

  • 现在安装过程就结束了,通常会在安装目录生成一个可执行文件或指令可用。