【Linux】软件管理机制和软件安装

文章目录

  • 1. 软件管理器
    • 1.1 Linux的软件管理方式
    • 1.2 Linux的常见软件管理机制RPM和dpkg
  • 2. RPM
    • 2.1 rpm安装
    • 2.2 rpm升级与更新
    • 2.3 rpm查询
    • 2.4 rpm验证与数字签名
    • 2.5 rpm反安装与重建数据库
  • 3. YUM
    • 3.1 yum查询
    • 3.2 yum安装/升级
    • 3.3 yum删除
    • 3.4 yum的配置文件
    • 3.5 yum的软件群组功能
  • 4. SRPM
    • 4.1 安装srpm文件

1. 软件管理器

1.1 Linux的软件管理方式

  • Linux开发商先在固定的硬件平台和操作系统上,将需要安装或升级的软件编译好,并将与这个软件相关的所有文件打包成一个软件安装文件(这个软件安装文件中还包含了预先检测系统与依赖软件的脚本,并提供记录该软件提供的所有文件信息等)然后将这个软件安装文件发布。
  • 客户端获取该文件之后,仅需通过执行特定的命令来安装,该文件就会依照内部的脚本来检测依赖的辅助软件是否存在,若安装的环境符合要求,就会开始安装。安装完后还会将该软件的信息写入软件管理机制中,以便未来进行升级、删除等。

1.2 Linux的常见软件管理机制RPM和dpkg

软件管理机制使用命令在线升级功能发行商
RPMrpm、rpmbuildyumRed Hat/Fedora
DPKGdpkgaptDebian/Ubuntu

2. RPM

RPM:RedHat Package Manager,rpm是一种以数据库记录的方式,将所需的软件安装到Linux系统中的一套软件管理机制。

RPM要求要将安装的软件先编译过,并打包为RPM机制的文件,并通过打包好的软件里默认的数据库,记录该软件要安装的时候必须具备的依赖属性软件。

RPM属性依赖的解决方式:YUM在线升级

  • 发行商先将发布的软件放到yum服务器,然后分析这些软件的依赖属性问题,将这些信息(依赖项,以及所在的url)记录成一个表;
  • 客户端有软件安装需求时,会主动向yum服务器的软件源地址下载列表,然后与本机rpm数据库中已存在的软件数据相比较,从而一次性安装完所有具有依赖属性的软件。

2.1 rpm安装

P.S. 只有root才能执行rpm命令。

rpm -ivh [packageName]
-i : install的意思
-v : 查看详细安装信息
-h : 显示安装进度

安装完后,软件相关的信息会被写入/var/lib/rpm目录下的数据库文件中。

2.2 rpm升级与更新

-Uvh : 后接的软件若没有安装过,则直接安装;若之前有安装过旧版,则自动更新到新版
-Fvh : 若后接的软件未安装,则该软件不会被安装,即之后已安装的软件才会被升级

2.3 rpm查询

rpm查询是在/var/lib/rpm/下的数据库文件中进行查询的

rpm -qa-q : 仅查询,后接已安装的软件名称
-qa : 列出所有已安装的软件名称
-qi : 列出该软件的详细信息
-ql : 列出该软件所有的文件与目录所在完整文件名
-qc : 列出该软件的所有配置文件
-qd : 列出该软件的所有说明文件
-qR : 列出与该软件有关的依赖软件所含的文件
-qf : 后接文件名,找出该文件属于哪个已安装的软件

2.4 rpm验证与数字签名

验证(Verify)的作用方式是/var/lib/rpm/下的数据库内容与当前系统下所有安装的软件作对比,即若当有文件修改、或误删了某个文件,就可使用验证的功能来验证下原来的文件。

rpm -Va
-V : 后接软件名,若该软件所含的文件有修改才会显示
-Va : 列出目前系统上所有被修改过的文件
-Vp : 后接某个rpm文件的文件名,列出该软件内可能被修改过的文件
-Vf : 后接系统上的某个文件,显示该文件是否被修改过

示例:

