IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux 软件包管理rpm与yum -> 正文阅读

[系统运维]Linux 软件包管理rpm与yum

一、软件包介绍

在Linux上可以安装各种程序,或称为软件包,Linux软件包分为三类:

分类安装特点
rpm包预先编译打包,安装简单通常软件的稳定版本会被官方做成rpm包,软件版本可能偏低
源码包手动编译打包,安装繁琐软件版本丰富,可选择性强
二进制包解压即可使用,安装简单不能修改源代码

1、rpm包

在主流的linux系统上,多数软件的安装、升级、移除以及维护工作都是使用RPM软件包管理程序来完成的,那什么是RPM软件包呢?

RPM 是Red-Hat Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,
但是其原始设计理念是开放式的,通常软件的稳定版会被官方做成rpm,所以软件版本偏低。

2. rpm包格式

在这里插入图片描述

# 例1
abrt-python-doc-2.1.11-57.el7.centos.noarch.rpm
?
	abrt-python-doc     #软件包的名称?
	2.1.11              #软件的版本 ?
	57                  #软件编译之后的发布的次数 ?
	el7                 #适合的操作系统的版本 ?
	noarch              #适用于不同版本的CPU  ?
	.rpm                #后缀名 

例2.
nginx-1.20.1-2.el7.x86_64 
	nginx:        软件包名
	1.20.1:      版本号
	2:           发布次数
	el7:          linux7 操作系统
	x86_64:     硬件平台
	.rpm :        后缀


3.rpm包使用平台

