9月10日课程作业(练习)

linux运维实战练习-2015年9月10日课程作业(练习)安排

一、作业(练习)内容:

1、总结rpm和yum实现程序包的管理功能.

(1)相关概念

     内核功能:进程管理、内存管理、提供网络协议栈、驱动程序、...

     应用程序功能:提供各种各样特定功能,如bash等

     程序包的组成部分:

     二进制程序:程序包的核心,存储在/bin, /sbin,/ /usr/bin, /usr/sbin等路径下

     库文件:共享资源,存储在/lib64, /usr/lib64等路径下

     配置文件:定义工作属性,存储在/etc路径下

     帮助文件:存储在manual, info等路径下

     包管理器功能: 打包,包管理(如程序包的安装、升级、卸载、查询及校验等功能)

         打包:将程序的所有文件存放在一个单一的归档文件中;

         安装:将打包的文件对应展开在当前系统上(要验证来源的合法性、完整性)

         卸载:把安装上的文件全部收集起来删除掉

         升级:新版本代替旧版本

         查询:安装情况及安装信息

         校验:安装后配置文件是否被改变

     包管理器类别:

         deb: debian

         rpm: redhat package manager

         RPM is Package Manager

     包组: 由许多程序包构成的一组包的集合

     rpm包:基于rpm命令管理程序包的包组

            打包工具:rpmbuild: 基于specs文件打包

     rpm包的命名机制:

          对于每一个程序包: name-VERSION.tar.gz

                         (包名-版本号.归档格式名称.压缩后缀名称)

                            VERSION:major.minor.release

                        ( 程序版本号:主版本号.次版本号.修正号)

                     如:base-4.2.4.tar.gz

          对于rpm包的程序包: name-VERSION-RELEASE.ARCH.rpm

                             (包名-版本号-rpm发行号.架构.rpm)

                             VERSION:major.minor.release

                             RELEASE :rpm包的发行号 (如1.el7) 

                             ARCH:平台架构(如x86_64)                    

                     如:bash-4.2.4-1.el7.x86_64.rpm

                         bash-devel-4.2.4-1.el7.x86_64.rpm

     分包机制:

              testapp-VERSION.tar.gz可分为:

               核心包:testapp-VERSION  ( bash-4.2.4-1.el7.x86_64.rpm)

               支包:testapp-devel-VERSION (bash-devel-4.2.4-1.el7.x86_64.rpm)

     包和包之间:有可能存在依赖关系:

         每个rpm包都提供一个或多个capabilities(能力):

                     依赖其他包,或被其他包依赖

         X --> Y (X功能依赖Y的功能)

                 (在使用rpm安装X时,必须先将Y安装了才安装X

                   在使用yum安装X时,是将Y一同安装了的)

     rpm包的数据库:记录当前系统上安装的所有的包的信息

                    在RedHat、Centos系统中存储在/var/lib/rpm/路径下

     如何获取rpm包:

                  1、发行版提供的程序包;

                  2、Fedora-EPEL

                  3、项目的官方站点

                  4、搜索引擎

                     http://rpmfind.net

                     http://rpm.pbone.net

                     http://pkgs.org

     如何在CentOS7系统识获取rpm包(光盘用的设备文件存储在:/dev/cdrom)

               (1)确认光盘设备为开启状态

wpsCB8D.tmp

               (2)创建挂载点,并挂载光盘设备文件

wpsCB8E.tmp

wpsCB9F.tmp

               (3)打开光盘设备中的文件

