day 20 repo软件包管理和yum使用
repo软件包说明
redhat package manager repo的全称 在linux中的.repo
结尾的文件 跟windows的.exe文件一样都是可执行的安装包文件
1)软件包的含义
ant-antunit-1.2-10.el7.noarch.rpm
antlr-C++-2.7.7-30.el7.x86_64.rpm
以上两个软件包为例
名称|含义|
--|:--😐--
|ant-antunit|软件包名称
|1.2 |软件的版本
|10 |软件包编译发布的次数
|el7 |适用于7系列的操作系统
|el6 |适用于6系列操作系统
|noarch |适用于任何cpu架构
|x86_64 |硬件平台 位数
|.rpm |包的后缀名
2)软件包的安装方式
软件包 | 使用 | 优缺点 |
---|---|---|
rpm包 | 预先编译好的,安装简单 | 版本过低 |
源码包 | 手动编译,安装繁琐 | 版本随意 |
二进制包 | 绿色软件 解压即用 | 无法修改源码 |
3)软件包的获取方式
本地的ISO镜像 需要挂载使用
联网下载
仓库获取 yum源
repo软件包使用
# 命令 管理软件包
# 挂载镜像
/dev/cdrom --> /dev/sr0
mount /dev/sr0 /mnt/ # 虚拟机镜像光盘挂载在/mnt临时的挂载 重启就会失效
df -h # 查看磁盘使用情况和镜像挂载情况
ll /mnt/Packages/ | wc -l # 统计repo软件包数量
# rpm命令选项
-i # 安装
-v # 显示安装的过程
-h # 显示安装的进度条
-ivh # 安装软件显示过程和显示进度条
-e # 移除一个安装的软件包
-U #升级
-qa #查询所有已经安装的软件包
-qi #查询软件包本身相关信息
-ql #查询软件包列表信息
-qc #查询软件包相关文件
-qf #查询命令属于哪个软件包 必须是绝对路径 前提本地要已经存在这个软件包
# rpm安装太需要依赖了,不会自动寻找依赖,需要手动下载依不建议使用
示例:
# 移除本地安装的tree包
[root@localhost ~]# rpm -e tree
# 安装本地的repo包(速度非常快)
[root@localhost ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:tree-1.6.0-10.el7 ################################# [100%]
ll /mnt/Packages/ | grep apr # 查找相关依赖包
# 联网安装软件包
rpm -ivh
https://mirrors.aliyun.com/centos/7.8.2003/os/x86_64
/Packages/tree-1.6.0-10.el7.x86_64.rpm
rpm 一般不会使用这个命令来管理软件包 不能自己寻找依赖包
需要手动安装相关依赖包
yum管理工具
怎么获取yum源:
本地的ISO镜像
yum源仓库
联网的方式下载
本地yum仓库
yum的种类 :
base #基础源
epel #扩展源
软件官方源 # nginx zabbix docker
阿里源
清华源
中科大
163源
yum总结:
yum repolist # 针对仓库操作
yum repolist all # 显示所有仓库repo包
yum repolist # 显示所有可安装的软件包
yum installed # 显示已经安装的
yum updates # 显示可更新的
yum check-update # 显示可更新的
yum update 命令 # 更新命令最新版
yum install 命令 # 安装命令
yum localinstall repo包地址 # 本地安装
yum reinstall 包名 # 重新安装
yum remove 包名 # 卸载
yum erase 包名 # 卸载
yum info 包名 # 显示软件包信息
yum search 包名 # 搜索
yum provides 命令 # 查询命令属于哪个软件包
yum groups 包名 # 组包管理
yum groups install 包名 # 安装组包
yum groups remove 包名 # 移除
yum clean all # 清空所有
yum clean packages # 清空yum缓存软件包
yum clean plugins # 清空插件
yum makecache # 生成最新的仓库源缓存
yum history # yum历史记录
yum hisotry list all # 显示所有yum历史命令
yum info ID(数字) # 显示某次记录的信息
yum undo ID(数字) # 回滚这次的操作
yum-config-manager # yum仓库管理工具
--disable # 禁用仓库
--enable # 启用仓库
实例:
# 只下载 不安装 指定下载的路径
[root@qls ~]# yum install -y --downloadonly --downloaddir=/opt nginx
[root@qls ~]# cat /etc/yum.conf
[main]
# cachedir=/var/cache/yum/$basearch/$releasever
cachedir=/opt # 指定下载保存路径
keepcache=1 # 开启缓存
# 回滚历史ID为10的操作
[root@qls ~]# yum history undo 10 -y
# yum历史命令显示命令名称
[root@qls ~]# yum --setopt=history_list_view=commands history list all
搭建本地yum仓库
# 把之前的本地仓库打包让其失效
cd /etc/yum.repos.d/
gzip ./*
# 挂载本地镜像源(临时挂载)
mount /dev/sr0 /mnt # 虚拟机镜像包挂载在/mnt目录下
# 查看挂载目录
[root@localhost ~]# df -h | grep 'mnt'
/dev/sr0 4.3G 4.3G 0 100% /mnt # 能过滤出来表示挂载成功
# 编写yum源文件配置
# 1 仓库地址协议
file:// #本地
ftp:// #文件传输地址
http:// #网络协议地址
https:// #网络协议地址
[root@localhost ~]# vim /etc/yum.repos.d/local.repo
[mpd]
name=this is local repo
baseurl=file:///mnt
enabled=1
gpgcheck=0
# 清空yum缓存 所有
[root@localhost ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: mpd
Cleaning up list of fastest mirrors
Other repos take up 284 M of disk space (use --verbose for details)
# 加载yum缓存
[root@localhost ~]# yum makecache
Loaded plugins: fastestmirror
Determining fastest mirrors
mpd | 3.6 kB 00:00:00
(1/4): mpd/group_gz | 166 kB 00:00:00
(2/4): mpd/primary_db | 3.1 MB 00:00:00
(3/4): mpd/other_db | 1.3 MB 00:00:00
(4/4): mpd/filelists_db | 3.2 MB 00:00:00
Metadata Cache Created
将本地仓库共享给其他主机
10.0.0.100 #本地仓库地址 服务端
10.0.0.200 #客户端
# 在10.0.0.100 主机上面操作
mount /dev/cdrom /mnt/ # 挂载镜像
# 安装文件传输工具
yum install -y vsftpd
#启动
systemctl start vsftpd
systemctl enable vsftpd
#关闭防火墙
systemctl stop firewalld
#关闭Selinux
setenforce 0
#测试
#浏览器输出
ftp://10.0.0.100/
#访问的是这个目录
ll /var/ftp/
total 0
drwxr-xr-x 2 root root 6 Oct 31 2018 pub
# 创建目录用来存仓库包
mkdir /var/ftp/local-base
# 拷贝rpm包到服务端
cp -rp /mnt/Packages/* /var/ftp/local-base/
#下载管理工具
yum install -y createrepo
#告诉系统,这是个镜像yum源仓库
createrepo /var/ftp/local-base/
#修改yum配置文件
cat /etc/yum.repos.d/lcoal.repo
[mpd]
name=this is local repo
baseurl=ftp://10.0.0.100/local-base/
enabled=1
gpgcheck=0
# 查看仓库列表
yum repolist
#让其他主机使用这个仓库
在10.0.0.200主机上面操作
[root@client ~]# systemctl stop firewalld
[root@client ~]# setenforce 0
[root@client ~]# gzip /etc/yum.repos.d/*
[root@client ~]# ll /etc/yum.repos.d/
#编写yum源配置文件
cat /etc/yum.repos.d/lcoal.repo
[mpd]
name=this is local repo
baseurl=ftp://10.0.0.100/local-base/
enabled=1
gpgcheck=0
# 测试
yum clean all
Loaded plugins: fastestmirror
Cleaning repos: mpd
yum makecache
yum缓存作用
近几日搭建服务器环境,需要使各个服务器的环境一致,考虑到直接使用yum进行安装,可能会因为repo源的更新而导致服务器的软件环境不一致问题出现(包括以后新增的服务器也需要一致配置),所以通过开启yum的缓存功能,来在A服务器上进行配置,其它服务器上直接使用A服务器中yum缓存下来的软件包进行安装即可(包括以后新增的服务器也可以使用这套软件包来进行配置)。
打开yum的缓存功能:
/etc/yum.conf配置文件,设置"keepcache=1"
1
配置文件中的”cachedir”就是用来缓存安装包的具体目录。
待A服务器完成所有配置后,将cachedir指定的目录直接拷贝到其它待安装的服务器上,然后使用”yum -C install [软件包名]”即可使用缓存安装。(-C参数表示使用系统缓存)。
好处:
1、便于多台服务器的统一配置,以及后续新增的服务器的统一配置;
2、节省了公司带宽占用。