软件包安装

1.软件包分类

1.1软件包的分类

  • 源码包
  • 二进制包
  • 脚本安装包

1.2源码包

1.2.1源码包的样子

源码包可以认为是利用不同的计算机语言而写的包, 我们打开相应的文件也能看到相应的源码

1.2.2源码包的特点

源码包的优点: 

  • 开源, 如果有足够的能力, 可以修改源代码
  • 可以自由选择所需的功能
  • 软件是编译安装的, 所以更加适合自己的系统, 更加稳定和高效
  • 卸载方便

缺点:

  • 安装过程步骤比较多, 尤其是安装较大软件集合时, 容易出现错误
  • 编译过程较长, 安装比二进制安装时间长
  • 因为是编译安装, 安装过程中出现报错新手很难解决

1.3二进制包

1.3.1二进制包的分类

  • DPKG包: 由Debian Linux所开发出来的包管理机制, 通过DPKG包, Debian Linux就可以进行软件包管理. 主要应用在Debian和unbuntu中
  • RPM包: 由Red Hat公司所开发的包管理系统. 功能强大, 安装, 升级, 查询和卸载都很方便. 目前很多Linux都在使用这种包管理方式, 包括Fedora, CentOS等.

1.3.2特点

RPM包的优点: 

  • 包管理系统简单, 只通过几个命令就可以实现包的安装, 升级, 查询和卸载
  • 安装速度比源码包安装的快

RPM包的缺点: 

  • 经过编译, 不能看到源码
  • 功能选择不如源码包灵活
  • 依赖性. 又是我们发现需要安装软件包a是需要先安装软件包b和c, 而安装b时需要安装d和e. 这就需要我们先安装d和e, 在安装b和c, 最后才能安装a. 是有一定顺序的

1.3.3RPM包依赖

1)树形依赖    a-->b-->c

2)环形依赖    a-->b-->c-->a

3)函数库依赖

什么是模块依赖?我们可以安装一下文件进行尝试:

rpm -ivh mysql-connector-odbc-5.2.5-7.el7.x86_64.rpm

错误: 依赖检测失败

        libodbc.so.2()(64bit) 被 mysql-connector-odbc-5.2.5-7.el7.x86_64 需要
        libodbcinst.so.2()(64bit) 被 mysql-connector-odbc-5.2.5-7.el7.x86_64 需要

发现报错, 需要安装libodbc.so.2函数库文件, 这时会发现在光盘中根本找不到这个文件. 那是因为函数库没有单独成包, 是包含在某一个软件包中的. 如果要知道在那个软件包中, 需要查询网站www.rpmfind.net

2.rpm安装

2.1rmp包命名规则

httpd-2.2.15-15.e16.centos.1.i686.rpm

  • httpd软件包名
  • 2.2.15软件版本号
  • 15软件的发布次数
  • e16软件发行商
  • i686适合的硬件平台. RPM包可以在不同的硬件平台安装, 选择适合不同CPU的软件版本, 可以最大化的发挥CPU的性能
  • rpm扩展名

包全名: 如果操作的是未安装的软件包, 则使用包全名, 而且需要注意绝对路径

包名: 如果操作的是已经安装的软件包, 则使用包名, 系统会产生RPM包的数据库(/var/lib/rpm/), 而且可以在任意路径下操作

2.3rpm包手工命令安装

2.3.1默认安装位置

路径介绍
/etc/配置文件安装目录
/usr/bin/可执行命令的安装目录
/usr/lib/程序所使用的函数库保存位置
/usr/share/doc/基本的软件使用手册保存位置
/usr/share/man/帮助文件保存位置

2.3.2RPM包安装

1)安装命令

rpm -ivh 包全名

# 注意一定似乎包全名, 如果包全名要注意路径, 应为软件包在光盘当中

选项: 

        -i: install安装

        -v: 显示更详细的信息

        -h: 打印和显示安装进度

  • --relpacefiles: 替换文件安装. 如果安装软件包, 可是包中文件已经存在, 那么正常安装时, 会报错"某个文件已经存在"从而导致软件无法安装, 使用这个选项可以忽视这个报错, 而覆盖安装
  • --replacepkgs: 替换软件包安装. 如果软件包已经存在, 此选项可以包软件包重复安装一遍
  • --force: 强制安装. 不管是否已经安装, 都重新安装. 就是以上两种的综合
  • --test: 测试安装. 不会实际安装, 只是检测一下依赖性
  • --prefix: 指定安装路径. 一般不会使用

2)服务启动

service 服务名 start|stop|restart|status(查看服务状态)

2.3.3RPM包升级

