一、 yum软件包管理器
1、 yum的作用
YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date 的替代工具。
yum repository:(yum资源库) 以.repo结尾的yum库文件中存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)
yum库文件中支持的文件的服务器:
http:// (外部网站的rpm包地址)
https:// (外部网站的rpm包地址)
ftp:// (内部网的共享rpm包地址)
file:// (本机上存储的rpm包地址)
2、 yum客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
下面我们来看看这两个文件:
cachedir :指定缓存目录
logfile : 日志文件
gpgcheck : 是否查包的合法性
[repositoryID] (标题,这个库的id,相当于×××号,不可重复)
name=Some name for this repository (库名字,名字可以重复)
baseurl=url://path/to/repository/ (指定rpm包的路径)
enabled={1|0} (是否有效0表示这个repo无效,1表示有效,默认值为1)
gpgcheck={1|0} (是否检验包的合法性默认为1)
gpgkey=URL (公钥路径)
enablegroups={1|0} (是否开启组功能)
failovermethod={roundrobin|priority} (一个源是可以跟多个地址(baseurl)的,此选项是设置多个地址的使用顺序的)
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000(优先级)
3、 yum的repo配置文件中可用的变量
$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386, x86_64
$YUM0-$YUM9:自定义变量
例如:
http://server/centos/$releasever/$basearch/
如果当前服务器是centos7版本x86_64平台的
则实际网址为http://server/centos/7/x86_64
如果当前服务器是centos6版本i384平台的
则实际网址为http://server/centos/6/i384
4、 yum源
yum源路径指定的不是包含软件包的那个目录,而是指定在包含有repodata的目录的上一级目录
阿里云repo文件:http://mirrors.aliyun.com/repo/
CentOS系统的yum源
阿里云: https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
教学环境: http://172.16.0.1/cobbler/ks_mirror/$releasever/
EPEL的yum源:
阿里云: https://mirrors.aliyun.com/epel/$releasever/x86_64
教学环境: http://172.16.0.1/fedora-epel/$releasever/x86_64/
5、 yum命令
1. yum命令的用法:
yum [options] [command] [package ...]
yum的命令行选项:
-y: 自动回答为“yes”,避免交互式
-q:静默模式(但是仍会显示安装的过程,彻底静默建议使用yum -y install pkg1 &> /dev/null,把结果扔进垃圾桶)
--nogpgcheck:临时不进行gpg check(不检验包的合法性)
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件
2. 显示仓库列表
yum repolist [all|enabled|disabled]
all 显示全部repo
enabled 只显示生效的repo
disabled 只显示无效的repo
3. 显示程序包
yum list [all] 显示所有的程序包
yum list available 显示所有可用的,且未安装的
yum list installed 显示所有已安装的包
yum list updates 显示可更新的包
4. 安装程序包
yum install package1(包名) [package2]…
安装软件包,可以同时跟多个包名,安装多个包
yum reinstall package1 [package2]
重新安装一个或多个已安装的包
5. 升级程序包
yum update [pkg1] [pkg2] (升级安装)(后跟多个包名可升级多个包)
yum downgrade pkkg1 [pkg2] (降级安装)
6. 检查可用升级
yum check-update
7. 卸载程序包
yum remove 包名1 [包名3]… 删除程序包(后跟多个包名可同时删除多个包)
yum erase 包名1 [包名2]… 卸载程序包
8. 查看程序包
yum info pkg 显示包的详细信息
. 查看指定的特性(可以是某文件)是由哪个程序包所提供
yum provides 文件路径(支持文件名通配符) 查询一个文件来自哪一个rpm安装包(不论这个包是否已安装)
yum whatprovides 文件路径(支持文件名通配符) 查询一个文件来自于哪一个rpm安装包(不论这个包是否已安装)
10. 清除本地缓存
yum clean all 清空所有缓存
11. 构建缓存
yum makecache
12. 搜索以指定的关键字搜索程序包名及summary信息
yum search str1 [str2] (str代表关键字文本)
13. 查看指定包所依赖的功能
yum deplist pkg1 [pkg2]…
14. 查看yum事务历史(下列#代表一个具体的数字)
yum history 显示yum的历史操作
yum history info # 详细显示某条历史记录
yum history undo # 撤销某条yum的操作
yum history redo # 重新执行一遍某条yum的操作
15. 安装升级本地程序包(下列|代表或)
yum localinstall |install rpm路径 安装本地的rpm包,并用yum解决依赖性关系
yum localupdate |update rpm路径 更新本地的rpm包,并用yum解决依赖性关系
16. 包组管理的相关命令
yum groupinstall grppkg1 安装该包组(grppkg1)
yum grouplist 列出所有的包组
yum groupinfo grppkg1 显示该包组包含的rpm包
yum groupremove grppkg1 卸载包组
17. 创建yum仓库
为什么yum能帮我们解决一些依赖性关系呢?其实是因为在yum仓库下有一个repodata的目录,而在这个目录下就保存着各个包的信息及其依赖性关系,所以yum仓库指定的位置必须指定在有repodata目录的上一层目录,而如果想自己创建一个yum仓库,除了在该目录下拷贝一些包以外还需要自动创建一个repodata的目录。createrepo这个命令就会帮助我们自动搜索该目录下的所有包及依赖性关系,并创建repodata目录将其保存在该目录下语法格式如下:
createrepo 仓库路径(存放着rpm包的路径)
创建一个yum仓库的步骤:
1、 创建一个yum仓库的目录
2、 拷贝一些rpm包至该目录下
3、 使用createrepo命令创建repodata目录
4、 在目录/etc/yum.repos.d下创建一个以.repo结尾的仓库文件,创建一个yum库,指定该yum仓库的路径
提示:在centOS6中默认createrepo命令是没有安装的,所以可能会出错,想要安装createrepo命令可以用以下步骤哦:
1、yum list createrepo 查询yum仓库里是否有createrepo的包
查出createrepo命令的安装包名为createrepo.noarch
2、yum install createrepo.noarch 安装createrepo安装包
安装成功
3、如果所有的rpm安装包都在/dvd目录下,想要将此目录设置成一个yum仓库来使用,如何使用createrepo命令来创建repodata目录?
如此这个/dvd目录就可以在yum仓库的配置文件中使用了