rpm包管理、yum源及创建本地仓库(同步华为源)
一、rpm包介绍
rpm包来源
1、来源网络下载
2、来源本地:自己的镜像自带的rpm包
rpm包格式
例1: mysql-connector-odbc-5.2.5-8.el7.x86_64.rpm
软件包名:mysql-connector-odbc
版本号 Version:5.2.5
发布版本 Release:8.el7
平台:el7.x86_64
后缀:.rpm
例2: abrt-python-doc-2.1.11-57.el7.centos.noarch.rpm
abrt-python-doc #软件包的名称
2.1.11 #软件的版本
57 #软件编译之后的发布的次数
el7 #适合的操作系统的版本
noarch #适⽤于不同版本的CPU
.rpm #后缀名
RPM闭包使⽤的平台
# 查看⾃⼰当前平台
[root@localhost ~]# uname -m
x86_64
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
#验证软件包是否安装成功
[root@localhost ~]# nginx -v
nginx version: nginx/1.18.0
管理rpm包有两种命令
# 1、rpm命令:
需要⾃⼰找到rpm包,并且⼿动解决包的依赖性关系
ps:实际情况下,很难分辨缺少什么依赖包
# 2、yum命令:
相关rpm包事先都被存放于⼀个仓库⾥,仓库包含了所有的依赖包,所以yum按照可以帮我们解决依
赖性问题
RPM包获取 (挂载)
# 1.本地的ISO镜像光盘(软件包可能存在版本偏低情况) : 挂载镜像有以下三种⽅式
⽅式1: [root@localhost ~]# mount /dev/cdrom /opt/
⽅式2: [root@localhost ~]# mount /dev/sr0 /opt/
⽅式3 [root@localhost ~]# mount -o loop /xxx.iso /opt
查看光盘⾥的rpm包 [root@localhost ~]# ls /opt/Packages/
# 2.⾃⼰去⽹上下载rpm包进⾏安装
# 3.联⽹从yum仓库⾥获取rpm包 # yum的时候
二、rpm命令
#1、安装:rpm -ivh <RPM包名全称>
-v : 显示安装过程
-i :显示安装包的详细信息
-h : 安装包哈希标记
#2、卸载:rpm -e <RPM包名>
#3、升级:rpm -Uvh <RPM包名>
#4、卸载:rpm -e <软件包名称>
#5、查询:
rpm -qa #查询系统中安装的所有RPM软件包
rpm -qa | grep php #检索系统中已经安装有关php的软件包
rpm -q <RPM包名> #查询指定软件包是否已安装
[root@egon ~]# rpm -q zip
zip-3.0-11.el7.x86_64
rpm -qi <RPM包名> #查询系统中已安装包的描述信息
rpm -ql <RPM包名> #查询系统中已安装包⾥所包含的⽂件
rpm -qc <RPM包名> #查询指定软件包的所有配置⽂件
[root@egon ~]# rpm -qc mariadb
/etc/my.cnf.d/client.cnf
rpm -qd <RPM包名> # 查询某个包安装的帮助⽂档
[root@localhost ~]# rpm -qd zlib
rpm -qf ⽂件路径 #查询系统中指定⽂件所属的软件包
[root@egon ~]# rpm -qf /usr/sbin/ifconfig
net-tools-2.0-0.25.20131004git.el7.x86_64
-p # 在上述选项的基础上加选项-p,就可以查看尚未安装的rpm包信息
[root@localhost ~]# rpm -e dos2unix # 先卸载⼀下,证明本地rpm数据库中没有该包信
[root@localhost ~]# rpm -qip /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
[root@localhost ~]# rpm -qlp /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
[root@localhost ~]# rpm -qcp /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
[root@localhost ~]# rpm -qdp /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
额外选项
--nomd5 # 不检验软件包的签名
--nodeps # 忽略依赖性安装软件,安装后软件有可能⽆法使⽤,最好是解决依赖性后再安装
[root@localhost ~]# rpm -e dos2unix --nodeps # 忽略依赖关系
--force # 强制安装软件包,只有安装和升级可以强制执⾏
下载Nginx rpm安装包的全名
[root@localhost ~]# wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-1.el7.ngx.x86_64.rpm
三、yum管理rpm包
yum是CentOS的软件包管理工具,自动为我们解决软件依赖问题。yum包管理工具必须使用yum源指定软件下载地址去下载需要安装的软件包。配置的路径是:/etc/yum.repos.d
yum默认的缓存目录:/var/cache/yum/x86_64/7/base/packages/
yum源的执行原理
1、需要在/etc/yum.repos.d目录下配置yum源地址
2、清空缓存建立新的缓存
3、安装软件(自动解决依赖关系)
创建本地yum仓库的步骤
1、安装vsftp、createrepo、yum-utils
2、创建仓库`/var/ftp/`
3、同步华为源到本地reposync -r base -o /var/ftp/base
4、建立依赖createrepo base
5、编写本地yum源`/etc/yum.repos.d`
6、测试
查看yum命令与配置⽂件
[root@localhost ~]# rpm -q yum
yum-3.4.3-161.el7.centos.noarch
[root@localhost ~]# rpm -qc yum
/etc/logrotate.d/yum
/etc/yum.conf
/etc/yum/version-groups.conf
yum命令常⽤选项
#仓库
yum repolist # 查询可⽤仓库
yum repolist all #查看包括已启⽤或禁⽤的所有仓库状态
# 关闭与启⽤仓库:本质:都是在修改repo⽂件中的enable的值 0 不启⽤ 1 启⽤
yum-config-manager --disable epel #关闭仓库epel
yum-config-manager --enable epel #启⽤仓库epel
#查看
yum list #列出可⽤仓库中所有的软件包
yum list | less
yum grouplist #列出可⽤仓库中的软件组
yum check-update #查看当前系统需要更新软件
yum provides /usr/sbin/ifconfig #查询命令所属的软件包,可以不加路径,只写命令名字
#与rpm -qf的区别在于yum provides后可以只跟命名名
#安装
yum install httpd httpd-tools #加上-y选项可以变成⾮交互
yum groupinstall "开发⼯具" -y #安装软件组,⼀个软件组中包含了多个软件包
yum groups install "开发⼯具" -y #同上
#卸载
yum remove httpd httpd-tools http* #卸载软件包
yum remove httpd -y : 免交互移除
yum groupremove "开发⼯具" -y. #卸载软件组
yum groups remove "开发⼯具" -y #同上
#重装
yum reinstall httpd #不⼩⼼删除了配置⽂件的时,可以reinstall⼀下
#更新
yum check-update #检查可以更新的软件包
yum update -y #更新所有软件包,包括内核,通常只在刚装完系统时执⾏
yum update httpd -y #更新某个软件包
#缓存
yum makecache #制作元数据缓存
yum clean all #清理元数据缓存
vim /etc/yum.conf #默认软件包下载安装后会⾃动删除
#设置keepcache=1 即开启了软件包缓存
#缓存⽬录为配置⽂件中指定的cachedir
#历史记录
yum history # 查看执⾏过的yum命令历史记录
yum history info ID号 # 查看具体某⼀条yum命令的详细信息
yum history undo ID号 # 撤销执⾏过的历史命令
# 启用repo仓库
yum install yum-utils -y
启用一个yum仓库:yum-config-manager --enable (仓库名称)
关闭一个yum仓库:yum-config-manager --disable (仓库名称)
四、将网络yum源同步到本地源供其他机器安装----步骤
一、保证机器可以联网
二、在本地仓库机器上按照如下步骤操作
vim /etc/yum.conf
将keepcache的0改为1(默认为0,意为安装成功后立即删除安装包)
1、在命令行中输入:
yum install createrepo vsftpd wget -y #这三个软件下面要用到,没有请自行安装
2、安装成功后: 输入:systemctl enable --now vsftpd #立即启用ftp
3、rm -rf /etc/yum.repos.d/* #删除本地源
4、wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo #将华为源同步到本地(也可采用其他源,阿里云、163自行更改)
5、cd /var/ftp #此处一定要切换目录
6、yum install yum-utils -y
7、reposync -r (仓库名称,不知道的可以用yum repolist查看) #将网络仓库保存到本地
8、同步好以后输入:createrepo base #建立依赖关系
9、输入vim /etc/yum.repos.d/local.repo将以下内容输入:
[loacl-ftp-30] #仓库名,可自定义
name="This is 30 ftp server" #描述信息
baseurl=ftp://172.16.1.30(自己的内网地址或外网地址)/base #yum源地址
gpgcheck=0 #0不检查秘钥,1为检查秘钥
enabled=1 #1为启用,0为不启用
在远程测试机上输入:
rm -rf /etc/yum.repos.d/*
输入vim /etc/yum.repos.d/local.repo将以下内容粘贴即可:
[loacl-ftp-30] #仓库名,可自定义
name="This is 30 ftp server" #描述信息
baseurl=ftp://172.16.1.30(与本地仓库机的配置文件地址相同即可)/base #yum源地址
gpgcheck=0 #0不检查秘钥,1为检查秘钥
enabled=1 #1为启用,0为不启用
#测试环境
yum clean all #清除缓存
yum makecache #生成新缓存
yum install zsh #安装zsh软件
yum repolist #查看本地下载源仓库,此时应该只有一个ftp源