yum配置及其仓库管理

一.什么是yum

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。是基于rpm但更胜于rpm的软件管理工具,能够从指定的服务器自动下载RPM包并且安装用yum只能查到rpm包软件的信息,不能查到源代码软件的信息,yum只能安装rpm格式的软件包。yum的优点就是自动解决rpm包的依赖关系。

二.yum相关文件

yum的配置文件(服务器端):/etc/yum.conf
yum的配置文件(客户端):/etc/yum.repos.d/目录下以. repo结尾的文件
在这里插入图片描述
上图是我本机中的已有的repo配置文件,将这些文件统一移动到一个新建目录中,防止对后续的试验产生影响。

[root@localhost yum.repos.d]# mkdir repo
[root@localhost yum.repos.d]# mv *.repo ./repo

再创建自己的配置文件,且必须以.repo做文件结尾,并添加自己的配置。

[root@localhost yum.repos.d]# vim base.repo
[base]
name=base
baseurl=file:///mnt/
enabled=1
gpgcheck=0

[base]:表示Yum 软件仓库唯一标识符,避免与其他仓库冲突,名字自取;同一个服务器下可以配置多个yum源仓库,分别对应不同的以.repo结尾的文件,所以这里要起不同的名字;
name:yum仓库名字,以识别仓库;
baseurl:这个参数指定yum源仓库所在位置,提供的方式包括 FTP(ftp://…)、HTTP(http://…)、本地(file://…),这里是本地仓库,所以以file://开头,后面是具体路径;
enabled:表示此源是否可用:1为可用,0 为禁用
gpgcheck:设置此源是否校验文件:1 为校验,0 为不校验
gpgkey:若gpgcheck参数开启校验,则需要通过该参数指定公钥文件地址

yum的缓存目录:/var/cache/yum。存放从服务器上下载下来的索引文件,一般说的清空缓存就是清空缓存目录。

yum的日志文件:/var/log/yum.log

三.本地yum搭建

1.确保本机的CD/DVD光盘镜像处于连接状态:
[root@localhost yum.repos.d]# ls -l /dev | grep cdrom

lrwxrwxrwx  1 root root           3 Sep  1 12:09 cdrom -> sr0
crw-rw----+ 1 root cdrom    21,   0 Sep  1 12:09 sg0
brw-rw----+ 1 root cdrom    11,   0 Sep  1 12:09 sr0
2.挂载光盘

将/dev/sr0即表示光盘文件,挂载到/mnt文件下

[root@localhost yum.repos.d]# mount /dev/cdrom  /mnt/ 
3.配置yum的配置文件

进入到/etc/yum.repos.d/目录中(因为该目录存放着 Yum 软件仓库的配置文件),将该目录下的所有文件转移到其他目录下,创建一个新的配置文件base.repo,名字任取但必须以.repo结尾。内容如下:

[base]							#Yum 软件仓库唯一标识符,避免与其他仓库冲突
name=base          				#Yum 软件仓库名称描述,易于识别仓库用处
baseurl=file:///mnt/	        #这里指定挂载路径
enabled=1						#设置此源是否可用;1 为可用,0 为禁用
gpgcheck=0						#设置此源是否校验文件;1 为校验,0 为不校验
4.检验yum仓库是否可用

可以使用yum repolist命令来检查配置是否已经生效

[root@localhost yum.repos.d]# yum repolist 

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
repo id               repo name                      status
!base                 base                           10,019
repolist: 10,019

四.建立EPEL,BASE仓库

安装epel源方法与安装本地磁盘的配置类似,只是将路径改成远程的路径,可用的yum源有:
阿里云repo文件
http://mirrors.aliyun.com/repo/
CentOS系统的yum源
阿里云: https://mirrors.aliyun.com/centos/ $ releasever/os/x86_64/
清华大学:https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/x86_64/
EPEL的yum源
阿里云:https://mirrors.aliyun.com/epel/ $ releasever/x86_64
阿里巴巴开源软件
https://opsx.alibaba.com/
再在base.repo基础上再添加一组配置如下:

[epel]
name=EPEL
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
enabled=1

在yum的repo配置文件中可用的变量有如下这些:

变量说明
$releasever当前OS的发行版的主版本号
$archi386,i486,i586,x86_64等
$basearch基础平台;i386, x86_64
$ YUM0-$YUM9自定义变量

之前有本地的配置,为了使新的配置生效,可以使用下面两个命令:

yum clean all  	#清空缓存
yum makecache	#重新生成缓存

可以使用yum repolist命令来检查配置是否已经生效

[root@localhost yum.repos.d]# yum repolist 
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
repo id                                          repo name                                     status
epel                                             EPEL                                          13,373
repolist: 13,373

验证命令:
可以随意安装一个命令:sl

[root@localhost yum.repos.d]# yum install sl

当运行sl命令时,可以看到如下现象:
在这里插入图片描述

五.基于HTTP协议的网络yum仓库

在centos7搭建http服务,提供给centos7仓库服务

1.安装httpd服务,并查看

使用本地光盘先在centos7下安装httpd服务

[root@localhost yum.repos.d]# yum install httpd

安装完后,查看httpd里的内容,使用下面这命令:

[root@localhost yum.repos.d]#rpm -ql httpd

可以看到最后一个目录,/var/www/html该目录是个极其重要的目录

2.启动httpd服务

启动服务前需要关闭防火墙:

#centos7关闭防火墙命令:
 
systemctl disable firewalld 
systemctl stop firewalld

#centos6 关闭防火墙命令:

chkconfig iptables off
service iptables stop

以及SELinux 关闭

vim /etc/selinux/config
SELINUX=disabled

启动httpd服务

[root@localhost yum.repos.d]# systemctl start httpd

是没有任何输出显示的,我的本机ip地址是192.168.81.134,通过浏览器访问这个地址显示如下页面就代表成功:
在这里插入图片描述

3.在/var/www/html创建目录
[root@localhost html]# mkdir -pv centos/7/os/x86_64
mkdir: created directory ‘centos’
mkdir: created directory ‘centos/7’
mkdir: created directory ‘centos/7/os’
mkdir: created directory ‘centos/7/os/x86_64’
4.将本地光盘挂载到上步创建的目录中去
[root@localhost html]# mount /dev/sr0 /var/www/html/centos/7/os/x86_64
mount: /dev/sr0 is write-protected, mounting read-only
5.验证和使用

刷新页面显示出如下所示,即代表挂载成功:
在这里插入图片描述
再在自己的yum源配置文件中添加该路径:

[base]
name=base
#baseurl=file:///mnt/
baseurl=http://192.168.81.134/centos/7/os/x86_64/
enabled=1
gpgcheck=0

再执行以下两个命令:

yum clean all  	#清空缓存
yum makecache	#重新生成缓存

为了验证是否生效,我们安装几个命令试一下:

1.安装tree包

[root@localhost yum.repos.d]# yum install tree

在这里插入图片描述
显示如上图所示即代表成功。
在这里插入图片描述
2.安装ftp包
首先用命令检查是否安装了ftp,无任何信息显示,就代表没有安装

[root@localhost yum.repos.d]# rpm -qa |grep vsftpd

安装ftp包,显示如下即代表成功
在这里插入图片描述
3.安装lftp包
使用命令:

[root@localhost yum.repos.d]# sudo yum install lftp

在这里插入图片描述
4.安装telnet包
首先先查找telnet包有哪些安装包

[root@localhost yum.repos.d]# yum list | grep telnet
telnet.x86_64                           1:0.17-64.el7                  base     
telnet-server.x86_64                    1:0.17-64.el7                  base  

安装telnet包

[root@localhost yum.repos.d]# yum install -y telnet-server.x86_64
[root@localhost yum.repos.d]# yum install -y telnet.x86_64

在这里插入图片描述

六.yum命令

yum命令的用法:
yum [options] [command] [package ...]
显示仓库列表:
yum repolist [all|enabled|disabled]
显示程序包:
yum list
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]
安装程序包:
yum install package1 [package2] [...]
yum reinstall package1 [package2] [...] (重新安装)

