zoukankan      html  css  js  c++  java
  • CentOS的软件包的管理之rpm和yum

    在linux上,一个软件包通常由二进制程序,库文件,配置文件和帮助文件组成。 其中:

    二进制程序一般都放在/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin和/usr/local/sbin这几个目录下边;
    库文件都放在/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib和/usr/local/lib64这些目录下;
    配置文件一般都是放在/etc这个目录下;
    而最基本的man帮助文件则是放在/usr/share/man这个目录下的。
    

    在CentOS上,软件的安装方式一般有四种:

    通用二进制编译:由志愿者把开发完成的源代码编译成二进制文件,打包后发布在网络上,大家都可以通过网络进行下载,到本地之后,经过解压配置就可以使用。
    软件包管理器:使用包管理工具安装,有时候必须要解决软件包之间的依赖问题,例如rpm和deb等。
    软件包前端管理工具:可以自动解决软件包依赖关系,例如yum和apt-get等。
    源码包安装:从网络上下载软件的源码包到本地计算机,用gcc等编译工具编译成二进制文件后才能使用,有时必须要解决库文件的缺失问题。
    

    我们这里只说CentOS上常用的rpm和yum等的用法。

    CentOS上默认使用的软件包格式是rpm包。

    RPM最初是由RedHat公司开发的一种软件包管理工具,最初它的全称是Redhat Package Manager,现在包括SUSE在内的很多linux发行版都使用这种软件管理工具,使得rpm成为linux的软件包管理标准,所以现在它的全称为Rpm Package Manager.

    rpm包的管理器包括软件的打包,查询,校验,安装,升级,卸载,数据库管理等功能。

    在CentOS上,一个rpm的命令格式为:

    name-version.release.arch.rpm,其中version由主版本号,次版本号构成。

    拿一个很常用的软件包主例: httpd-2.2.15-59.el6.centos.x86_64.rpm 在这里,httpd是软件包的包名,2.2.15-59依次是软件包的主发行版本号,次发行版本号和修正号等,el6.centos是软件包适用的操作系统的版本号,x86_64是软件包的架构。

    rpm的命令一般都是组合使用的,常用的组合选项有:

    rpm -q          查询某个软件包,一般与别的选项组合使用
    rpm -qa         查询系统上已安装的所有的软件包
    rpm -qf         查询系统中的某个文件是由哪个软件包所生成
    rpm -qd         查询一个软件包安装后在系统生成的帮助文件
    rpm -ql         查询一个软件包安装后在系统生成文件的列表
    rpm -qc         查询一个软件包的配置文件
    rpm -qpl        查询一个未安装软件包安装后会在系统生成的文件列表
    rpm -qi         查询一个软件包的发行信息
    rpm -v          显示一个软件包安装,升级,卸载的过程            
    rpm -K          校验一个软件包的私钥是否正确
    rpm -U          升级软件包
    rpm -f          强制安装,升级或卸载某软件
    rpm -e          卸载软件包
    

    rpm管理器一些其它的用法:

    rpm --replacepkgs       重新安装某个软件包
    rpm --initdb            初始化系统的rpm数据库
    rpm --rebuilddb         重建系统的rpm数据库
    rpm --import            向系统导入软件包的公钥
    rpm --test              测试一个软件包是否能够安装在系统上,不真正安装
    rpm --nodeps            安装软件包,不解决依赖关系
    rpm --force             强制安装,升级或卸载,等同于rpm -f
    rpm --scripts           查看一个软件包内的脚本
    rpm --nodigest          不检查软件包的完整性
    rpm --nosignature       不检查软件包来源的合法性
    

    校验软件包的文件:

    S            文件大小发生改变
    M            文件权限发生改变
    5            文件的md5值发生改变
    D            设备的主次设备号发生改变
    L            文件的链接发生改变
    U            文件的属主发生改变
    G            文件的属组发生改变
    T            文件的最后修改时间发生改变
    P            文件的能力发生改变
    

    rpm包管理器的通用配置文件:

    公钥文件位置:/etc/pki/rpm-gpg/
    [root@localhost ~]# ls /etc/pki/rpm-gpg/
    RPM-GPG-KEY-CentOS-6        RPM-GPG-KEY-CentOS-Security-6
    RPM-GPG-KEY-CentOS-Debug-6  RPM-GPG-KEY-CentOS-Testing-6
    
    数据库文件位置:/var/lib/rpm/
    [root@localhost ~]# ls /var/lib/rpm
    Basenames     __db.003     Group         Packages        Requirename     Triggername
    Conflictname  __db.004     Installtid    Providename     Requireversion
    __db.001      Dirnames     Name          Provideversion  Sha1header
    __db.002      Filedigests  Obsoletename  Pubkeys         Sigmd5
    

    做为一个标准的软件包管理系统,rpm确实很强大,但是rpm软件包的依赖问题却又让所有的SA又爱又恨,因此rpm包的前端管理工具就应运而生了。

    Yum ,全称为:Yellow dog Updater, Modified,是一个基于RPM 包管理的字符前端软件包管理器,它基于C/S架构,能够从配置好的yum仓库自动下载 RPM 包并且安装,可以处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

    yum的仓库由各共享的rpm包及由包之间的依赖关系的文件列表等元数据文件组成。 yum的客户端由yum配置文件,缓存元数据组成。 yum客户端的工作原理分析:

    1.yum源配置完成后,yum会到各可用的yum仓库下载元数据到本地,并缓存在/var/cache/yum这个目录下。
    2.当管理员想要安装某个软件时,yum会根据具体的操作请求分析缓存在系统本地的元数据,结合系统已经安装的软件包,分析出要安装或升级的软件包的列表。
    3.向yum仓库请求分析出的软件包列表中的软件,下载到本地客户端完成安装。
    4.本次安装完成后,清除本次安装过程中下载到本地的软件包,以节省硬盘空间。
    

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

    [main]
    cachedir=/var/cache/yum/$basearch/$releasever
    keepcache=0        
    debuglevel=2
    logfile=/var/log/yum.log
    exactarch=1
    obsoletes=1
    gpgcheck=1
    plugins=1
    installonly_limit=5
    bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
    distroverpkg=centos-release
    

    文件格式解说:

    cachedir        指的是下载软件包缓存目录
    $basearch       对应为程序的版本,对yum而言指的是redhat-release版本,在使用时会替换成系统的主版本号。
    $releasever     对应为系统的硬件架构,如i686,x86-64,noarch等
    keepcache       软件包安装后是否保留软件包,0为不保留
    logfile         为yum的系统日志文件
    gpgcheck        为是否校验要安装的软件包,1为校验
    

    yum客户端的配置文件通常位于/etc/yum.repos.d/这个目录下,以repo结尾的文件都是yum源的配置文件,yum源的配置文件可以有多个。

    [base]
    name=CentOS-$releasever - Base
    baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    

    这个是系统自带的yum源文件。yum源的配置通常由五部分组成,其中,

    [base]是这个yum源的名字
    name=....                相当于是这个yum源的注释信息
    baseurl=.....            指定对应yum仓库的访问方式,可以使用以下四种方式:
        ftp                    ftp://server/path/to/repo
        http                http://server/path/to/repo
        nfs                    nfs://server/path/to/repo
        本地光盘yum源        file:///path/to/repo
    gpgckeck=1              校验软件包
    gpgkey=...              指定公钥的位置
    

    yum的用法:

    yum [option] command
    

    yum常用的命令有:

    yum repolist {all|enabled|disabled}          列出所有/已启用/已禁用的yum源
    yum list {all|installed|avaliable}          列出所有/已安装/可安装的软件包
    yum info package                            显示某一个软件包的信息
    yum install package                         安装软件包
    yum reinstall package                       重新安装软件包
    yum remove|earse package                    卸载软件包
    yum whatprovides|provides files             查询某个文件是哪个软件包生成的
    yum grouplist {all|installed|avaliable}     列出所有/已安装/可安装的软件包组
    yum groupinfo                               显示某个软件包组的信息
    yum groupinstall                            安装某个软件包组
    yum groupremove                             删除某个软件包组
    yum history                                 查看yum使用的历史
    yum clean {all|packages|metadata}           清除所有/软件包/元数据
    yum makecache                               生成yum元数据 
    yum --nogpgcheck                            不校验公钥文件
    yum -y                                      自动进行操作
    

    例子:

    1.安装wget下载工具:

    [root@localhost ~]# yum install -y wget
    Loaded plugins: fastestmirror
    Setting up Install Process
    Loading mirror speeds from cached hostfile
     * base: 
    base                                                                                                                                            | 4.0 kB     00:00 ... 
    epel                                                                                                                                            | 4.3 kB     00:00     
    Resolving Dependencies
    --> Running transaction check
    ---> Package wget.x86_64 0:1.12-10.el6 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =======================================================================================================================================================================
     Package                              Arch                                   Version                                        Repository                            Size
    =======================================================================================================================================================================
    Installing:
     wget                                 x86_64                                 1.12-10.el6                                    base                                 484 k
    
    Transaction Summary
    =======================================================================================================================================================================
    Install       1 Package(s)
    
    Total download size: 484 k
    
    
    
    
    
    Installed size: 1.8 M
    Downloading Packages:
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Installing : wget-1.12-10.el6.x86_64                                                                                                                             1/1 
      Verifying  : wget-1.12-10.el6.x86_64                                                                                                                             1/1 
    
    Installed:
      wget.x86_64 0:1.12-10.el6                                                                                                                                            
    
    Complete!
    

    2.安装开发工具包组:

    [root@localhost ~]# yum grouplist | grep "Development tools"
       Development tools
    [root@localhost ~]# yum groupinstall -y "Development tools"
    Loaded plugins: fastestmirror
    Setting up Group Process
    Loading mirror speeds from cached hostfile
     * base: 
    Package 1:make-3.81-23.el6.x86_64 already installed and latest version
    Package 1:pkgconfig-0.23-9.1.el6.x86_64 already installed and latest version
    Package binutils-2.20.51.0.2-5.46.el6.x86_64 already installed and latest version
    Resolving Dependencies
    --> Running transaction check
    ---> Package autoconf.noarch 0:2.63-5.1.el6 will be installed
    --> Processing Dependency: perl >= 5.005_03 for package: autoconf-2.63-5.1.el6.noarch
    --> Processing Dependency: perl >= 5.005 for package: autoconf-2.63-5.1.el6.noarch
    ...         中间省略
    Verifying  : elfutils-0.164-2.el6.x86_64                               106/113 
      Verifying  : 1:perl-Module-Pluggable-3.90-144.el6.x86_64               107/113 
      Verifying  : byacc-1.9.20070509-7.el6.x86_64                           108/113 
      Verifying  : libXft-2.3.2-1.el6.x86_64                                 109/113 
      Verifying  : libedit-2.11-4.20080712cvs.1.el6.x86_64                   110/113 
      Verifying  : libICE-1.0.6-1.el6.x86_64                                 111/113 
      Verifying  : perl-XML-Parser-2.36-7.el6.x86_64                         112/113 
      Verifying  : libxcb-1.12-4.el6.x86_64                                  113/113 
    ...         中间省略
    Installed:
      autoconf.noarch 0:2.63-5.1.el6                                                 
    ...         中间省略
      perl-libwww-perl.noarch 0:5.833-5.el6                                          
      perl-version.x86_64 3:0.77-144.el6                                             
      pixman.x86_64 0:0.32.8-1.el6                                                   
      ppl.x86_64 0:0.10.2-11.el6                                                     
      rsync.x86_64 0:3.0.6-12.el6                                                   
      systemtap-client.x86_64 0:2.9-7.el6                                            
      systemtap-devel.x86_64 0:2.9-7.el6                                             
      systemtap-runtime.x86_64 0:2.9-7.el6                                           
      unzip.x86_64 0:6.0-5.el6                                                       
      xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6                                   
      xz-lzma-compat.x86_64 0:4.999.9-0.5.beta.20091007git.el6                       
      zip.x86_64 0:3.0-1.el6_7.1                                                     
    
    Complete!
    

    3.查看内核文件的信息

    [root@localhost Packages]# yum info kernel
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
     * base: 
    Installed Packages
    Name        : kernel
    Arch        : x86_64
    Version     : 2.6.32
    Release     : 573.el6
    Size        : 126 M
    Repo        : installed
    From repo   : anaconda-CentOS-201508042137.x86_64
    Summary     : The Linux kernel
    URL         : http://www.kernel.org/
    License     : GPLv2
    Description : The kernel package contains the Linux kernel (vmlinuz), the core of any
                : Linux operating system.  The kernel handles the basic functions
                : of the operating system: memory allocation, process allocation, device
                : input and output, etc.
    
    Available Packages
    Name        : kernel
    Arch        : x86_64
    Version     : 2.6.32
    Release     : 696.el6
    Size        : 32 M
    Repo        : base
    Summary     : The Linux kernel
    URL         : http://www.kernel.org/
    License     : GPLv2
    Description : The kernel package contains the Linux kernel (vmlinuz), the core of any
                : Linux operating system.  The kernel handles the basic functions
                : of the operating system: memory allocation, process allocation, device
                : input and output, etc.
    

    4.在CentOS7上创建本地光盘yum源

    #查看系统版本
    [root@localhost home]# cat /etc/centos-release
    CentOS Linux release 7.2.1511 (Core) 
    #创建光盘挂载点
    [root@localhost home]# mkdir /mnt/cdrom
    #挂载系统光盘到/mnt/cdrom目录下
    [root@localhost home]# mount /dev/cdrom /mnt/cdrom
    mount: /dev/sr0 is write-protected, mounting read-only
    #列出/mnt/cdrom目录的内容
    [root@localhost home]# ls /mnt/cdrom
    CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
    #进入/etc/yum.repos.d目录
    [root@localhost home]# cd /etc/yum.repos.d/
    #创建repo的备份目录
    [root@localhost yum.repos.d]# mkdir repo.bak
    #把系统原有的repo文件移动到刚创建的备份目录下
    [root@localhost yum.repos.d]# mv ./*.repo repo.bak/
    #编辑光盘yum的repo文件,加入以下内容,保存退出
    [root@localhost yum.repos.d]# vi CentOS-Media.repo
    
    [CentOS-Media]
    name=CentOS-Media
    baseurl=file:///mnt/cdrom/
    enabled=1
    gpgcheck=0
    
    #清除系统上yum源的元数据
    [root@localhost yum.repos.d]# yum clean all
    Loaded plugins: fastestmirror
    Cleaning repos: CentOS-Media
    Cleaning up everything
    Cleaning up list of fastest mirrors
    #生成新的yum元数据
    [root@localhost yum.repos.d]# yum makecache
    Loaded plugins: fastestmirror
    CentOS-Media                                                                                                                                    | 3.6 kB  00:00:00     
    (1/4): CentOS-Media/group_gz                                                                                                                    | 155 kB  00:00:00     
    (2/4): CentOS-Media/filelists_db                                                                                                                | 3.0 MB  00:00:02     
    (3/4): CentOS-Media/primary_db                                                                                                                  | 3.0 MB  00:00:01     
    (4/4): CentOS-Media/other_db                                                                                                                    | 1.3 MB  00:00:00     
    Determining fastest mirrors
    Metadata Cache Created
    #安装软件进行测试
    [root@localhost yum.repos.d]# yum install -y httpd
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed
    --> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package: httpd-2.4.6-45.el7.centos.x86_64
    --> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-45.el7.centos.x86_64
    --> Running transaction check
    ---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos will be installed
    ---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =======================================================================================================================================================================
     Package                                Arch                              Version                                        Repository                               Size
    =======================================================================================================================================================================
    Installing:
     httpd                                  x86_64                            2.4.6-45.el7.centos                            CentOS-Media                            2.7 M
    Installing for dependencies:
     httpd-tools                            x86_64                            2.4.6-45.el7.centos                            CentOS-Media                             84 k
     mailcap                                noarch                            2.1.41-2.el7                                   CentOS-Media                             31 k
    
    Transaction Summary
    =======================================================================================================================================================================
    Install  1 Package (+2 Dependent packages)
    
    Total download size: 2.8 M
    Installed size: 9.6 M
    Downloading packages:
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Total                                                                                                                                   10 MB/s | 2.8 MB  00:00:00     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : mailcap-2.1.41-2.el7.noarch                                                                                                                         1/3 
      Installing : httpd-tools-2.4.6-45.el7.centos.x86_64                                                                                                              2/3 
      Installing : httpd-2.4.6-45.el7.centos.x86_64                                                                                                                    3/3 
      Verifying  : httpd-tools-2.4.6-45.el7.centos.x86_64                                                                                                              1/3 
      Verifying  : mailcap-2.1.41-2.el7.noarch                                                                                                                         2/3 
      Verifying  : httpd-2.4.6-45.el7.centos.x86_64                                                                                                                    3/3 
    
    Installed:
      httpd.x86_64 0:2.4.6-45.el7.centos                                                                                                                                   
    
    Dependency Installed:
      httpd-tools.x86_64 0:2.4.6-45.el7.centos                                                mailcap.noarch 0:2.1.41-2.el7                                               
    
    Complete!
    

    大功告成了!So easy吧~~~~~~~~~~~

  • 相关阅读:
    js笔记4
    js笔记3
    js笔记2
    js笔记1
    前端笔记13
    (7)第3章的开始
    (6)第2章的尾巴~
    (5)自定义数据结构再探
    我的学习方法(6)
    (4)自定义数据结构初探
  • 原文地址:https://www.cnblogs.com/renpingsheng/p/7050418.html
Copyright © 2011-2022 走看看