• Linux学习(十八)软件安装与卸载(一)rpm和yum安装与卸载软件


    一、Linux下安装软件的三种方式

    在Linux下安装软件有三种方式:rpm安装,yum安装,源码包安装。接下来,我们对这三种安装方式一一进行讲解。

    二、rpm安装

    rpm安装类似于windows自带的“安装/卸载”,通过rpm命令我们可以安装一些现成的二进制包。rpm安装的包的安装路径是固定的。

    安装好光盘后,将它挂载到/mnt/,然后进到光盘中的Packages目录中,发现这里有很多包:

    [root@ruanwenwu02 ~]# df -h
    文件系统        容量  已用  可用 已用% 挂载点
    /dev/sda3        18G  1.4G   17G    8% /
    devtmpfs        479M     0  479M    0% /dev
    tmpfs           489M     0  489M    0% /dev/shm
    tmpfs           489M  6.8M  482M    2% /run
    tmpfs           489M     0  489M    0% /sys/fs/cgroup
    /dev/sda1       197M  109M   88M   56% /boot
    tmpfs            98M     0   98M    0% /run/user/0
    /dev/sr0        4.1G  4.1G     0  100% /mnt
    [root@ruanwenwu02 ~]# cd /mnt/
    [root@ruanwenwu02 mnt]# ls
    CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
    EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
    [root@ruanwenwu02 mnt]# cd Packages/
    [root@ruanwenwu02 Packages]# ls
    389-ds-base-1.3.5.10-11.el7.x86_64.rpm
    389-ds-base-libs-1.3.5.10-11.el7.x86_64.rpm
    abattis-cantarell-fonts-0.0.16-3.el7.noarch.rpm
    abrt-2.1.11-45.el7.centos.x86_64.rpm

    我们就拿这些包来做实验。在操作之前我们需要先了解一下包的结构。拿这个包abrt-2.1.11-45.el7.Centos.x86_64.rpm举例:

    它被“-”分割开,abrt是包名;2.1.11的意思是主版本为2,次版本为1,修正号为11;centos是平台;x86_64是架构;rpm是文件后缀。

    安装:

    [root@ruanwenwu02 Packages]# rpm -ivh zlib-devdl
    错误:打开 zlib-devdl 失败: 没有那个文件或目录
    [root@ruanwenwu02 Packages]# rpm -ivh zlib-devel-1.2.7-17.el7.x86_64.rpm 
    准备中...                          ################################# [100%]
    正在升级/安装...
       1:zlib-devel-1.2.7-17.el7          ################################# [100%]

    实验说明使用rpm安装包必须跟包的全名。

    升级:

    [root@ruanwenwu02 Packages]# rpm -Uvh zlib-devel-1.2.7-17.el7.x86_64.rpm 
    准备中...                          ################################# [100%]
            软件包 zlib-devel-1.2.7-17.el7.x86_64 已经安装

    我这里找不到升级包,就不再演示了。方法见代码。

    卸载:

    [root@ruanwenwu02 Packages]# rpm -e zlib-devel
    [root@ruanwenwu02 Packages]# rpm -q zlib-devel
    未安装软件包 zlib-devel 
    [root@ruanwenwu02 Packages]# rpm -ivh zlib-devel-1.2.7-17.el7.x86_64.rpm 
    准备中...                          ################################# [100%]
    正在升级/安装...
       1:zlib-devel-1.2.7-17.el7          ################################# [100%]
    [root@ruanwenwu02 Packages]# rpm -q zlib-devel
    zlib-devel-1.2.7-17.el7.x86_64

    卸载的命令是rpm -e。实验发现下载之后就查询(rpm -q)不到了。再次安装就能查询到了。

    查询所有已经安装的包:

    [root@ruanwenwu02 Packages]# rpm -qa "vim*"
    vim-minimal-7.4.160-1.el7.x86_64
    vim-filesystem-7.4.160-2.el7.x86_64
    vim-enhanced-7.4.160-2.el7.x86_64
    vim-common-7.4.160-2.el7.x86_64

    发现我们已经安装了这么多包了。

    查询是否安装:

    [root@ruanwenwu02 Packages]# rpm -qa "ls"
    [root@ruanwenwu02 Packages]# rpm -qf "ls"
    错误:文件 /mnt/Packages/ls:没有那个文件或目录
    [root@ruanwenwu02 Packages]# rpm -qf /usr/bin/ls
    coreutils-8.22-18.el7.x86_64
    [root@ruanwenwu02 Packages]# rpm -qa "coreutils"
    coreutils-8.22-18.el7.x86_64
    [root@ruanwenwu02 Packages]# rpm -qa coreut
    [root@ruanwenwu02 Packages]# rpm -qa coreutils
    coreutils-8.22-18.el7.x86_64
    [root@ruanwenwu02 Packages]# rpm -qa coreutil

    实验发现,rpm -qa命令必须接包名或者模糊包名,引号可加可不加,但是如果是模糊查找的话,必须加引号:

    [root@ruanwenwu02 Packages]# rpm -qa vim*
    [root@ruanwenwu02 Packages]# rpm -qa "vim*"
    vim-minimal-7.4.160-1.el7.x86_64
    vim-filesystem-7.4.160-2.el7.x86_64
    vim-enhanced-7.4.160-2.el7.x86_64
    vim-common-7.4.160-2.el7.x86_64
    [root@ruanwenwu02 Packages]# rpm -qa 'vim*'
    vim-minimal-7.4.160-1.el7.x86_64
    vim-filesystem-7.4.160-2.el7.x86_64
    vim-enhanced-7.4.160-2.el7.x86_64

    查询包信息:

    [root@ruanwenwu02 Packages]# rpm -qi vim-enhanced
    Name        : vim-enhanced
    Epoch       : 2
    Version     : 7.4.160
    Release     : 2.el7
    Architecture: x86_64
    Install Date: 2017年10月18日 星期三 19时16分34秒
    Group       : Applications/Editors
    Size        : 2292098
    License     : Vim

    查询包安装的文件:

    [root@ruanwenwu02 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

    查询命令是哪个包的:

    [root@ruanwenwu02 Packages]# rpm -qf /usr/bin/vim
    vim-enhanced-7.4.160-2.el7.x86_64

     三、yum常用命令

    yum常用命令有安装,升级,卸载,重新安装,groupinstall,groupremove,下载rpm包,清除yum源缓存。

    yum安装的优点是它能自动解决包的依赖问题。

    安装:

    [root@ruanwenwu02 etc]# yum -y install zziplib
    已加载插件:fastestmirror, priorities
    base                                                                                    | 3.6 kB  00:00:00     
    extras                                                                                  | 3.4 kB  00:00:00     
    rpmforge                                                                                | 1.9 kB  00:00:00     
    updates                                                                                 | 3.4 kB  00:00:00     
    Loading mirror speeds from cached hostfile
     * base: mirrors.tuna.tsinghua.edu.cn
     * extras: mirrors.tuna.tsinghua.edu.cn
     * rpmforge: mirrors.tuna.tsinghua.edu.cn
     * updates: mirrors.tuna.tsinghua.edu.cn
    197 packages excluded due to repository priority protections
    软件包 zziplib-0.13.62-5.el7.x86_64 已安装并且是最新版本
    无须任何处理

    yum -y install后面写包名就好了。-y参数的作用就是不要再询问是否安装了,默认进行安装。

    重新安装:

    [root@ruanwenwu02 etc]# yum -y reinstall zziplib
    已加载插件:fastestmirror, priorities
    Loading mirror speeds from cached hostfile
     * base: mirrors.sohu.com
     * extras: mirrors.sohu.com
     * rpmforge: mirrors.tuna.tsinghua.edu.cn
     * updates: mirrors.sohu.com
    197 packages excluded due to repository priority protections
    正在解决依赖关系
    --> 正在检查事务
    ---> 软件包 zziplib.x86_64.0.0.13.62-5.el7 将被 已重新安装
    --> 解决依赖关系完成
    
    依赖关系解决
    
    ===============================================================================================================
     Package                  架构                    版本                             源                     大小
    ===============================================================================================================
    重新安装:
     zziplib                  x86_64                  0.13.62-5.el7                    base                   81 k
    
    事务概要
    ===============================================================================================================
    重新安装  1 软件包
    
    总下载量:81 k
    安装大小:211 k
    Downloading packages:
    zziplib-0.13.62-5.el7.x86_64.rpm                                                        |  81 kB  00:00:02     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
    警告:RPM 数据库已被非 yum 程序修改。
      正在安装    : zziplib-0.13.62-5.el7.x86_64                                                               1/1 
      验证中      : zziplib-0.13.62-5.el7.x86_64                                                               1/1 
    
    已安装:
      zziplib.x86_64 0:0.13.62-5.el7                                                                               
    
    完毕!

    对于已经安装过的包,如果我们还想安装,就可以用这个yum -y reinstall命令。

    yum list命令列出所有的包(安装的和未安装的):

    zsync.x86_64                                                 0.6.2-1.el6.rf                           rpmforge 
    zvbi.x86_64                                                  0.2.33-2.el6.rf                          rpmforge 
    zvbi-devel.x86_64                                            0.2.33-2.el6.rf                          rpmforge 
    zziplib.i686                                                 0.13.62-5.el7                            base     
    zziplib-devel.i686                                           0.13.62-5.el7                            base     
    zziplib-devel.x86_64                                         0.13.62-5.el7                            base     
    zziplib-utils.x86_64                                         0.13.62-5.el7                            base 

    最后一列代表是哪个yum源。

    搜索:

    [root@ruanwenwu02 etc]# yum search vim
    已加载插件:fastestmirror, priorities
    Loading mirror speeds from cached hostfile
     * base: mirrors.sohu.com
     * extras: mirrors.sohu.com
     * rpmforge: mirrors.tuna.tsinghua.edu.cn
     * updates: mirrors.sohu.com
    197 packages excluded due to repository priority protections
    ============================================== N/S matched: vim ===============================================
    perl-Vim-Tag.noarch : Generate Perl tags for 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
    vim-puppet.noarch : Vim mode for Puppet
    vim-task.x86_64 : Vim support for TaskWarrior
    
      名称和简介匹配 only,使用“search all”试试。

    另一个搜索:

    [root@ruanwenwu02 etc]# yum provides '/*/vim'
    已加载插件:fastestmirror, priorities
    Loading mirror speeds from cached hostfile
     * base: mirrors.sohu.com
     * extras: mirrors.sohu.com
     * rpmforge: mirrors.tuna.tsinghua.edu.cn
     * updates: mirrors.sohu.com
    197 packages excluded due to repository priority protections
    rpmforge/filelists_db                                                                   | 2.3 MB  00:00:01     
    cmake-2.8.12.2-2.el7.x86_64 : Cross-platform make system
    源    :base
    匹配来源:
    文件名    :/usr/share/cmake/editors/vim
    
    
    
    2:docker-unit-test-1.12.6-48.git0fdc778.el7.centos.x86_64 : Automates deployment of containerized applications
                                                              : - for running unit tests
    源    :extras
    匹配来源:
    文件名    :/var/lib/docker-unit-test/docker-novolume-plugin-385ec70baac3ef356f868f391c8d7818140fbd44/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/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-79c3939053c870fbb4de5484d98640d5ba028ef4/Godeps/_workspace/src/github.com/docker/docker/contrib/syntax/vim
    文件名    :/var/lib/docker-unit-test/containerd-fa8fb3d455e1baf716f3131581f0ed8b07c573a6/vendor/src/github.com/docker/docker/contrib/syntax/vim

    实验发现,通过yum provides命令可以查看到是哪个源的哪个包包含了这个vim命令。

    删除包:

    [root@ruanwenwu02 etc]#  yum remove zziplib
    已加载插件:fastestmirror, priorities
    正在解决依赖关系
    --> 正在检查事务
    ---> 软件包 zziplib.x86_64.0.0.13.62-5.el7 将被 删除
    --> 解决依赖关系完成
    
    依赖关系解决
    
    ===============================================================================================================
     Package                  架构                    版本                            源                      大小
    ===============================================================================================================
    正在删除:
     zziplib                  x86_64                  0.13.62-5.el7                   @base                  211 k
    
    事务概要
    ===============================================================================================================
    移除  1 软件包
    
    安装大小:211 k
    是否继续?[y/N]:y
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      正在删除    : zziplib-0.13.62-5.el7.x86_64                                                               1/1 
      验证中      : zziplib-0.13.62-5.el7.x86_64                                                               1/1 
    
    删除:
      zziplib.x86_64 0:0.13.62-5.el7                                                                               
    
    完毕!

    可以加上-y参数,这样就不会询问了。

    升级包:

    [root@ruanwenwu02 etc]# yum update zziplib
    已加载插件:fastestmirror, priorities
    Loading mirror speeds from cached hostfile
     * base: mirrors.tuna.tsinghua.edu.cn
     * extras: mirrors.tuna.tsinghua.edu.cn
     * rpmforge: mirrors.tuna.tsinghua.edu.cn
     * updates: mirrors.tuna.tsinghua.edu.cn
    197 packages excluded due to repository priority protections
    软件包 zziplib 可用,但尚未安装。
    No packages marked for update

    注意,如果yum update后面没有跟指定的包名的话,那么会升级系统中所有可升级的包,包括内核,这样是很危险的。

    查看组文件包:

    [root@ruanwenwu02 etc]# yum grouplist;
    已加载插件:fastestmirror, priorities
    没有安装组信息文件
    Maybe run: yum groups mark convert (see man yum)
    Loading mirror speeds from cached hostfile
     * base: mirrors.sohu.com
     * extras: mirrors.sohu.com
     * rpmforge: mirrors.tuna.tsinghua.edu.cn
     * updates: mirrors.sohu.com
    197 packages excluded due to repository priority protections
    可用的环境分组:
       最小安装
       基础设施服务器
       计算节点
       文件及打印服务器
       基本网页服务器
       虚拟化主机
       带 GUI 的服务器
       GNOME 桌面
       KDE Plasma Workspaces
       开发及生成工作站
    可用组:
       传统 UNIX 兼容性
       兼容性程序库
       图形管理工具
       安全性工具
       开发工具
       控制台互联网工具
       智能卡支持
       科学记数法支持
       系统管理
       系统管理工具
    完成

    安装组件:

    [root@ruanwenwu02 etc]# yum gruopinstall 'Security Tools'
    Failed to set locale, defaulting to C
    Loaded plugins: fastestmirror, priorities
    No such command: gruopinstall. Please use /usr/bin/yum --help
    [root@ruanwenwu02 etc]# yum groupinstall 'Security Tools'
    Failed to set locale, defaulting to C
    Loaded plugins: fastestmirror, priorities

    删除组件:

    [root@ruanwenwu02 etc]# yum groupremove
    Failed to set locale, defaulting to C
    Loaded plugins: fastestmirror, priorities
    Error: Need a group or list of groups
     Mini usage:
    
    erase PACKAGE...
    
    Remove a package or packages from your system
    
    aliases: remove, autoremove, erase-n, erase-na, erase-nevra, autoremove-n, autoremove-na, autoremove-nevra, remove-n, remove-na, remove-nevra

    清除yum源缓存:

    [root@ruanwenwu02 etc]# yum clean all
    Failed to set locale, defaulting to C
    Loaded plugins: fastestmirror, priorities
    Cleaning repos: base extras rpmforge updates
    Cleaning up everything
    Cleaning up list of fastest mirrors

    清除yum源缓存之后,第一次运行yum相关命令会慢一点,因为它要生成yum缓存。

    下载rpm包:

    [root@ruanwenwu02 etc]# yum -y install --downloadonly zvbi
    Failed to set locale, defaulting to C
    Loaded plugins: fastestmirror, priorities
    Loading mirror speeds from cached hostfile
     * base: mirrors.aliyun.com
     * extras: mirrors.tuna.tsinghua.edu.cn
     * rpmforge: mirrors.tuna.tsinghua.edu.cn
     * updates: mirrors.aliyun.com
    197 packages excluded due to repository priority protections
    Resolving Dependencies
    --> Running transaction check
    ---> Package zvbi.x86_64 0:0.2.33-2.el6.rf will be installed
    --> Processing Dependency: libpng12.so.0(PNG12_0)(64bit) for package: zvbi-0.2.33-2.el6.rf.x86_64
    --> Processing Dependency: libpng12.so.0()(64bit) for package: zvbi-0.2.33-2.el6.rf.x86_64
    --> Running transaction check
    ---> Package libpng12.x86_64 0:1.2.50-10.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ===============================================================================================================
     Package                 Arch                  Version                           Repository               Size
    ===============================================================================================================
    Installing:
     zvbi                    x86_64                0.2.33-2.el6.rf                   rpmforge                867 k
    Installing for dependencies:
     libpng12                x86_64                1.2.50-10.el7                     base                    171 k
    
    Transaction Summary
    ===============================================================================================================
    Install  1 Package (+1 Dependent package)
    
    Total download size: 1.0 M
    Installed size: 4.0 M
    Background downloading packages, then exiting:
    (1/2): libpng12-1.2.50-10.el7.x86_64.rpm                                                | 171 kB  00:00:00     
    (2/2): zvbi-0.2.33-2.el6.rf.x86_64.rpm                                                  | 867 kB  00:00:01     
    ---------------------------------------------------------------------------------------------------------------
    Total                                                                          574 kB/s | 1.0 MB  00:00:01     
    exiting because "Download Only" specified

    这样就下载下来了,那么下载下来的包到哪里去了呢?我们来找一找:

    [root@ruanwenwu02 etc]# cd /var/cache/yum/x86_64/7/
    base/                 C7.0.1406-updates/    C7.2.1511-centosplus/ cr/                   timedhosts.txt
    base-debuginfo/       C7.1.1503-base/       C7.2.1511-extras/     extras/               updates/
    base-source/          C7.1.1503-centosplus/ C7.2.1511-fasttrack/  extras-source/        updates-source/
    C7.0.1406-base/       C7.1.1503-extras/     C7.2.1511-updates/    fasttrack/            
    C7.0.1406-centosplus/ C7.1.1503-fasttrack/  c7-media/             .gpgkeyschecked.yum   
    C7.0.1406-extras/     C7.1.1503-updates/    centosplus/           rpmforge/             
    C7.0.1406-fasttrack/  C7.2.1511-base/       centosplus-source/    timedhosts            
    [root@ruanwenwu02 etc]# cd /var/cache/yum/x86_64/7/rpmforge/
    [root@ruanwenwu02 rpmforge]# ls
    cachecookie  gen  mirrorlist.txt  packages  primary.sqlite.bz2  repomd.xml
    [root@ruanwenwu02 rpmforge]# cd packages/
    [root@ruanwenwu02 packages]# ls
    zvbi-0.2.33-2.el6.rf.x86_64.rpm

    实验发现,每个源都有自己的缓存目录,对应去找就可以了,但是这样太麻烦了,最好是下载的时候指定目录:

    [root@ruanwenwu02 packages]# yum install zoo --downloadonly --downloaddir=/tmp/
    Failed to set locale, defaulting to C
    Loaded plugins: fastestmirror, priorities
    Loading mirror speeds from cached hostfile
     * base: mirrors.aliyun.com
     * extras: mirrors.tuna.tsinghua.edu.cn
     * rpmforge: mirrors.tuna.tsinghua.edu.cn
     * updates: mirrors.aliyun.com
    197 packages excluded due to repository priority protections
    Resolving Dependencies
    --> Running transaction check
    ---> Package zoo.x86_64 0:2.10-2.2.el6.rf will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ===============================================================================================================
     Package              Arch                    Version                          Repository                 Size
    ===============================================================================================================
    Installing:
     zoo                  x86_64                  2.10-2.2.el6.rf                  rpmforge                   76 k
    
    Transaction Summary
    ===============================================================================================================
    Install  1 Package
    
    Total download size: 76 k
    Installed size: 132 k
    Background downloading packages, then exiting:
    zoo-2.10-2.2.el6.rf.x86_64.rpm                                                          |  76 kB  00:00:02     
    exiting because "Download Only" specified
    [root@ruanwenwu02 packages]# cd /tmp/
    [root@ruanwenwu02 tmp]# ls
    1.txt
    language.txt
    systemd-private-af36769ad0fd46b2b5b049d6d35927a3-vmtoolsd.service-WbReEr
    testdisk
    yum_save_tx.2017-11-08.21-02.aC9nNO.yumtx
    yum_save_tx.2017-11-08.21-12.Yg9SCW.yumtx
    yum_save_tx.2017-11-08.21-30.dCeEra.yumtx
    zoo-2.10-2.2.el6.rf.x86_64.rpm

    因为篇幅的原因,这一篇就到这里为止,在下一篇里,我们将会讲到:

    1 配置本地yum源。

    2 安装扩展源。

    3 安装国内源。

    4 安装RPMForge源。

    坚持!
  • 相关阅读:
    NYOJ926(概率)
    无根树转有根树
    Codeforces Round #304 C(Div. 2)(模拟)
    hdu5878(枚举,打表)
    求一个矩阵的逆矩阵(用伴随矩阵求)
    求n阶方阵的值(递归)
    setw()函数
    快速幂计算(整数快速幂/矩阵快速幂)
    全文检索
    发送邮件
  • 原文地址:https://www.cnblogs.com/doubilaile/p/7797438.html
Copyright © 2020-2023  润新知