升级程序包:
yum update [package1] [package2] [...]
yum downgrade package1 [package2] [...] (降级)
检查可用升级:
yum check-update
卸载程序包:
yum remove | erase package1 [package2] [...]

查看程序包information:
yum info [...]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
清除/var/cache/yum/$basearch/$releasever缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

搜索:yum search string1 [string2] [...]
以指定的关键字搜索程序包名及summary信息
查看指定包所依赖的capabilities:
yum deplist package1 [package2] [...]
查看yum事务历史:
yum history [info|list|packages-list|packages-info|
summary|addon-info|redo|undo|
rollback|new|sync|stats]
yum history
yum history info 6
yum history undo 6

安装及升级本地程序包:
yum localinstall rpmfile1 [rpmfile2] [...]
(用install替代)
yum localupdate rpmfile1 [rpmfile2] [...]
(用update替代)
包组管理的相关命令:
yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]

yum的命令行选项:
--nogpgcheck:禁止进行gpg check
-y: 自动回答为“yes”
-q:静默模式
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件

----引申

编写系统初始化脚本reset.sh,包括别名,提示符颜色,yum仓库配置文件

#!/bin/bash
#
#********************************************************************
#Author:        linteng
#QQ:            1025602981
#Date:          2019-09-01
#FileName:     reset.sh
#********************************************************************
#decide current system os
echo "Start Init System,Please Waiting Some Time~~"
sleep 2
version=`egrep -o "[0-9]" /etc/centos-release |head -n1
echo "Current System Version is Centos $version"
echo "Setting Alias...."
sleep 1
cat >>/root/.bashrc<<END
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias cdnet='cd /etc/sysconfig/network-scripts/'
alias IPOUT='ifconfig | egrep -o "\<([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}\>" | head -1'
alias cls='clear'
if [ "$version" -eq 7 ];then
    ps1="\[\e[1;36m\][\u@\h \W]\$\[\e[0m\]"
elif [ "$version" -eq 6 ];then
    ps1="\[\e[1;33m\][\u@\h \W]\$\[\e[0m\]"
else
                                                                                   1,1           Top
    ps1="\[\e[1;33m\][\u@\h \W]\$\[\e[0m\]"
else
    ps1="\[\e[1;35m\][\u@\h \W]\$\[\e[0m\]"
fi`
PS1=$ps1
END
echo "Alias and PS1 be Ready~"
echo "Start Setting Yum Repository..."
sleep 1
#mount cd rom
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
mkdir /etc/yum.repos.d/bak
#move system Centos repo
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak

