# 7.1 安装软件包的三种方法


## 第一种方法  rpm包


> redhat packages  manager 


## 第二种方法  yum包


> 支持自动的安装依赖的包


## 第三种方法  源码包


> 需要用编译器把源码包编译成可执行文件


# 7.2 rpm 包介绍



## 设置光驱并挂载 ;将光驱/dev/cdrom/挂载在/mnt/下


```

[root@jzplinux-01 ~]# df -h

文件系统        容量  已用  可用 已用% 挂载点

/dev/sda3        28G  1.4G   27G    5% /

devtmpfs        479M     0  479M    0% /dev

tmpfs           489M     0  489M    0% /dev/shm

tmpfs           489M  6.7M  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

[root@jzplinux-01 ~]# ls /mnt/

[root@jzplinux-01 ~]# mount /dev/cdrom  /mnt/

mount: /dev/sr0 写保护,将以只读方式挂载

[root@jzplinux-01 ~]# 


```


## 查看挂载后的/mnt 目录下的文件


```

[root@jzplinux-01 ~]# cd /mnt

[root@jzplinux-01 mnt]# ls

CentOS_BuildTag  EULA  p_w_picpaths    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7

EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL


```


## 查看package目录下的rpm 包


```

[root@jzplinux-01 mnt]# cd Packages

[root@jzplinux-01 Packages]# ls

```


```

yelp-xsl-3.14.0-1.el7.noarch.rpm

ypbind-1.37.1-7.el7.x86_64.rpm

ypserv-2.31-8.el7.x86_64.rpm

yp-tools-2.14-3.el7.x86_64.rpm

yum-3.4.3-150.el7.centos.noarch.rpm

yum-langpacks-0.4.2-7.el7.noarch.rpm

yum-metadata-parser-1.1.4-10.el7.x86_64.rpm

yum-plugin-aliases-1.1.31-40.el7.noarch.rpm

yum-plugin-changelog-1.1.31-40.el7.noarch.rpm

yum-plugin-fastestmirror-1.1.31-40.el7.noarch.rpm

yum-plugin-tmprepo-1.1.31-40.el7.noarch.rpm

yum-plugin-verify-1.1.31-40.el7.noarch.rpm

yum-plugin-versionlock-1.1.31-40.el7.noarch.rpm

yum-utils-1.1.31-40.el7.noarch.rpm

zenity-3.8.0-5.el7.x86_64.rpm

zip-3.0-11.el7.x86_64.rpm

zlib-1.2.7-17.el7.x86_64.rpm

zlib-devel-1.2.7-17.el7.x86_64.rpm

zsh-5.0.2-25.el7.x86_64.rpm

zziplib-0.13.62-5.el7.x86_64.rpm


```


## rpm 包名的组成


### 第一部分 包名


### 第二部分 版本号


- 版本号包括主版本号 和次版本号


### 第四部分 发布版本号


### 第五部分  使用平台


# 7.3 rpm 工具用法


## rpm -ivh zsh-5.0.2-25.el7.x86_64.rpm  ;安装rpm包


> i  --- install

> v  --- 可视化

> h  --- 人性化显示


```

[root@jzplinux-01 Packages]# rpm -ivh zsh-5.0.2-25.el7.x86_64.rpm

准备中...                          ################################# [100%]

正在升级/安装...

   1:zsh-5.0.2-25.el7                 ################################# [100%]

```


## rpm -Uvh zsh-5.0.3-25.el7.x86_64.rpm ;升级一个rpm包,比较少用


## rpm -e zsh ;卸载一个rpm包


> 卸载一个包的时候,只需要跟包名。


> 卸载正常,不会显示。


```

[root@jzplinux-01 Packages]# rpm -e zsh

[root@jzplinux-01 Packages]#

```


##  rpm -qa ;查询已经安装的包


