N25第五周总结:程序包管理

程序包管理:rpmyum、编译详解

rpm详解:

一:大纲

       1、什么是rpm

       2、为什么要使用rpm

       3rpm能实现什么功能

       4rpm命令详解

 

二、正题

1、什么是rpm

        rpm全称 RPM Package Manager,是一款行业标准的软件包管理器。在rpm未出现之前,linux上的程序包都是以源码方式存在,需要经过复杂的编译,才能能在linux系统上安装。

        因为编译方式异常复杂,绝大部分人都无法正常完成编译工作,所以大大局限了linux的使用范围。因此,各大发行商都自己研发出了一套程序包管理器,可以代替人工完成编译工作,rpm就是redhat下一款比较通用的程序包管理器。

 

2、为什么要使用rpm

         因为当下redhatcentos较其他发行版占比更高,最主要rpm功能比较强大,使用比较方便,所以非常有必要熟练掌握rpm命令的相关功能。

 

3rpm能实现什么功能

         rpm作为一款非常成熟的程序包管理器,可实现针对程序的安装、升级、卸载、查询与校验,且可对成程序安装包进行校验、查询。

 

4rpm命令详解

         rpm  <options>  <PACKAGE|PACKAGE_FILE|FILE>

        

         安装:-i

             rpm  -i[install-option]  PACKAGE_FILE(程序安装包)

             install-option:

                   -vverbose,详细信息;

                    -vv更加详细的信息;

                    -hhash marks,输出进度条,每个#代表2%的进度;

                     经典示例:

                                                   

N25第五周总结:程序包管理

  


              –test测试安装,检查并报告依赖关系及冲突;

                           rpm  -ivh –test  PACKAGE_FILE

 

               –nodeps忽略依赖关系;

                           rpm -ivh –nodeps PACKAGE_FILE

                 

                    –replacepkgs重新安装;

                           rpm  –ivh  –replacepkgs PACKAGE_FILE

 

                    –nosignature不检查包签名信息,不检查来源合法性;

                           rpm -ivh –nosignature PACKAGE_FILE

 

                    –nodigest不检查包完整性信息;

                           rpm  -ivh –nodigest PACKAGE_FILE

 

         升级:

             rpm  -U[install-option]  PACKAGE_FILE

             rpm  -F[install-option]  PACKAGE_FILE

                     -U:升级或安装,如未安装,则执行安装;

                     -F:升级,只执行升级;

       

                  rpm  -<U|F>vh    PACKAGE_FILE

                    N25第五周总结:程序包管理

 

                 install-option:

                      –oldpackage:降级安装;

                           rpm  -Uvh –oldpackage  PACKAGE_FILE

                           

                       –force          强制升级;

                           RPM  -Uvh  –force  PACKAGE_FILE

 

         注意:1)、不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装进新版本内核;

               2)、如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的统一配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名为(FILENAME.rpmnew)后提供

 

         卸载:-e

             rpm  -e[options]  PACKAGE(已安装的程序)

             rpm  –evh

 

                options:

                   –allmatches卸载所有匹配指定名称的程序包的各版本;

                    –nodeps忽略依赖关系

                –test测试卸载,干嚎模式

 

                N25第五周总结:程序包管理

 

         查询:-q

              rpm -q [select-options][query-options]  <PACKAGE|PACKAGE_FILE>

                [select-options]

                      -a查询所有已经安装过的包;

                      -f查询指定的文件有那个程序包安装生成;

                   N25第五周总结:程序包管理

                                    

         -p用于实现对未安装的程序包执行查询操作;

                                                                                                                                                 功能

                    –whatprovides CAPABILITY查询指定的CAPABILITY由哪个程序宝提供;

                     N25第五周总结:程序包管理

 

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

                     N25第五周总结:程序包管理

            [query-options]

                       –changelog查询rpm包的changlog

                       -l         程序安装生成的所有文件列表;

                       -i                     程序包相关的信息,版本号、大小、所属的包租、等;

                       -c                    查询指定的程序提供的配置文件;

                       -d                   查询指定的程序包提供的文档;

                       –provides   列出指定的程序包提供的所有的CAPABILITY;

                       -R                   查询指定的程序包的依赖关系

                       –scripts         查看程序包自带的脚本片段;

 

        用法:

         针对已安装程序:

                                -qi   PACKAGE

                                   -ql   PACKAGE

                            -qf   FILE

                                   -qc   PACKAGE

                                   -ql    PACKAGE  

                                   -qd   PACKAGE

                            …..

            N25第五周总结:程序包管理

 

            N25第五周总结:程序包管理

 

         针对rpm安装包:

                                 -qpi   PACKAGE_FILE

                                   -qpl   PACKAGE_FILE

                                   -qpc   PACKAGE _FILE

                                    -qpl    PACKAGE_FILE

                                    -qpd   PACKAGE_FILE

                            …..

            N25第五周总结:程序包管理

 

             N25第五周总结:程序包管理

 

                N25第五周总结:程序包管理

 

         校验:-V

        一般情况下,rpm会自动校验已安装的rpm

             来源合法性验证

             完整性验证

             rpm -V PACKAGE

                  

                导入信任的包制作者密钥:

                        rpm  –import

                          密钥位置:

                                /etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-#

                                镜像中的 RPM-GPG-KEY-CentOS-#

                             N25第五周总结:程序包管理

 

         验证rpm安装包:

                  安装时会自动验证安装包;

                  手动验证:

                        rpm -k PACKAGE_FILE

         数据库重建:

                  rpm 管理器数据库路径:/var/lib/rpm

                       查询操作:通过此处的数据库进行

                              centOS 6

                                            rpm {–initdb|rebuilddb}

                                                  –initdb初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时不执行任何操作;

                                                  –rebuilddb重新构建,通过读取当前系统上所有已经安装过的程序包进行重新构建;

 

                                centOS 7

                                          rpmdb  {–initdb|rebuilddb}

                                             –initdb初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时

                                                 –rebuilddb重新构建,通过读取当前系统上所有已经安装过的程序包进行重新构建;

 

         注:构建数据库时非常占用资源,如果系统正在繁忙时谨慎使用!!

 

 

