一、概述

        现在Linux上软件的安装方式有多种,有源码包编译,软件包管理器,软件包管理器前端工具,通用二进制编译等。源码包,优点是,灵活性和可定制性比较好,缺点是,技术要求高,操作复杂,虽然网上有编译安装软件的文档,也有很多人在使用,也都是默认或者简单配置后编译的。后来出了软件包管理工具RPM,RPM软件包管理软件方便多了但是它的依赖关系让人头疼,所以又推出出了YUM解决了让人头疼的依赖关系。在这里我给大家介绍一下几种常用Linux软件安装方式。

二、软件包的组成

一个软件包安装之后包含多种类型文件,我们先了解一下它的组成与分布的位置

 1、二进制文件

   分布的目录:/bin,    /sbin,    /usr/bin,   /usr/sbin,   /usr/local/bin,   /usr/local/sbin

   2、库文件

         分布目录: /lib,   /usr/lib,   /usr/local/lib 

   3、配置文件

        分布目录: /etc

   4、帮助文件(通常这里会教你如何进行安装)

        手册:README   INSTALL    /usr/share/doc

三、程序安装方式

   1、通用二进制编译:别人编译好的,解压之后配置就能使用。

   2、软件包管理器:使用rpm命令安装就可以使用了,但安装时要考虑到依赖关系。

   3、软件包管理器前端工具:可以自动解决软件包的依赖关系。

   4、源码包:源码包就是程序的源代码,必须通过编译器编译成二进制后才能使用,在编译时,软件所需的库文件一定要有,不然编译是不能成功的。

    这里着重说一下源码包安装,由于一些特殊的个性化设置,我们需要源码包安装一个服务,我觉得它的基本思路就是遇到问题解决问题,当我们源码包安装一个服务时,最常见的问题就是缺少基础程序,也就是库文件(devel包),这时我们通过yum逐条击破安装,直到服务安装成功即可(不在报错)

    源码包安装的基本流程:解压→进入目录→./configure --prefix=自己定义的安装路径(这个时候通常就是之前说的遇到问题的时候,提示缺少环境、依赖关系,用yum逐条安装即可)→make→make install

  四、RPM软件包管理工具 

    1、基本功能:

        打包、安装、查询升级、校验、写在、数据管理(重建)      

    2、rpm软件包包含:

        文件清单、文件存放路径、提供的功能说明、依赖关系

    3、数据库:软件包信息,软件包校验

    4、源程序命名方式:

       name-version.tar.{gz|bz2|xz}

           版本号:major.minor.release 主版本号.次版本号.发行号

 5、rpm包的命名方式:

       name-version-release.arch.rpm

           发行号:用于标识rpm包的本身发行号,可还包含所适用的操纵做系统

           例如:el6:RHEL6

           arch:主机平台

           例如:i386、x86_64、amd64、ppc、noarch不区分平台

    注意:下载软件包时要注意区分操作系统和平台,不然可能会装不上的

 6、rpm分包

   主包:核心包

   分包:支包

     例如:bind

        bind-devel

 7、常用软件包下载地址:

    http://mirrors,sohu.com

    http://rpmfind.net

    http://rpm.pbone.net

    8、安装软件包:rpm -i /path/to/rpm_file1 rpm_file2…

    -i|–install    :安装一个新的软件包

    -v :显示安装过程,-vv显示更详细的安装过程

    -h :以#显示安装进度。一个#号表示2%的进度;

    -ivh :通常这几个选项组合使用

    –nodeps :安装时忽略依赖关系

    –test :测试安装

    –replacepkgs :重新安装

 9、卸载软件包: rpm -e

 10、查询软件包: rpm -q

      -qa    :查询所有已安装的软件包

       rpm -qa |grep 'pattern'

       -qi    :查询软件包的摘要信息

       -ql    :查询软件包生成的文件清单:

       -qf    :查询某文件由那个软件包安装生成:

       -qc    :查询包安装生成的配置文件

       -qd    :查询包安装生成的帮助文件

       -q –scripts    :查询软件包相关的脚本

           preinstall    :安装前脚本

           postinstall   :安装后脚本

           preuninstall   :卸载前脚本

           postuninstall  :卸载后脚本

11、升级    

     -U:升级+安装

       -F:升级

       -Uvh

       -Fvh

     –force     强制安装

       –nodeps    不检查依赖关系

    注:内核不应该升级,应该尽可能安装,允许多版本并存

12、rpm数据库

   rpm database:/var/lib/rpm

  重建rpm数据库

    rpm –initdb    :新建,不覆盖原有的数据库

     rpm –rebuilddb    :覆盖,覆盖原有数据库(常用)

五、YUM软件包管理

 1、自行解决依赖关系(比所有方法都方便,yum是Linux最佳实践)

 2、repository:仓库,yum源

   repodata/    :所在的父目录就是yum仓库,如果当前目录有repodata就说明这是一个yum仓库

           RHEL6:的光盘镜像就是一个yum源

           例如:把RHEL6的光盘挂载到/media/cdrom,那yum源配置文件里"baseurl=file:///media/cdrom"

 3、客户端:

       /etc/yum.conf    //yum主配置文件

       /etc/yum.repos.d/*.repo    //yum配置文件

       全局配置//对所有的yum仓库都生效

# yum主配置文件详解
#/etc/yum.conf
#[main]    //定义yum源名称
#cachedir=/var/cache/yum    //定义yum的缓存目录
#keepcache=0    //保存缓存
#debuglevel=2    //调试级别
#logfile=/var/log/yum.log    //日志文件所在目录
#distroverpkg=redhat-release    //验证rpm发行版所使用的密钥文件
#tolerant=1    //忽略已安装的软件
#exactarch=1    //必须做平台的精确匹配
#obsoletes=1    //是否检查废弃的包
#gpgcheck=1    //是否检查rpm包的签名,验证rpm包来源的合法性
#plugins=1    //是否启用插件
# Note: yum-RHN-plugin doesn't honor this.
#metadata_expire=1h    //缓存文件在本地缓存多长时间
#配置文件 /etc/yum.repos.d/*.repo详解  
#[repo]
#name=Primary Yum repository
#baseurl=http://mirror.sohu.com/fedora-epel/6/i386/    //yum源网址
#enabled={0|1}       //{不开启|开启}
#gpgcheck={0|1}      //{不检查|检查签名}
#gpgkey=file:///etc/pki/RPM-GPG-KEY-redhat-base    //指定验证用的密钥文件

 4、常用的yum命令

//查询、清除建立缓存
#yum list {all|installed|available}    :列出软件包 {所有|已安装|可安装}
#yum repolist {all|enabled|disabled}   :列出yum源  {所有|开启的|未开启的}
#yum clean all                         :清除yum缓存
#yum makecache                         :生成yun缓存
//安装
#yum install package_name              :安装软件包,添加 -y可以自动回答yes
#yum reinstall package_name …         :重新安装软件包
#yum groupinstall "package-group_name" :安装一个包组 
//升级   
#yum update package_name               :升级软件包
#yum check-update                      :查询可升级的包
#yum update-to                         :升级到指定的版本
#yum groupupdate "group_name"          :升级包组
//卸载
#yum remove package_name …            :卸载一个软件包
#yum groupremove "group_name"          :卸载一个包组

总结了一下Linux下软件包安装方式,欢迎提问留言。