```

[root@jzplinux-01 Packages]# rpm -qa

trousers-0.3.13-1.el7.x86_64

filesystem-3.2-21.el7.x86_64

net-tools-2.0-0.17.20131004git.el7.x86_64

bind-license-9.9.4-37.el7.noarch

fxload-2002_04_11-16.el7.x86_64

nss-softokn-freebl-3.16.2.3-14.4.el7.x86_64

libthai-0.1.14-9.el7.x86_64

ncurses-libs-5.9-13.20130511.el7.x86_64

libX11-common-1.6.3-3.el7.noarch

libselinux-2.5-6.el7.x86_64

libXfixes-5.0.1-2.1.el7.x86_64

sed-4.2.2-5.el7.x86_64

libXinerama-1.1.3-2.1.el7.x86_64

grep-2.20-2.el7.x86_64

libXft-2.3.2-2.el7.x86_64

bzip2-libs-1.0.6-13.el7.x86_64

cairo-1.14.2-1.el7.x86_64


```


## rpm -q libdrm ;查询指定的包是否安装


> 如果已经安装,则显示包名全称


> 如果没有安装,则提示未安装


```

[root@jzplinux-01 Packages]# rpm -q libdrm

libdrm-2.4.67-3.el7.x86_64

[root@jzplinux-01 Packages]# rpm -q libdrm1

未安装软件包 libdrm1 

[root@jzplinux-01 Packages]# 


```


## rpm -qi vim-enhanced  ;查询指定包的信息


> i 信息


```

[root@jzplinux-01 Packages]# rpm -qi vim-enhanced

Name        : vim-enhanced

Epoch       : 2

Version     : 7.4.160

Release     : 1.el7_3.1

Architecture: x86_64

Install Date: 2017年06月09日 星期五 17时20分41秒

Group       : Applications/Editors

Size        : 2292098

License     : Vim

Signature   : RSA/SHA256, 2016年12月22日 星期四 01时14分11秒, Key ID 24c6a8a7f4a80eb5

Source RPM  : vim-7.4.160-1.el7_3.1.src.rpm

Build Date  : 2016年12月22日 星期四 01时00分52秒

Build Host  : c1bm.rdu2.centos.org

Relocations : (not relocatable)

Packager    : CentOS BuildSystem <http://bugs.centos.org>

Vendor      : CentOS

URL         : http://www.vim.org/

Summary     : A version of the VIM editor which includes recent enhancements

Description :

VIM (VIsual editor iMproved) is an updated and improved version of the

vi editor.  Vi was the first real screen-based editor for UNIX, and is

still very popular.  VIM improves on vi by adding new features:

multiple windows, multi-level undo, block highlighting and more.  The

vim-enhanced package contains a version of VIM with extra, recently

introduced features like Python and Perl interpreters.


Install the vim-enhanced package if you'd like to use a version of the

VIM editor which includes recently added enhancements like

interpreters for the Python and Perl scripting languages.  You'll also

need to install the vim-common package.

[root@jzplinux-01 Packages]# 


```

## rpm -ql vim-enhanced  ;列出rpm包安装了那些文件

```

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

[root@jzplinux-01 Packages]# 


```


## rpm -qf /usr/bin/vim ;通过文件查询是哪个rpm包安装的


```

[root@jzplinux-01 Packages]# rpm -qf /usr/bin/rvim

vim-enhanced-7.4.160-1.el7_3.1.x86_64

[root@jzplinux-01 Packages]# 


```

## rpm -qf `which cd` ;通过命令查询安装的包


```

[root@jzplinux-01 Packages]# rpm -qf `which cd`

bash-4.2.46-20.el7_2.x86_64

[root@jzplinux-01 Packages]# 


```

# 7.4 yum工具的用法


## yum list ;列出可以安装的rpm包


```

[root@jzplinux-01 Packages]# yum list

            5.0.2-25.el7_3.1                     updates  

zsh-lovers.noarch                                0.9.0-1.el7                          epel     

zstd.x86_64                                      1.2.0-1.el7                          epel     

zulucrypt.x86_64                                 5.0.1-1.el7                          epel     

zulucrypt-console.x86_64                         5.0.1-1.el7                          epel     

zulucrypt-devel.x86_64                           5.0.1-1.el7                          epel     

zulucrypt-doc.noarch                             5.0.1-1.el7                          epel     

zulucrypt-libs.x86_64                            5.0.1-1.el7                          epel     

zvbi.x86_64                                      0.2.35-1.el7                         epel     

zvbi-devel.x86_64                                0.2.35-1.el7                         epel     

zvbi-fonts.noarch                                0.2.35-1.el7                         epel     

zziplib.i686                                     0.13.62-5.el7                        base     

zziplib.x86_64                                   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   

```