rmp -Uvh 包全名

选项: 

        -U(大写): 升级安装. 如果没有安装过, 系统直接安装. 如果安装过旧的版本, 就会升级到最新版

        -F(大写): 升级安装, 如果没有安装过, 则不会安装, 必须有旧的版本才能升级

2.3.4卸载

rpm -e 包名

2.3.5查询

1)查询软件包是否安装

rmp -q 包名

选项: 

        -q: 查询

2)查询系统中的所有安装软件包名

rmp -qa

当然我们能用管道符查找我们所需要的内容

rmp -qa | grep httpd

3)查询软件包的详细信息

可以查看已经安装的某个软件包的详细信息

rpm -qi 包名

选项: 

        -i: 查询软件信息

也可以查看没有安装的软件包的详细信息

rpm -qip 包全名

选项: 

        -p: 没有安装的软件包(package)

4)查询软件包中的文件列表

可以查看已经安装的软件包中的文件列表和完整目录

rpm -ql 包名

选项: 

        -l: 列出软件包中所有的文件列表和软件所安装的目录

那么, 可以查询还没有安装的软件包中的文件列表和打算安装的位置吗?答案是可以的

rpm -qlp 包全名

选项:

        -p: 查询没有安装软件包的信息

5)查询系统文件属于哪个RPM包

rpm -qf 系统文件名(必须是RPM包建立的文件)

选项: 

        -f: 查询系统文件属于哪一个软件包

6)查询软件所依赖的软件包

rpm -qR 包名

选项:        

        -R: 查询软件的依赖性(requires)

可以查询没有暗转的软件包的依赖性吗? 加上"-p"选项即可. 例如, 查看一下还没有安装的bind软件包的依赖性, 可以执行如下命令:

rpm -qRp 包全名

2.3.6验证

1)基本命令

rpm -Va

选项:

        -Va: 校验本机已经安装的所有软件包

rpm -V 已经安装的包名

选项:

        -V: 校验指定RPM包中的文件(verify)

rpm -Vf 系统文件名

选项: 

        -Vf: 校验某个系统文件是否被修改

2)验证举例

出现了提示信息, 我们解释最前面8个信息的内容, 表示检验内容的. 文件名前面的c是表示这个配置文件(configuration). 最后是文件名.验证的内容中的8个信息的具体内容如下:

  • S: 文件大小是否改变
  • M: 文件的类型或文件的权限是否被改变
  • 5: 文件MD5校验和是否改变(可以看成文件的内容是否改变)
  • D: 设备的主从代码是否改变
  • L: 文件的路径是否改变
  • U: 文件的属主(所有者)是否改变
  • G: 文件的属组是否改变
  • T: 文件的修改时间是否改变

2.3.7数字证书

刚刚的校验方法只能对已经安装的RPM包中的文件进行校验, 但是如果RPM包本身被动过手脚, 那么校验就能解决问题. 我们需要数字证书校验了

数字证书有如下特点:

  • 首先必须找到原厂的公钥文件, 然后进行安装
  • 再安装RPM包, 会提取RPM包中证书的信息, 然后和本机安装的原厂证书进行验证
  • 如果验证通过, 则允许安装; 如果验证不通过, 则不允许安装并警告

1)数字证书位置

数字证书在哪里呢?其实在CentOS的第一张光盘中, 当然它默认也会放在系统中:

ll /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

# 系统中数字证书位置

2)数字证书导入

rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

选项:

        -import: 导入数字证书

2.4rpm包在线安装(yum安装)

2.4.1yum源文件解析

yum源配置文件保存在/etc/yum.repos.d目录中, 文件的扩展名一定是"*.repo". 也就是说, yum源配置文件只要扩展名是"*.repo"就会生效

这个目录中有5个yum源配置文件, 默认情况下CentOS-Base.repo文件生效. 我们打开这个文件看看:

在CentOS-Base.repo文件中有5个yum源容器, 这里只列出了base容器, 其他容器和base容器类似. 我们来解释一下base这个容器

  • [base]: 容器名称, 一定要放到[]中
  • name: 容器说明, 可以自己随便写
  • mirrorlist: 镜像站点, 这个可以注释掉
  • baseurl: 我们的yum源服务器的地址. 默认是CentOS官方的yum源服务器, 是可以使用的. 如果你觉得慢, 可以改成你喜欢的yum源地址
  • enabled: 此容器是否生效, 如果不行或者写成enable=1则表示此容器生效, 写成enabled=0则便是此容器不生效
  • gpgcheck: 如果为1则表示RPM的数字证书生效; 如果为0, 则表示RPM的数字证书不生效
  • gpgkey: 数字证书的公钥保存位置, 不能修改

