Linux软件管理:rpm软件包与yum管理工具

linux 软件

大家有想过平时我们使用的软件原本的样子都是什么嘛,像.exe 运行程序还有 linux 上的可执行文件,其实按照我的理解都是文件,使用想要规范的文本编写,然后经过编译的一个符合不同平台规范的可执行程序,本质就是文件。

Linux 上的软件安装也是如此,Linux 中一切皆文件。

软件管理大概流程:编写一个纯文本文件(需要不同编程软件可视化),然后经过编码编码等成为一个可执行文件,里面包含了相关依赖脚本及依赖信息,加上一些与程序相关的信息(厂家、更新日期、版本、安装位置等等),建立成一个数据库信息,类似与 window 于 windows 的程序与功能面板。Linux 上就使用上述机制进行软件管理,分别是RPM和 debian 的dpkg,我这边主要使用 centos,因此主要了解 RPM 的使用与管理 rpm 工具。

1、RPM 基础

RPM 全名是(RedHat Package Manager),最初是 Red Hat 发展出来的,是一种以数据库记录方式将所需要的软件安装到 Linux 系统的一套软件管理机制。

大概步骤:

1、要安装的软件经过编译打包成为 rpm 机制的文件,打包好的软件里面默认记录的软件安装时必须具备的依赖属性的软件。

2、当你的主机需要安装这个 rpm 软件时,rpm 机制会依照软件记录的数据查询当前主机是否满足依赖软件,满足则安装,否则不予安装,如果安装则将该软件信息写入 linux 的 rpm 数据库,以便未来的查询、验证、安装、卸载。

3、你要安装的 rpm 软件是经过相同系统进行编译打包,因此一般不同的系统打包的 rpm 不能通用,也就是不同发行版 Linux 发布的 RPM 不能用在其他的发行版 Linux 上,如 Centos6 和 Centos7 使用不同的 RPM 源。

4、rpm 软件包以.rpm 结尾

5、系统rpm数据库位置:/var/lib/rpm ,不同发行版可能不一样

示例:

mysql-server-8.0.26-1.module_el8.4.0+915+de215114.x86_64
# 以 - 区分不同部分
mysql-server:软件名称
8.0.26:软件版本
1.module_el8.4.0: RPM包的版本号,它包括主版本号(1)、模块版本号(module)、发行版版本号(el8.4.0)
+915+de215114: 这部分是构建版本号,通常由编译时的配置和一些其他信息组成。
.x86_64: 这表示的是该RPM包适用于x86_64架构的处理器。

1.1、使用rpm进行安装安装

rpm -ivh mysql-server
-i: install 安装
-v: 查看更详细的安装信息
-h: 显示安装进度--force:强制安装,可能出现问题
--prefix 目录路径:强行安装到rpm非指定目录下
--test:测试是否能够安装,rpm -ivh mysql --test

1.2、升级:

rpm [-Uvh/Fvh] mysql-server
-Uvh: 后面接的软件没有安装过则直接安装,安装过则更新至最新版
-Fvh: 只会更新,不会新安装

1.3、查询:

查询Linux系统上安装的rpm软件信息。

如果通过编译方式就无法通过 rpm 以及 yum 查看信息。

# query查询,使用rpm查询都需要参数-q
rpm -qa:  已安装在系统上软件
rpm -q: 仅查询
rpm -qf: rpm文件,查看rpm文件
rpm -qi: 列出软件的详细信息
rpm -ql: 列出软件的目录和文件
rpm -qc: 列出软件在/etc上的配置文件
rpm -qR: 列出软件依赖软件包含的文件

1.4、验证:

用于验证现在软件文件是否被修改,就是与rpm记录的原始状态相比是否有改变,如配置文件位置,文件名称,文件大小等

