Linux教程

180天Linux小白到大神-构建YUM仓库实践

本文主要是介绍180天Linux小白到大神-构建YUM仓库实践,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

09.Linux软件管理

09.Linux软件管理

1.RPM基本概述

1.1 什么是rpm

1.2 rpm包名组成部分

1.3 如何获取rpm包

1.4 其他类型的安装包

2.RPM包管理命令

2.1 rpm安装软件包

2.2 rpm依赖包安装

2.3 rpm升级软件包

2.4 rpm卸载软件包

2.5 rpm查询软件包

2.6 rpm包管理小结

3.YUM基本介绍

3.1 什么是YUM

3.2 什么是[YUM源|yum仓库]

3.3 YUM配置文件

3.4 配置YUM源示例

4.YUM日常操作

4.1 yum查询软件包

4.2 yum安装软件包

4.3 yum重装软件包

4.4 yum更新软件包

4.5 yum删除软件包

4.6 yum管理组包

4.7 yum管理仓库

4.8 yum管理历史记录

本章课程内容大纲

1.什么是rpm?、rpm软件包的组成部分有哪些?

2.如何获取rpm软件包? 本地获取? 联网获取?

3.除了rpm安装软件以外是否还有其他方式安装软

件?

4.rpm软件安装、解决依赖、升级、卸载、查询等操作?

5.什么yum?、什么是yum源? 什么是yum仓库?

6.yum的基本使用、安装、卸载、升级、查询等操

作?

7.yum本地仓库如何搭建,又如何使用本地yum仓库?

8.源码包如何安装,下载、解压、编译?

1.RPM基本概述

1.1 什么是rpm

RPM 全称 RedHat Package Manager 缩写,是由红帽

开发用于软件包的安装、升级、卸载与查询工具。

包格式:xxx.rpm

命令: rpm

1.2 rpm包名组成部分

RPM 包命名以-将软件分成了若干部分 bash-4.2.46-

28.el7.x86_64.rpm

1.3 如何获取rpm包

在我们刚开始学习 rpm 包,建议先从本地镜像中获取

rpm 但实际生产环境中大多数是通过联网方式获取 rpm 包,或者搭建企业私有包管理仓库平台。

1.4 其他类型的安装包

在 Linux 中除了 rpm 格式类型的包,还存在一些其他类型的软件包。

分类 安装 版本

熟 预先编译打包, 软件(k8s开源应用)版
食/rpm
包 安装简单 本偏低

菜/源 手动编译打包, 软件版本随意(rpm包版
码包 安装繁琐 本低,源码)

二进制 解压即可使用, 不能修改源码 (小工
包 安装简单 具,解压即用)

2.RPM包管理命令

2.1 rpm安装软件包

-i:安装软件包

-v:显示安装过程

-h:显示安装进度条

1.使用 rpm 命令安装本地路径下软件包

[root@node ~]# mount /dev/cdrom /mnt/