wpsCBA0.tmp

     YUM: Yellowdog Updater Modified,是rpm包的前端管理工具,实现自动解决程序包的所有依赖关系,会将安装包和被安装包依赖的所有包一同安装,不再需要一个个去手动安装被依赖的包

          yum的仓库:yum命令可以调用的所有程序包的路径(存储位置)

          路径就是 yum repositories(文件服务器),它可以是一个服务器地址,也可以是网址,也可以是本地的路径,如:

                     ftp://hostname/PATH/TO/REPO

                     http://hostname/PATH/TO/REPO

                     file:///PATH/TO/REPO

     如何创建yum的仓库(关键在于定义一个仓库指向)

         yum程序仓库的配置文件:

                    /etc/yum.conf

                            定义全局配置:对所有仓库都适用的配置

                    /etc/yum.repos.d/*.repo

                            一个文件通常用于一个或一组功能相近或相关的仓库

           1、切换到 /etc/yum.repos.d/目录下,

              在该目录下创建一个以.repo结尾的文件,并使用vim编辑器打开该文件

wpsCBB1.tmp

           2、定义一个仓库指向:在以.repo结尾的文件中编辑如下内容,保存后退出

                        [REPO_ID] : 唯一的ID

                         name=        :仓库名称

                         baseurl=     :程序包路径(可以有多个,但不建议使用多个)

                     或者mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE :

                         #     以#开头表示注释信息,无需执行

                         enabled={1|0}  :是否启用仓库,默认1(启用)

                         gpgcheck={1|0} :安装前是否校验来源合法性、完整性

                         gpgkey=        :密钥文件的路径

                         cost=          :指明优先级,默认为1000,

wpsCBC1.tmp

             这样就定义好了仓库的指向,上面操作是定义了互联网上的两个镜像路径为仓库指向,

               相当于创建了两个仓库,可查看到

wpsCBC2.tmp

                      定义仓库指向时的可用变量:实现通用语法配置

wpsCBE2.tmp

                             $releasever: 引用当前操作系统的主版本号;

                             $basearch: 当前操作系统的基本架构;

                                    64位:x-86

                                    32位:i386, i486, i586, i686: i386

                   http://mirrors.magedu.com/CentOS/$releasever/os/$basearch

                   http://mirrors.163/ailyun/sohu.com/CentOS/$releasever/os/$basearch

     如何使用光盘当做本地仓库:

            (1)挂载光盘至某目录

            (2)使用file:///指明其访问路径,用来定义仓库指向

                        (baseurl=file://挂载点)

     如何创建本地仓库:

                 (1)下载一个rpm包至本地某目录下(如/tmp/test)

                 (2) 安装createrepo工具:yum install createrepo

                 (3)使用命令createrepo /PATH/TO/RPMFILES/(如createrepo /tmp/test)

                 (4)在/etc/yum.repo.d/目录下定义仓库(如baseurl= file:///tmp/test)

     使用包管理器安装程序包时,在安装前要对程序包的来源合法性、完整性进行校验

                 (1)找到密钥,一般都在光盘里面(挂载点)

                       这是Centos7系统的

wpsCBE3.tmp

                      这是Centos6系统的

wpsCBF4.tmp

                 (2)导入密钥:rpm --import /PATH/TO/KEY_FILE  (导入后将会自动校验)

wpsCBF5.tmp

                       或手动校验:rpm -K /PATH/TO/RPM_FILE

wpsCBF6.tmp

(2)基于rpm命令实现程序包管理:

    安装:

         rpm {-i|--install} [install-options] PACKAGE_FILE ...

         rpm -i PACKAGE_FILE ...:直接安装程序包

         rpm -ivh PACKAGE_FILE...:显示安装过程及安装进度

                     -v:显示详细过程,

                     -vv, -vvv(显示比-v更为详细的安装过程)

                      -h:用#显示安装进度

wpsCBF7.tmp

         rpm -ivh PACKAGE_FILE... --replacepkgs:重装程序包

wpsCC08.tmp

         rpm -ivh PACKAGE_FILE... --nodeps:安装时忽略依赖关系安装

            安装时忽略依赖关系安装,程序能正常安装,但可能会无法运行

wpsCC09.tmp

    升级:(http://pkgs.org/可查询程序包是否有新版本)

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

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

              -Uvh PACKAGE_FILE ...: 如果已安装了该程序包的旧版程序包,则将其升级;

                                       如果没有安装该程序包,则安装最新版本的;

              -Fvh: 如果已安装旧版程序包,则将其升级;

                      如果没有安装该程序包,则不做任何操作(即不安装);

                      --nodeps:忽略依赖关系

                      --oldpackage:降级;

                      -force:强制升级

    卸载:

         rpm {-e|--erase} [--notriggers] [--test] PACKAGE_NAME ...

         rpm -e PACKAGE_NAME

wpsCC19.tmp

         rpm -e PACKAGE_NAME --nodeps:卸载时忽略依赖关系

             (忽略依赖关系卸载后,依赖于此程序包的程序将无法正常运行)

         rpm -e PACKAGE_NAME --noscripts:卸载时不执行脚本

    查询:

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

         查询选项:

             已安装的程序包的查询

             rpm  -qa: 查询本机已经安装的所有程序包;

wpsCC1A.tmp

             rpm  -qf /PATH/TO/SOMEFILE: 查询此处的文件由哪个程序包安装生成;

wpsCC1B.tmp

             rpm -qc PACKAGE_NAME: 查询指定程序包安装时生成的配置文件

wpsCC1C.tmp

             rpm -qd PACKAGE_NAME: 查询指定的程序包安装时生成的帮助文档

wpsCC2D.tmp

             rpm -ql PACKAGE_NAME: 查询程序包安装时生成的所有文件的列表

                                ( 包含qd、qc的查询结果);

wpsCC2E.tmp

              rpm -qi PACKAGE_NAME: 查询指定的程序包的相关信息;

wpsCC2F.tmp

              rpm -qR PACKAGE_NAME:查询程序包依赖于哪些其他人提供的程序包

wpsCC30.tmp

              rpm -q --provides PACKAGE_NAME:查询程序包可以被哪些程序包依赖

wpsCC40.tmp

              rpm -q --scripts PACKAGE_NAME:查询程序包安装需执行的相关的脚本

                              preinstall: 安装前脚本

                              postinstall:安装后脚本

                              preuninstall: 卸载前脚本

                              postuninstall: 卸载后脚本

wpsCC41.tmp

              未安装的程序包的查询

              rpm -qpi PACKAGE_FILE : 查询可以安装但尚未安装的程序包文件的信息;

              rpm -qpl PACKAGE_FILE :查询未安装的程序包安装时会生成的所有文件

    校验:

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

         rpm -V PACKAGE_NAME:检查已安装的程序包生成的文件是否被改变

wpsCC42.tmp

          表示 /usr/share/doc/tree-1.6.0/LICENSE文件的S、5、T发生改变了

            S file Size differs  文件大小发生改变

            M Mode differs (includes permissions and file type)文件权限发生改变

            5 digest (formerly MD5 sum) differs 文件校验码发生改变(大小改变其必改变)

            D Device major/minor number mismatch设备文件主、次设备号不匹配

            L readLink(2) path mismatch

            U User ownership differs属主发生改变

            G Group ownership differs属组发生改变

            T mTime differs修改时间戳发生改变

            P caPabilities differ文件被删除

(3)基于yum命令实现程序包管理

          yum [options] [command] [package ...]

    安装:install

          yum install PACKAGE_NAME

          yum install /PATH/TO/PACKAGE_FILE

wpsCC53.tmp

wpsCC54.tmp

wpsCC55.tmp

          yum reinstall PACKAGE_NAME:重新安装

wpsCC56.tmp

          yum groupinstall "GRP_NAME":安装包组(安装包组中的所有程序包)

    卸载:remove

          yum remove PACKAGE_NAME

wpsCC67.tmp

          yum groupremove "GRP_NAME":卸载包组(卸载包组中的所有程序包)

            注意:卸载程序包时,依赖于此程序包的其他程序包将会被一起卸载

    查询:

        查询包

          yum info PACKAGE_NAME:查询指定包的简要信息

wpsCC68.tmp

          yum search KEYWORD:查询KEYWORD相关的包(匹配包名)

wpsCC69.tmp

          yum search all KEYWORD (匹配包名,匹配包的简要信息)

          yum check-update :查询是否有可升级的程序包

wpsCC79.tmp

          yum list  PACKAGE_NAME:查询指定程序包是否已安装

wpsCC7A.tmp

          yum list all:显示所有程序包

wpsCC7B.tmp

          yum list installed:显示已安装的程序包

          yum list availiable:显示能安装但尚未安装的程序包

          yum provides /PATH/TO/SOMEFILE: 查询指定文件由哪个包安装生成

wpsCC8C.tmp

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

          yum clean all:清理所有缓存

          yum makecache ;手动生成缓存

        查询包组:

          yum grouplist:显示当前系统的所有包组

wpsCC8D.tmp

         yum groupinfo "GRP_NAME":显示指定包组中的程序包的相关信息

wpsCC9D.tmp

wpsCC9E.tmp

       查询仓库:

         yum repolist :显示当前系统中可用的仓库

         yum repolist enabled:(可用的),等同于yum repolist

         yum repolist all:显示当前系统所有仓库

wpsCC9F.tmp

         yum repolist disabled:显示当前系统中禁用的仓库

         yum repoinfo [all|enabled|disabled] 显示仓库的相关信息

    升级:

         yum update PACKAGE_NAME

wpsCCB0.tmp

    降级:

         yum downgrade PACKAGE_NAME

(4)补充: dnf管理工具:yum的升级版工具

             (1)使用yum info dnf 查询dnf程序包相关信息

             (2)使用yum inst dnf安装dnf

           这样就可以使用dnf命令管理包了

你可能感兴趣的:(linux,配置文件,应用程序,manual,共享资源)