Yum的使用及详解
常见的软件封包类型
封包类型 | 说明 |
---|---|
rpm软件包 | 扩展名以.rpm结尾,使用户redhat系列 |
deb软件包 | 扩展名以.deb结尾,适用于Debian系列 |
源代码软件包 | 以.tar.gz/.tar.bz2格式结尾的压缩包提供包含程序的原始代码文件 |
RPM的含义
1.RPM 是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理;在Fedora
、Redhat、Mandriva、SuSE、YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用。2.RPM里面都包含可执行的二进制程序,这个程序和Windows的软件包中的.exe文件类似是可执行的;RPM包中还包括程序运行时所需要的文件,这也和Windows的软件包类似,Windows的程序的运行,除了.exe文件以外,也有其它的文件。
3.一个RPM 包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是软件包的依赖关系;依赖关系并不是Linux特有的,Windows操作系统中也是同样存在的;比如我们在Windows系统中运行3D游戏,在安装的时候,他可能会提示,要安装Direct
9 ;Linux和Windows原理是差不多的
RPM包文件名特征-软件名-版本信息.操作系统.硬件架构.rpm
RPM的默认安装位置
默认安装位置 | 文件类别 |
---|---|
/etc 、 /etc/软件名 | 配置文件 |
/usr/bin /sbin/ | 一些可执行文件、管理工具 |
/usr/lib | 一些程序使用的动态函数库 |
/var/log 、 /var/log/软件名 | 日志文件 |
/usr/share/doc | 一些基本的软件使用手册与帮助文档 |
/usr/share/man | 一些man page文件 |
rpm命令
- linux rpm 命令用于管理套件
rpm(英文全拼:redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。 - linux rpm 的常用参数说明
参数 | 说明 |
---|---|
-a | 查询所有软件包 |
-e | 卸载RPM软件包 |
-f | 查询拥有指定文件的软件包 |
-i | 显示软件的详细信息 |
-q | 使用查询模式,当遇到问题时,rpm指令会先询问用户 |
-v | 显示指令执行的过程 |
–force | 强制安装、覆盖安装 |
-h或–hash | 软件包安装时列出的标记 |
–test | 仅作测试,并不真的安装软件包 |
–version | 显示版本信息 |
–help | 在线帮助 |
- RPM命令的通用格式
rpm [-参数] [包名]
- 使用rpm安装软件
rpm -ivh httpd-2.4.6-80.el7.centos.x86_64.rpm
- 显示软件的安装信息
rpm -qi httpd-2.4.6-80.el7.centos.x86_64.rpm
- 安装软件是出现错误,描述是依赖包检测失败
- 解决依赖关系
<1>先安装/卸载要求的包,如果RPM包齐全但是比较多时,可以用通配符*
<2>忽略依赖关系(不建议使用)使用–nodeps可以忽略依赖关系
Yum 命令
1.yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的Shell 前端软件包管理器。
2.基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
3.yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
Yum原理(详情参考(Galaxy_hao))
Yum本地仓库
- 软件仓库的提供方式
- 本地目录:file://
- FTP或HTTP服务:ftp:// 、 http://
- RPM软件包的来源
- Red Hat发布的RPM包集合
- 第三方、用户自定义的rpm包集合
yum常用命令
命令 | 含义 |
---|---|
yum check-update | 列出所有可更新的软件清单 |
yum update | 更新所有软件 |
yum install 软件包名 | 仅安装指定的软件包 |
yum update | 仅更新指定的软件包 |
yum list | 列出所有可安装的软件清单 |
yum remove 软件包名 | 仅删除指定的软件包 |
yum serch 关键字 | 查找软件包 |
yum clean all | 清除缓存目录下的软件包及旧的 headers |
yum makecache | 缓存软件包的信息 |
yum repolist | 列出所有软件包 |
yum配置解析
- 影响yum使用的主要文件
- 基本设置: /etc/yum.conf
- 仓库配置: /etc/yum.repo.d/*.repo
- 日志文件: /var/log/yum.log - *.repo的基本配置项
- [base]:代表容器名称,名称可以随意取
- name:描述容器含义
- baseurl:后面接容器地址,是指定一个固定容器地址
- enabled:是否启用此频道(1为启动,0为不启用)
- gpgcheck:是否需要查阅RPM文件内数字证书
- gpgkey:数字证书公钥文件所在位置,使用默认值
仓库文件*.repo文件的简单书写
- 准备本地镜像仓库
- mkdir /yum #创建目录
- lsblk #查看镜像磁盘是否存在
- mount /dev/sr0 /yum
mount: /dev/sr0 写保护,将以只读方式挂载
- *.repo文件的简单书写
[development] #代表容器名称,名称可以随意取
name=nsd01 #描述容器含义
baseurl=file:///yum #后面接容器地址,是指定一个固定容器地址
enabled=1 #是否启用此频道(1为启动,0为不启用)
gpgcheck=0 #是否需要查阅RPM文件内数字证书
yum命令工具
- 查看软件列表
- 格式: yum list [软件名] ==>配合管道可查询软件包全称
eg: yum list | grep python-u
python-urlgrabber.noarch 3.10-8.el7 @anaconda
python-urllib3.noarch 1.10.2-5.el7 development
python-urwid.x86_64 1.1.1-3.el7 development
-
检索软件及相关信息
- yum search 关键字 - yum search httpd - yum info [软件名] - yum info httpd # 显示相关信息 - yum provides 文件路径/软件**提供的命令**
- yum provides */syslinux #文件路径
- yum provides semanage #软件包提供的命令
- yum provides */syslinux #文件路径
-
安装/卸载软件包
- 命令格式: yum [-y] 指令 [软件名]
- yum -y install httpd #安装软件
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-80.el7.centos 将被 安装
--> 正在处理依赖关系 httpd-tools = 2.4.6-80.el7.centos,它被软件包 httpd-2.4.6-80.el7.centos.x86_64 需要
--> 正在处理依赖关系 /etc/mime.types,它被软件包 httpd-2.4.6-80.el7.centos.x86_64 需要
--> 正在处理依赖关系 libaprutil-1.so.0()(64bit),它被软件包 httpd-2.4.6-80.el7.centos.x86_64 需要
--> 正在处理依赖关系 libapr-1.so.0()(64bit),它被软件包 httpd-2.4.6-80.el7.centos.x86_64 需要
--> 正在检查事务
---> 软件包 apr.x86_64.0.1.4.8-3.el7_4.1 将被 安装
---> 软件包 apr-util.x86_64.0.1.5.2-6.el7 将被 安装
---> 软件包 httpd-tools.x86_64.0.2.4.6-80.el7.centos 将被 安装
---> 软件包 mailcap.noarch.0.2.1.41-2.el7 将被 安装
--> 解决依赖关系完成
- yum remove httpd #卸载软件
移除 1 软件包
安装大小:9.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在删除 : httpd-2.4.6-80.el7.centos.x86_64 1/1
验证中 : httpd-2.4.6-80.el7.centos.x86_64 1/1
删除:
httpd.x86_64 0:2.4.6-80.el7.centos
完毕!
国内yum源
使用方式(参考文档 )
前提:虚拟机/服务器与外网互通
- 备份/etc/yum.repos.d/CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
- 下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)
CentOS 7 (其他版本的请自行参考阿里yum源)
yum -y install wget
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
- 运行 yum makecache 生成缓存
- 其他
非阿里云ECS用户会出现 Couldn’t resolve host ‘mirrors.cloud.aliyuncs.com’
信息,不影响使用。用户也可自行修改相关配置: eg:
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
自定义yum源
- 作为yum源的条件
- 大量的.rpm的软件包文件
- 针对软件包的repodata/ 仓库档案 - 使用自定义Yum源时,需要另外创建repodata/ 档案
- 将收集到的rpm放到一个linux系统中的一个目录里
- 使用createrepo工具创建repodata/ 档案
1. mkdir /mysql #创建目录
2. mv /root/mysql-5.7.17.tar /mysql/ #把压缩包移动到刚刚新建的目录中
3. tar -xf /mysql/mysql-5.7.17.tar -C /mysql/ #解压放到指定的路径
4. yum -y install createrepo #安装createrepo软件包
5. createrepo ./ #生成repodata文件夹
Spawning worker 0 with 11 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
6. createrepo --update ./ #更新自定义yum源
- 配置yum客户端的配置文件(本机centos7.5 1804)
1. cd /etc/yum.repos.d/ #进入仓库目录 ,书写repo文件
2. vim mysql.repo
[mysql]
name=mysql5.7
baseurl=file:///mysql
enabled=1
gpgcheck=0
3. yum makecache # 缓存信息
4. yum repolist #显示仓库列表
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源标识 源名称 状态
development nsd01 9,911
mysql mysql5.7 11
repolist: 9,922
5.yum install mysql # 检测yum源是否可用
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 mariadb-libs.x86_64.1.5.5.56-2.el7 将被 取代
---> 软件包 mysql-community-client.x86_64.0.5.7.17-1.el7 将被 安装
---> 软件包 mysql-community-common.x86_64.0.5.7.17-1.el7 将被 安装
---> 软件包 mysql-community-devel.x86_64.0.5.7.17-1.el7 将被 安装
---> 软件包 mysql-community-embedded.x86_64.0.5.7.17-1.el7 将被 安装
---> 软件包 mysql-community-embedded-compat.x86_64.0.5.7.17-1.el7 将被 安装
---> 软件包 mysql-community-embedded-devel.x86_64.0.5.7.17-1.el7 将被 安装
---> 软件包 mysql-community-libs.x86_64.0.5.7.17-1.el7 将被 舍弃
---> 软件包 mysql-community-libs-compat.x86_64.0.5.7.17-1.el7 将被 舍弃
---> 软件包 mysql-community-minimal-debuginfo.x86_64.0.5.7.17-1.el7 将被 安装
---> 软件包 mysql-community-server.x86_64.0.5.7.17-1.el7 将被 安装
---> 软件包 mysql-community-test.x86_64.0.5.7.17-1.el7 将被 安装
--> 正在处理依赖关系 perl(JSON),它被软件包 mysql-community-test-5.7.17-1.el7.x86_64 需要
--> 正在检查事务
---> 软件包 perl-JSON.noarch.0.2.59-2.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决