## ls /etc/yum.repos.d ; 查看yum 的配置文件


```

[root@jzplinux-01 Packages]# ls /etc/yum.repos.d/

CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo

CentOS-CR.repo         CentOS-Media.repo      epel.repo

CentOS-Debuginfo.repo  CentOS-Sources.repo    epel-testing.repo


```


## [root@jzplinux-01 Packages]# cat /etc/yum.repos.d/CentOS-Base.repo ;查看配置文件的内容


```

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7


#released updates 

[updates]

name=CentOS-$releasever - Updates

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7


#additional packages that may be useful

[extras]

name=CentOS-$releasever - Extras

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7


#additional packages that extend functionality of existing packages

[centosplus]

name=CentOS-$releasever - Plus

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7


[root@jzplinux-01 Packages]# 


```


## yum search vim ;搜索vim 相关的包


```

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

 * base: ftp.sjtu.edu.cn

 * epel: ftp.jaist.ac.jp

 * extras: mirrors.nwsuaf.edu.cn

 * updates: mirrors.btte.net

====================================== N/S matched: vim =======================================

beakerlib-vim-syntax.noarch : Files for syntax highlighting BeakerLib tests in VIM editor

fluxbox-vim-syntax.noarch : Fluxbox syntax scripts for vim

golang-vim.noarch : Vim plugins for Go

neovim.x86_64 : Vim-fork focused on extensibility and agility

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-clustershell.noarch : VIM files for ClusterShell

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-go.x86_64 : Go development plugin for Vim

vim-gtk-syntax.noarch : Vim syntax highlighting for GLib, Gtk+, Gstreamer, and more

vim-minimal.x86_64 : A minimal version of the VIM editor

vim-vimoutliner.noarch : Script for building an outline editor on top of Vim

xtuple-csvimp-devel.x86_64 : CSVImp development files

xtuple-csvimp.x86_64 : xTuple data import utility


  名称和简介匹配 only,使用“search all”试试。


```


## yum list | grep vim ;过滤出vim相关的包


```

[root@jzplinux-01 Packages]# yum list | grep vim

vim-common.x86_64                       2:7.4.160-1.el7_3.1            @updates 

vim-enhanced.x86_64                     2:7.4.160-1.el7_3.1            @updates 

vim-filesystem.x86_64                   2:7.4.160-1.el7_3.1            @updates 

vim-minimal.x86_64                      2:7.4.160-1.el7                @anaconda

beakerlib-vim-syntax.noarch             1.16-3.el7                     epel     

fluxbox-vim-syntax.noarch               1.3.7-1.el7                    epel     

golang-vim.noarch                       1.3.3-2.el7_0                  extras   

neovim.x86_64                           0.2.0-2.el7                    epel     

protobuf-vim.x86_64                     2.5.0-8.el7                    base     

vim-X11.x86_64                          2:7.4.160-1.el7_3.1            updates  

vim-clustershell.noarch                 1.7.3-1.el7                    epel     

vim-go.x86_64                           1.8-3.el7                      epel     

vim-gtk-syntax.noarch                   20130716-1.el7                 epel     

vim-minimal.x86_64                      2:7.4.160-1.el7_3.1            updates  

vim-vimoutliner.noarch                  0.3.7-5.el7                    epel     

xtuple-csvimp.x86_64                    0.5.4-8.el7                    epel     

xtuple-csvimp-devel.x86_64              0.5.4-8.el7                    epel 

```


## yum grouplist  ;列出可以安装的组件


```

[root@jzplinux-01 Packages]# yum grouplist

已加载插件:fastestmirror

没有安装组信息文件

Maybe run: yum groups mark convert (see man yum)

Loading mirror speeds from cached hostfile

 * base: ftp.sjtu.edu.cn

 * epel: ftp.jaist.ac.jp

 * extras: mirrors.nwsuaf.edu.cn

 * updates: mirrors.btte.net

可用的环境分组:

   最小安装

   基础设施服务器

   计算节点

   文件及打印服务器

   MATE 桌面环境

   基本网页服务器

   虚拟化主机

   带 GUI 的服务器

   GNOME 桌面

   KDE Plasma Workspaces

   开发及生成工作站

可用组:

   CIFS 文件服务器

   Eclipse

   FCoE 存储客户端

   Fedora Packager

   Haskell

   Milkymist

   MySQL 数据库客户端

   MySQL 数据库服务器

   NFS 文件服务器

   SNMP 支持

   TeX 支持

   TurboGears 应用程序构架

   Xfce

   iSCSI 存储客户端

   传统 UNIX 兼容性

   兼容性程序库

   图形管理工具

   基于 Web 的企业管理

   存储可用性工具

   安全性工具

   开发工具

   控制台互联网工具

   教育软件

   智能卡支持

   服务器平台

   服务器平台开发

   桌面

   桌面平台

   桌面平台开发

   电子实验室

   科学记数法支持

   系统管理

   系统管理工具

   网络存储服务器

   虚拟化

   通用桌面

   通讯客户端支持

   通讯服务器支持

完成


```

