RPM不能解决依赖关系,如果要解决依赖关系可以使用yum(Yellowdog Updater Modified),上次提到了yum是前端工具,yum是解决依赖关系再用RPM进行安装卸载等操作,yum采用C/S架构依赖于yum仓库,

客户端找yum仓库,找到了软件包再检查依赖关系,随后下载软件包,下载完成后再次检查依赖软件包并下载到本地。RPM包里有写入依赖关系,yum是从中获取当中的依赖关系(yum元数据)。

yum仓库:/etc/yum.repos.d,安装卸载都从仓库中操作
yum-warehouse .PNG
Base 网络源,Debuginfo debug信息源,Media 本地源(当没网时可以制作本地源)。

仓库中源的一些变量名
yum-warehouse-variable .png

$releasever  #发行版本
$basearch  #CPU架构集
$arch  #CPU架构

前面说了客户端先找YUM仓库,那仓库中的源是找的yum元数据目录repodate。
repodata.png

在光盘里有这个目录,其中的gz bz2都是压缩方式,其中的xml是扩展标记语言,现在有很多配置文件也用xml。

primary.xml.gz  #所有RPM文件列表,依赖关系,软件安装列表。
filelists.xml.gz  #包含所有RPM包的列表
othe.xml.gz  #包含软件包其他信息,比如更改记录
repomd.xml  #包含primary.xml.gz/filelists.xml.gz/repomd.xml的时间戳与校验和
comps.xml  #包含软件包组的列表

创建yum源数据目录,创建这个是为了方便baseurl来找到仓库,说白了就是仓库必须依赖于源数据找到软件包。

yum -y install createrepo

createrepo 软件包目录 #对软件包建立索引

yum命令使用

下面介绍yum命令以及常用选项
语法:yum [options] [command] [package ...]

有询问默认yes
-y --assumeyes

安装软件包
 install package1 [package2] [...] 
 
升级软件包,如果不指定软件包就升级所有软件包。
 update [package1] [package2] [...]

检查更新软件包升级信息
 check-update

卸载软件包,如果配置文件内容修改过,这两个命令都会在源目录中帮你备份。
 remove | erase package1 [package2] [...]

显示全部安装与未安装的软件包
 list [...]

查看软件包信息
 info [...]

同步仓库元数据   
 makecache

清除缓存,下载的软件包、源数据等
 clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

查询与指定软件包相关的软件包
search string1 [string2] [...]

查询软件包依赖关系列表
deplist package1 [package2] [...]

查看可用yum的源
repolist [all|enabled|disabled]

查看可用yum源的信息
repoinfo [all|enabled|disabled]

安装软件包组
group install #组名带空格得加上引号(避免认为是两个组)

查看软件包组信息
group info

显示所有已经安装和未安装的软件包组
group list

卸载指定软件包组
group remove

yum配置文件:/etc/yum.conf
yum-conf.PNG

cachedir #缓存目录
keepcache  #0=不缓存 1=缓存
debuglevel #debug级别
logfile  #yum日志文件

我们自己配置一个使用网络源,yum repolist来查看可用源,直接把/etc/yum.repos.d/下的源都删掉,默认的官方源速度不是很快,来直接使用国内的源会比较方便。

删除完成来创建一个文件,必须以.repo结尾
base.png

[name]    #仓库名
name=     #引用变量,也就是对这个仓库描述信息
baseurl=  #yum仓库
enabled=  #是否启用yum仓库,默认启用
gpgcheck= #是否进行完整性校验
gpgkey=   #完整性和校验和检测文件

这个baseurl得说明一下,url是先找yum元数据目录repodate,在这个目录下面存放着RPM包的索引信息包括依赖关系等...,但不能将目标直接指向元数据目录,否则它就找repodata/repodata这样自然找不到,而是元数据上一级目录因为它会自动带上元数据目录。

离线YUM源

在没有网络时我们想安装软件包就要借助于光盘中自带的包来辅助我们完成安装

FTP

服务端

mount /dev/cdrom /media  #挂载盘到/media
yum -y install vsftpd  #安装ftp
systemctl start vsftpd  #启动ftp
systemctl enable vsftpd #开机自启
cp -rf /meida/* /var/ftp/src/  #把光盘中的内容复制到ftp默认目录中

客户端

[ftp]
name=ftp_repo
baseurl=ftp://服务器地址
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

file://代表本地文件

httpd

服务端

mount /dev/cdrom /media  #挂载盘到/media
yum -y install httpd  #安装ftp
systemctl start httpd  #启动ftp
systemctl enable httpd  #开机自启
cp -rf /meida/* /var/www/html/

客户端

[httpd]
name=httpd_repo
baseurl=ftp:///服务器地址
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

本地源

mount /dev/cdrom /media  #挂载盘到/media
vim file.repo #是在/etc/yum.repos.d/
创建文件内容↓
[file]
name=file_repo
baseurl=file:///media
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

扩展yum源

有一些软件包在扩展源里(epel源包括一些最新发布测试用的包),比如我们安装nginx它会提示找不到这个包。

yum -y install epel-release

如果上述命令安装不了,就去手动镜像站找一下epel-release这个包安装。
yum -y install https://mirrors.tuna.tsinghua.edu.cn/epel//7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
epel.png
安装成功后会在/etc/yum.repos.d/下生成两个文件epel-testing.repo epel.repo,扩展包由fedoraproject.org/wiki/EPEL/zh-cn提供。

标签: none

讨论讨论讨论!