Liunx软件包管理(上)
目录
一.前言
二.rpm
RPM 包的结构
安装与升级
卸载
查询
验证
信息输出
三.yum
Yum 的特点
安装和卸载
查询和信息
仓库管理
维护和调试
常用选项
四.更换镜像源
常用的镜像源
更换镜像源基础操作
一.前言
Linux 的软件包管理是指在 Linux 操作系统中安装、更新、删除和管理软件包的过程。软件包是指一个程序及其相关的元数据、配置文件和其他必要的资源。Linux 有许多不同的发行版,各自有其特定的软件包管理工具。以下是一些主要的 Linux 软件包管理工具和相关知识:
-
APT (Advanced Package Tool):
- 用于基于 Debian 的发行版,例如 Ubuntu、Debian 等。APT 可以通过命令行或图形界面工具(如 Synaptic)来管理软件包。
- 常用命令包括
apt-get install、apt-get update、apt-get upgrade、apt-get remove等。
-
Yum 和 DNF:
- Yum 主要用于基于 Red Hat 的发行版,例如 Fedora、CentOS、Red Hat Enterprise Linux (RHEL) 等。DNF 是 Yum 的后继者,适用于 Fedora 和其他较新的发行版。
- 常用命令包括
yum install、yum update、yum remove,在 DNF 中类似。
其他发行版少见不在赘述,主要流行使用ubuntu中的apt包管理工具和centos中yum包管理工具
那么本文还是针对centos中yum和rpm的软件管理进行详细解读。
二.rpm
RPM(Red Hat Package Manager)是一个用于管理软件包的系统,在基于 Red Hat 的 Linux 发行版中使用,包括 Red Hat Enterprise Linux(RHEL)、CentOS、Fedora 等。RPM 文件通常包含一个软件包,以及相关的元数据,如版本信息、依赖关系、安装脚本等。
rpm包名称所代表意思解释:
1. httpd-2.4.6-45.el7.centos.x86_64.rpm
httpd:软件包名称,代表 Apache HTTP 服务器。
2.4.6:软件版本号。
45:发行号,表示这是第 45 个构建版本。
el7:表示该软件包针对 CentOS 7 或其他 Red Hat Enterprise Linux 7 的衍生版。
centos:表示软件包来自 CentOS 项目。
x86_64:软件包的架构,适用于 64 位系统。2. kernel-3.10.0-1127.el7.x86_64.rpm
kernel:软件包名称,代表 Linux 内核。
3.10.0:内核的版本号。
1127:发行号,指示这个内核构建的版本。
el7:表示针对 CentOS 7 或 RHEL 7。
x86_64:64 位架构。3. bash-4.2.46-34.el7_9.x86_64.rpm
bash:软件包名称,代表 Bash Shell。
4.2.46:软件版本号。
34:发行号。
el7_9:表示针对 CentOS 7.9。
x86_64:64 位架构。额外信息
有些 RPM 软件包名称可能包含额外的信息,比如测试版本、预发行版、补丁等:
beta/rc:表示测试版或预发行版,例如 1.0.0-1.beta1.x86_64.rpm。
debug:调试版本,例如 httpd-debuginfo-2.4.6-45.el7.centos.x86_64.rpm。
src:源码包,例如 httpd-2.4.6-45.el7.centos.src.rpm。
以下是关于 RPM 的详细解释,包括常见操作和管理方法:
RPM 包的结构
一个典型的 RPM 包包括:
- 软件内容:实际的程序文件、库、配置文件、文档等。
- 元数据:描述包的信息,包括名称、版本、发行号、依赖关系、维护者、摘要、说明等。
- 安装脚本:在安装或卸载期间执行的脚本,以处理特定任务,如配置、数据库初始化等。
安装与升级
-i:安装软件包。-U:升级软件包,如果软件包已安装则升级,否则安装。-F:升级(仅升级已安装的软件包)。--force:强制安装或升级,可能覆盖现有文件。--replacepkgs:即使软件包已安装,也会重新安装。
卸载
-e:卸载软件包。--nodeps:卸载时忽略依赖关系(小心使用,可能导致系统不稳定)。
查询
-q:查询软件包(可以是已安装的或单独的 RPM 文件)。-qi:查询详细信息,包括版本、描述、维护者等。-ql:列出软件包中的文件。-qR:查询软件包的依赖关系。-qf:查询哪个软件包提供了特定的文件。-qp:查询未安装的 RPM 文件的信息。
验证
-V:验证已安装的软件包,检查其完整性。--nodigest:验证时忽略摘要。--nosignature:验证时忽略签名。
信息输出
-v:输出详细信息。-h:显示安装进度(例如,哈希字符表示安装进度)。
常见操作
RPM 包管理提供了多种操作方法,以安装、查询、验证、升级、卸载软件包等。安装软件包
rpm -ivh package.rpm
-i 表示安装,-v 表示详细信息,-h 会显示安装进度。升级软件包
rpm -Uvh package.rpm
-U 表示升级,如果软件包已存在则升级,否则安装。查询软件包
rpm -q package_name
-q 表示查询。你可以使用包名或已安装的 RPM 文件路径进行查询。查询已安装软件包的详细信息
rpm -qi package_name
-i 表示详细信息,包括版本、维护者、说明等。查询软件包中的文件
rpm -ql package_name
列出软件包中包含的所有文件。检查软件包的依赖关系
rpm -qR package_name
-R 表示依赖关系。假设你想知道 /etc/passwd 文件来自哪个软件包:
rpm -qf /etc/passwd验证软件包的完整性
rpm -V package_name
-V 表示验证。如果软件包已被修改或损坏,这个命令会显示差异。卸载软件包
rpm -e package_name
-e 表示卸载。如果有依赖关系,RPM 会警告你并阻止卸载。高级用法
签名验证
RPM 包可以使用 GPG 签名进行验证,确保软件包的来源可信。
rpm --checksig package.rpm构建 RPM 包
要构建 RPM 包,你需要编写 SPEC 文件,该文件描述了包的构建过程。
rpmbuild -ba package.spec创建 RPM 仓库
使用 createrepo 工具创建 RPM 仓库,以便在多个系统之间共享和安装 RPM 包。
三.yum
Yum(Yellowdog Updater, Modified)是一种用于管理和安装软件包的工具,广泛应用于基于 Red Hat 的 Linux 发行版,如 CentOS、Red Hat Enterprise Linux(RHEL)和 Fedora。Yum 使用 RPM 包管理系统,并通过仓库实现软件包的自动化管理,包括安装、更新、卸载、查询和依赖关系处理。
Yum 的特点
- 依赖关系管理:Yum 能自动处理软件包的依赖关系,确保在安装或更新时满足所需的依赖条件。
- 仓库支持:Yum 使用仓库来存储和分发软件包,支持远程和本地仓库。
- 自动更新:Yum 可以自动检查仓库中的软件包更新,并支持自动化更新。
- 插件支持:Yum 支持插件,可添加额外的功能,如缓存、下载加速等。
安装和卸载
install: 安装一个或多个软件包。remove或erase: 卸载一个或多个软件包。update: 更新一个或多个软件包。如果不指定包名,则更新系统中的所有软件包。reinstall: 重新安装指定的软件包。downgrade: 降级软件包到一个更早的版本。
查询和信息
list: 列出软件包。常用的参数有installed(已安装的软件包)、available(可用的软件包)、all(所有的软件包)。info: 获取有关软件包的详细信息。search: 搜索与关键字匹配的软件包。provides: 查询提供特定文件或功能的软件包。deplist: 显示软件包的依赖关系。groupinfo: 显示软件包组的信息。repoquery: 查询软件包所属的仓库。
仓库管理
repolist: 列出所有仓库及其状态。config-manager: 管理仓库配置。--enable-repo=<repo>: 启用指定的仓库。--disable-repo=<repo>: 禁用指定的仓库。
维护和调试
clean: 清理缓存。常用选项有all、metadata、expire-cache。history: 显示 Yum 操作的历史记录。可用undo撤销某些操作。check: 检查已安装的软件包,以确保它们没有问题。debug-dump: 生成 Yum 的调试信息,用于排查问题。
常用选项
-y: 自动确认所有操作,无需用户交互。-q: 静音模式,减少输出。-v: 详细模式,提供更多输出信息。--skip-broken: 跳过损坏的软件包或依赖关系,继续执行操作。--nogpgcheck: 不检查 GPG 签名。通常用于安装未签名的软件包,但需小心使用。--disableexcludes: 在进行操作时,忽略排除规则。
基本用法
以下是一些常见的 Yum 命令和它们的用途:安装软件包
yum install package_name
其中 package_name 是你想安装的软件包的名称。卸载软件包
yum remove package_name
或
yum erase package_name更新系统
yum update
这将更新所有软件包到仓库中的最新版本。更新特定软件包
yum update package_name搜索软件包
yum search keyword
这个命令会搜索与 keyword 相关的软件包。列出已安装的软件包
yum list installed列出可用软件包
yum list available查看软件包详细信息
yum info package_name查看软件包的依赖关系
yum deplist package_name清理缓存
yum clean all历史记录与回滚
Yum 保留了安装、卸载和更新的历史记录。可以使用 yum history 查看历史记录:
yum history#yum history 命令允许查看 Yum 操作的历史记录,并执行回滚、撤销或重做操作。回滚最近一次操作
假设最近一次操作是错误的,可以使用以下命令撤销它:
yum history undo last
这将撤销最近的一次 Yum 操作。回滚特定操作
如果想撤销特定的操作,可以提供操作 ID。例如,要撤销 ID 为 5 的操作,使用以下命令:
yum history undo 5重做操作
如果想重做已撤销的操作,可以使用 yum history redo。
重做特定操作
例如,要重做 ID 为 5 的操作,使用以下命令:
yum history redo 5高级用法
Yum 提供了一些高级功能,用于更复杂的操作:组安装
Yum 支持安装软件包组,通常用于安装一组相关的软件包,如 "Development Tools"。
yum groupinstall "Development Tools"仓库管理
可以通过编辑 /etc/yum.repos.d/ 中的配置文件来管理 Yum 的仓库。还可以使用 yum-config-manager 管理仓库:
yum-config-manager --add-repo=http://example.com/repo插件
Yum 支持插件,可用于扩展功能,例如 yum-plugin-fastestmirror 用于选择最快的镜像,yum-plugin-priorities 用于设置仓库优先级。
总结:
rpm是一个低级的包管理工具;rpm 适用于独立安装或查询 rpm 软件包;rpm 不会自动安装缺失的依赖关系,需要用户手动处理。
yum是一个高级的包管理工具;yum 使用仓库来获取软件包,支持远程和本地仓库;yum 自动处理依赖关系,确保在安装或升级时满足所有依赖条件;yum 支持软件包组、自动更新、插件等高级功能
因此,我们在学习使用centos系统中常用yum,少数情况下使用rpm,二者用途和功能不同,rpm适用于基础。
四.更换镜像源
在 CentOS 系统中,镜像源是指存储软件包的服务器位置。更换镜像源通常是为了加快下载速度、提高稳定性,或是使用更可靠的源。当你发现系统更新缓慢或频繁遇到错误时,更换镜像源可能是一个有效的解决方案。
在了解完镜像源后,再介绍以下在为什么要换。简单来讲就是这个系统官方是国外人发明的,软件仓库在国外,我们要用就会慢,然后国内有许多机构完整克隆拉过来,这些镜像源通常比默认的国外源更快,因为它们离中国的用户更近。
常用的镜像源
一些常见的 CentOS 镜像源包括:
- 阿里云(Aliyun)
- 腾讯云(Tencent Cloud)
- 华为云(Huawei Cloud)
- 中科大(USTC)
更换镜像源基础操作
在我们目前学习的centos7或别的版本系统中,存放镜像源的位置在 /etc/yum.repos.d/ 目录里
-
备份原始配置 在更换镜像源之前,最好备份原始的 YUM 配置,以防出现问题可以恢复:
cp -r /etc/yum.repos.d/ /etc/yum.repos.d.backup/ -
选择合适的镜像源 选择一个镜像源,例如阿里云,并获取相应的 YUM 配置文件。例如,阿里云的 CentOS 7 配置文件可以在 阿里云镜像站 找到。其他源同样要去其官方镜像站
-
下载并替换配置文件
下载新的仓库配置文件。以阿里云的 CentOS 7 为例,获取适当的配置文件,然后将其放入/etc/yum.repos.d/目录: #在进入到镜像站点进去想要的镜像里,官方通常会提供步骤与命令。 #以我们学习常用的centos7为例,下载如下两个源,就够用拉 #centos基础源 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo #epel扩展源 wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo -
清理缓存 在更新镜像源后,清理 YUM 的缓存,以确保使用新的源:
yum clean all -
更新软件包 检查新的镜像源是否工作正常,并测试系统更新:
yum makecache yum update -
验证镜像源 执行
yum repolist检查仓库列表,确保新的镜像源被正确加载yum repolist
相关文章:
Liunx软件包管理(上)
目录 一.前言 二.rpm RPM 包的结构 安装与升级 卸载 查询 验证 信息输出 三.yum Yum 的特点 安装和卸载 查询和信息 仓库管理 维护和调试 常用选项 四.更换镜像源 常用的镜像源 更换镜像源基础操作 一.前言 Linux 的软件包管理是指在 Linux 操作系统中安…...
华为eNSP中型企业局域网网络规划设计(下)
→b站传送门,感谢大佬← →华为eNSP中型企业局域网网络规划设计(上)← →拓扑图传送门,可以自己配置着玩← 配置ospf AR3 [AR3]ospf 1 router-id 3.3.3.3 //出口默认路由 [AR3-ospf-1]default-route-advertise always #area…...
C语言(指针)1
Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,关注收藏,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言 本系列文章为个人学习笔记&#x…...
perl:用 MIDI::Simple 生成midi文件,用 pygame 播放 mid文件
在 csdn.net 下载 strawberry-perl-5.32.1.1-64bit.zip 解压安装在 D:\Strawberry\ 运行 cpan install MIDI::Simple D:\Strawberry\c\bin\gmake.exe test -- OK Running make install for CONKLIN/MIDI-Perl-0.84.tar.gz Installing D:\Strawberry\perl\site\lib\MIDI.pm I…...
数据库-脏读
脏读(Dirty Read)是数据库并发控制中的一个概念,指的是一个事务读取了另一个尚未提交的事务的修改。由于另一个事务的修改可能最终会被撤销(即发生回滚操作),因此,当前事务读取到的数据可能是“…...
react 用合计项
在React中,如果你想要计算一个数组中的所有项目,你可以使用reduce方法。这是一个JavaScript内置的数组方法,它允许你累计数组中的值。 以下是一个简单的React组件示例,它计算一个商品列表中所有商品的总价: import…...
IP 地址追踪工具促进有效的 IP 管理
网络 IP 地址空间的结构、扫描和管理方式因组织的规模和网络需求而异,网络越大,需要管理的 IP 就越多,IP 地址层次结构就越复杂。因此,如果没有 IP 地址管理(IPAM)解决方案,IP 资源过度使用和地…...
快手蓝V商家电话采集软件操作教程
抖音作为全球最受欢迎的短视频平台之一,拥有庞大的用户基础。其中不乏拥有蓝V认证的大V用户,他们的手机号码对于一些市场营销人员来说是非常有价值的。但是,抖音并没有公开这些大V用户的手机号码,怎样采集到他们的手机号码呢&…...
工业机器人应用实践之玻璃涂胶(篇二)
工业机器人 接上篇文章,浅谈一下实践应用,具体以玻璃涂胶为例: 了解工业机器人在玻璃涂胶领域的应用认识工具坐标系的标定方法掌握计时指令的应用掌握人机交互指令的应用掌握等待类指令用法(WaitDI、WaitUnitl 等)认…...
C++ 455. 分发饼干
文章目录 一、题目描述二、参考代码 一、题目描述 示例 1: 输入: g [1,2,3], s [1,1] 输出: 1 解释: 你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。 虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩…...
未来娱乐新地标?气膜球幕影院的多维体验—轻空间
在中国,一座独特的娱乐场所正在崭露头角:气膜球幕影院。这个融合了气膜建筑与激光投影技术的创新场所,不仅令人惊叹,更带来了前所未有的科幻娱乐体验。让我们一起探索这个未来的娱乐空间,感受其中的多维魅力。 现场演出…...
工业机器人应用实践之玻璃涂胶(篇三)
工业机器人 接上篇文章,浅谈一下实践应用,具体以玻璃涂胶为例: 了解工业机器人在玻璃涂胶领域的应用 认识工具坐标系的标定方法 掌握计时指令的应用 掌握人机交互指令的应用 掌握等待类指令用法(WaitDI、WaitUnitl 等࿰…...
基于Huffman编码的字符串统计及WPL计算
一、问题描述 问题概括: 给定一个字符串或文件,基于Huffman编码方法,实现以下功能: 1.统计每个字符的频率。 2.输出每个字符的Huffman编码。 3.计算并输出WPL(加权路径长度)。 这个问题要求对Huffman编码算…...
处理VS2022中(C/C++)scanf报错问题(3种)
#pragma warning(disable:4996)//第一种:处理scanf在VS2022中报错 #define _CRT_SECURE_NO_WARNINGS//第二种:处理scanf在VS2022中报错 #include<bits/stdc.h> using namespace std; int main() { int a, b; scanf(“%d %d”, &a, &b);//第三种&…...
C#面:Session 喜欢丢值且占内存,Cookis不安全,请问 C# 可以用什么办法代替这两种原始的方法
可以使用 用 ViewState,stateserver。 在 C# 中,ViewState、StateServer 和 Session 都是用于在 Web 应用程序中存储和管理状态信息的机制。它们可以用来在不同的页面之间传递数据或者在同一页面的不同请求之间保持数据的持久性。 ViewState࿱…...
Python并发编程 05 锁、同步条件、信号量、线程队列、生产者消费者模型
文章目录 一、基础概念二、同步锁三、线程死锁和递归锁四、同步条件(event)五、信号量六、线程队列(queue)1、常用方法2、queue模块的三种模式(1)FIFO队列(2)LIFO队列(3&…...
UIKit之UIButton
功能需求: 点击按钮切换按钮的文字和背景图片,同时点击上下左右可以移动图片位置,点击加或减可以放大或缩小图片。 分析: 实现一个UIView的子类即可,该子类包含多个按钮。 实现步骤: 使用OC语言…...
阿里云VOD视频点播流程(2)
二、视频点播 1、入门代码 基于OSS原生SDK上传 ,参考文档:https://help.aliyun.com/zh/vod/user-guide/upload-media-files-by-using-oss-sdks?spma2c4g.11186623.0.0.1f02273fj4lxNJ 视频点播面向开发者提供了丰富的上传方式,其中上传SDK&…...
在Ubuntu上搭建幻兽帕鲁服务器
简介 幻兽帕鲁是一款多人在线角色扮演游戏,玩家可以捕捉和训练各种各样的幻兽,并与其他玩家进行战斗和交易。如果您想拥有自己的幻兽帕鲁服务器,可以按照以下步骤在 Ubuntu 上进行搭建。 准备工作 在开始之前,您需要准备以下几…...
Java中常用类String的不可变性详解
目录 一、String类的概述 二、String不可变性的原理 三、String不可变性的优点 四、String不可变性的缺点及解决方案 五、总结 一、String类的概述 在Java中,String类是一个代表字符串的类。它是Java核心API的一部分,用于处理文本数据。String对象…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