[root@server8 rpm]# rpm -Vf /var/log/lastlog
.M....G..  g /var/log/lastlogS : file size differs,文件的大小是否被改变
M : mode differs,文件的类型或属性(rwx)是否被修改
5 : md5sum differs,md5校验值已不同
D : device major/minor number mis-match,设备的主/次代码已改变
L : 链接路径已改变
U : user ownership differs,文件的所属用户已改变
G : group ownership differ,文件所属用户组已改变
T : mtime differs,文件的mtime改变
P : capability differs,功能已改变c : config file, 配置文件
d : documentation,数据文件
g : ghost file,幽灵文件,通常是该文件不被某个软件所包含,较少发生
l : license file,许可证文件
r : readme,自述文件

数字签名,是用来检验软件来源的,当要安装一个rpm文件时:

  1. 先要安装原厂发布的公钥文件;
  2. 实际安装rpm软件时,rpm命令会读取rpm文件的签名信息,并与本机系统内的签名信息相比较;
  3. 若签名相同则予以安装,若找不到相关的签名信息时,则告警并停止安装。

以CentOs为例,CentOS使用的数字签名系统为GnuPG(GPG),GPG通过哈希运算,算出独一无二的数字签名或专属密钥。

# CentOS的数字签名位于的路径
[root@server8 rpm-gpg]# pwd
/etc/pki/rpm-gpg
[root@server8 rpm-gpg]# ll
总用量 12
-rw-r--r--. 1 root root 1683 914 2021 RPM-GPG-KEY-centosofficial
-rw-r--r--. 1 root root 1687 914 2021 RPM-GPG-KEY-centostesting
-rw-r--r--. 1 root root 1855 818 2021 RPM-GPG-KEY-redhat-release
[root@server8 rpm-gpg]# ll RPM-GPG-KEY-centosofficial
-rw-r--r--. 1 root root 1683 914 2021 RPM-GPG-KEY-centosofficial# 安装公钥文件
rpm --import RPM-GPG-KEY-centosofficial# 安装完后,密钥基本上都是使用pubkey作为软件的名称字段
[root@server8 rpm-gpg]# rpm -qa | grep -ai "pubkey"
gpg-pubkey-8483c65d-5ccc5b19# 可使用-qi查看该软件的信息

2.5 rpm反安装与重建数据库

反安装即将软件卸载,但要注意的是卸载的时候一定要由最上层往下解除

rpm -e [要删除的软件]# rpm重建数据库
rpm --rebuilddb

3. YUM

3.1 yum查询

yum [options] [查询工作选项] [相关参数]# options
-y : 当yum需等待使用者输入时,该选项可自动提供yes回应
--installroot=/some/path/ : 将该软件安装在/some/path/而不使用默认路径# [查询工作选项 ] [相关参数]
search : 查找某个软件名称或是描述的重要关键字
list : 列出目前yum管理的所有软件与版本,类似rpm -qa
info : 同上,类似rpm -qai
provides : 从文件中去查找软件,类似rpm -qf

3.2 yum安装/升级

yum [option] [安装与升级的工作选项] [相关参数]
# 选项与参数
install : 后接要安装的软件
update : 后接要升级的软件,若要升级整个系统,则不接参数直接update

3.3 yum删除

yum remove [要删除的软件]

3.4 yum的配置文件

yum的配置文件存放在/etc/yum.repos.d/路径下,文件的后缀为.repo

[root@server8 yum.repos.d]# cat CentOS-Linux-BaseOS.repo
# CentOS-Linux-BaseOS.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client.  You should use this for CentOS updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.[baseos]
name=CentOS Linux $releasever - BaseOS
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

文件内容说明:

[base] : 软件源名字,中括号一定要存在,名字可以自己取,但不能有两个相同的软件源名称,否则yum会不知道该到哪里去找软件源相关的软件列表
name : 仅说明该软件源的意义,重要性不高
mirrorlist= : 列出该软件源可使用的镜像站,若不想使用可直接注释掉
baseurl= : 最重要,后接软件源实际地址。mirrorlist是由yum程序去识别镜像站;baseurl则是指定固定一个软件源url
enable=1 : 启用该软件源
gpgcheck=1 : 数字签名,指定是否需要查看rpm文件内的数字签名
gpgkey= : 数字签名的公钥文件所在位置,使用默认值即可

关于软件源:

