Linux软件安装管理(三):yum在线安装
- yum仓库的配置文件详解和仓库的创建
- yum的安装软件命令
- 升级、卸载(依赖也会卸载掉)使用需谨慎;yum查询仓库中的软件,其他rpm包查询推荐用rpm查询命令。
- yum软件组的查询与安装,装语言包很方便
rpm软件包形式管理软件,需要手工解决软件的依赖关系,rpm安装一个软件时有时需要先安装其他软件,十分麻烦。yum可以解决这个问题,将所有软件包放到官方服务器上,当进行yum在线安装时,可以自动解决依赖性的问题。redhat的yum在线安装需要付费,而centos是免费的。
1. yum仓库
yum引入仓库repo的概念,仓库用来存放所有现有的rpm包,当使用yum安装一个rpm,如果存在依赖关系,会自动在仓库中查找依赖软件并安装。如果仓库中没有这个依赖,那么yum安装失败。
仓库可以是本地的(文件夹),也可以通过HTTP、FTP、NFS形式使用集中的、统一的网络仓库。
所以,要使用yum,必须先配置yum仓库:
1.1 yum仓库repo的配置
- yum仓库的配置文件存放在/etc/yum.repos.d/
- 仓库配置文件名随意取,但一定要以.repo结尾
- 一个.repo配置文件中可以保存多个仓库的配置信息
- centOS安装好以后,yum仓库已经配置好了,因为是免费的。如果使用红帽,默认不会配置,可以去购买红帽的订阅,或者上网查仓库的地址,或者使用centOS的网络仓库也可以。
例如,CentOS-Base.repo配置文件中有很多仓库,其中一个名为base仓库的配置:
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
注意:等号=无空格。file:///etc/
中file://
是协议的双斜杠,路径是/etc/
,所以有三个双斜杠。
配置参数说明:
- [base] 仓库的名字,用[]扩起,随意取名
- name=this is 说明,可随便写
- mirrorlist= 镜像站点,可以注释掉
- baseurl= yum仓库的地址。可以是本地的file://。也可以是网络仓库http、ftp、nfs
- enabled 仓库是否生效
- enable=1或者不写:生效
- enable=0:不生效
- gpgcheck RPM数字证书是否生效
- gpgcheck=1:生效。建议开启,可以验证下载的软件是否安全完整
- gpgcheck=0:不生效
- gpgkey 数字证书的公钥文件保存位置/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7,不用修改
1.2 创建yum仓库
第一步:将所有RPM拷贝到一个文件夹中
如将光盘中的rpm包放到本地的文件夹中
- 挂载光盘
- mkdir /mnt/cdrom #建立挂载点,即文件夹
- mount /dev/cdrom /mnt/cdrom #挂载光盘
- 复制光盘中的rpm包到本地文件夹中
- mkdir my_yum
- cp -rv /mnt/cdrom/package/* /my_yum
第二步:创建索引文件
- 先用rpm命令手工安装creatrepo软件,creatrepo用于创建索引文件
- cd /my_yum #进入仓库的文件夹
- rpm -ivh creatrepo #会报错,提示安装deltarpm,phython-deltarpm
- rpm -ivh creatrepo deltarpm phython-deltarpm #如果需要解决依赖,可以三个一起安装
- 使用creatrepo创建索引文件
- creatrepo -v /yum仓库的路径
- 比如,creatrepo -v /my_yum
- 命令会对仓库中的rpm包创建索引,会在当前目录(仓库文件夹下)创建一个repodata的目录,里面保存索引信息
第三步:在/etc/yum.repos.d/中添加仓库的配置文件
- cd /etc/yum.repos.d/
vim myyum.repo
[myyum]
name=this is my repo
baseurl=file:///my_yum
enable=1 #也可以不写默认开启
gpgcheck=1 #自己创建的仓库,也可以不验证gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
注意:yum为了提高速度,会缓存很多信息,但也会导致故障。所以每次使用yum命令后,请清除缓存:
yum clean call
2.yum命令
2.1 查询
注意:关于rpm包的查询,用rpm查询命令比较好。
查询仓库的软件
yum list
- 查询仓库中所有可用软件包列表
- 三列:软件名|版本号|来自哪个仓库
yum list (all|installed|recent|updates)
- 列出(全部|已安装的|最近安装的|有更新的)软件
yum search 关键字
- 搜索仓库中所有和关键字相关的包
注意:yum没有本机装了哪些rpm包的命令;yum没有查询rpm包装到了哪些位置的命令。
查询软件详细信息
- yum info 软件名
- 列出软件的详细信息
- 可以用tab补全
查询文件属于哪个rpm包
- yum whatprovides 文件名
2.2 安装
- yum -y install 包名
- install 安装
- -y 自动回答yes
rpm命令需要区分包全名和包名;yum命令不需要包全名,只要写包名即可。
系统最小化安装,安装的软件就越少,需要解决的依赖就越多。比如要安装c的编译器gcc,必须使用rpm安装,不能用源码包安装方法,因为源码不能编译。
2.3 升级
- yum -y update 包名
- update
- -y 自动回答yes
危险:对于服务器来说,最好不要升级。除非有重要bug。不要写成
yum -y update
,会导致内核和所有程序的更新,可能会导致系统直接崩溃。
2.4 卸载
- yum -y remove 包名
- remove
- -y 自动回答yes
危险:服务器最好使用最小化安装,用什么软件安装什么软件,尽量不要卸载!!因为,卸载时也会将依赖的软件依次卸载,而且yum不会询问直接卸载。如果软件依赖的包被系统依赖,却被卸载了,可能导致崩溃!!
所以,最小化安装!用什么装什么!不要卸载!服务器上的操作一定要小心,管理员最好把命令都记下来作为日志,都是为了防止服务器 崩溃。
2.5 yum软件组管理命令
例如,如果linux安装的时候没有选择中文语言,不能正常显示中文, 如果要手工安装中文语言很麻烦,因为他需要装很多个包,包括字体包编码包,但是他们都属于中文支持[zh]
组包内,使用yum grouplist就能查看到所有组包:
yum grouplist
- 列出所有可用的软件组列表
- 本机使用grouplist命令时组名是英文显示;远程登录时组名默认中文显示
- 要让远程登陆也显示英文,修改语言即可,执行命令:
LANG=en_US
;改回来:LANG=zh_CN.utf8
(临时生效,永久改变语言要改/etc下的下相应配置文件)
yum groupinstall 软件组名(英文)
- 安装指定的软件组
- 组名可以有grouplist查询出来
- 软件组名必须是英文
yum groupremove 软件组名(英文)
- 卸载指定的软件组
- 同样不推荐随便卸载