## yum grouplist install '组件名' ;yum安装组件


## yum remove 包名 ;yum 卸载 rpm包


> yum remove 会卸载相关的依赖的包,操作存在风险


## yum update 包名  ;升级一个rpm 包


> yum update 不加包名,可以升级所有的包,包括系统


## yum provides "/*/vim"  ;通过命令查找包名

> 前提是没有安装过这个包


# 7.5 yum搭建本地仓库


## cp -r /etc/yum.repos.d  /etc/yum.repos.d.bak   ; 备份yum 配置文件


```

[root@jzplinux-01 ~]# cp -r /etc/yum.repos.d  /etc/yum.repos.d.bak


```

## 删除 /etc/yum.repos.d/ 下的所有文件


```

[root@jzplinux-01 ~]# cd /etc/yum.repos.d

[root@jzplinux-01 yum.repos.d]# ls

CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo

CentOS-CR.repo         CentOS-Media.repo      epel.repo

CentOS-Debuginfo.repo  CentOS-Sources.repo    epel-testing.repo


[root@jzplinux-01 yum.repos.d]# rm -rf ./*

[root@jzplinux-01 yum.repos.d]# ls

[root@jzplinux-01 yum.repos.d]# 


```

##  vi dvd.repo ; 创建 dvd.repo 配置文件


## 配置dvd.repo文件内容


```

[dvd]

name=install dvd

baseurl=file:///mnt

enable=1

gpcheck=0


```

> [dvd]  ;仓库的名字

> name=install dvd  ;描述的字符串

> baseurl=file:///mnt ;rpm 包的本地路径

> enable=1  ; 表示本地yum仓库是否可用,1表示可用,0表示不可用

> gpcheck=0  ;  表示是否要检测,1表示检测,0表示不检测


## yum clean all ;  清除之前所有的缓存


```

[root@jzplinux-01 yum.repos.d]# yum clean all

已加载插件:fastestmirror

正在清理软件源: dvd

Cleaning up everything

Cleaning up list of fastest mirrors

[root@jzplinux-01 yum.repos.d]# 


```


##  yum list | less  查看本地yum 可安装的包


### @anaconda ;带@表示已经安装了的rpm包


```

GeoIP.x86_64                            1.5.0-11.el7                   @anaconda

NetworkManager.x86_64                   1:1.4.0-12.el7                 @anaconda

NetworkManager-libnm.x86_64             1:1.4.0-12.el7                 @anaconda

NetworkManager-team.x86_64              1:1.4.0-12.el7                 @anaconda

NetworkManager-tui.x86_64               1:1.4.0-12.el7                 @anaconda

NetworkManager-wifi.x86_64              1:1.4.0-12.el7                 @anaconda

acl.x86_64                              2.2.51-12.el7                  @anaconda

aic94xx-firmware.noarch                 30-6.el7                       @anaconda


```


###  dvd ; 显示本地仓库名称,表示没有安装


```

OpenIPMI-modalias.x86_64                2.0.19-15.el7                  dvd      

PackageKit.x86_64                       1.0.7-6.el7.centos             dvd      

PackageKit-command-not-found.x86_64     1.0.7-6.el7.centos             dvd      

PackageKit-glib.x86_64                  1.0.7-6.el7.centos             dvd      

PackageKit-gstreamer-plugin.x86_64      1.0.7-6.el7.centos             dvd      

PackageKit-gtk3-module.x86_64           1.0.7-6.el7.centos             dvd      

PackageKit-yum.x86_64                   1.0.7-6.el7.centos             dvd      


```