# 列出当前yum服务器所使用的软件源
yum repolist all
# 回显内容一共有三列
# 列1 : repoid 
# 列2 : repo name
# 列3 : status , 表示该软件源是否正常运行

修改软件源:

# 例如将yum源替换为国内源
# 先备份原始yum源文件
mkdir repoBak
cp -r *.repo repoBak
# 删除原来的repo文件,或者将其置为enable=0
# 下载国内源(阿里)的配置文件
sudo wget -O /etc/yum.repos.d/CentOS-Base-Ali.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# P.S. Cetnos-8.repo已停止维护,使用Centos-vault-8.5.2111.repo# 清理yum缓存.更换yum源之后需要清理原有缓存,以便使用新的源进行软件包更新
yum clean all
yum makecache

新建.repo文件。

3.5 yum的软件群组功能

yum [群组功能] [软件群组]
# 选项与参数
grouplist : 列出所有可使用的【软件群组组】
groupinfo : 后接group name,则可了解该group内含的所有软件名
groupinstall : 可安装一整组的软件群组
groupremove : 删除某个软件群组

4. SRPM

srpm文件是包含了软件源码的。srpm最大的优点就是可以让用户自行修改设置参数(makefile/configure的参数),以符合用户自己的Linux环境。

4.1 安装srpm文件

rpmbuild命令用于安装srpm文件。使用默认值安装srpm文件:

--rebuild : 该选项会见过后跟的srpm进行编译和打包,最后产生rmp文件,但产生的rpm文件并未安装到系统上
--recompile : 这个选项会直接编译、打包并安装

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

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

相关文章

Android第三次面试总结(网络篇)