rpm -V mysql-server
-V: 被修改过才会出现
-Va: 列出所有可能被修改的文件
-Vp: 文件名 列出文件是否被修改
-Vf: 显示某个文件是否被修改# 显示结果
[root@localhost rpm]# rpm -V mysql-server
.......T.  c /etc/my.cnf.d/mysql-default-authentication-plugin.cnf
S.5....T.  c /etc/my.cnf.d/mysql-server.cnf
上面结果显示文件的大小和MD5校验值已经被修改了。S 文件的大小改变
M rwx属性被修改
5 MD5校验值被修改
D 设备的主次代码被修改
L 链接路径改变
U 用户的所属用户改变
G 文件的所属组改变
T 文件的建立时间被改变
P 功能被改变后面文件类型:
c 配置文件
d 数据文件
g 幽灵文件
l 许可文件
r 自述文件

通过 rpm -V 可以检查软件或者所属的文件是否被修改

1.5、卸载:

通过-e 参数进行卸载,但是经常会出现依赖无法卸载,强行卸载有风险。

rpm -e mysql# 由于rpm经常会安装、删除、升级等可能导致/var/lib/rpm内文件损坏,可以进行数据库信息重建
rpm --rebuilddb 重建数据库

2、YUM软件管理工具

rpm管理的缺点:

  • 依赖问题
  • 卸载问题
  • 无法跨平台使用
  • 对于大型软件包的安装速度较慢

