美文网首页
安装软件包的三种方法、rpm、yum

安装软件包的三种方法、rpm、yum

作者: XiaoMing丶 | 来源:发表于2018-10-09 23:12 被阅读0次

    目录

    一、 安装软件包的三种方法
    二、 rpm包介绍
    三、 rpm工具用法
    四、 yum工具用法
    五、 yum搭建本地仓库

    一、 安装软件包的三种方法

    1. RPM工具
      RPM是Red Hat Package Manager的缩写。RPM包是预先在Linux机器上编译并打包的文件,类似于windows的exe安装包,安装非常快捷。使用RPM工具安装某一个程序包时,有可能会因为该程序包依赖另一个程序包而无法安装,包与包之间存在着相互依赖的情况,卸载包时需要先把依赖的包卸载。如果依赖的包是系统所必需的,就不能卸载这个包,否则系统会崩溃。
    2. yum工具
      yum是由python开发用来安装RPM程序包的工具。相较于RPM工具,yum工具的优势在于可以联网去下载所需要的RPM包,然后自动安装。如果要安装的RPM包有依赖关系,yum工具会帮我们依次安装所有相关的RPM包。
    3. 源码包
      源码包就是程序的源代码包,我们可以修改这些源代码的自定义功能,然后再按你的需求编译。

    二、 rpm包介绍

    首先,检查在虚拟机光驱中是否有系统安装盘镜像,有的话我们通过执行mount命令把光驱挂载到/mnt目录下。示例命令如下:

    [root@minglinux-01 ~]# mount /dev/cdrom /mnt
    mount: /dev/sr0 写保护,将以只读方式挂载
    [root@minglinux-01 ~]# ls /mnt/
    CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
    EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
    EULA             isolinux  repodata  TRANS.TBL
    [root@minglinux-01 ~]# ls /mnt/Packages/ |head
    389-ds-base-1.3.7.5-18.el7.x86_64.rpm
    389-ds-base-libs-1.3.7.5-18.el7.x86_64.rpm
    abattis-cantarell-fonts-0.0.25-1.el7.noarch.rpm
    abrt-2.1.11-50.el7.centos.x86_64.rpm
    abrt-addon-ccpp-2.1.11-50.el7.centos.x86_64.rpm
    abrt-addon-kerneloops-2.1.11-50.el7.centos.x86_64.rpm
    abrt-addon-pstoreoops-2.1.11-50.el7.centos.x86_64.rpm
    abrt-addon-python-2.1.11-50.el7.centos.x86_64.rpm
    abrt-addon-vmcore-2.1.11-50.el7.centos.x86_64.rpm
    abrt-addon-xorg-2.1.11-50.el7.centos.x86_64.rpm
    

    如上所示,在/mnt/Packages目录下有很多后缀为.rpm的文件,这些文件就是RPM包。
    以abrt-2.1.11-50.el7.centos.x86_64.rpm为例,abrt为包名,2.1.11为版本信息,50.el7.centos为发布版本号,x86_64为运行平台。常见的运行平台有i386、i586、i686和x86_64。需要注意的是,CPU目前分32位和64位,i386、i586和i686都为32位平台,x86_64则为64位平台。
    Centos7已经不再区分32或者64位的,默认全都是64位系统。一般64位系统可以安装32位的软件。反过来不可以。

    三、 rpm工具用法

    rpm包选项:

    -a:查询所有包。
    -i:安装指定的包。
    -v:显示指令执行过程。
    -h:显示安装进度。
    -U:升级指定包。
    -q:使用询问模式。
    -l:显示包的文件列表。
    -force:表示强制安装,即使覆盖属于其他包的文件也要安装。
    -nodeps:表示当要安装的RPM包依赖于其他包时,即使其他包没有安装,也要安装这个包。

    1. rpm -ivh rpm包文件安装RPM包:
    [root@minglinux-01 ~]# cd /mnt/Packages/
    [root@minglinux-01 Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm 
    准备中...                          ################################# [100%]
    正在升级/安装...
       1:zsh-5.0.2-28.el7                 ################################# [100%]
    
    1. rpm -Uvh rpm文件包升级RPM包。

    2. rpm -e 包名卸载RPM包,卸载命令只需要包名作为参数即可。正常卸载是没有提示信息的。

    3. rpm -qa查询系统所有已安装的包:

    grub2-2.02-0.65.el7.centos.2.x86_64
    ncurses-base-5.9-14.20130511.el7_4.noarch
    openssh-server-7.4p1-16.el7.x86_64
    glibc-common-2.17-222.el7.x86_64
    postfix-2.10.1-6.el7.x86_64
    basesystem-10.0-7.el7.centos.noarch
    aic94xx-firmware-30-6.el7.noarch
    info-5.1-5.el7.x86_64
    passwd-0.79-4.el7.x86_64
    libattr-2.4.46-13.el7.x86_64
    pcre-8.32-17.el7.x86_64
    p11-kit-0.23.5-3.el7.x86_64
    ivtv-firmware-20080701-26.el7.noarch
    ........
    
    1. rpm -q 包名查询指定包是否安装:
    [root@minglinux-01 Packages]# rpm -q ppp
    未安装软件包 ppp 
    [root@minglinux-01 Packages]# rpm -q tree
    tree-1.6.0-10.el7.x86_64
    
    1. rpm -qi 包名查询指定包信息:
    Name        : vim-enhanced
    Epoch       : 2
    Version     : 7.4.160
    Release     : 4.el7
    Architecture: x86_64
    Install Date: 2018年09月07日 星期五 23时59分53秒
    Group       : Applications/Editors
    Size        : 2296714
    License     : Vim
    Signature   : RSA/SHA256, 2018年04月25日 星期三 19时50分34秒, Key ID 24c6a8a7f4a80eb5
    Source RPM  : vim-7.4.160-4.el7.src.rpm
    ........
    
    1. rpm -ql 包名列出包安装的文件:
    [root@minglinux-01 Packages]# rpm -ql vim-enhanced
    /etc/profile.d/vim.csh
    /etc/profile.d/vim.sh
    /usr/bin/rvim
    /usr/bin/vim
    /usr/bin/vimdiff
    /usr/bin/vimtutor
    
    1. rpm -qf 文件绝对路径查看一个文件时由哪个包安装的:
    vim-enhanced-7.4.160-4.el7.x86_64
    

    四、 yum工具用法

    前面说到使用RPM工具安装或卸载程序包时会受到包依赖关系的影响而无法完成安装或卸载,示例命令如下:

    [root@minglinux-01 Packages]# rpm -ivh texlive-2012-38.20130427_r30134.el7.x86_64.rpm 
    错误:依赖检测失败:
        texlive-scheme-basic 被 texlive-2:2012-38.20130427_r30134.el7.x86_64 需要
        texlive-collection-latexrecommended 被 texlive-2:2012-38.20130427_r30134.el7.x86_64 需要
        tex-kpathsea 被 texlive-2:2012-38.20130427_r30134.el7.x86_64 需要
        tex-tetex 被 texlive-2:2012-38.20130427_r30134.el7.x86_64 需要
    

    而使用yum工具可以自动安装所有有依赖关系的RPM包:

    [root@minglinux-01 Packages]# yum install texlive
    
    ........
    事务概要
    ============================================================================
    安装  1 软件包 (+220 依赖软件包)
    
    总下载量:118 M
    安装大小:226 M
    
    1. yum list查看所有RPM包资源:
    [root@minglinux-01 Packages]# yum list | head -n 10
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.163.com
     * extras: mirrors.163.com
     * updates: mirror.lzu.edu.cn
    已安装的软件包
    GeoIP.x86_64                                1.5.0-11.el7               @anaconda
    NetworkManager.x86_64                       1:1.10.2-16.el7_5          @updates 
    NetworkManager-libnm.x86_64                 1:1.10.2-16.el7_5          @updates 
    NetworkManager-team.x86_64                  1:1.10.2-16.el7_5          @updates 
    
    
    由于管道被破坏而退出
    

    上例中可以看到,左侧是RPM包名,中间是版本信息,右边是仓库名字。如果已安装,最右侧就显示@base、@updates或者@ anaconda,它们前面都会有一个@符号,这很好区分。如果未安装,则显示base或者anaconda;如果RPM包已安装但需要升级,则显示updates。
    查看一下yum仓库的配置文件信息,它在/etc/yum.repos.d/下。

    [root@minglinux-01 Packages]# ls /etc/yum.repos.d/
    CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
    CentOS-CR.repo         CentOS-Media.repo
    CentOS-Debuginfo.repo  CentOS-Sources.repo
    
    1. yum search [相关关键词]搜索RPM包:
    [root@minglinux-01 Packages]# yum search vim
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.163.com
     * extras: mirrors.163.com
     * updates: mirror.lzu.edu.cn
    ============================= N/S matched: vim =============================
    protobuf-vim.x86_64 : Vim syntax highlighting for Google Protocol Buffers
                        : descriptions
    vim-X11.x86_64 : The VIM version of the vi editor for the X Window System
    vim-common.x86_64 : The common files needed by any version of the VIM editor
    vim-enhanced.x86_64 : A version of the VIM editor which includes recent
                        : enhancements
    vim-filesystem.x86_64 : VIM filesystem layout
    vim-minimal.x86_64 : A minimal version of the VIM editor
    

    常使用grep来过滤的方法查找相应的RPM包,如下所示:

    [root@minglinux-01 Packages]# yum list | grep 'vim'
    vim-X11.x86_64                              2:7.4.160-4.el7            @base    
    vim-common.x86_64                           2:7.4.160-4.el7            @base    
    vim-enhanced.x86_64                         2:7.4.160-4.el7            @base    
    vim-filesystem.x86_64                       2:7.4.160-4.el7            @base    
    vim-minimal.x86_64                          2:7.4.160-4.el7            @anaconda
    protobuf-vim.x86_64                         2.5.0-8.el7                base 
    
    1. yum install [-y] [RPM包名]安装RPM包,若不加-y,则以交互方式安装。
    2. yum grouplist列出所有程序组:
    [root@minglinux-01 Packages]# yum grouplist
    已加载插件:fastestmirror
    没有安装组信息文件
    Maybe run: yum groups mark convert (see man yum)
    Loading mirror speeds from cached hostfile
     * base: mirrors.163.com
     * extras: mirrors.163.com
     * updates: mirror.lzu.edu.cn
    可用的环境分组:
       最小安装
       基础设施服务器
       计算节点
       文件及打印服务器
       基本网页服务器
       虚拟化主机
       带 GUI 的服务器
       GNOME 桌面
       KDE Plasma Workspaces
       开发及生成工作站
    可用组:
       传统 UNIX 兼容性
       兼容性程序库
       图形管理工具
       安全性工具
       开发工具
       控制台互联网工具
       智能卡支持
       科学记数法支持
       系统管理
       系统管理工具
    完成
    
    1. yum groupinstall [-y]安装程序组。
    2. yum remove [-y] [RPM包名]卸载RPM包。卸载需谨慎。
    3. yum update [-y] [RPM包]升级RPM包。若不加任何包名,则会升级系统以及系统上所有的包。
    4. yum provides检测软件包中包含的文件以及软件提供的功能,查找与正则表达式匹配的值。例如:
    [root@minglinux-01 Packages]# yum remove protobuf-c-1.0.2-3.el7.x86_64.rpm 
    已加载插件:fastestmirror
    参数 protobuf-c-1.0.2-3.el7.x86_64.rpm 没有匹配
    不删除任何软件包
    [root@minglinux-01 Packages]# 
    [root@minglinux-01 Packages]# yum update bash
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.163.com
     * extras: mirrors.163.com
     * updates: mirror.lzu.edu.cn
    No packages marked for update
    [root@minglinux-01 Packages]# yum provides "/*/vim"
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.163.com
     * extras: mirrors.163.com
     * updates: mirror.lzu.edu.cn
    extras/7/x86_64/filelists_db                         | 603 kB     00:00     
    http://ftp.sjtu.edu.cn/centos/7.5.1804/updates/x86_64/repodata/2fc3a069c503a8eee4306e51927691853cc1dda8d5e0c9f8220f429bcb4f979a-filelists.sqlite.bz2: [Errno 14] curl#7 - "Failed to connect to 2001:da8:8000:6023::230: 网络不可达"
    正在尝试其它镜像。
    updates/7/x86_64/filelists_db                        | 3.2 MB     00:10     
    cmake-2.8.12.2-2.el7.x86_64 : Cross-platform make system
    源    :base
    匹配来源:
    文件名    :/usr/share/cmake/editors/vim
    2:docker-unit-test-1.13.1-53.git774336d.el7.centos.x86_64 : Automates
         ...: deployment of containerized applications - for running unit tests
    源    :extras
    匹配来源:
    文件名    :/var/lib/docker-unit-test/v1.10-migrator-c417a6a022c5023c111662e8280f885f6ac259be/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/runc-e9c345b3f906d5dc5e8100b05ce37073a811c74a/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/docker-novolume-plugin-385ec70baac3ef356f868f391c8d7818140fbd44/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/containerd-296f1f80d6c6a83cc625163f863e53d3287328ee/vendor/src/github.com/docker/docker/contrib/syntax/vim
    2:docker-unit-test-1.13.1-58.git87f2fab.el7.centos.x86_64 : Automates
         ...: deployment of containerized applications - for running unit tests
    源    :extras
    匹配来源:
    文件名    :/var/lib/docker-unit-test/v1.10-migrator-c417a6a022c5023c111662e8280f885f6ac259be/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/runc-e9c345b3f906d5dc5e8100b05ce37073a811c74a/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/docker-novolume-plugin-385ec70baac3ef356f868f391c8d7818140fbd44/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/containerd-296f1f80d6c6a83cc625163f863e53d3287328ee/vendor/src/github.com/docker/docker/contrib/syntax/vim
    2:docker-unit-test-1.13.1-63.git94f4240.el7.centos.x86_64 : Automates
         ...: deployment of containerized applications - for running unit tests
    源    :extras
    匹配来源:
    文件名    :/var/lib/docker-unit-test/v1.10-migrator-c417a6a022c5023c111662e8280f885f6ac259be/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/runc-e9c345b3f906d5dc5e8100b05ce37073a811c74a/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/docker-novolume-plugin-385ec70baac3ef356f868f391c8d7818140fbd44/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/containerd-296f1f80d6c6a83cc625163f863e53d3287328ee/vendor/src/github.com/docker/docker/contrib/syntax/vim
    2:docker-unit-test-1.13.1-68.gitdded712.el7.centos.x86_64 : Automates
         ...: deployment of containerized applications - for running unit tests
    源    :extras
    匹配来源:
    文件名    :/var/lib/docker-unit-test/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/v1.10-migrator-c417a6a022c5023c111662e8280f885f6ac259be/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/runc-5eda6f6fd0c2884c2c8e78a6e7119e8d0ecedb77/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/docker-novolume-plugin-385ec70baac3ef356f868f391c8d7818140fbd44/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/containerd-296f1f80d6c6a83cc625163f863e53d3287328ee/vendor/src/github.com/docker/docker/contrib/syntax/vim
    git-1.8.3.1-13.el7.x86_64 : Fast Version Control System
    源    :base
    匹配来源:
    文件名    :/usr/share/doc/git-1.8.3.1/contrib/vim
    git-1.8.3.1-14.el7_5.x86_64 : Fast Version Control System
    源    :updates
    匹配来源:
    文件名    :/usr/share/doc/git-1.8.3.1/contrib/vim
    2:vim-common-7.4.160-4.el7.x86_64 : The common files needed by any version
                                      : of the VIM editor
    源    :base
    匹配来源:
    文件名    :/usr/share/vim
    2:vim-enhanced-7.4.160-4.el7.x86_64 : A version of the VIM editor which
                                        : includes recent enhancements
    源    :base
    匹配来源:
    文件名    :/usr/bin/vim
    2:vim-enhanced-7.4.160-4.el7.x86_64 : A version of the VIM editor which
                                        : includes recent enhancements
    源    :@base
    匹配来源:
    文件名    :/usr/bin/vim
    

    五、 yum搭建本地仓库

    有时候系统没有联网,我们无法使用联网的yum源安装软件,这时我们可以搭建一个本地的yum仓库。具体操作如下:

    1. 挂载光盘镜像到/mnt目录下,这个我们前面已经做过。
    2. 删除/etc/yum.repos.d目录下所有的repo文件(删除之前,最好先做一个备份),如下所示:
    [root@minglinux-01 ~]# cp -r /etc/yum.repos.d /etc/yum.repos.d_bak
    [root@minglinux-01 ~]# rm -rf /etc/yum.repos.d/* 
    
    1. 创建新文件dvd.repo并加入一些内容,如下所示:
    [root@minglinux-01 ~]#  vim /etc/yum.repos.d/dvd.repo
    
    [dvd]
    name=install dvd
    baseurl=file:///mnt
    enabled=1
    gpgcheck=0 
    ~                                                                           
    ~                                                                           
    ~   
    
    1. 清除缓存,如下所示:
    [root@minglinux-01 ~]# yum clean all
    已加载插件:fastestmirror
    正在清理软件源: dvd
    Cleaning up everything
    Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
    Cleaning up list of fastest mirrors
    

    清除缓存完成后我们在yum list查看RPM包信息,可以看到仓库都变成了dvd。然后我们可以不联网使用yum安装软件包了,如下所示:

    [root@minglinux-01 ~]# yum install GConf2
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile
    正在解决依赖关系
    --> 正在检查事务
    ---> 软件包 GConf2.x86_64.0.3.2.6-8.el7 将被 安装
    --> 正在处理依赖关系 /usr/bin/killall,它被软件包 GConf2-3.2.6-8.el7.x86_64 需要
    --> 正在检查事务
    ---> 软件包 psmisc.x86_64.0.22.20-15.el7 将被 安装
    --> 解决依赖关系完成
    
    依赖关系解决
    
    ============================================================================
     Package         架构            版本                    源            大小
    ============================================================================
    正在安装:
     GConf2          x86_64          3.2.6-8.el7             dvd          1.0 M
    为依赖而安装:
     psmisc          x86_64          22.20-15.el7            dvd          141 k
    
    事务概要
    ============================================================================
    安装  1 软件包 (+1 依赖软件包)
    
    总下载量:1.1 M
    安装大小:6.8 M
    Is this ok [y/d/N]: y
    Downloading packages:
    ----------------------------------------------------------------------------
    总计                                            39 MB/s | 1.1 MB  00:00     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      正在安装    : psmisc-22.20-15.el7.x86_64                              1/2 
      正在安装    : GConf2-3.2.6-8.el7.x86_64                               2/2 
      验证中      : psmisc-22.20-15.el7.x86_64                              1/2 
      验证中      : GConf2-3.2.6-8.el7.x86_64                               2/2 
    
    已安装:
      GConf2.x86_64 0:3.2.6-8.el7                                               
    
    作为依赖被安装:
      psmisc.x86_64 0:22.20-15.el7                                              
    
    完毕!
    

    扩展

    1. yum保留已经安装过的包 http://www.360doc.com/content/11/0218/15/4171006_94080041.shtml
    2. 搭建局域网yum源http://blog.lishiming.net/?p=500

    相关文章

      网友评论

          本文标题:安装软件包的三种方法、rpm、yum

          本文链接:https://www.haomeiwen.com/subject/zymfaftx.html