yum
yum简介
- yum源就是一个软件集合地,你只需要搜索并安装你想要的软件,它会帮你解决大部分软件的依赖问题
- 本地yum源:比如说光盘里面一般会附带一些软件,这个时候就可以把光盘当成本地源来安装软件
- 网络yum源:比如说aliyun的镜像网站,这就属于网络源,可以通过互联网把软件下载下来并安装 yum的全称是yellow dog updater,modified,是一个shell前端软件包管理器,基于RPM包管理,能够从指定的服务器下载RPM包并自动安装,可以自动处理依赖性关系 并且一次性安装所有依赖的软件包,无需一次次频繁的下载和安装
yum命令
clean all | 清除原有yum缓存 |
repolist | 列出仓库信息 |
install software | 安装 |
update | 更新 |
list software | 查看软件 |
list all | 查看所有软件 |
list installed | 列出已安装软件 |
list available | 列出可安装软件 |
reinstall software | 重新安装 |
remove software | 卸载 |
info software | 查看软件信息 |
search software | 根据软件信息查找软件 |
whatprovides file | 根据文件找出包含此文件的软件 |
history | 查看系统中软件管理信息 |
history info | 对该数字为id的信息进行显示 |
group list | 列出软件组 |
group info | 查看软件组的信息 |
group install sfgroup | 安装软件组 |
group remove sfgroup | 卸载软件组 |
本地yum源的配置
脚本 含义
[仓库名称] | 随意写 |
name= | 仓库描述信息 随意写 |
baseurl= | 仓库地址,网络或本地(file://开头) 安装源访问地址 |
gpgcheck=1 | 校验rpm包,0不校验 |
repodate | 含有依赖性的文件 |
packages | 软件包组 |
首先查看需要配置yum源的主机系统版本
将和需要配置yum源的主机系统版本一致的镜像挂载到新建的目录下
编辑yum源配置文件
vim /etc/yum.repo.d/westos.repo
查看挂载
永久挂载
vim /etc/rc.d/rc.local
或者 vim /etc/fstab
yum源共享配置
先安装http.并打开服务,然后在防火墙中添加http服务 将需要配置yum源的主机系统版本一致的镜像挂载到默认发布目录下
在使用端编辑yum源配置文件即可共享
自动更新yum源
安装apache和repository的管理工具yum-utils
yum install httpd yum-utils createrepo -y
systemctl enable httpd
systemctl start httpd
创建文件保存目录
mkdir -p /data/website/centos/6/
mkdir -p /data/website/centos/7/
mkdir -p /data/website/epel/
修改/etc/yum.repos.d/CentOS-Base.repo
## centos7
[base7]
name=CentOS-7-os-cmiot.local
baseurl=http://mirrors.163.com/centos/7/os/x86_64/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates7]
name=CentOS-7-updates-cmiot.local
baseurl=http://mirrors.163.com/centos/7/updates/x86_64/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras7]
name=CentOS-7-extras-cmiot.local
baseurl=http://mirrors.163.com/centos/7/extras/x86_64/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
## centos6
[base6]
name=CentOS-6-os-cmiot.local
baseurl=http://mirrors.163.com/centos/6/os/x86_64/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#released updates
[updates6]
name=CentOS-6-updates-cmiot.local
baseurl=http://mirrors.163.com/centos/6/updates/x86_64/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras6]
name=CentOS-6-extras-cmiot.local
baseurl=http://mirrors.163.com/centos/6/extras/x86_64/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
## epel
[epel6]
name=CentOS-6-epel-cmiot.local
baseurl=https://mirrors.aliyun.com/epel/6/x86_64/
gpgcheck=0
[epel7]
name=CentOS-7-epel-cmiot.local
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
使用yum repolist验证CentOS-Base.repo文件是否生效
# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name
base6 CentOS-6-os-cmiot.local
base7 CentOS-7-os-cmiot.local
epel6 CentOS-6-epel-cmiot.local
epel7 CentOS-7-epel-cmiot.local
extras6 CentOS-6-extras-cmiot.local
extras7 CentOS-7-extras-cmiot.local
updates6 CentOS-6-updates-cmiot.local
updates7 CentOS-7-updates-cmiot.local
同步CentOS-Base.repo文件中163的centos6包文件
reposync -n --repoid=extras6 --repoid=updates6 --repoid=base6 -p /data/website/centos/6
reposync -n --repoid=epel6 -p /data/website/epel/
同步CentOS-Base.repo文件中163的centos7包文件
reposync -n --repoid=extras7 --repoid=updates7 --repoid=base7 -p /data/website/centos/7
reposync -n --repoid=epel7 -p /data/website/epel/
createrepo 命令用于创建yum源(软件仓库),即为存放于本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据。
参数选项说明:
-u --baseurl <url>
指定Base URL的地址
-o --outputdir <url>
指定元数据的输出位置
-x --excludes <packages>
指定在形成元数据时需要排除的包
-i --pkglist <filename>
指定一个文件,该文件内的包信息将被包含在即将生成的元数据中,格式为每个包信息独占一行,不含通配符、正则,以及范围表达式。
-n --includepkg
通过命令行指定要纳入本地库中的包信息,需要提供URL或本地路径。
-q --quiet
安静模式执行操作,不输出任何信息。
-g --groupfile <groupfile>
指定本地软件仓库的组划分,范例如下:
createrepo -g comps.xml /path/to/rpms
注意:组文件需要和rpm包放置于同一路径下。
-v --verbose
输出详细信息。
-c --cachedir <path>
指定一个目录,用作存放软件仓库中软件包的校验和信息。
当createrepo在未发生明显改变的相同仓库文件上持续多次运行时,指定cachedir会明显提高其性能。
--update
如果元数据已经存在,且软件仓库中只有部分软件发生了改变或增减,
则可用update参数直接对原有元数据进行升级,效率比重新分析rpm包依赖并生成新的元数据要高很多。
-p --pretty
以整洁的格式输出xml文件。
-d --database
该选项指定使用SQLite来存储生成的元数据,默认项。
创建索引
格式:createrepo -po 源目录 索引元数据的输出位置目录
createrepo -po /data/website/centos/6/base6/ /data/website/centos/6/base6/
createrepo -po /data/website/centos/6/updates6/ /data/website/centos/6/updates6/
createrepo -po /data/website/centos/6/extras6/ /data/website/centos/6/extras6/
createrepo -po /data/website/epel/epel6/ /data/website/epel/epel6/
createrepo -po /data/website/centos/7/base7/ /data/website/centos/7/base7/
createrepo -po /data/website/centos/7/updates7 /data/website/centos/7/updates7
createrepo -po /data/website/centos/7/extras7 /data/website/centos/7/extras7
createrepo -po /data/website/epel/epel7 /data/website/epel/epel7
wget http://mirrors.163.com/centos/6/base6/repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml -P /tmp
wget http://mirrors.163.com/centos/7/base7/repodata/38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml -P /tmp
createrepo -g /tmp/43d*-comps.xml /data/website/centos/6/base6/
createrepo -g /tmp/38b*-comps.xml /data/website/centos/7/base7/
下载KEY文件
用户下载安装这个RPM包时,引入RH官方的这个RPM GPG公钥,用来验证RPM包是不是RH官方签名的
wget http://mirrors.163.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7 -P /data/website/centos/
wget http://mirrors.163.com/centos/6/os/x86_64/RPM-GPG-KEY-CentOS-6 -P /data/website/centos/
设置apache 根目录设置为/data/website
修改/etc/httpd/conf/httpd.conf
注释#DocumentRoot "/var/www/html"这一行,在其下添加
#DocumentRoot "/var/www/html"
DocumentRoot "/data/website"
<Directory "/data/website">
Options Indexes FollowSymLinks
Options Indexes
AllowOverride All
Order allow,deny
IndexOptions Charset=UTF-8
Allow from all
Require all granted
</Directory>
删除welcome配置,达到访问服务器地址直接现实站点根目录
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak
开启httpd服务
systemctl restart httpd
systemctl enable httpd
浏览器就可以通过访问IP来访问/data/website目录
website目录.jpg
定时同步任务
用户端/etc/yum.repos.d/CentOS-Base.repo文件修改
下面以centos6为例:
[base]
name=CentOS-$releasever - Base - cmiot.local
baseurl=http://172.20.11.249/centos/$releasever/base6
gpgcheck=1
gpgkey=http://172.20.11.249/centos/RPM-GPG-KEY-CentOS-6
#released updates
[updates]
name=CentOS-$releasever - Updates - cmiot.local
baseurl=http://172.20.11.249/centos/$releasever/updates6
gpgcheck=1
gpgkey=http://172.20.11.249/centos/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - cmiot.local
baseurl=http://172.20.11.249/centos/$releasever/extras6
gpgcheck=1
gpgkey=http://172.20.11.249/centos/RPM-GPG-KEY-CentOS-6
[epel]
name=CentOS-$releasever - Extras - cmiot.local
baseurl=http://172.20.11.249/epel/epel6
gpgcheck=0
设置每天定时更新脚本 update.sh
#!/bin/bash
echo 开始同步ubuntu
apt-mirror
echo ubuntu同步结束
echo 开始同步centos6
reposync -n --repoid=extras6 --repoid=updates6 --repoid=base6 -p /data/website/centos/6
reposync -n --repoid=epel6 -p /data/website/epel/
echo centos6同步结束
echo 开始同步centos7
reposync -n --repoid=extras7 --repoid=updates7 --repoid=base7 -p /data/website/centos/7
reposync -n --repoid=epel7 -p /data/website/epel/
echo centos7同步结束
#更新元数据
createrepo --update /data/website/centos/6/base6/
createrepo --update /data/website/centos/6/updates6/
createrepo --update /data/website/centos/6/extras6/
createrepo --update /data/website/epel/epel6/
createrepo --update /data/website/centos/7/base7/
createrepo --update /data/website/centos/7/updates7/
createrepo --update /data/website/centos/7/extras7/
createrepo --update /data/website/epel/epel7/
crontab -e 添加定时任务
0 6 * * * /data/update.sh
crontab -l 查看定时任务
0 6 * * * /data/update.sh
#!/bin/bash
datetime=`date + "%Y-%m-%d"`
exec > /var/log/centosrepo.log
reposync -d -r base -p /opt/yum/centos/6/os/x86_64/
reposync -d -r updates -p /opt/yum/centos/6/os/x86_64/
reposync -d -r extras -p /opt/yum/centos/6/os/x86_64/
reposync -d -r centosplus -p /opt/yum/centos/6/os/x86_64/
reposync -d -r contrib -p /opt/yum/centos/6/os/x86_64/
if [ $? -eq 0 ];then
createrepo --update /opt/yum/centos/6/os/x86_64/
echo "SUCCESS:$datetime epel update successful"
else
echo "ERROR:$datetime epel update failed"
fi
这个脚本是更新所有的yum包,包括base/updates/extras/centosplus/contrib
需要说明的是,自己的centos上一定要安装epel,这也是一个库,这个库里面有很多yum源上面没有的rpm的包
之后使用root用户去设置crond进程,定时同步。
0 14 * * 0 /bin/bash /root/yum-update.sh
rpm
rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。
rpm命令参数
rpm常见命令参数 | |
---|---|
-i | 安装 |
-v | 显示过程 |
-h | hash加密 |
-e | 卸载 |
-q | 查看 |
-a | 所有 |
-p | 软件包 |
-ql | 查看软件在系统中的安装文件路径 |
-qlp | 查看未安装的软件包在系统中如果安装后产生文件的路径 |
-qf | 根据某个文件找出此文件属于那个安装包 |
-qc | 查看软件的配置文件名称 |
-qd | 查看软件的帮助文件 |
–scritps | 查看脚本 |
–nodeps | 安装软件忽略软件倚赖 |
–force | 强行安装软件 |
-Kv | 检测软件包是否被篡改 |
第三方软件源搭建
都在一个目录里
建立一个目录/software:mkdir /software ,用于存放软件包
执行 createrepo -v /software/
会生成repodate目录
yum clean all 清除所有的yum缓存,才会使用新的yum源
yum repolist 列出仓库信息
查看依赖关系
把一个软件压缩包解压
现在就可以直接安装软件了,不用在乎依赖性
可以看到存在依赖关系的软件都自动 安装了
没有第三方软件源时的软件安装
先解决可以解决的依赖性: yum install 软件名 --skip-broken
然后安装软件时忽略软件依赖性: rpm -ivh 软件名 --nodeps
最后直接安装 yum install 软件名
(对于那些有死循环依赖关系的软件)
有依赖关系没有解决
有依赖关系没有解决