2.4.2搭建本地光盘yum源

第一步: 放入CentOS安装光盘, 并挂载光盘到指定位置. 命令如下:

mkdir /mnt/cdrom             # 创建cdrom目录, 作为光盘的挂载点

mount /dev/cdrom /mnt/cdrom/

mount: block device dev/sr0 is write-protected, mounting read-only

# 挂在光盘到/mnt/cdrom目录下

第二步: 修改其他几个yum源配置文件的扩展名, 让它们失效, 因为只有扩展名是*.repo的文件才能作为yum源配置文件. 当然也可以删除其他几个yum源配置文件, 但是如果删除了, 当你又想用网络作为yum源文件时, 就没有参考文件了, 所以最好还是修改扩展名. 命令如下

cd /etc/yum.repos.d/

mv CentOS-Base.repo CentOS-Base.repo.bak

mv CentOS-Debuginfo.repo CentOS-DeBuginfo.repo.bak

mv CentOS-Vault.repo CentOS-Vault.repo.bak

第三步: 修改光盘yum源配置文件CentOS-Media.repo

2.4.3yum命令

1)查询

  • 查询yum源服务器上所有可安装的软件包列表

yum list    # 查询所有可用的软件包列表

Installed Packages     # 已经安装的软件包

  • 查询yum源服务其中是否包含某个软件包

yun list 包名         # 查询单个软件包

  • 搜索yum源服务器上所有的关键字相关的软件包

yum search 关键字

yum search搜索可以用于确定某个软件在哪个软件包当中. 此例子可以确定"ifconfig"命令需要安装"net-tools"包

  • 查询指定软件包的信息

yum info samba    #查询samba软件包的信息

2)安装

yum -y install 包名

选项:

        install: 安装

        -y: 自动回答yes

举例: yum -y install gcc     # 使用yum自动安装gcc

3)升级

yum -y -update 包名

选项:

        update: 升级

        -y: 自动回答yes

注意:进行升级操作的时候, yum源服务器中软件包的版本要比本机安装的软件包的版本高

yum -y update   #升级本机所有软件包

4)卸载

除非你确定卸载的软件的依赖包不会对系统产生影响, 否则不要执行yum卸载, 因为很有可能在卸载软件包的同时卸载的依赖包也是重要的系统文件, 这可能导致系统崩溃. 卸载命令如下:

yum remove 包名     # 卸载指定的软件包

2.4.4yum组管理命令

  • 查询可以安装的软件组

yum grouplist      # 列出所有可用的软件组列表

  • 查询软件组内包含的软件

yum groupinfo 软件组名      # 列出软件组中包含的软件

  • 安装软件组

yum groupinstall 软件组名     # 安装指定软件组, 组名可以由grouplist查询出来

例如:

yum groupinstall "Web Server"

  • 卸载软件组

yum groupremove   软件组名        #卸载指定软件组

3.源码包安装

3.1注意事项

3.1.1应当选择哪种软件包

  • 如果软件包是给大量客户提供访问, 建议使用源码包
  • 如果软件包是给Linux底层访问, 或只给少量客户访问, 建议使用rpm包安装, 因为rpm包简单

3.1.2源码包哪里来的?

rpm包是光盘中直接包含的, 所以不需要用户单独下载. 而源码包是通过官方网站下载的, 如果需要使用, 是需要单独下载的

3.2安装过程

我们来解释一下源码包安装的具体步骤

  1. 下载软件包
  2. 解压缩
  3. 进入解压缩目录
  4. ./configure         编译前准备
    这一步主要有三个作用:
    ​​​​​​​①在安装之前检测系统环境是否符合安装要求
    ②定义需要的功能选项. "./configure"支持的功能较多, 可以执行"./configure --help"命令查询其支持的功能. 一般都会通过"./configure --prefix=安装路径"来指定安装路径.
    ③把系统环境检测结果和定义好的功能选项写入Makefile文件, 后续的编译和安装需要依赖这个文件的内容
  5. make 编译
    make会调用gcc编译器, 并读取Makefile文件中的信息进行系统软件编译. 编译的目的就是把源码程序转变成能被Linux识别的可执行文件, 这些可执行文件保存在当前目录下, 编译过程较为耗时, 需要有足够的耐心
  6. make clean: 清空编译的内容(非必要步骤)
    如果在"./configure"或"make"编译中报错, 那么我们在重新执行命令之前一定要记得执行make clean 命令, 它会清空Makefile文件或这编译产生的".o"头文件
  7. make install    编译安装
    这才是真正的安装过程, 一般会写清楚程序的安装位置. 如果忘记指定安装目录, 则可以把这个命令的执行结果记录下来, 以备将来删除使用

