第22章 软件安装 RPM/ YUM

news2025/1/12 23:09:32

        上章节是用源代码来编译完成;

        发商编译好之后直接把可执行文件发布给用户来安装也是一种方法,类似于windows下的安装;

       客户端取得这个文件后,只要通过特定的指令来安装, 那么该软件文件就会依照内部的脚本来检测相依的前驱软件是否存在,若安装的环境符合需求,那就会开始安装;

dbkg与 RPM

        

  • dpkg
    这个机制最早是由 Debian Linux 社群所开发出来的,通过 dpkg 的机制, Debian 提供的软件就能够简单的安装起来,同时还能提供安装后的软件信息,实在非常不错。 只要是衍生于 Debian 的其他 Linux distributions 大多使用 dpkg 这个机制来管理软件的, 包括 B2D, Ubuntu 等等。
     
  • RPM:RedHat Package Manager 
    这个机制最早是由 Red Hat 这家公司开发出来的,后来实在很好用,因此很多 distributions 就使用这个机制来作为软件安装的管理方式。 包括 Fedora, CentOS, SuSE 等等知名的开发商都是用这咚咚。
  • ----

 Centos是使用用RPM机制来进行安装的,本章着重讲这种;

RPM

        优点:

1 RPM 内含已经编译过的程式与设定档等资料,可以让使用者免除重新编译的困扰;
2 RPM 在被安装之前,会先检查系统的硬碟容量、作业系统版本等,可避免档案被错误安装;
3 RPM 档案本身提供软体版本资讯、相依属性软体名称、软体用途说明、软体所含档案等资讯,便于瞭解软体;
4 RPM 管理的方式使用资料库记录 RPM 档案的相关参数,便于升级、移除、查询与验证。

        注意:

  1. 软件档案安装的环境必须与打包时的环境需求一致或相当;
  2. 需要满足软件的相依属性需求;
  3. 反安装时需要特别小心,最底层的软件不可先移除,否则可能造成整个系统的问题!

-

SRPM

        Source RPM 的意思,也就是这个 RPM 文件里面含有源代码; 

        SRPM 的扩展名是以 ***.src.rpm 这种格式来命名的

优点

         SRPM 虽然内容是源代码, 但是他仍然含有该软件所需要的依赖软件说明、以及所有 RPM 文件所提供的资料

        我们就可以通过修改 SRPM 内的参数配置文件,然后重新编译产生能适合我们 Linux 环境的 RPM 文件

  • 先将该软件以 RPM 管理的方式编译,此时 SRPM 会被编译成为 RPM 文件;
  • 然后将编译完成的 RPM 文件安装到 Linux 系统当中

文件格式代表着-

xxxxxxxxx.rpm   <==RPM 的格式,已经经过编译且包装完成的 rpm 档案;
xxxxx.src.rpm   <==SRPM的格式,包含未编译的原始码资讯。

如:rp-pppoe-3.11-5.el7.x86_64.rpm

--
rp-pppoe -        3.11   -     5        .el7.x86_64  .rpm
軟體名稱   軟體的版本資訊 釋出的次數 適合的硬體平台 副檔名

软件相互依赖问题

        通过YUM服务器获取软件清单,安装时一一比较;

        当客户端有升级、安装的需求时, yum 会向软件库要求列表的更新,等到清单更新到本机的 /var/cache/yum 里面后, 等一下更新时就会用这个本机清单与本机的 RPM 数据库进行比较,这样就知道该下载什么软件。 接下来 yum 会跑到软件库服务器 (yum server) 下载所需要的软件 (因为有记录软件所在的网址),然后再通过 RPM 的机制开始安装软件

 

删除清单缓存

     /var/cache/yum 

     当本地清单列表与YUM服务器内容不一致时,可能出现差错;

[root@study ~]# yum clean [packages|headers|all] 
選項與參數:
 packages:將已下載的軟體檔案刪除
 headers :將下載的軟體檔頭刪除
 all     :將所有軟體庫資料都刪除!

软件文件信息存放问题

该软件相关的信息就会被写入 /var/lib/rpm/ 目录下的数据库文件中了

软件内的文件存放到:

 

rpm命令*

安装:

