# 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
```