Linux centOS软件安装的三种方式

安装过程

window软件安装过程
  • 在用户指定的安装目录下建立安装程序目录
  • 拷贝相关dll动态库到安装目录
  • 拷贝exe可执行文件到安装目录
  • 拷贝配置文件到安装目录,比如window下的ini配置文件
  • 把启动配置或者程序依赖的配置放入注册表中
  • 如果是服务程序,注册并启动该服务
Linux安装软件大概的过程
  • 建立安装目录
  • 拷贝类库
  • 拷贝可执行文件
  • 根据需要选择性配置和启动服务
注意
  • linux上/usr目录相当与window上ProgramFile目录
  • Linux上动态库后缀是.so,window上面的是.dll

编译安装

什么是编译

高级语言编写的程序通过编译器转化为机器语言,有些编译器直接将高级语言程序转化为汇编语言,然后使用一个汇编程序(assembler)将其转化为机器语言。 经常与编译一起使用的步骤就是链接,链接的好处就是多个程序共享这个。提供这种通用任务支持的功能便是库,库中包含多个例程,每一个实现都是许多程序能够共享的的通用任务,一般下/lib和/usr/lib目录中,链接器(linker)程序可以实现编译器的输出与编译程序所需要库之间的链接。该操作的最后结果就是生成一个可供使用的可执行文件。

  • 发行版本自行安装的源代码一般安装与/usr/src目录下
  • 面向多用户使用的源代码一般安装在/usr/local/src目录中
  • 默认编译器,gcc编译的四个阶段(预处理-编译-汇编-链接)

下载解压源代码

  • 软件一般使用c或者c++编写,一般都可以在软件官网上找的,使用wget进行下载
  • 下载之后一般格式为.tar.gz、.tar.baz2
  • 一般解压之后,文件中都会有README文件,这个文件软件说明所能完成的功能、授权许可、安装需求、安装注意事项、安装方式等等

分析安装环境

软件解压之后,进入解压之后目录,一般都会存在configure这个文件,这个文件是一个shell脚本,他的任务就是分析生成环境,linux下软件的安装受到操作系统安装环境的影响,比如某些软件在安装或者运行过程中需要调用操作系统本身的库文件,或者需要运行系统的某个工具等等,但是系统中不存在这个库文件或者这个工具没有安装,那么安装或者运行软件就会失败。 为了避免这个问题的出现,在安装软件的时候就需要分析操作系统环境,检测当前系统是否拥有安装软件所需的所有文件和工具,如果系统缺少某个文件,就给出提示,直到满足软件的所有需求为止。这个就是configure文件的功能,configure文件一般是个可执行文件,可以在当前目录下直接输入“./configure”进行软件安装的环境测试,如果提示缺少某些安装包,就需要进行安装,直到测试通过。通常的,源码安装都需要GCC或者CC编译器,这些编译器一般在安装系统时定制安装包中的开发工具选项下,其实这也是我们在第二章安装linux系统中要求选择开发工具包的原因所在。 一般当configure运行结束,会在源目录创建几个新的文件,其中最重要的就是Makefile。Makefile是指导make命令如何生成可执行程序的配置文件,如果没有这个命令,下一步的make命令边无法执行。 此外,在执行configure分析软件需求时,还可以在“./configure”后面加上软件的安装路径以及安装所需的模块等等一些选项,来定制用户需要的软件功能。例如安装nginx时的选项:

  • --prefix=PATH : 指定nginx的安装目录。默认 /usr/local/nginx
  • --conf-path=PATH : 设置nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf
  • --user=name: 设置nginx工作进程的用户。安装完成后,可以随时在nginx.conf配置文件更改user指令。默认的用户名是nobody。--group=name类似
  • --with-pcre : 设置PCRE库的源码路径,如果已通过yum方式安装,使用--with-pcre自动找到库文件。使用-* -with-pcre=PATH时,需要从PCRE网站下载pcre库的源码(版本4.4 - 8.30)并解压,剩下的就交给Nginx的./configure和make来完成。perl正则表达式使用在location指令和 ngx_http_rewrite_module模块中。
  • --with-zlib=PATH : 指定 zlib(版本1.1.3 - 1.2.5)的源码解压目录。在默认就启用的网络传输压缩模块ngx_http_gzip_module时需要使用zlib 。
  • --with-http_ssl_module : 使用https协议模块。默认情况下,该模块没有被构建。前提是openssl与openssl-devel已安装
  • --with-http_stub_status_module : 用来监控 Nginx 的当前状态
  • --with-http_realip_module : 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意义在于能够使得后台服务器记录原始客户端的IP地址
  • --add-module=PATH : 添加第三方外部模块,如nginx-sticky-module-ng或缓存模块。每次添加新的模块都要重新编译(Tengine可以在新加入module时无需重新编译)

编译安装

这里主要分为两个步骤,首先是编译,使用make命令,根据Makefile自动完成所有源代码文件的编译工作,这个歌过程称之为构建(building),并且可以做到增量编译。打包好的源代码一般包含一个特殊的make目标程序,它便是install,该目标程序将会在系统目录下安装最后生成的可执行程序,通常会安装在目录/usr/local/bin下(未指定的话)。

  • make clean: 清除编译过程中产生的临时文件和配置过程中产生的文件。
  • Makefile教程: http://www.ruanyifeng.com/blog/2015/02/make.html

卸载编译安装的软件(最佳实践)

一般不推荐使用源码进行编译安装,如果软件有rpm包尽量避免使用源码安装

  • 反安装
    • 如果安装的时候指定安装目录,则删除指定目录即可(最优秀做法
    • 如果安装在/usr/*,则可以去执行make install的文件夹中执行make uninstall、make distclean、make veryclean等等命令
    • 但不是每个源码都提供卸载命令,如果没有卸载命令的话,可以使用如下命令
  • 借助checkinstall进行打包生成rpm包,进行安装
    • 安装checkinstall
      • 安装地址: http://asic-linux.com.mx/~izto/checkinstall/download.php
      • 出错问题: http://www.361way.com/rpmbuild-checkinstall/3251.html
    • 将未编译的源码进行打包生成rpm包,然后使用rpm进行管理。
      • 执行./configure
      • 执行make命令
      • 执行checkinstall,根据提示创建一个rpm包
      • 输入ms-sys命令测试是否可用
    • 后面使用根据rpm规范进行使用

rpm命令安装软件:安装、删除软件包文件的任务的低级工具

剩下的这两种方法其实完全没有讲的必要,只要理解rpm和yum是什么就ojbk了,剩下的许多操作,如果you 会English,you can use man yumman rpm查看两条命令的具体用法,再不济,我下面会链接两篇优异的博文,里面有两条命令的具体使用方法。

RPM软件包分为二进制包(Binary)、源代码包(Source)和Delta包三种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以.src、.rpm作为后缀名。 其实当有了源码的话可以生成各种类型的包,rpm包只是其中一种,比如上面我们使用checkinstall命令生成rpm包。

yum安装软件:元数据搜索以及提供依赖性解决的高级工具

yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点, 也可以是本地软件池,但必须包含rpm的header, header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。它能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。自己本身也可以做yum服务器,本身可以根据光盘镜像做yum服务器。

参考文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值