在计算机网络领域,网络模型是理解通信原理的基础框架。本文将详细解析 OSI 参考模型和 TCP/IP 模型的分层结构、核心功能及实际应用,并通过对比帮助读者建立完整的知识体系。 一、OSI 参考模型:七层架构的理论基石 OSI(开放系统…

OpenCV day5

函数内容接上文:OpenCV day4-CSDN博客 目录 9.cv2.adaptiveThreshold(): 10.cv2.split(): 11.cv2.merge(): 12.cv2.add(): 13.cv2.subtract(): 14.cv2.multiply(): 15.cv2.divide(): 1…

智能运维新范式

在制造业、设备制造、工业物联网等领域,“服务周期长、响应效率低” 始终是产品运维的痛点 —— 设备故障突发时,工程师千里奔赴现场的耗时耗力;非计划停机带来的生产损失;客户对服务体验的更高期待…… 传统运维模式早已难以适应…

实现定时发送邮件,以及时间同步

定时发送邮件 部署邮件服务 查看有没有安装mailx,安装了 [root192 ~]# rpm -q mailx mailx-12.5-43.fc38.x86_64去网易拿一下授权码,写到配置文件里 vim /etc/mail.rcset fromxxxxxxx163.com set smtpsmtp.163.com set smtp-auth-userxxxxxxx163.com set smtp-auth-passwor…

状态模式:有限状态机在电商订单系统中的设计与实现

状态模式:有限状态机在电商订单系统中的设计与实现 一、模式核心:用状态切换驱动行为变化 在电商订单系统中,订单状态会随着用户操作动态变化:「已创建」的订单支付后变为「已支付」,发货后变为「已发货」&#xff0…

ubuntu 24.02部署java web服务

ubuntu 24.02 版本推荐使用jdk 21版本部署java web服务,开发后先使用sudo java -jar xxx.jar验证运行结果。 jdk安装:sudo apt install openjdk-21-jdk-headless 编辑服务文本 [Unit] DescriptionWebMgr Java Application Afternetwork.target mysql.…

深入浅出:LDAP 协议全面解析

在网络安全和系统管理的世界中,LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是一个不可忽视的核心技术。它广泛应用于身份管理、认证授权以及目录服务,尤其在企业级环境中占据重要地位。本文将从基…

AI书籍大模型微调-基于亮数据获取垂直数据集

大模型的开源,使得每位小伙伴都能获得AI的加持,包括你可以通过AIGC完成工作总结,图片生成等。这种加持是通用性的,并不会对个人的工作带来定制的影响,因此各个行业都出现了垂直领域大模型。 垂直大模型是如何训练出来…

【2025软考高级架构师】——计算机系统基础(7)

摘要 本文主要介绍了计算机系统的组成,包括硬件和软件两大部分。硬件由处理器、存储器、总线、接口和外部设备等组成,软件则涵盖系统软件和应用软件。文章还详细阐述了冯诺依曼计算机的组成结构,包括 CPU、主存储器、外存等,并解…

AI大模型之模型幻觉

模型幻觉(Model Hallucination)是大模型生成内容时脱离事实、虚构信息的一种现象,尤其在语言模型、图像生成模型等中较为常见。为了更深入地理解这一现象,我们可以将其分为两个维度进行分析:内在幻觉(Intrinsic Hallucination) 和 外在幻觉(Extrinsic Hallucination)。…

spring Ai---向量知识库(一)

在一些垂直领域以及公司内部信息相关或者实时性相关的大模型应用,就无法直接使用chatGPT。 这个时候,向量知识库就进入了。 通过坐标向量最接近的即为匹配相关答案。 向量模型定义:将文档向量化,保证内容越相似的文本,…

Viper配置管理笔记

一、什么是 Viper? Viper 是 Go 语言的一个强大工具,就像一个超级管家,专门负责帮你打理程序的各种配置。它能把配置文件(比如 JSON、YAML、TOML 等格式)里的内容读出来,还能监控配置文件的变化&#xff0…

实现对象之间的序列化和反序列化

1.什么是序列化? 在项目的开发中,为了让前端更好的分析后端返回的结果,我们一般会将返回的信息进行序列化,序列化就是将返回对象的状态信息转换为一种标准化的格式,方便在网络中传输也方便打印日志时号观察&#xff0…

ThreadLocal - 原理与应用场景详解

ThreadLocal 的基础概念 在 Java 的多线程世界里,线程之间的数据共享与隔离一直是一个关键话题。如果处理不当,很容易引发线程安全问题,比如数据混乱、脏读等。而 ThreadLocal 这个工具类,就像是为线程量身定制的 “私人储物柜”…

iwebsec靶场 文件包含关卡通关笔记11-ssh日志文件包含

目录 日志包含 1.构造恶意ssh登录命令 2.配置ssh日志开启 (1)配置sshd (2)配置rsyslog (3)重启服务 3.写入webshell木马 4.获取php信息渗透 5.蚁剑连接 日志包含 1.构造恶意ssh登录命令 ssh服务…

Diamond软件的使用--(4)搭建Modelsim仿真库

使用Modelsim仿真的原因 由于diamond自带的仿真软件Active-HDL需要另一套Lisence,所以我们使用第三方仿真软件Modelsim来进行仿真。 Modelsim10.5下载链接如下:https://pan.baidu.com/s/1G9699ocWm1UTqK2yS2igyQ 提取码:lewa 一、Lattice仿…

2025年4月19日,四月第三周,C++,字符串数组答案解析

答案与解析 1. 输出字符串数组所有元素 cpp 复制 下载 #include <iostream> using namespace std;int main() {string arr[] = {"apple", "banana", "cherry"};int n = sizeof(arr)/sizeof(arr[0]); // 计算数组长度for (int i = 0; …

C语言之高校学生信息快速查询系统的实现

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 C语言之高校学生信息快速查询系统的实现 目录 任务陈述与分析 问题陈述问题分析 数据结构设…

【网络篇】TCP vs UDP底层区别+网络编程概念

大家好呀 我是浪前 今天讲解的是网络篇的第三章&#xff1a;网络编程概念和TCP&UDP的区别 网络编程概念TCP和UDP的区别 跨主机通信:网络编程插座&#xff1a;网络编程的本质&#xff1a; 网络编程的重要概念&#xff1a;客户端和服务器&#xff1a; 客户端和服务器的交互模…

EMIF详解

一、EMIF的基本定义 EMIF&#xff08;External Memory Interface&#xff0c;外部存储器接口&#xff09; 是嵌入式处理器&#xff08;如DSP、FPGA、SoC&#xff09;用于连接外部存储器的专用硬件接口模块&#xff0c;负责管理处理器与存储器之间的地址/数据总线、控制信号及时…