cat >>/etc/yum.repos.d/bash.repo<<END
[base]
name=Centos "$version"
baseurl=file:///mnt/cdrom
gpgcheck=0

[epel]
name=Aliyun
baseurl=https://mirrors.aliyun.com/epel/$version/x86_64
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-$version
END
                                                                                   26,5          69%
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-$version
END

sleep 1
if [ $version -eq 7 ];then
    systemctl stop firewalld
    systemctl disable firewalld
elif [ $version -eq 6 ];then
    service iptables stop
    chkconfig iptables off
else
    echo "Please Manual Stop Firewall"
echo "Init System Over"
unset version
*.repo文件是在Linux系统下使用yum命令时,yum用来配置所需软件包的源信息的文件。该文件通常位于/etc/yum.repos.d/目录下,其文件名以.repo结尾。 *.repo文件的格式是INI格式,其主要包含了以下几个部分: 1. 仓库的基本信息 该部分包含了仓库的名称、描述、仓库的URL地址和仓库的类型等基本信息,例如: ``` [base] name=CentOS-$releasever - Base baseurl=http://mirror.centos.org/$contentdir/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 ``` 2. 软件包的策略信息 该部分包含了软件包的更新策略、安装策略和清除策略等信息,例如: ``` [updates] name=CentOS-$releasever - Updates baseurl=http://mirror.centos.org/$contentdir/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled=1 ``` 3. 软件包的过滤信息 该部分用于指定要从该仓库中获取的软件包,例如: ``` [epel] name=Extra Packages for Enterprise Linux 7 - $basearch baseurl=https://download.fedoraproject.org/pub/epel/7/$basearch gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 exclude=python* ``` 其中,exclude字段用于指定不需要从该仓库中获取的软件包。 4. 其他配置信息 该部分包含了其他的配置信息,例如: ``` [extras] name=CentOS-$releasever - Extras baseurl=http://mirror.centos.org/$contentdir/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled=1 ``` 在该部分中,可以配置一些其他的选项,例如enabled字段用于指定该仓库是否启用。 以上是*.repo文件的基本格式和内容,通过修改*.repo文件,可以更改yum软件包管理器中软件包的源信息,以实现更好的软件包管理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值