yum(全称为Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。YUM是C/S架构设计,本地电脑为客户端,从官方或者第三方提供yum服务器作为服务器端。

1、整理本地rpm数据库信息

2、从官方yum服务器获取rpm软件信息

3、需要下载的软件缓存在/var/cache/yum,新版可能在/var/cache/dnf

4、需要下载更新软件时只要联网从服务器一次性下载依赖和软件进行安装

yum使用方法:

yum [option] 查询软件  相关参数
参数:
-y: 自动选择yes
--installroot=/some/pat: 指定安装路径,不使用默认路径# option
search: 搜索
list:   目前yum服务器所管理的所有软件与版本,类似rpm -qa
info:   列出软件的详细信息以及是否安装 类似rpm -qai
provides: 从文件查找软件 rpm -qfyum list updates: 查看目前yum可以更新的软件及仓库名

安装与升级软件:

yum install/update 软件
install: 安装软件
update: 升级软件,若要整个系统升级直接yum update 不跟具体软件即可

删除卸载软件:

yum remove nginx

yum 配置文件 默认配置文件路径/etc/yum.repos.d/ 在一个 xxx.repo 文件里面定义 yum 源,通过 enabled 启用和禁用

[base]
name=CentOS-8.5.2111 - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/$basearch/os/http://mirrors.aliyuncs.com/centos-vault/8.5.2111/BaseOS/$basearch/os/http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/BaseOS/$basearch/os/
gpgcheck=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official#additional packages that may be useful
[extras]
name=CentOS-8.5.2111 - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/extras/$basearch/os/http://mirrors.aliyuncs.com/centos-vault/8.5.2111/extras/$basearch/os/http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/extras/$basearch/os/
gpgcheck=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official[base]:软件源的名字,中括号,不能相同
name:名称随意
baseurl:使用的镜像站,可以多个
mirrorlist:有一些为这个名字,意思一样
gpgcheck=0: 是否检查RPM签名,0关闭,1开启
gpgkey:签名文件路径
enabled=0:0禁用,默认启用或者设置为1

查看所有软件源

yum repolist all#
仓库 id                                                          仓库名称                                                                                                               状态
AppStream                                                        CentOS-8.5.2111 - AppStream - mirrors.aliyun.com                                                                       启用
PowerTools                                                       CentOS-8.5.2111 - PowerTools - mirrors.aliyun.com                                                                      禁用
base                                                             CentOS-8.5.2111 - Base - mirrors.aliyun.com                                                                            启用
centosplus                                                       CentOS-8.5.2111 - Plus - mirrors.aliyun.com                                                                            禁用
docker-ce-nightly                                                Docker CE Nightly - x86_64                                                                                             启用
docker-ce-nightly-debuginfo                                      Docker CE Nightly - Debuginfo x86_64                                                                                   禁用

yum 文件必须以.repo 结尾。 yum 下载软件源列表到/var/cache/yum,新版可能在/var/cache/dnf

yum clean xxx
packages 将已下载的安装文件删除
headers 将已下载的软件源数据删除
all 将所有已下载过的软件源数据删除# 更新缓存
yum makecache         # 更新缓存
yum update -y         # 升级软件源

指定 Yum 源安装,前提是已经配置好 yum 源

yum --enabledrepo=epel install netcdf R

更新系统 yum 源为阿里云源:

# yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo# epel源 阿里云:https://mirrors.aliyun.com/epel/
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpmsed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*

总结: Centos使用rpm软件包机制进行软件的安装、升级与卸载,rpm包包括了需要安装的软件与依赖,不同发行版的rpm不能通用。离线rpm包的下载和复制较麻烦,因此出现了C/S架构的yum管理工具,通过读取本地rpm数据库形成yum数据库信息,配置yum源服务器信息从服务器下载更新软件。

下面是相关的yum源服务器:

  • CentOS系统的官方yum源地址:http://mirror.centos.org/

  • 阿里云的CentOS yum源地址:http://mirrors.aliyun.com/centos/

  • 网易的CentOS yum源地址:http://mirrors.163.com/centos/

  • 搜狐的CentOS yum源地址:http://mirrors.sohu.com/centos/

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/216944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

​logging --- Python 的日志记录工具​

源代码: Lib/logging/__init__.py Important 此页面仅包含 API 参考信息。教程信息和更多高级用法的讨论,请参阅 基础教程 进阶教程 日志记录操作手册 这个模块为应用与库实现了灵活的事件日志系统的函数与类。 使用标准库提供的 logging API 最主…

FIO jobs参数在Linux IO路径的解读

并发进程: fio工具可以创建多个并行运行的工作负载(jobs),每个job代表一个独立的I/O线程。jobs参数决定了同时运行的job数量,这将直接影响到系统的资源分配和管理。 内核调度器: 在Linux内核中&#xff0c…

SpringBoot基础系列:工具类使用

断言 Assert // 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行 // 参数 message 参数用于定制异常信息。 void notNull(Object object, String message) // 要求参数必须空(Null)&#xff…

c# 十进制整数格式化-(占位符,补齐)

.NET Framework : 4.7.2IDE : Visual Studio Community 2022OS : Windows 10 x64typesetting : Markdownblog : niaoge.blog.csdn.net 代码 using System;class Program { //主函数static void Main(){//整型Console.WriteLine(2.ToString("D3"));Console.WriteL…

装机必备 | 超赞OCR文本识别小工具 Text Scanner

Text Scanner 是一款功能强大的图片扫描工具软件,该软件利用光学字符识别技术,来将图片上的文字内容,直接转换为可编辑文本,实用性很强。 光学字符识别(OCR):Text Scanner for Mac采用了先进的OCR技术&…

qt 使用百度在线地图 方法2

使用百度在线地图两个关键点&#xff0c;一是html页面准备&#xff1b;二是qt 与js 语言的交互。 1&#xff0c;html页面的准备&#xff0c;双击页面就可以出现如下效果。 主要代码&#xff1a; <!DOCTYPE html> <html> <head><meta http-equiv"C…

【Maven技术专题】「入门到精通」教你如何使用Maven中引用依赖本地Jar包,并进行打包输出

前言 在使用Maven管理Java项目时&#xff0c;有时需要引入一些存放在系统特定位置的JAR文件。这些JAR文件可能是你自己编写的&#xff0c;也可能是其他来源的。无论是哪种情况&#xff0c;使用 Maven 的 system 范围和 systemPath 参数&#xff0c;可以方便地引入这些本地依赖…

主流全文搜索方案对比

Lucene 、 Solr 、 Elasticsearch 是目前主流的全文搜索方案&#xff0c;基于 倒排索引 机制完成快速全文搜索。 Lucene Lucene 是 Apache 基金会维护的一套完全使用 Java 编写的信息搜索工具包&#xff08; Jar 包&#xff09;&#xff0c;它包含了索引 结构、读写索引工具、…

Logstash输入Kafka输出Es配置

Logstash介绍 Logstash是一个开源的数据收集引擎&#xff0c;具有实时管道功能。它可以从各种数据源中动态地统一和标准化数据&#xff0c;并将其发送到你选择的目的地。Logstash的早期目标主要是用于收集日志&#xff0c;但现在的功能已经远远超出这个范围。任何事件类型都可…

PHP是什么?

PHP&#xff08;Hypertext Preprocessor&#xff09;是一种广泛用于服务器端Web开发的开源脚本语言。最初由Rasmus Lerdorf于1994年创建&#xff0c;并于1995年发布了第一个版本。PHP语言的设计初衷是用于处理动态网页&#xff0c;尤其是用于构建Web应用程序。 PHP脚本通过嵌入…

Python从入门到精通九:Python异常、模块与包

了解异常 什么是异常 当检测到一个错误时&#xff0c;Python解释器就无法继续执行了&#xff0c;反而出现了一些错误的提示&#xff0c;这就是所谓的“异常”, 也就是我们常说的BUG bug单词的诞生 早期计算机采用大量继电器工作&#xff0c;马克二型计算机就是这样的。 19…

ARM(中断实验) 2023.12.12

main.h #include "key_interrupt.h"#include "myuart.h"void delay(int ms){int i,j;for(i0;i<ms;i){for(j0;j<2000;j);}}int main(){//中断初始化key1_it_config();key2_it_config();key3_it_config();//灯初始化led_init();//现象是发送一个a串口…

理解排序算法:冒泡排序、选择排序与归并排序

简介&#xff1a; 在计算机科学中&#xff0c;排序算法是基础且重要的概念。本文将介绍三种常见的排序方法&#xff1a;冒泡排序、选择排序和归并排序。我们将探讨它们的工作原理、特点和适用场景&#xff0c;以帮助读者更好地理解和选择合适的排序方法。 冒泡排序 冒泡排序是…

logback日志框架使用

依赖引入 <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.1.7</version> </dependency> 使用logback日志框架只需要引入以上即可&#xff0c;(我们平时使用较多的Slf4j…

浏览器提示不安全

当我们使用浏览器访问一个网站时&#xff0c;如果该网站使用的是HTTPS连接&#xff0c;那么浏览器会对其进行安全性的检查。其中一项重要的检查就是确认该网站是否拥有有效的SSL证书。然而&#xff0c;有时我们会在浏览器中看到“不安全”的警告&#xff0c;这通常是由于SSL证书…

三天精通Selenium Web 自动化 - Selenium(Java)环境搭建

1 下载JDK JDK下载地址&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2 安装和配置JDK 安装目录尽量不要有空格 D:\Java\jdk1.8.0_91; D:\Java\jre8设置环境变量&#xff1a; “我的电脑”->右键->“属性”->…

跟着官网学 Vue - 基础

1、跟 Vue 说 Hello World&#xff01; <!--跟 Vue 说 Hello World&#xff01; --><script> // 导出一个 Vue 组件 export default {// 数据data() {return {message: Hello World! lfsun}} } </script><template><!-- 使用数据中的信息渲染标题 …

C.小苯的排列构造

C-小苯的排列构造_北京信息科技大学第十五届程序设计竞赛&#xff08;同步赛&#xff09; (nowcoder.com) 凑2很容易想出来&#xff0c;但是2 4 1 3 这个内核不好想&#xff0c;算是一种尝试和经验吧 #include<bits/stdc.h> using namespace std;int n;int main() {cin&g…

Nginx命令---检查配置文件语法是否正确

介绍 使用命令检查 nginx 配置语法是否正确。 命令 检查默认配置文件&#xff1a; /sbin/nginx -t检查指定配置文件&#xff1a; /sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

Go map 大小

如何得到一个 map 占用了多少内存 go get github.com/520MianXiangDuiXiang520/MapSizepackage mainimport ("fmt""github.com/520MianXiangDuiXiang520/MapSize" )func main() {m : make(map[int]struct{})for i : 0; i < 100; i {m[i] struct{}{}}f…