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

目录

一、 安装软件包的三种方法
二、 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)