Linux之Yum软件包管理

Yum软件包管理

yum命令
yum源的配置
yum命令的配置

Yum软件包管理,是红帽系列系统中默认的软件包管理器,替我们下载指定rpm包,替我们安装,如果安装时有依赖,还会下载安装依赖;
推荐安装,命令补全增强工具;
yum -y install bash-completion bash-completion-extras//命令\命令选项补全

yum安装软件的流程
首先,Linux中执行了yum install命令;
收到命令后,yum会根据本地配置的yum源地址,进行请求;(默认没配置找官方的yum源/yum仓库(存着rpm包,里边有个软件列表));
这个软件列表会同步到本地,叫本地缓存;
收到下载命令,会读条,找到安装包后,问yum源要软件包,然后下载,安装,这是没有依赖的情况;
如果有依赖,就会自动分析依赖,把所有需要的依赖都向yum源索要,然后安装;
安装完成删除刚下载的rpm包(默认)

对于Yum源,公有云都一般做好了修改,自己装的虚拟机需要修改yum仓库;

yum命令:下载与安装软件包,配置文件/etc/yum.conf
yum仓库/源:存放软件包的地方,配置目录/etc/yum.repos.d/*.repo repository源

为什么修改yum源地址?
为了下载更快;
有一些系统默认的源,无法满足要求;需要的软件yum源中没有;

查看系统正在用的yum源列表
yum repolist
[root@web01 cmatrix-1.2a]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
repo id repo name status
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,746
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 515
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 4,425
repolist: 28,758
目前这里可以看出,有base,extras,updates,epel 4个yum源;
其中前三个base,extras,updates是默认yum的源
epel是额外的yum源;

设置系统的yum源为阿里云;
mirrors.aliyun.com //阿里网站
https://developer.aliyun.com/mirror/centos //网站有教程命令
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
选项-O:下载明改名,存到目录里
这些,相当于修改了base,extras,updates源;
同样的操作,可以增加epel源
先备份
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
第一次使用,提示文件不存在
再增加系统epel源(企业级Linux额外的软件包)
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo


yum源配置文件详解
存放在/etc/yum.repos.d/目录下面,都是以.repo结尾,只能识别以.repo结尾的文件;


配置文件格式
[base] //这个源名字
name=CentOS-$releasever - Base - mirrors.aliyun.com //yum源的详细名字
failovermethod=priority //这个可选配置,如果地址失败了,则使用下面的url,一般一个url就可以了
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
//源地址,$releasever,系统版本,$basearch,架构,只有在yum源中 可以识别,浏览器无法识别
gpgcheck=1 //是否检查签名,值改为0,就不用配置下一行了
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 //签名地址
//上边是阿里云的模板,下边还可以补充一行
enabled=1 //意思就是,是否开启这个源,不写就默认开启,0就是不开启;

yum命令配置文件,工作中很少修改,也就是想把安装过的rpm包留存,可能会修改;
/etc/yum.conf中找到keepcache,从=0改为=1,就可以把下载安装过的rpm包留存;
[main]
cachedir=/var/cache/yum/$basearch/$releasever //缓存目录
keepcache=0 //是否留存
debuglevel=2
logfile=/var/log/yum.log //日志文件
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

yum命令详解
增删改查
增加
yum -y install
yum reinstall -y //重新安装
查,查询某个命令属于那个软件包,查询某个依赖属于那个软件包
yum provides 内容
yum search all 内容
yum repolist 查看源列表
yum list,显示yum仓库中所有软件,未来用于根据软件包名字查找;
删除
yum remove 删除软件包以及依赖
yum clean all 清空缓存

yum update/upgrade(yum -y install,安装其实也包含升级功能)

查:
[root@web01 yum.repos.d]# yum provides tree
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
tree-1.6.0-10.el7.x86_64 : File system tree viewer
[root@web01 yum.repos.d]# yum provides ifconfig
备用搜索命令
yum search all ifconfig //结果会很多,需要筛选,或者一个一个测试

删:尽量不要删,删除时,也会删除安装时的依赖,即便要删除,也推荐rpm -e;
yum clean all;清出缓存,一般自建yum仓库时会用到;使用公有yum源,一般不用;

yum makecache  //生成yum缓存

 

举个例子,用yum解决安装依赖
前提:用rpm安装一个软件,提示有依赖,无法安装;
[root@web01 ~]# rpm -ivh zabbix-get-6.0.0.1.el7.x86_64.rpm //提示有依赖
改用yum,自动解决依赖
[root@web01 ~]# yum loaclinstall zabbix-get-6.0.0.1.el7.x86_64.rpm

 

一个案例:搭建自己的yum仓库

搭建企业内部yum仓库
1,准备好软件包目录,下载好软件包;
2,在这个目录中生成软件包列表文件;存放在repodata目录;
3,部署一个web服务(比如nginx),让用户可以直接访问到/app/yumlocal/目录下的软件包;
4,以上三步完成,就可以找一台客户机,配置/etc/yum.repos.d/,并访问了;

操作步骤:
yum仓库服务端:
1,准备软件仓库目录,解压软件包到这个目录中;
2,通过creatrepo在这个目录中生成rpm包列表(属性信息);成功了会有repodata目录;
3,安装nginx,修改nginx配置可以访问/app/yumlocal/目录;
4,测试,浏览器访问,能不能看到目录内容;

yum仓库客户端:
1,先注释掉已有的yum源配置.
2,修改配置访问服务端的yum仓库;

yum仓库服务端:
创建目录
[root@web01 tomcat]# mkdir -p /app/yumlocal
上传软件
rz
解压
tar xf php....tar.gz -C /app/yumlocal
yum install -y createrepo //安装createrepo命令
createrepo /app/yumlocal/ //直接跟这个目录即可
ll /app/yumlocal //可以看到repodata目录
安装与配置nginx
yum -y install nginx //这样安装的,可以用systemctl管理
[root@web01 tomcat]# systemctl start nginx
[root@web01 tomcat]# systemctl enable nginx
检查端口与进程(略)
配置nginx
rpm -ql nginx //查安装目录 里边有/etc/nginx/nginx.conf
vim /etc/nginx/conf.d/yum.conf
下面是这个文件的内容:
server{
listen 12306; //端口
root /app/yumlocal; //目录
autoindex on;
index index.html;
}
//配置文件内容完
重启nginx
systemctl restart nginx
//至此,服务端配完,可以打开浏览器测试,是可以看到目录的;

Yum客户端配置:
1,注释已配置的yum源文件
[root@web01 ~]# cd /etc/yum.repos.d/
[root@web01 yum.repos.d]# gzip * //把老文件都备份,注释,不会被识别了
2,书写新的yum配置
[root@web01 yum.repos.d]# vim yumlocal.repo
下面是内容:
[yumlocal]
name = 'yum local 内部yum源 1.1.1.1'
baseurl = http://1.1.1.1:12306
gpgcheck = 0
enabled = 1
内容完毕!~
接下来可以清空缓存并重新生成了:
yum clean all
yum repolist
接下来就可以用yum安装了,但是如果有依赖,也需要自己解决;
服务端需要:重新下载依赖,然后重新上传到目录,重新使用createrepo;
客户端需要:重新clean all / repolist,然后再测试;
[root@web01 yum.repos.d]# grep keepcache /etc/yum.conf
keepcache=1 //这里需要改成1,可以缓存安装包
[root@web01 yum.repos.d]# yum localinstall *.rpm //服务端下载一下,自动解决依赖并保存;
[root@web01 yum.repos.d]# find /var/cache/yum -type f -name "*.rpm"
[root@web01 yum.repos.d]# find /var/cache/yum -type f -name "*.rpm" | xargs cp -t /app/yumlocal
createrepo /app/yumlocal
//至此,服务端已解决依赖了,进入客户端可以测试了;

posted @ 2022-12-17 16:16  mclind  阅读(202)  评论(0编辑  收藏  举报