rpm总结:

         rpm作为目前linux系统中最常用的程序包管理器,其强大的功能是功不可没的。通过高度灵活的选项可以完成诸多管理操作,所以熟练掌握rpm命令是管理程序的不二法宝。

 

 

 

yum详解:

一、大纲

         1、什么是yum

         2、为什么要使用yum

         3yum能实现什么功能

         4yum实现与各命令详解

 

二、正题

1、什么是yum

         yum全称为 Yellow dog Updater, Modified,是一款运行在redhatcentos中的shell前端程序包管理器。能够从指定的服务器自动下载RPM包并且安装,(或从本地yum仓库中下载安装)可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

 

2、为什么要使用yum

       虽然rpm功能强悍,但是rpm有一个致命的确定:无法解决程序依赖关系。这在程序管理中至关重要,因为一个程序或许依赖于众多程序才能运行,而众多程序中的某个程序又会依赖其他程序。。。这样会使程序的安装工作变得异常繁琐,严重影响了程序使用。所以这时就出现了一款能解决程序依赖关系的程序包管理器–yum。使用yum,最重要的是可以解决程序依赖关系,为批量安装程序节省了大量的时间。

 

3yum能实现什么功能

       yum功能与rpm类似,在解决依赖关系的基础上能实现对程序的安装、升级、卸载、查询、降级等。yum还可以在本地将所需要的rpm包手动创建为yum仓库,自动解决依赖关系。yum可支持ftphttpfile等常见协议,为yum提供更好的兼容性。

 

4yum实现与各命令详解