[root@study ~]# rpm -ivh package_name
選項與參數:
-i :install 的意思
-v :察看更細部的安裝資訊畫面
-h :以安裝資訊列顯示安裝進度

        另外,如果我们在安装的过程当中发现问题,或者已经知道会发生的问题, 而还是'执意'要安装这个软件时,可以使用如下的参数'强制'安装上去

 升级与更新


-Uvh	后面接的软件即使没有安装过,则系统将予以直接安装; 若后面接的软件有安装过旧版,则系统自动更新至新版;
-Fvh	如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装; 亦即只有已安装至你 Linux 系统内的软件会被'升级'!

查询*(重点)

查询软件整体

[root@study ~]# rpm -qa                              <==已安装软体
[root@study ~]# rpm -q[licdR] 已安装的软体名称       <==已安装软体
[root@study ~]# rpm -qf 存在于系统上面的某个档名     <==已安装软体
[root@study ~]# rpm -qp[licdR] 未安装的某个文件名称  <==查阅RPM档案
选项与参数:
查询已安装软体的资讯:
-q  :仅查询,后面接的软体名称是否有安装;
-qa :列出所有的,已经安装在本机 Linux 系统上面的所有软体名称;
-qi :列出该软体的详细资讯 (information),包含开发商、版本与说明等;
-ql :列出该软体所有的档案与目录所在完整档名 (list);
-qc :列出该软体的所有设定档 (找出在 /etc/ 底下的档名而已)
-qd :列出该软体的所有说明档 (找出与 man 有关的档案而已)
-qR :列出与该软体有关的相依软体所含的档案 (Required 的意思)
-qf :由后面接的档案名称,找出该档案属于哪一个已安装的软体;
-q --scripts:列出是否含有安装后需要执行的脚本档,可用以 debug 喔!
查询某个 RPM 档案内含有的资讯:

查询RPM文件内的信息

-------------------------
-qp  [icdlR]:注意 -qp 后面接如上的所有参数。
        但用途仅在于找出某个 RPM 文件内的信息,而非已安装的软体信息

验证修改过/数字签名

        验证是否修改过:

[root@study ~]# rpm -Va
[root@study ~]# rpm -V  已安装的软体名称
[root@study ~]# rpm -Vp 某个 RPM 档案的档名
[root@study ~]# rpm -Vf 在系统上面的某个档案
选项与参数:
-V  :后面加的是软体名称,若该软体所含的档案被更动过,才会列出来;
-Va :列出目前系统上面所有可能被更动过的档案;
-Vp :后面加的是档案名称,列出该软体内可能被更动过的档案;
-Vf :列出某个档案是否被更动过~

     参数:

[root@study ~]# rpm -V logrotate
..5....T.  c /etc/logrotate.conf

 

        验证数字签名

 

  1. 首先你必须要先安装原厂释出的公钥档案;
  2. 实际安装原厂的 RPM 软件时, rpm 指令会去读取 RPM 文件的签名信息,与本地系统内的签名信息比对,
  3. 若签章相同则予以安装,若找不到相关的签名信息时,则给予警告并且停止安装喔。

       

-

        安装数字签名:

