一.什么是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源有:
阿里云: 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的发行版的主版本号 |
$arch | i386,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