yum可通过两种方式实现:一种是直接加载网上的yum仓库,前提是必须能连上互联网;另一种是加载本地yum源来实现安装。

 

         首先说一下yum配置文件:(大写单词表示可自定义)

                   /etc/yum.conf这个是yum的主配置文件,都是一些全局配置,一般如果没有特殊需求的话不用配置;

                  /etc/yum.repo.d/*.repo这个是yum仓库的配置文件,每一个文件可以配置多个yum仓库;

想要实现yum仓库,首先必须要配置/etc/yum.repo.d/NAME.repo,其结构如下:

                [repositoryID]          :自定义名称与文件名相同

                       name=NAME                   :仓库的名称,可自定义

                    baseurl=url://         :仓库的具体地址,可以为ftp://  http://  file:///协议;

                                url://            :为镜像地址,镜像原必须与上面相同,可以不写;

                    enable={1|0}            :默认为1,表示启用,0为关闭此yum仓库;

                    gpgcheck={0|1}           :表示是否需要检查次yum的来源,0为关闭;

                    gpgkey=URL               :提供检查来源的地址

                    enablegroups={1|0}          :是否支持组管理

                    failovermethod={rounrobin|priority}:如有多个url时的选择模式,默认为轮询;

                                     轮询    优先级

                  cost=                  :开销,表示如有多个repo文件时,读取此文件的优先级;

 

:粗体表示的参数是必须的,其他的可以省略;

 

配置yum仓库:

如果是网络上的yum仓库,则baseurl直接写入网络yum仓库的地址,如下:

              编辑/etc/yum.repo.d/NAME.repo (注:NAME是可自定义的)

                               [repositoryID]

                               name=NAME

                               baseurl=url:// (写入网上的yum仓库地址)

                               enable=1

                               gpgcheck=0

                               然后保存退出即可

 

如果是本地的,则如下:

         本地仓库的安装包都在原版镜像下的Packageos6,7)下,所以可按照以下步骤参考进行;

         mkdir /mnt/repo

         mount /dev/cdrom  /mnt/repo (如果镜像已经加载,清先卸载后重新挂载到指定目录)

         编辑/etc/yum.repo.d/NAME.repo (注:NAME是可自定义的)

                    [repositoryID]

                    name=NAME

                    baseurl=file:///mnt/repo

                    enable=1

                    gpgcheck=0

                   然后保存退出即可

 

                   以上yum仓库就部署完毕

        

         yum的用法:

              yum [options] [command] [package …]

                        因为yum的参数太多,可使用 –help来详解,以下只列出一些常用和实用的选项

                  

           显示仓库列表:

                   yum repolist [all|enabled|disabled]

                N25第五周总结:程序包管理

 

           显示程序包:

                   yum list

                         #  yum list [all | glob_exp1]  [glob_exp2] […]

                         #  yum list [available|installed|updates]  [glob_exp1] […]

                                  有但未安装               glob表达式

                N25第五周总结:程序包管理 

 

                N25第五周总结:程序包管理

 

           安装程序包:

                     yum install [PACKAGE1,PACKAGE2…..]

                     yum reinstall [PACKAGE1,PACKAGE2…..]  reinstall:重新安装)

                     注:在安装的过程中会弹出: N25第五周总结:程序包管理

                            输入y继续安装;

                N25第五周总结:程序包管理

 

           降级安装:

               yum downgrade package1 [package2] […]

     

        升级程序包:

                    yum update [package1] [package2] […]

 

        检查可用升级:

             yum  check-update

 

        卸载程序包:

            N25第五周总结:程序包管理

             会提示是否卸载,选择是

 

        查看程序包:

                 yum info package

            N25第五周总结:程序包管理

        

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

                   yum  provides | whatprovides  feature1 [feature2] […]

            N25第五周总结:程序包管理

 

        清理本地缓存:

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

        N25第五周总结:程序包管理

 

           构建缓存:

               yum makecache

              N25第五周总结:程序包管理

           搜索:    以指定的关键字搜索程序包名及summary(摘要)信息;

                            yum search string1 [string2] […]

                N25第五周总结:程序包管理

 

           查看指定包所依赖的程序及其提供的capabilities(功能):

                    yum deplist package1 [package2] […]

                N25第五周总结:程序包管理

 

        查看yum事物历史:

            history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

                 示例:yum history list

              N25第五周总结:程序包管理

        安装及升级本地程序包:

                   localinstall rpmfile1 [rpmfile2] […]

                      (maintained for legacy reasons only – use install)

                   localupdate rpmfile1 [rpmfile2] […]

            注:在实际工作中,可直接使用install后跟包名,yum会自动识别安装包并解决依赖关系;

 

            包组管理命令:

                        yum还支持包组管理,使用方法同单个安装类似,只是加了group,例如:

                                   grouplist[hidden] [group wildcard] […]

                                    groupinstallgroup1 [group2]

                     groupupdate: group1 [group2]

                     groupremove group1 [group2]

                     groupinfo: group1 [group2]

 

                yum的命令行选项:(命令行权限大于配置文件)

                     -y表示自动安装,无需提示;

                     -q表示静默安装,不显示安装过程;

                     –nogpgcheck禁止进行gpgcheck

                         –disablerepo=REPOIDGLOB临时禁用此处指定的repo,主要用于在repo文件冲突的情况下使用;

                         –enablerepo=REPOIDGLOB临时启用此处指定的repo

                         –noplugins禁用所有插件

 

                创建yum仓库:

               creatrepo

                       createrepo是一款本地yum源制作工具,可以手动将一些rpm做成yum仓库,解决依赖关系。

                      默认此工具没有安装,需要先安装在使用:yum -y install createrepo

                   使用方法:可直接在rpm包目录里:createrepo   ./ 

                      有一个常用选项:–basedir:指定repo存放位置(createrepo ./  –basedir /DIR 

 

         最后再说一下repo配置文件中可用的变量:

             因为一条yum仓库url在被多个用户访问时,每个用户的linux版本与平台都不一样,所以为了能够识别每个用户的系统版本与平台,就在url中引入变量,让系统自动完成系统与平台识别。

                 $releasever当前OS的发行版的主版本号;

                  $arch平台;

                  $basearch基础平台

                  $YUM0-$YUM9 自定义变量

                            示例:     http://mirrors.magedu.com/centos/$releasever/$basearch/os

 

 

 

程序包编译安装

一:大纲

       1、什么是编译安装

       2、为什么要使用编译安装

       3、编译安装能实现什么功能

       4、编译安装详解

 

二、正题

1、什么是编译安装

       编译安装通俗的说是就是手动将程序的源码部署到系统中去,通常需要三步才能完成安装工作;

 

2为什么要使用编译安装

          编译安装是根据系统环境,在最优化的情况下完成代码编译工作,特点就是完全适应当前环境,可以最大化提升程序运行速度与系统稳定。

 

   3、编译安装能实现什么功能

            编译安装相比rpm包更加底层,所以可添加各种选项与参数来调节程序安装的过程,满足用户的需求,是一种更加高级的程序安装方式;再而且程序刚被发布是通常都是以源码包的方式,只能通过编译安装来实现功能,所以编译安装是安装程序的必要技能。

   4、编译安装详解

      编译安装通常需要三个步骤:

          ./configure (在源码包中)

                                    

    make

                                     

    make install:(相当使用install命令)

 

          第一步:./configure

           1)通过选项传递参数,指定启用特性、安装路径等生成makefile文件;

           2)检查依赖到的外部环境;

           3)可通过–help来获取此包所支持的选项;

 

              选项分类:

        指定安装路径(默认/usr/local

                         –prefix=/PATH/TO/SOMEWHERE:指定默认安装位置;

                         –sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;

        

                       System type系统类型(交叉编译)

 

                  可选特性

                              –disable-FEATURE:禁止某特性

                                –enabled-FEATUR [=ARG]:启用某特性

 

                       可选包

                                –with-PACKAGE [=ARG] 依赖包,必须有此包才能实现某功能。

                                –without-PACKAGE:不需要某个包

 

   第二步:make

           根据makefile文件,构建应用程序;

           第二步没有选项,这只是一个编译过程;

 

       第三步:make install

           将上一步编译完成后生成的程序文件复制到对应的目录中。

           第三步也没有选项,这只是执行复制的一个过程。

 

       安装后的配置:

           安装完成后只是将程序文件部署到系统中,如果要使用的话,还需要以下步骤才能够真正完成程序安装;

                  

            (1)导出二进制程序目录至PATH环境变量中;

                     编辑文件/etc/profile.d/NAME.SH

                               export PATH=/PATH/TO/BIN:$PATH

 

                2)导出库文件路径

                     编辑/etc/ld.so.conf.d/NAME.conf (直接写入lib路径)

                                /usr/local/apache2/lib

                     让系统重新生成缓存:

                               ldconfig -v

 

                3)导出头文件:

                              ln -s  include

                  

                    4)导出帮助手册:

                           编辑/etc/man.config

                               添加MANPATH路径

 

 

原创文章,作者:N25_韩奇洋,如若转载,请注明出处:http://www.178linux.com/66338

(0)
N25_韩奇洋N25_韩奇洋
上一篇 2017-01-10
下一篇 2017-01-10

相关推荐

  • Tomcat及Tomcat集群

    Tomcat集群实现的三种方式 配置 Tomcat1 配置环境 ip a add 192.168.88.101/24 dev ens33 yum install ntpdate -y ntpdate 172.16.0.1 安装java yum install java-1.8.0-openjdk-devel -y 安装tomcat yum install t…

    Linux干货 2017-07-08
  • Linux文件根目录

    / 表示为根目录/├── bin  存放用户使用的基本命令(可执行程序,二进制文件)  不能单独分区├── boot   跟内核有关的文件 grub  内核和BootLoader ├── cgroup   用来资源限制资源隔离 docker 容器化├── dev(device )设备文件&…

    2017-03-27
  • 权限管理

    1、创建组sales,gid 3000,passwd:centos,sales admins:user2 将用户user1,user2,user3加入到sales辅助组 希望user1 创建新文件 默认的所属组为sales user2将用户user3从sales组移除 # groupadd -g 3000 sales  # gpasswd sale…

    Linux干货 2016-08-03
  • ip、ss、nmcli命令的使用

    配置Linux网络属性:ip命令 ip命令: ip – show / manipulate routing, devices, policy routing and tunnels ip [ OPTIONS ] OBJE…

    Linux干货 2016-07-29
  • 密码保护:第一天

    无法提供摘要。这是一篇受保护的文章。

    Linux干货 2017-07-15
  • Shell 变量类型及用法

    一、      什么是变量          变量源于数学,在计算机语言中能储存计算机结果或能表示值的抽象概念,变量可以由变量名访问,在指令语言中,变量通常是可变的。Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个…

    Linux干货 2016-08-12

评论列表(1条)

  • 马哥教育
    马哥教育 2017-04-10 16:17

    总结的很好,请继续保持~~~加油!!