[root@study ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

卸载 与 清除数据记录

卸载

rpm -e 软件名

        '解安装的过程一定要由最上层往下解除'

重建数据库

        RPM 数据库 /var/lib/rpm/ 内的文件

 rpm --rebuilddb   <==重建資料庫

YUM

         yum 是透过分析 RPM 的标头资料后, 根据各软体的相关性制作出属性相依时的解决方案,然后可以自动处理软体的相依属性问题,以解决软体安装或移除与升级的问题;

查询:

[root@study ~]# yum [option] [查询工作项目] [相关参数]
选项与参数:
[option]:主要的选项,包括有:
  -y :当 yum 要等待使用者输入时,这个选项可以自动提供 yes 的回应;
  --installroot=/some/path :将该软体安装在 /some/path 而不使用预设路径
[查询工作项目] [相关参数]:这方面的参数有:
  search  :搜寻某个软体名称或者是描述 (description) 的重要关键字;
  list    :列出目前 yum 所管理的所有的软体名称与版本,有点类似 rpm -qa;
  info    :同上,不过有点类似 rpm -qai 的执行结果;
  provides:从档案去搜寻软体!类似 rpm -qf 的功能!

安装与升级

[root@study ~]# yum [option] [安裝與升級的工作項目] [相關參數]
選項與參數:
  install :後面接要安裝的軟體!
  update  :後面接要升級的軟體,若要整個系統都升級,就直接 update 即可

群组安装功能

[root@study ~]# yum [群组功能] [软体群组]
选项与参数:
   grouplist   :列出所有可使用的‘软体群组组’,例如 Development Tools 之类的;
   groupinfo   :后面接 group_name,则可瞭解该 group 内含的所有软体名;
   groupinstall:这个好用!可以安装一整组的软体群组,相当的不错用!
   groupremove :移除某个软体群组;

        默认安装所有群组软件

        修改yum配置文件/etc/yum.conf

[root@study ~]# vim /etc/yum.conf
.....(前面省略).....
distroverpkg=centos-release   # 找到這一行,底下新增一行!
group_package_types=default, mandatory, optional
.....(底下省略).....

卸载

[root@study ~]# yum remove pam-devel

yum配置文件

vim /etc/yum.repos.d/

        当需要换软件源url地址时,可以到里面去修改;

文件内容解析

 

[base]:代表软件库的名字! 中括号一定要存在,里面的名称则可以随意取。 但是不能有两个相同的软件库名称, 否则 yum 会不晓得该到哪里去找软件库相关软件列表文件。

name:只是说明一下这个软件库的意义而已,重要性不高!

mirrorlist=:列出这个软体库可以使用的映射站台,如果不想使用,可以注解到这行;

baseurl=:这个最重要,因为后面接的就是软体库的实际网址! mirrorlist 是由 yum 程式自行去捉映射站台, baseurl 则是指定固定的一个软体库网址!我们刚刚找到的网址放到这裡来啦!

enable=1:就是让这个软体库被启动。如果不想启动可以使用 enable=0 喔!

gpgcheck=1:还记得 RPM 的数位签章吗?这就是指定是否需要查阅 RPM 档案内的数位签章!

gpgkey=:就是数位签章的公钥档所在位置!使用预设值即可

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

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

相关文章

C++数据结构之堆栈

主要参考资料:01.堆栈基础知识 | 算法通关手册 (itcharge.cn)01.堆栈基础知识 | 算法通关手册 (itcharge.cn) 本文主要采用C实现&#xff0c;而参考资料主要采用python实现&#xff0c;可以相互结合食用。 基础知识 定义 堆栈&#xff08;Stack&#xff09;&#xff1a;简称为…

MySQL数据库学习(4)

DQL分组查询 语法&#xff1a; SELECT 字段列表 FROM 表名[ WHERE条件 ] GROUP BY 分组字段名 [HAVING分组后过滤条件]; 我们发现分组查询中有两个条件&#xff0c;这两个条件的区别是什么呢&#xff1f;执行时机不同: where是分组之前进行过滤&#xff0c;不满足where条件&a…

基于SSM的疫情管控系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

大数据Hadoop之——Apache Hudi 数据湖实战操作(Spark,Flink与Hudi整合)

文章目录一、概述二、Hudi CLI三、Spark 与 Hudi 整合使用1&#xff09;Spark 测试2&#xff09;Spark 与 Hudi 整合使用1、启动spark-shell2、导入park及Hudi相关包3、定义变量4、模拟生成Trip乘车数据5、将模拟数据List转换为DataFrame数据集6、将数据写入到hudi四、Flink 与…

前端ES6相关的面试题

前端ES6相关的面试题 文章目录前端ES6相关的面试题一. var let constvarletconst二 . 函数的扩展reset参数箭头函数三 . 数组的扩展四.Set和map数据结构Setmap五. Promise六. 模块化一. var let const var var存在声明提升 >先上车,后买票 var声明的变量会挂载到window下面…

Java实操避坑指南四、spring中的坑

文章目录1. 项目搭建过程1. pom 依赖2. 在没有配置数据库相关时不要引入依赖包&#xff0c;如spring-boot-starter-data-jpa2. spring bean 默认生成策略的正确使用1. 代码示例2. 单元测试3. 工具类 [参考](#test2)4. 报错信息5. 分析6. 使用说明2. 使用了Autowired 注解&#…

【5G RAN】5G gNB间的N2/NGAP切换(handover)那点事儿

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

@Import注解详解

Import这个注解非常重要&#xff0c;而且在springboot项目当中随处可见&#xff0c;就拿springboot启动类来说&#xff0c;我们经常会遇到一些Enable相关的注解&#xff0c;例如开启异步EnableAsync、开启缓存支持EnableCaching、开启定时任务EnableScheduling等等… 目录一、I…

Oracle通过DBLINK访问达梦数据库

环境需求 需要安装配置以下相关软件&#xff1a; 1、Oracle Gateways 2、ODBC数据源&#xff08;gateway机器&#xff09; 3、达梦数据库软件&#xff08;gateway机器&#xff09; 安装配置 Windows环境 安装达梦数据库软件 安装步骤省略&#xff0c;可以参考DM 数据库…

【嵌入式Linux开发一路清障-连载02】Ubuntu22.04安装Shutter进行截图和标注

Ubuntu22.04安装Shutter进行截图和标注障碍 05&#xff0d;Ubuntu22.04中不会给截图做标注&#xff0c;写Bolg举步维艰命令行方式安装Shuttershutter中的常用命令为截取活动窗口设置快捷键安装gnome-web-photo截取长图--失败--未完待续小结下节预告障碍 05&#xff0d;Ubuntu22…

一起来部署项目-采购一台云服务器

前言 不会运维的程序员不是一个好程序员&#xff0c;你是这样认为吗&#xff1f;不&#xff0c;不重要&#xff0c;关键是很多小企业是让后端程序员去干运维的&#xff0c;省钱~~~o(╥﹏╥)o。特别是在YQ严重的当下&#xff0c;所以为了提高自己的竞争力&#xff0c;从今天起&…

万字爽文一篇带你掌握Java8新特性

陈老老老板说明&#xff1a;新的专栏&#xff0c;本专栏专门讲Java8新特性&#xff0c;把平时遇到的问题与Java8的写法进行总结&#xff0c;需要注意的地方都标红了&#xff0c;一起加油。本文是介绍Java8新特性与常用方法&#xff08;此篇只做大体介绍了解&#xff0c;之后会把…

Java8中LocalDate详解Date线程不安全的原因

LocalDate 分类分工 java.time.LocalDate ->只对年月日做出处理 java.time.LocalTime ->只对时分秒纳秒做出处理 java.time.LocalDateTime ->同时可以处理年月日和时分秒优点 除了使用起来更加简单和灵活&#xff0c;主要是传统的时期处理类Date、Calendar不是多线…

刷爆leetcode第十二期 0026 数组中数字出现的次数

编号0026 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外&#xff0c;其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n)&#xff0c;空间复杂度是O(1)。 题目示例如下 这里其实是一道我一个月之前做的题目 在学弟的博客里刚好看…

【数据结构与算法】Java实现七大排序算法汇总

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【数据结构与算法】 ✈️✈️本篇内容: Java实现七大排序算法汇总&#xff01; &#x1f680;&#x1f680;由于本篇博客涉及代码较多&#xff0c;博主把代码都提…

刷爆leetcode第十一期 0023~0025

刷爆leetcode第十一期 编号0023 相同的树编号0024 对称二叉树编号0025 另一个树的子树编号0023 相同的树 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是…

多旋翼无人机仿真 rotors_simulator:用键盘控制无人机飞行

多旋翼无人机仿真 rotors_simulator&#xff1a;用键盘控制无人机飞行前言书接上文接口测试键盘指令发布指令转换与发布修改 rotors_simulator 的控制接口节点测试前言 RotorS 是一个MAV gazebo 仿真系统。 提供了几种多旋翼仿真模型&#xff0c;例如 AscTec HummingbirdAsc…

PHP反序列化

序列化与反序列化 序列化 反序列是指把对象转换为字符串的过程&#xff0c;便于在内存、文件、数据库中保存、传输&#xff0c;PHP中使用serialize函数进行序列化。 <?phpclass Person{public $name"php";protected $id;private $age;}$a new Person();$a_se…

全排列笔记

14天阅读挑战赛 全排列 题目 给定一个 没有重复 数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 解答 方法一&#xff1a;回溯 思路 从高中的数学知识我们可以知道 从[1,2,3…

如何在Linux上优雅地写代码-Linux生存指南

初入Linux&#xff0c;发现老是要面对一个命令行&#xff0c;大黑框&#xff0c;看不懂各种手册&#xff0c;写代码也是用vi/vim&#xff0c;难受的捉急。其实Linux下的各种工具&#xff0c;强大得超出你的想象&#xff0c;如果你初入Linux&#xff0c;那么你急需阅读这篇文章&…