redhat centos  redora  suse
?
# 查看自己当前平台
[root@localhost ~]# uname -m
x86_64
[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

4. 管理rpm包有两种命令

# 1、rpm命令:
    需要自己找到rpm包,并且手动解决包的依赖性关系
    ps:实际情况下,很难分辨缺少什么依赖包
    
# 2、yum命令:
    相关rpm包事先都被存放于一个仓库里,仓库包含了所有的依赖包,所以yum按照可以帮我们解决依赖性问题

5.RPM包获取

  1. 本地的ISO镜像光盘(软件包可能存在版本偏低情况) : 挂载镜像有以下三种方式
方式1[root@localhost ~]# mount /dev/cdrom /opt/
?
方式2[root@localhost ~]# mount /dev/sr0 /opt/
?
方式3
[root@localhost ~]# mount -o loop /xxx.iso /opt   # 先把镜像源传到本地
?
查看光盘里的rpm包
[root@localhost ~]# ls /opt/Packages/
  1. 自己去网上下载rpm包进行安装
1. 华为云开源镜像站:https://repo.huaweicloud.com/centos/7/os/x86_64/Packages/
2.  epel源中下载?, redhat系列操作系统扩展软件包仓库
    wget https://repo.huaweicloud.com/epel/7/x86_64/Packages/n/nginx-1.20.1-2.el7.x86_64.rpm
3.  联网从yum仓库里获取rpm包   # yum的时候会自动解决依赖

二、安装

  1. 安装
rpm -ivh  (本地rpm包全名,或目标源地址) (可以wget下载到本地或者直接放目标源地址?)
yum install (包名或包全名,或者远程目标地址)  如果跟全名,必须把包先下载到本地
-i:安装软件包
-v:显示安装过程
-h:显示安装进度条
  1. 卸载:
rpm -e <RPM包名或包全名>
yum remove 包名?
  1. 升级:
rpm -Uvh <RPM本地包全名,或远程目标源地址> (如果事先未按装,则相当于安装),?如果降级,需要先卸载高版本


yum update <包名,包全名,远程目标源地址> (如果本地事先未安装此包,不能升级)
升级时本地安装的包要比升级的版本低,如果降级,需要先卸载高版本。
直接跟包名,默认升级到最新版,跟包全名,需要把包先下载到本地。远程地址版本比升级的版本高

  1. 查询
1. rpm -qa                     #查询系统中安装的所有RPM软件包?

2. rpm -qa | grep php         #检索系统中已经安装有关php的软件包
?
3. rpm -q (RPM包名)           #查询指定软件包是否已安装
[root@localhost ~]# rpm -q python
python-2.7.5-90.el7.x86_64
 
        
4. rpm -qi <RPM包名>           #查询系统中已安装包的描述信息
[root@localhost ~]#  rpm -qi nginx
Name        : nginx
Epoch       : 1
Version     : 1.20.1
Release     : 2.el7
Architecture: x86_64
Install Date: Mon 19 Jul 2021 02:34:31 PM CST
Group       : Unspecified
Size        : 1766783
License     : BSD
Signature   : RSA/SHA256, Wed 02 Jun 2021 08:27:10 AM CST, Key ID 6a2faea2352c64e5
Source RPM  : nginx-1.20.1-2.el7.src.rpm
Build Date  : Wed 02 Jun 2021 08:24:16 AM CST
Build Host  : buildvm-x86-14.iad2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : https://nginx.org
Bug URL     : https://bugz.fedoraproject.org/nginx
Summary     : A high performance web server and reverse proxy server
Description :
Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and
IMAP protocols, with a strong focus on high concurrency, performance and low
memory usage.

?
5. rpm -ql <RPM包名>           #查询系统中已安装包里所包含的文件(包释放时都将文件释放到哪里)
[root@localhost ~]# rpm -ql python
/usr/bin/pydoc
/usr/bin/python
/usr/bin/python2
/usr/bin/python2.7
/usr/libexec/platform-python
/usr/share/doc/python-2.7.5
/usr/share/doc/python-2.7.5/LICENSE
/usr/share/doc/python-2.7.5/README
/usr/share/man/man1/python.1.gz
/usr/share/man/man1/python2.1.gz
/usr/share/man/man1/python2.7.1.gz

?
7. rpm -qc <RPM包名>              #查询指定软件包的所有配置文件
[root@localhost ~]# rpm -qc nginx
/etc/logrotate.d/nginx
/etc/nginx/fastcgi.conf
/etc/nginx/fastcgi.conf.default
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params.default
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/mime.types.default
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
/etc/nginx/scgi_params
/etc/nginx/scgi_params.default
/etc/nginx/uwsgi_params
/etc/nginx/uwsgi_params.default
/etc/nginx/win-utf                            
        
8. rpm -qd <RPM包名>               # 查询某个包安装的帮助文档
[root@localhost ~]# rpm -qd nginx
/usr/share/doc/nginx-1.20.1/CHANGES
/usr/share/doc/nginx-1.20.1/README
/usr/share/doc/nginx-1.20.1/README.dynamic
/usr/share/doc/nginx-1.20.1/UPGRADE-NOTES-1.6-to-1.10
/usr/share/man/man3/nginx.3pm.gz
/usr/share/man/man8/nginx-upgrade.8.gz
/usr/share/man/man8/nginx.8.gz
                                
    
9. rpm -qf 文件路径     # 查询系统中指定文件或命令所属的软件包
[root@localhost ~]# rpm -qf /etc/passwd
setup-2.8.71-11.el7.noarch
[root@localhost ~]# rpm -qf `which nginx`
nginx-1.20.1-2.el7.x86_64


?10. yum provides [命令或文件路径] # 本地未安装的情况下也可以查询区别于rpm -qf

11. -p(参数)           # 在上述选项的基础上加选项-p,就可以查看尚未安装的rpm包信息
[root@localhost ~]# rpm -e dos2unix  # 先卸载一下,证明本地rpm数据库中没有该包信息?
[root@localhost ~]# rpm -qip /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm

?
 - 额外选项
    --nomd5     # 不检验软件包的签名
    --nodeps    # 忽略依赖性安装软件,安装后软件有可能无法使用,最好是解决依赖性后再安装
    [root@localhost ~]# rpm -e dos2unix  --nodeps  # 忽略依赖关系
        
    --force     # 强制安装软件包,只有安装和升级可以强制执行

二、yum管理rpm包

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

client---->ftp:http:file----->yum地址----->yum仓库(rpm包集合)
配置一个yum仓库,就是配置一个源(地址)----->指向互联网上的仓库
配置文件
[root@localhost yum.repos.d]# vim /etc/yum.conf 
[main]
cachedir=/var/cache/yum/$basearch/$releasever # 缓存目录
keepcache=0   # 0表示不缓存,1表示开启缓存
debuglevel=2   # 调试级别
logfile=/var/log/yum.log # 日志路径
exactarch=1  # 检查平台是否兼容
obsoletes=1  # 检查包是否废弃
gpgcheck=1   # 检查来源是否合法,需要有制作者的公钥信息
plugins=1
installonly_limit=5 # 同时可以安装软件包个数为5 设为01表示不受限制
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

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

仓库
存放了一个所有相关软件包的一个文件夹
能作为yum仓库必必须具备两点:
1. 文件下涵盖所有的软件包
2. 该文件夹下必须要有一个文件记录了本文件夹下所包含软件包的依赖关系。

常用选项说明:
#仓库        
yum repolist                     # 查询可用仓库
yum repolist all                 # 查看包括已启用或禁用的所有仓库状态 ?
# 关闭与启用仓库:本质:都是在修改repo文件中的enable的值 0 不启用 1 启用
yum-config-manager --disable epel        #关闭仓库epel
yum-config-manager --enable epel         #启用仓库epel ?
#查看        
yum list                        #列出可用仓库中所有的软件包
yum list | less
yum grouplist                   #列出可用仓库中的软件组
yum list installed              # 查询已经安装的
yum provides /usr/sbin/ifconfig   #查询命令所属的软件包,可以不加路径,只写命令名字
与rpm -qf的区别在于可以查询未按装的命令,rpm -qf后面只能跟文件或命令的绝对路径
  
#安装        
yum install httpd httpd-tools  #加上-y选项可以变成非交互
yum groupinstall "开发工具" -y   #安装软件组,一个软件组中包含了多个软件包
yum groups install "开发工具" -y   #同上
yum localinstall  # 安装本的rpm包,会自动查找当前系统上已有的仓库解决依赖关系


#卸载        
yum remove httpd httpd-tools http*  #卸载软件包
yum groupremove "开发工具" -y.       #卸载软件组
yum groups remove "开发工具" -y      #同上

?
#重装        
yum reinstall httpd             #不小心删除了配置文件的时,可以reinstall一下 ?
#更新       
yum check-update                 # 检查可以更新的软件包 ?
yum update -y                    #更新所有软件包,包括内核,通常只在刚装完系统时执行

yum update httpd -y              #更新某个软件包


#缓存              
yum makecache                    #制作元数据缓存
yum clean all                    #清理元数据缓存
vim /etc/yum.conf                #默认软件包下载安装后会自动删除
                               #设置keepcache=1 即开启了软件包缓存
                               #缓存目录为配置文件中指定的cachedir ?
#历史记录
yum history                       # 查看执行过的yum命令历史记录
yum history info ID号             # 查看具体某一条yum命令的详细信息
yum history undo ID号             # 撤销执行过的历史命令

         ?
# 关于安装需要注意: 无论yum安装的软件来自何方,yum时刻以自己仓库中的repodata存储的依赖关系为准,如果有多个仓库,就依次检索
#1、yum直接安装公网的rpm包, 会自动查找当前系统上已有的仓库解决依赖关系 yum install https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba-4.8.3-4.el7.x86_64.rpm

#2、Yum直接安装本地的rpm包,会自动查找当前系统上已有的仓库解决依赖关系 yum localinstall -y /mnt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm


要使用yum前,需要准备一个yum源(我们也称为yum仓库),
这个可以是一个互联网上的仓库,也可以是本地自己搭建的仓库.仓库里面有什么呢?里面全部都是.rpm的软件包.一台linux,可以添加N多个yum源,
能搜索的软件包数量就是N个yum源之和.

系统常见yum源

1.自定义的本地源 ?
2.网络上的源头,如:base基础源、epel扩展源、与服务相关的源(官网)
wget -O /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo2

.配置第三方 yum 源(EPEL)
wget -O /etc/yum.repos.d/epel.repo  http://mirrors.aliyun.com/repo/epel-7.repo

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 23:07:26  更:2021-07-22 23:07:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 11:31:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计