Linux中用yum/dnf管理软件包

本章主要介绍使用yum对软件包进行管理

  • yum的介绍
  • 搭建yum源
  • 创建私有仓库
  • yum客户端的配置
  • yum的基本使用
  • 使用第三方yum源

使用rpm安装包时经常会遇到一个问题就是包依赖

[root@redhat8 ~]# rpm -ivh /mnt/AppStream/Packages/httpd-2.4.37-41.module+el8.5.0+11772+c8e0c271.x86_64.rpm 
错误:依赖检测失败:
	httpd-filesystem 被 httpd-2.4.37-41.module+el8.5.0+11772+c8e0c271.x86_64 需要
	httpd-filesystem = 2.4.37-41.module+el8.5.0+11772+c8e0c271 被 httpd-2.4.37-41.module+el8.5.0+11772+c8e0c271.x86_64 需要
	httpd-tools = 2.4.37-41.module+el8.5.0+11772+c8e0c271 被 httpd-2.4.37-41.module+el8.5.0+11772+c8e0c271.x86_64 需要
	libapr-1.so.0()(64bit) 被 httpd-2.4.37-41.module+el8.5.0+11772+c8e0c271.x86_64 需要
	libaprutil-1.so.0()(64bit) 被 httpd-2.4.37-41.module+el8.5.0+11772+c8e0c271.x86_64 需要
	mod_http2 被 httpd-2.4.37-41.module+el8.5.0+11772+c8e0c271.x86_64 需要
	system-logos(httpd-logo-ng) 被 httpd-2.4.37-41.module+el8.5.0+11772+c8e0c271.x86_64 需要
[root@redhat8 ~]#

这里<tab>的意思是按【Tab】键

所谓包依赖,就是在安装A时必须先把B和C安装上去。如果用rpm一个个安装是非常困难的,这里可以使用dnf或yum命令来解决。yum命令其实是软链接到dnf命令上的,所以输入yum或dnf都可以,后文都使用yum命令介绍

1.1 yum架构介绍

为了方便理解,先看图

可能我们经常会使用360软件管家管理软件包,在360服务器上有各种软件,在PC上的 360软件管家中搜索想要安装的软件,然后单击【安装】按钮,这样就可以把软件自动安装 到本地了,很方便

yum的架构也是类似的

在服务器上存在某个目录中存储了大量的软件包,然后通过ftp或http把此目录共享出去,使得客户端可以通过ftp或http能访问到此目录

在服务器端所存储的这些软件包中,服务器是知道哪些包之间有依赖关系的,例如,A、 B、C三者之间存在依赖关系,所以当客户端发布一个请求说要安装A时,如图

此时发现A和B、C有依赖关系,所以客户端会把A、B、C三 者都从服务器下载到本机的缓存,然后再把这三个包一起给安装上去

如果假设A和B、C、X有依赖关系,但是X这个包并没有出现 在现在的这个源中,那么当客户端要安装A时,因为缺少了X,所 以安装是失败的。此时我们就需要在客户端上指定多个源,保证所有的这些源中包含了所有需要的包,如图

因为客户端指定了两个源,所以当客户端发布一个请求说要 安装A时,此时从第一个源中检测到了需要的依赖包B、C,然 后从第二个源中找到了X,客户端就会把这四个包一起下载到本地缓存中并进行安装

1.2 使用光盘搭建yum源

实验结构

两台Linux系统的虚拟机(redhat8和node1)

因为光盘中包括了最常用的软件包,所以现在就把光盘的内容作为源,用vsftpd将光盘的内容共享出去。在rpm章节 已经将 vsftpd安装上去了,如果没有安装请按前面章节讲过的内容自行安装好

注意

下面的操作都是在redhat8上做的

修改letc/vsftpd/vsftpd.conf中的anonymous enable选项

由anonymous_enable=NO修改为anonymous_enable=YES,并添加如下命令

1 pasv_min_port=10010
2 pasv_max_port=10020

保存退出并启动vsftpd

[root@redhat8 vsftpd]# systemctl enable vsftpd --now
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.
[root@redhat8 vsftpd]#

如果已经启动过了,则通过systemctl restart vsftpd重启一下,使刚做的配置生效

修改防火墙

[root@redhat8 vsftpd]# firewall-cmd --add-port=20-21/tcp --permanent 
success
[root@redhat8 vsftpd]# firewall-cmd --add-port=10010-10020/tcp --permanent 
success
[root@redhat8 vsftpd]# firewall-cmd --reload 
success
[root@redhat8 vsftpd]#

把SELinux服务关闭

创建目录/var/ftp/dvd,然后把光盘挂载到此目录上

[root@redhat8 ~]# mkdir /var/ftp/dvd
[root@redhat8 ~]# mount /dev/cdrom /var/ftp/dvd/
mount: /var/ftp/dvd: WARNING: device write-protected, mounted read-only.
[root@redhat8 ~]# 

这样其他机器通过ftp访问/var/ftp/dvd时,访问的就是光盘中的内容了。设置开机自动挂载,修改/etc/fstab

[root@redhat8 ~]# grep ftp /etc/fstab 
/dev/cdrom				/var/ftp/dvd		iso9660	  defaults        0 0
[root@redhat8 ~]#

至此,服务器上的yum 源就已经配置好了,/var/ftp/dvd中的内容

[root@redhat8 ~]# ls /var/ftp/dvd/
AppStream  EULA              images      RPM-GPG-KEY-redhat-beta
BaseOS     extra_files.json  isolinux    RPM-GPG-KEY-redhat-release
EFI     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值