一、YUM

    YUM: Yellowdog Update Modifier。YUM是通过分析RPM的标题相关数据后,根据软件的相关性制作出的软件安装时属性依赖的解决方案,其可以自动处理软件之间的依赖问题,以尽量方便用户解决软件在安装、删除或升级的问题。

 

    YUM分为YUM客户端和YUM服务器,而我们经常使用到的就是客户端。

    客户端的配置文件分两种:

    /etc/yum.config:为所有的仓库提供公共的配置

    /etc/yum.repos.d/*.repo:为仓库的指向提供配置

 

    我们在安装软件时通常使用的yum仓库有本地yum和服务器yum。

 

本地yum源配置的过程:

    (1)首先要挂载发行版的磁盘镜像,相当于创建本地的yum服务器

     

    如上图所示,指明要挂在的设备类型为iso9660,并且挂载至/media/cdrom此目录。查看挂载完成之后的,查看/media/cdrom此目录中的文件。

     

    (2)仓库指向的配置,即在/etc/yum.repos.d/此目录下创建一个.repo结尾的文件。其内容如下:

     

    注意:如果/etc/yum.repos.d/这个文件夹下有多个repo文件,有可能会发生冲突。所以可用两种方法:将其他的repo文件移动到别的目录下;或者将其他的repo文件内enabled此字段值设置为0。

     

网络yum源配置过程:

    (1)仓库指向的配置,即在/etc/yum.repos.d/此目录下创建一个repo结尾的文件。其内容如下:

     

    同样的,如果/etc/yum.repos.d/包含多个repo文件,会发生冲突。解决方法同上。

    网络yum中配置文件中可用的变量:

        $releasever: 当前OS的发行版的主版本号;$arch: 平台;$basearch:基础平台。

显示程序包:

        yum list [all | glob_exp1] [glob_exp2] [...]

        yum list {available|installed|updates} [glob_exp1] [...]

 

    注意:支持文件名通配

    示例:

    1、查看仓库中所有包含php的程序包

     

    2、查看系统上已安装的软包含vi字符的程序包

     

 

安装程序包:

    yum install package1 [package2] [...]

     

    使用yum可以同时安装多个软件。

    reinstall package1 [package2] [...]  (重新安装)

 

升级程序包:

    update [package1] [package2] [...]

    

    downgrade package1 [package2] [...] (降级)

 

查看程序包的相关信息:

    yum info [...]

    

 

卸载程序包:

    remove | erase package1 [package2] [...]

 

查看指定的特性(可以是某文件)是由哪个程序包所提供:

    provides | whatprovides feature1 [feature2] [...]

 

清理本地缓存:

    clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

 

搜索:

    search string1 [string2] [...]

    以指定的关键字搜索程序包名及summary信息;

 

查看指定包所依赖的capabilities:

    deplist package1 [package2] [...]

 

安装及升级本地程序包:

     localinstall rpmfile1 [rpmfile2] [...]

     localupdate rpmfile1 [rpmfile2] [...]

 

包组管理的相关命令:

    groupinstall group1 [group2] [...]  安装某一组软件包

    groupupdate group1 [group2] [...]  升级某一组软件包

    grouplist [hidden] [groupwildcard] [...]  显示当前系统软件包组的相关信息

    groupremove group1 [group2] [...]  删除某一包组

    groupinfo group1 [...] 显示包组中包含的软件包

 

二、RPM

    rpm命令管理程序包:包含程序的安装、卸载、升级、查询、校验和数据库维护等。

程序包安装

命令格式:rpm {-i|--install} [install-options] PACKAGE_FILE ...

其中[install-options]常用的选项有:

-v:显示更多的安装信息;

-h:以#显示程序包管理执行进度;每个#默认表示2%的安装进度(也有可能显示的#比较少);

--test:测试安装包能不能正确执行;

--nodeps:安装软件包的时候,忽略其相关的依赖关系;

--replacepkgs: 重新安装;

--nosignature: 不检查程序包其来源合法性;

--nodigest:在安装时候,不检查程序包的完整性

--noscipts:在安装程序包的过程中,不执行该程序包中包含的脚本片段

示例:

1、只用-i一个选项

2、使用-ivh三个选项

 

3、重新安装

再次安装某软件的时候,如下:

 

      使用--replacepkgs选项,重新安装:

      

程序包升级

命令格式:

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

 

按照第一种命令格式升级:

表示,若安装有旧版程序包,则进行升级;若无旧版程序包,则执行安装操作

按照第二种命令格式升级:

表示,若安装有旧版程序包,则进行升级;反之,如果不存在旧版程序包,则不执行操作。

 

注意:

(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,可以直接安装新版本内核;

      (2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留;

程序包查询

命令格式:

rpm {-q|--query} [select-options] [query-options]

常用的[select-options]选项:

-a: 所有包

-f: 查看指定的文件由哪个程序包安装生成

-p /PATH/TO/PACKAGE_FILE:针对尚未安装的程序包文件做查询操作;

--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供;

--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

##CAPABILITY:功能、特性

常用的 [query-options]选项:

--changelog:查询rpm包的changlog

-c: 查询程序的配置文件

-d: 查询程序的文档

-i: information

-l: 查看指定的程序包安装后生成的所有文件;

--scripts:程序包自带的脚本片断

-R: 查询指定的程序包所依赖的CAPABILITY;

--provides: 列出指定程序包所提供的CAPABILITY;

 

示例:

1、查询某未安装程序包安装之后生成的所有文件;

2、查询是哪个程序包提供了ifconfig命令

3、查询未安装程序包的相关信息

软件的卸载:

命令格式:

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts][--test] PACKAGE_NAME ...

      示例:

      

校验

rpm {-V|--verify} [select-options] [verify-options]

-Vp:某个RPM文件的文件名

-Va:显示整个系统上所有可能被修改过的文件

示例:

校验之后若没显示任何信息,那么说明,该软件所提供的文件没有被修改过。

 

包来源合法性验正及完整性验正:

    完整性验正:SHA256加密算法

          来源合法性验正:RSA加密算法

数据库维护

rpm {--initdb|--rebuilddb}

           initdb: 初始化

               如果事先不存在数据库,则新建之;否则,不执行任何操作;

           rebuilddb:重建

               无论当前存在与否,直接重新创建数据库;

三、使用createrepo创建本地仓库

    第一步:必须先安装createrepo软件包

    

    第二步:选择一个目录存放rpm包,如下图,rpm包存放在/tmp/lcsrpm目录下。

    

    第三步:使用createrepo命令创建本地仓库,如图所示。

    

    创建成功则会在仓库目录下出现repodata目录。

    

四、使用软件源码进行软件的编译安装

    编译C源代码:

           前提:需要提供编译过程中要用到的开发库文件以及开发工具。

            

           通过安装软件包组进行记性相关开发环境以及开发工具的安装。

                CentOS6安装:"Development Tools", "Server Platform Development"这两个包组;

                CentOS7安装:"开发工具"这个包组就可以。

    步骤

           第一步:先解压源文件压缩包

           

           编译过程在此是在configure目录的父目录中。

           

           第二步:configure脚本

                   选项:指定安装位置、指定启用的特性

                           --help: 获取其支持使用的选项

                   选项分类:
                         安装路径设定:
                              --prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/
                              --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;

                         Optional Features: 可选特性

                              --disable-FEATURE
                              --enable-FEATURE[=ARG]

                         Optional Packages: 可选包

                              --with-PACKAGE[=ARG]
                              --without-PACKAGE

            

            第二步:make

            

            第三步:make install

            

     安装后的配置:

      (1) 导出二进制程序目录至PATH环境变量中;
               编辑文件/etc/profile.d/NAME.sh
               export PATH=/PATH/TO/BIN:$PATH

      (2) 导出库文件路径

               编辑/etc/ld.so.conf.d/NAME.conf
               添加新的库文件所在目录至此文件中;

           让系统重新生成缓存:

               ldconfig [-v]

      (3) 导出头文件

               基于链接的方式实现:
               ln -sv

      (4) 导出帮助手册

               编辑/etc/man.config文件
               添加一个MANPATH