3.3删除

源码包没有删除命令, 如果需要删除, 可以直接删除安装目录

3.4打入补丁

3.4.1补丁的生成

diff 选项 old new

#比较old和new文件的不同

选项:

        -a: 将任何文档当作文本文档处理

        -b: 忽略空格造成的不同

        -B: 忽略空白行造成的不同

        -I: 忽略大小写造成的不同

        -N: 当比较两个目录的时候, 如果某个文件只在一个目录中, 则在另一个目录中视作空文件

        -r: 当比较目录时, 递归比较子目录

        -u: 使用同一的输出格式

举例:

比较下两个文件的不同, 并生成补丁文件"txt.patch".

diff -Naur old.txt new.txt > txt.patch        # 比较两个文件的不同, 同时生成补丁文件

#后一个文件比前一个文件多两行(+表示)

3.4.2打入补丁

patch -pn < 补丁文件    # 按照补丁文件进行更新

选项:

        -pn: n为数字, 代表按照补丁文件中的路径, 指定更新文件的位置

接下来, 我们更新下"old.txt"文件,命令如下:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在Linux部署OpenGauss数据管理系统并实现固定公网地址访问

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许可证v2发行。openGauss内核深度融合…

fastadmin 框架如何移除图片上传后预览中的删除按钮

在FastAdmin中&#xff0c;当我们启用了图片上传预览时&#xff0c;在预览区域会自动生成预览图和删除按钮&#xff0c;如下图&#xff1a; 如果我们想上移除掉这里的删除按钮&#xff0c;则需要启用自定义预览模板的功能。 首先我们找到视图中我们的预览容器&#xff0c;比如…

Postman进行Soap webservice接口测试

许多人认为Postman是高级REST客户端&#xff0c;Postman是处理通过HTTP发送的请求的工具。其实Postman也可以测试与协议无关的SOAP webservice api接口。 要使用Postman发出SOAP请求&#xff0c;请执行以下操作&#xff1a; 1、提供SOAP端点作为URL&#xff0c;可以使用SOAP的W…

Vue入门六(前端路由的概念与原理|Vue-router简单使用|登录跳转案例|scoped样式)

文章目录 前要&#xff1a;前端路由的概念与原理1&#xff09;什么是路由2&#xff09;SPA与前端路由3&#xff09;什么是前端路由4&#xff09;前端路由的工作方式 一、Vue-router简单使用1&#xff09;什么是vue-router2) vue-router 安装和配置的步骤① 安装 vue-router 包②…

第11章 GUI Page495~496 步骤三十一:另存为别的文件,为TrySaveFile()入参设置一些位操作

工程二 头文件中为TrySaveFile()入参设置一些位操作&#xff0c;修改一下TrySaveFile()的入参类型 修改TrySaveFile()的实现&#xff1a; 修改“保存”菜单项挂接事件响应函数: 修改“另存为”菜单项挂接事件响应函数

kylin集群反向代理(健康检查)

前面一篇文章提到了使用nginx来对kylin集群进行反向代理&#xff0c; kylin集群使用nginx反向代理-CSDN博客文章浏览阅读349次&#xff0c;点赞8次&#xff0c;收藏9次。由于是同一个集群的&#xff0c;元数据没有变化&#xff0c;所以&#xff0c;直接将原本的kylin使用scp的…

大模型学习与实践笔记(四)

一、大模型开发范式 RAG&#xff08;Retrieval Augmented Generation&#xff09;检索增强生成&#xff0c;即大模型LLM在回答问题或生成文本时&#xff0c;会先从大量的文档中检索出相关信息&#xff0c;然后基于这些检索出的信息进行回答或生成文本&#xff0c;从而可以提高回…

使用组合框QComboBox模拟购物车

1.组合框: QComboBox 组合框&#xff1a;QComboBox 用于存放一些列表项 实例化 //实例化QComboBox* comboBox new QComboBox(this);1.1 代码实现 1.1.1 组合框的基本函数 QComboBox dialog.cpp #include "dialog.h" #include "ui_dialog.h"Dialog::Dialog…

大数据实时抓取软件:Maxwell学习网站的高效框架!

介绍&#xff1a;Maxwell是由美国Zendesk开源的&#xff0c;使用Java编写的MySQL实时抓取软件。它能够实时读取MySQL的二进制日志&#xff08;Binlog&#xff09;&#xff0c;并将这些信息生成为JSON格式的消息。进一步地&#xff0c;Maxwell将这些消息作为生产者发送给Kafka、…