[root@oldxu ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm [root@oldxu ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm

2.使用 rpm 命令安装互联网上的软件包

#1.wget下载到本地–>安装

#2.直接通过rpm命令安装互联网上的软件包;

[root@oldxu ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3. 0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm

2.2 rpm依赖包安装

包依赖是指 A–>依赖–>B,B–>依赖–>C, 而C–>依赖-- >A 。当我们需要安装的 rpm 类型包出现了依赖关系应该如何处理,比如安装 samba 软件包。

[root@oldxu ~]# rpm -ivh /mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm

error: Failed dependencies:

libxattr-tdb-samba4.so()(64bit) is

needed by samba-0:4.8.3-4.el7.x86_64 libxattr-tdb-samba4.so(SAMBA_4.8.3)

(64bit) is needed by samba-0:4.8.3-4.el7.x86_64

samba-common-tools = 4.8.3-4.el7 is needed by samba-0:4.8.3-4.el7.x86_64

samba-libs = 4.8.3-4.el7 is needed by samba-0:4.8.3-4.el7.x86_64

1.尝试安装依赖包 samba-common-tools

[root@oldxu ~]# rpm -ivh /mnt/Packages/samba-common-tools-4.8.3-4.el7.x86_64.rpm

2.尝试安装依赖包 samba-libs

[root@oldxu ~]# rpm -ivh /mnt/Packages/ [root@oldxu ~]# rpm -ivh /mnt/Packages/samba-libs-4.8.3-4.el7.x86_64.rpm

3.尝试安装依赖包 samba-common-tools

[root@oldxu ~]# rpm -ivh /mnt/Packages/samba-common-tools-4.8.3-4.el7.x86_64.rpm

4.最后尝试安装 samba 主程序包

[root@oldxu ~]# rpm -ivh /mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm

PS: 由于rpm工具安装rpm包依赖关系太强,所以通常我们都是使用 yum 来解决

2.3 rpm升级软件包

下载 zabbix-agent 软件包,分别下载 3.0 低版本、然后下载 4.2 高版来进行测试与实验。

wget https://mirrors.aliyun.com/zabbix/zabbix/3. 0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm

wget https://mirrors.aliyun.com/zabbix/zabbix/4. 2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm

1.先安装 zabbix-agent-3.0 低版本

[root@oldxu ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm

2.尝试使用 rpm -ivh 安装 zabbix-agent-4.2 高版本

(会出现报错)

[root@oldxu ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm

3.使用 rpm -Uvh 升级 zabbix-agent 至 4.2 版本。

(完美解决)

[root@oldxu ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm

2.4 rpm卸载软件包

如果需要卸载 rpm 包,可以先查看该包是否存系统中,然后在进行卸载操作。

1.使用 rpm -q 查询软件包是否存在系统

[root@oldxu ~]# rpm -q zsh

2.使用 rpm -e 卸载软件包

[root@oldxu ~]# rpm -e zsh

2.5 rpm查询软件包

选项 描述

rpm -q 查看指定软件包是否安装

rpm -qa 查看系统中已安装的所有RPM软件包列表

rpm -qi 查看指定软件的详细信息

rpm -ql 查询指定软件包所安装的目录、文件列表

rpm -qc 查询指定软件包的配置文件

rpm -qf 查询文件或目录属于哪个RPM软件

1.查询 vsftpd 这个 rpm 包是否安装

[root@oldxu ~]# rpm -q vsftpd

2.模糊查找系统已安装的 rpm 包

[root@oldxu ~]# rpm -qa |grep ftp

3.查询 vsftpd 软件包相关信息

[root@oldxu ~]# rpm -qi vsftpd

4.查询 vsftpd 软件包所安装后在系统中生成的文件路径

[root@oldxu ~]# rpm -ql vsftpd

5.查询 vsftpd 软件包的主配置文件

[root@oldxu ~]# rpm -qc vsftpd

6.查询配置文件或系统命令是由哪个 rpm 包提供

[root@oldxu ~]# rpm -qf

/etc/vsftpd/vsftpd.conf

[root@oldxu ~]# rpm -qf /usr/sbin/vsftpd

7.查询未安装的 rpm 包会产生哪些文件

[root@oldxu ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm

2.6 rpm包管理小结

1.如何查询 util-linux 软件包安装了哪些文件?

rpm -ql util-linux

2.如何查询 mkdir 命令是由哪个 RPM 软件包安装的?

[root@node ~]# which mkdir /usr/bin/mkdir

[root@node ~]# rpm -qf /usr/bin/mkdir coreutils-8.22-21.el7.x86_64

[root@node ~]# rpm -qf $(which mkdir) coreutils-8.22-21.el7.x86_64

3.安装 .rpm 软件包时,-i、-U 选项有何区别?

-i:安装

-U:升级

3.YUM基本介绍

3.1 什么是YUM

yum/dnf 是 RedHat 及 CentOS 系统中的软件包管理

器。

它能够通过互联网下载 .rpm 格式包进行安装,并能自动处理其依赖间关系,无须繁琐地一次次下载安装。

3.2 什么是[YUM源|yum仓库]

要使用 yum 命令工具安装更新软件,需要有一个包含各

种 rpm 软件包的仓库,这个软件仓库我们一般称为 yum 源。当然这个源可以是本地仓库、也可以是网络仓库。如图所示:

client --ftp/http/file-> yum地址 —>yum仓库(rpm包集合)

配置一个仓库: 就是配置一个源(地址)–> 仓库

repo文件(baseurl地址—>互联网上的一个仓库—》有非常多的rpm软件)

3.3 YUM配置文件

CentOS8 的配置文件

[root@e84356b681bf etc]# cat /etc/yum.conf

[main]

gpgcheck=1

检查来

源是否合法,需要有制作者的公钥信息

installonly_limit=3

同时可

以安装3个软件包、最小为2,设置为0或者1则不限制 clean_requirements_on_remove=True # 删除包时,是否将不再使用的包删除

best=True # 升级

时,自动选择安装最新版,即使缺少包的依赖

skip_if_unavailable=False

CentOS7 的配置文件

[root@oldxu ~]# vim /etc/yum.cnf

cachedir=/var/cache/yum/ b a s e a r c h / basearch/ basearch/releasev

er # 缓存目录
keepcache=0 # 缓存软件包,1启
动 0 关闭
debuglevel=2 # 调试级别
logfile=/var/log/yum.log # 日志记录位置
exactarch=1 # 检查平台是否兼容
obsoletes=1 # 检查包是否废弃
gpgcheck=1 # 检查来源是否合
法,需要有制作者的公钥信息
plugins=1
installonly_limit=5 # 同时可以安装5个

软件包、最小为2,设置为0或者1则不限制

metadata_expire=90m #每小时手动检查元数据

in /etc/yum.repos.d #包含repos.d目录中的.repo文件

3.4 配置YUM源示例

系统默认的源是国外提供,需要替换为国内的源1.配置阿里 yum 源

[root@oldxu ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo \ http://mirrors.aliyun.com/repo/Centos-7.repo

2.配置第三方 yum 源(EPEL)

[root@oldxu ~]# wget -O /etc/yum.repos.d/epel.repo \ http://mirrors.aliyun.com/repo/epel-7.repo

  1. Nginx 官方源,后期在学习 Nginx 时需要使用官方的 yum 源来安装软件

[root@oldxu ~]# vim /etc/yum.repos.d/nginx.repo [nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/7/

$basearch/

gpgcheck=0

enabled=1

YUM 源的查找方式大体一致 Apache,Docker、Nginx、openstack、ELKStack

4.YUM日常操作

4.1 yum查询软件包

1.使用 dnf/yum list 查询所有仓库中的所有软件包

[root@oldxu ~]# yum list [root@oldxu ~]# yum list|grep ftp

2.使用 dnf/yum list installed 查询所有已安装至系

统中的软件包

[root@oldxu ~]# dnf list installed [root@oldxu ~]# yum list installed

3.使用 dnf/yum provides 查询系统命令来自于哪个软

件包(命令可以在当前系统,也可以不在当前系统)

[root@oldxu ~]# rpm -qf $(which cd)

bash-4.2.46-31.el7.x86_64

PS: rpm需要知道命令的绝对路径, 如果不存在该命令是无法查找到该命令所属的软件包

[root@oldxu ~]# yum provides cd [root@oldxu ~]# yum provides sl

4.2 yum安装软件包

1.使用 dnf/yum install 通过仓库获取软件包进行安装

交互,麻烦

[root@oldxu ~]# yum install vsftpd

非交互

[root@oldxu ~]# yum install vsftpd -y

2.使用 dnf/yum localinstall 安装本地的rpm 包,如

果rpm 包存在依赖,会通过当前已有的仓库获取解决依赖关系

[root@oldxu ~]# yum install https://mirrors.aliyun.com/centos/7.6.1810/ os/x86_64/Packages/samba-4.8.3-4.el7.x86_64.rpm

#yum localinstall 安装本的rpm包,会自动查找当前系统上已有的仓库解决依赖关系

[root@oldxu ~]# yum localinstall samba-4.8.3-4.el7.x86_64.rpm -y

4.3 yum重装软件包

当我们安装好服务后,如果不小心删除了服务的配置文件,此时可以通过重装的方式修复。

1.首先删除 vsftpd 配置主文件

[root@oldxu ~]# rpm -qc vsftpd [root@oldxu ~]# rm -f /etc/vsftpd/vsftpd.conf

2.使用 dnf/yum reinstall 对软件进行重新安装

[root@oldxu ~]# yum reinstall vsftpd

3.检查 vsftpd 服务配置文件是否恢复,以及软件是否能正常使用。

[root@oldxu ~]# rpm -qc vsftpd /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf

4.4 yum更新软件包

#1.对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级

[root@oldxu ~]# yum check-update

#2.更新acl软件

[root@oldxu ~]# yum update acl -y

#3.更新整个系统所有的软件,包括内核 (通常刚装完系统会进行执行)

[root@oldxu ~]# yum update -y

4.5 yum删除软件包

[root@oldxu ~]# yum install samba -y [root@oldxu ~]# yum remove samba -y

4.6 yum管理组包

1.使用 dnf/yum groups install 安装一整个组的软件

[root@oldxu ~]# yum groups list [root@oldxu ~]# yum groups install Development tools \ Compatibility libraries \ Base Debugging Tools

2.使用 dnf/yum groups remove 删除包组

[root@oldxu ~]# yum groups remove Base -y

4.7 yum管理仓库

1.列出 dnf/yum repolist 源可用的软件仓库

[root@oldxu ~]# yum repolist

[root@oldxu ~]# yum repolist all # 查看所有的仓库

2.通过 dnf/yum-config-manager 启用和禁用仓库(本

质都是在修改 repo 文件中enable 参数 0 1)

C7

[root@oldxu ~]# yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm -y

C8

[root@oldxu ~]# yum install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm -y

[root@oldxu ~]# yum repolist all|grep mysql [root@oldxu ~]# yum-config-manager –
disable mysql80-community # 关闭仓库 [root@oldxu ~]# yum-config-manager --enable

mysql80-community # 启用仓库

4.8 yum管理历史记录

当我们删除了某个软件时,希望撤销删除的操作,可以使用 yum history undo

1.删除 httpd 软件,然后查看操作记录

[root@oldxu ~]# yum remove httpd -y [root@oldxu ~]# yum history

2.使用 dnf/yum history undo Number 撤销

[root@oldxu ~]# yum history info N [root@oldxu ~]# yum history undo N

这篇关于180天Linux小白到大神-构建YUM仓库实践的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!