yum (没办法老是忘 ya mu) yum是基于rpm用Python开发的前端程序 yum是基于c/s client /server 结构实现的 就是 有客户端 有服务器
我们把存放安装包的服务器叫 yum服务器 server 在yum服务器上有很多安装包rpm , 以及这些安装包的元数据meta data

客户端要运行yum时候,需要在客户端有一个配置文件,配置文件中写清楚yum服务器的地址, 然后要安装软件的时候敲 运行一个命令yum install yum install 文件名 就可以了 运行yum install命令时 从配置文件中找到服务器的地址 (路径)然后就把消息发到yum服务器上,接着服务器检查服务器上是否有这个包1,在meta data 中找到这个包1以及这个包1所依赖的包2或包3。然后把消息返还到客户端,存放在一个文件夹里。这个文件夹叫yum的缓存(yum cache),缓存中放的是元数据meta data。然后客户端发现要安装包1,已经包2和包3,就发信息给服务器,接着服务器把这些包的数据传给客户端。然后安装,这些包是默认安装后删除的,也可以不删,但是但是但是元数据是不删除的 当然服务器可能不止一个,原则是下载最新的 因为有两份缓存,有可能出问题,当yum服务器的地址改了,配置文件中指向的地址也会改,但是缓存中的地址还是原来的地址,这就出问题了 解决方法就是清除缓存就可以了 所有yum出问题就是两个地方 1配置文件 语法出错 2缓存文件 出错 yum的配置文件 /etc/yum.conf 看看第一行是什么 其实就是CPU架构和版本号,用变量写是为了省事。 keepcache =0 下载安装后的包会删除 =1 就不会删除 debuglevel=2 这个是调试 不用管 logfile=/var/log/yun.log yum方式安装的日志 exactarch=1 架构 不用管 obsoletes=1 架构 不用管 gpgcheck=1 相当于rpm -K 检查包的完整性,yum是默认要检查的 1表示拒绝安装,=0就是忽略完整性 每通过也安装 plugins=1 插件启用 installonly_limit=5 并行安装 =5代表同时安装5个包(yum不支持一台机器同时运行多个晕程序) bugtracker_url=http:// bug 提示 distroverpkg=centos-release 其他 不用管 关机是最后一句话 把你的仓库信息放在这,以一个独立文件命名为.repo后缀的文件, 放在 /etc/yum.repos.d 下 我们cd到/etc/yum.repos.d下看看 这些文件可能用不到,我把它们放到别的地方 然后我们创建配置文件, 一定要以.repo后缀的 当然文件叫什么都行,如果把光盘做成yum源就用base为名当然随个人喜好, 为了学习我命名为cdrom.repo 关键的来了 配置文件关键就三行 第一行[base] 我要把光盘做成yum源所以写base 写别的也行但是别有空格,如[centos base] 千万别有空格 第二行 仓库路径 ,仓库可以是远程服务器,也可以是本地光盘,我用的就是本地光盘, 我们看看光盘 里面有rpm包的Packages 重点是元数据在repodata里 这些元数据都是压缩文件,就不打开了 以后要写yum的配置文件内的路径就是repodata的父目录 在我的虚拟机里也就是/run/media/root/CentOS 7 x86_64 但是有空格不太好所以我建一个短的 /mnt/cdrom 把光盘挂载上就是repodata的父目录了 回过头
第二行 仓库路径 格式 支持 http:// , https://, ftp://, file://(本机路径) baseurl=file:///mnt/cdrom 第三行
gpgcheck=0 写这个是为了不检查包的完整性,系统默认是检查完整性的,没有导入过公钥 就会默认全是不完整的包,=0 代表忽略完整性 就这三行,简单方便 因为我没有用cat 看看所以出错了我又重新把“:” 加上的 ,小心谨慎,不然就等着 删库 跑路吧 然后我试了一下 因为我以前是忽略依赖性安装的httpd 所以要删了重装 base从哪里来的 就是配置文件的第一行 也就是这些包都是来自base源 有个yes /d/N 的选项 y代表下载安装 d 下载不安装 N 不下载 我敲鼓y 成功了 yum把依赖的包都按照了