【Android+物联网】Android封装MQTT连接阿里云物联网平台

前言&#xff1a; 亲测可行&#xff0c;本文实现Android封装MQTT连接阿里云物联网平台。将MQTT协议和连接阿里云平台的操作通过Android studio写入APP中&#xff0c;并简单设计UI。实现手机APP远程控制单片机LED灯亮灭的功能。 关于《Android软件开发》&#xff0c;见如下专栏…

智能小程序小部件(Widget)开发详解

Widget 代表应用的一个小部件&#xff0c;负责小部件的展示和交互。 小部件(Widget) 的开发在智能小程序的基础上增加一个目录即可&#xff0c;用于存放小部件(Widget)的代码。并在 project.tuya.json 中增加一个声明。 创建小部件(Widget)项目 在 Tuya MiniApp Tools 中&…

【DotNetGuide】C#/.NET/.NET Core学习、工作、面试指南

&#x1f431;‍&#x1f680;C#/.NET/.NET Core学习、工作、面试指南 “ 让现在的自己不再迷茫✨✨✨。 GitHub开源地址&#xff1a;https://github.com/YSGStudyHards/DotNetGuide &#x1f4da;DotNetGuide简介 现如今网上关于Java、前端、Android、Golang...等相关技术的…

基础篇_面向对象(什么是对象,对象演化,继承,多态,封装,接口,Service,核心类库,异常处理)

文章目录 一. 什么是对象1. 抽取属性2. 字段默认值3. this4. 无参构造5. 抽取行为 二. 对象演化1. 对象字段演化2. 对象方法演化3. 贷款计算器 - 对象改造4. 静态变量5. 四种变量 三. 继承1. 继承语法2. 贷款计算器 - 继承改造3. java 类型系统4. 类型转换1) 基本类型转换2) 包…

数据结构04附录01:字符串大写转小写[C++]

图源&#xff1a;文心一言 上机题目练习整理~&#x1f95d;&#x1f95d; 本篇作为字符串的代码补充&#xff0c;提供了3种&#xff08;差别并不大&#xff09;解法以及函数的详细解释&#xff0c;供小伙伴们参考~&#x1f95d;&#x1f95d; 前文&#xff1a;&#x1f338;…

最全的软件测试面试题(含答案)

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;软件测试面试题分享&#xff1a; 1000道软件测试面试题及答案&#x1f4e2;软件测试实战项目分享&#xff1a; 纯接口项目-完…

ME6211C33M5G-N 输出3.3V 500mA 线性稳压器LDO 参数

描述 ME6211系列是高精度&#xff0c;低噪声&#xff0c;CMOS LDO电压调压器。ME6211系列提供低输出噪声&#xff0c;高纹波抑制率&#xff0c;低辍学率和非常快速的开启时间&#xff0c;ME6211系列是当今最前沿的手机的理想选择。ME6211内部包括参考电压源、误差放大器、驱动…

Python从入门到精通 第十一章(面向对象)

一、类和对象 1、面向对象基本概念 &#xff08;1&#xff09;之前学习的编程方式是面向过程的&#xff0c;面向过程和面向对象是两种不同的编程方式。 &#xff08;2&#xff09;过程和函数&#xff1a;过程是早期的一个编程概念&#xff0c;过程类似于函数&#xff0c;只能…

DDNS-GO配置使用教程

环境&#xff1a;openwrt 下载地址&#xff1a;Releases jeessy2/ddns-go GitHub 下载 ssh至openwrt根目录&#xff0c;根据你的处理器选择要下载的版本&#xff0c;我是路由器&#xff0c;选择的是 ddns-go_5.7.1_linux_arm64.tar.gz wget github链接 安装 tar -zxvf…

对象图作业

对象图作业 一. 简答题&#xff08;共3题&#xff0c;100分&#xff09; (简答题) 对象特性的三要素是什么&#xff0c;请通过一个实际的例子来说明三要素的内容。 正确答案&#xff1a; 对象特性的三要素是状态、行为和标识。 张三对象具有身高、体重、学历、职务、收入等状态…

Flink 2.0 状态管理存算分离架构演进

Flink 2.0 状态管理存算分离架构演进 flink 现有状态访问线程模型首先简单来说一下,flink2.0做存算分离,最最主要的一点是解决,大状态的问题,例如一个超过50T的物流数据,大状态恢复可能就要1天,所以才有存算分离这么一个设计初衷。 下面先来看一下 任务是怎么执行提交的,…