3.4 Linux 软件管理

一. RPM 软件包管理器

1、软件包介绍

RPM(RedHat Package Manager)软件包:扩展名为“.rpm”。RPM本质上就是一个包,包含可以立即在特定机器体系结构上安装和运行的Linux软件。安装RPM软件包需要使用rpm命令或yum命令。

源代码软件包:软件包文件的后缀为.tar.gz、tar.Z、tar.bz2或.tgz。这种软件包是程序开发完成的原始代码,它的内容多是一种可编译运行的源代码。安装源码包需要使用相应的编译工具,如linux中的C/C++语言编译器gcc、gcc-c++。

开放源代码的自由软件绝大多数选择以TarBall的形式发布,而RPM软件包、DEB软件包等则使用了二进制的文件格式,代码相对比较封闭。

RPM软件包命名格式:

  • 2.4.6 是软件的版本号,版本号的格式为:主版本号.次版本号.修正号。
  • 80是版本号发布次数,表示这个RPM包是第几次编译生成的。
  • 硬件平台通常为i386或i686、x86_64、noarch等,表示适用的硬件平台,x86_64表示适用于64位的系统,如果是noarch表示不区分硬件架构。
mount 命令
  • 描述:挂载一个分区或者文件系统到系统目录下
  • 语法:mount [选项] device dir
mkdir /mnt/cdrom			# 创建挂载目录
mount /dev/sr0 /mnt/cdrom	# 挂载sr0至/mnt/cdrom/,sr0写保护,将以只读方式挂载
ls -la /mnt/cdrom/Packages/ | more	# 查看光盘中的rpm包
df 命令
  • 描述:检查文件系统的磁盘空间占用情况
  • 语法:df -h
df -h						# 查看磁盘空间占用情况

umount 命令
  • 描述:卸载以挂载的文件系统
  • 语法:umount 设备或挂载目录
umount /dev/sr0			# 卸载sr0设备
rpm 命令
  • 描述:查询、操作、维护rpm软件包相关信息
  • 语法:rpm [选项] 软件名
  • 查询未安装的rpm 软件信息
    • -qpi:通过.rpm包文件查看该软件的详细信息
    • -qpl:查看.rpm安装包内所包含的目录、文件列表
    • -qpc:查看.rpm安装包内包含的配置文件列表
    • -qpd:查看.rpm安装包内包含的文档文件列表
# 查询未安装的软件包的详细信息
rpm -qpi /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm
# 查询未安装的软件包的目录、文件列表
rpm -qpl /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm
# 查询未安装的软件包的配置文件列表
rpm -qpc /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm
# 查询未安装的软件包的配置文件列表
rpm -qpd /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm
  • 查询已安装的rpm 软件信息
    • -qa:查看系统中已安装的所有RPM软件包列表
    • -qi:查看指定软件的详细信息
    • -ql:查询指定软件包所安装的目录、文件列表
    • -qc:仅显示指定软件包安装的配置文件
    • -qd:仅显示指定软件包安装的文档文件
    • -qf: 查询文件或目录属于哪个RPM软件
rpm -qa | wc -l						# 查询主机已安装的rpm包总数量
rpm -qi kbd-1.15.5-15.el7.x86_64	# 查询已安装的 kbd 软件包的详细信息
rpm -ql kbd-1.15.5-15.el7.x86_64	# 查询已安装的 kbd 软件包的安装路径
rpm -qd kbd-1.15.5-15.el7.x86_64	# 查询已安装的 kbd 软件包的文档文件
rpm -qf /etc/pam.d/vlock			# 查询指定的文件属于哪个rpm软件包
  • 安装或升级rpm软件包
    • -i:安装一个新的rpm软件包
    • -v:显示软件安装过程中的详细信息
    • -h:在安装或升级软件包的过程中,以“#”号显示安装进度
    • -U:升级某个rpm软件,若原本未装,则进行安装
    • -F:更新某个rpm软件,若原本未装,则放弃安装
    • -e:卸载指定的RPM软件,格式:rpm -e 软件名
    • --force:强制安装所指定的rpm软件包
    • --nodeps:安装、升级或卸载软件时,忽略依赖关系
# 安装tree软件包
rpm -ivh /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm
# 更新tree软件包
rpm -Uvh /mnt/cdrom/Packages/tree-1.6.0-10.el7.x86_64.rpm

# 卸载tree软件包
rpm -qa | grep tree					# 查询已安装的 tree 软件包的名称
rpm -evh tree-1.6.0-10.el7.x86_64	# 卸载 tree 软件
tree 命令
  • 描述:以树状格式列出目录的内容, 查看文件系统的结构
  • 语法:tree [选项]… [文件]…
    • -L 目录树的最大显示深度
 tree -L 2 /mnt			# 以树状结构显示文件目录内容,最大深度为2

2、维护RPM数据库

RPM数据库(/var/lib/rpm目录下)用于记录在Linux系统中安装、卸载、升级应用程序的相关信息,由RPM包管理系统自动完成维护,一般不需要用户干预。当RPM数据库发生损坏(误删文件、非法关机、病毒破坏等导致),且Linux系统无法自动完成修复时,将导致无法使用rpm命令正常地安装、卸载及查询软件包。

# 向RPM数据库的文件中写入脏的数据,用来模拟数据库损坏
echo "123" > /var/lib/rpm/__db.001

# 使用rpm命令,查看数据库损坏的情况会报什么错
rpm -qa | grep tree

# 清除损坏的rpm数据文件,并重建数据库信息
rm -rf /var/lib/rpm/__db.00*
# 重新使用rpm命令查询数据,命令可以正常使用
rpm -qa | grep tree
# 可以看到被删除的文件已经回复,数据库重建完成

3、导入验证公钥

安装软件包警告:

  • warning: /mnt/cdrom/Packages/lynx-2.8.8-0.3.dev15.el7.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

这是由于没有导入RedHat提供的公钥所致,导入公钥文件:

rpm --import /mnt/cdrom/RPM-GPG-KEY-CentOS-7		# 导入公钥文件
4、解决软件包依赖关系
  • 树形依赖:A-B-C-D: 安装时要从后往前安装先从D包开始、然后是C包......最后到A包
  • 环形依赖:A-B-C-D-A: 安装时要可以一条命令直接装完如:rpm -ivh A B C D
rpm -qa | grep vim		# 查看软件包依赖,卸载vim

# 卸载vim-common,此时存在依赖关系vim-enhanced依赖vim-common,所以会报错
# 先删除vim-enhanced
rpm -e vim-common-7.4.629-8.el7_9.x86_64

二. YUM 软件包管理器

YUM(Yellow dog Updater Modified), 一个基于RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包。

YUM的特点:

  • yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令 .
  • 所有软件包全部都在互联网中, 能够实现非常快速的更新、升级
  • 采取的C/S 架构模型
  • 可以同时配置多个资源库(Repository)
  • 简洁的配置文件(/etc/yum.conf)
  • 自动解决增加或删除rpm 包时遇到的依赖性
  • 保持与RPM 数据库的一致性

软件仓库的提供方式:

  • 本地目录:file:///.......
  • FTP服务:ftp://......
  • HTTP服务:http://......
1、YUM的配置文件
  • Yum配置文件:/etc/yum.conf
  • Yum仓库配置文件:/etc/yum.repos.d/
  • Yum日志文件:/var/log/yum.log
  • YUM缓存目录:/var/cache/yum/$basearch/$releasever
2、配置本地Yum仓库

在Centos7的安装光盘中,已经在Packages目录建好了repodata数据,因此我们只需要将centos7系统光盘挂载到指定目录或将光盘全部内容复制到指定即可。

# 将sr0光盘挂载至 /mnt/cdrom
mount /dev/sr0 /mnt/cdrom

# 查看yum仓库的配置文件
ls /etc/yum.repos.d/

CentOS-*.repo是centos系统安装好后,系统默认提供的指向centos官方yum软件仓库的配置文件

# 备份yum仓库的配置文件到 /opt/yum_conf_bak/ 目录下
cp /ect/yum.repos.d/ /opt/yum_conf_bak/

创建本地仓库的配置文件:

# 创建本地仓库的配置文件
vim /etc/yum.repos.d/centos.repo

[centos7]                												#仓库名称  
name=centos_7          												  #仓库描述信息 
baseurl=file:///mnt/cdrom  											#URL访问路径,即软件仓库的路径 
enabled=1               															# 启用此软件仓库
gpgcheck=0              															# 关闭gpg软件包签名验证 
#gpgcheck=1             															# 开启gpg软件包签名验证
#gpgkey=file://etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7   # GPG公钥文件的位置
3、yum 命令
  • 语法: yum [options] [command] package
    • 选项:
      • -y, --assumeyes 回答全部问题为是
      • --installroot=[path] 设置安装根目录
      • --enablerepo=[repo] 启用一个或多个软件源(支持通配符)
      • --disablerepo=[repo] 禁用一个或多个软件源(支持通配符)
      • -x [package], --exclude=[package] 采用全名或通配符排除软件包
    • 命令:

clean 删除缓存数据

list 列出一个或一组软件包

help 显示用法提示

history 显示或使用事务历史

info 显示关于软件包或组的详细信息

install 向系统中安装一个或多个软件包

groups 显示或使用、组信息

repolist 显示已配置的源

search 在软件包详细信息中搜索指定字符串

update 更新系统中的一个或多个软件包

upgrade 更新软件包同时考虑软件包取代关系

erase 从系统中移除一个或多个软件包

# 清除yum缓存包
yum clean all

# 列出一个或一组软件包
yum list

# 显示已配置的源
yum repolist

# 查看list命令帮助
yum help list

# 表示只列出系统中已安装的软件包
yum list installed

# 表示只列出软件仓库中可用(尚未安装)的软件包
yum list available

# 表示列出可以升级版本的软件包。
yum list update

# 显示或使用事务历史
yum history list

# 查看事务为2的详细信息
yum history info 2

# 查看软件包的详细信息
yum list | grep vim
yum info vim-common.x86_64

# 使用yum安装一个软件
yum install -y wget

# 安装运维必备工具
yum install -y lrzsz net-tools gcc gcc-c++

# 查看yum仓库的软件包组
yum grouplist
yum groups

# 安装一个软件包组
yum help groups
yum groupintall GONME		# 安装GONME桌面
# yum卸载软件
yum help erase

# 卸载 tree
yum remove -y tree
# 查找软件包
yum search ifconfig

# 安装net-tools
yum install -y net-tools

# 安装 samba
yum install -y samba
4、配置yum网络源

网络源地址:

  • 阿里云:http://mirrors.aliyun.com/repo/Centos-7.repo
  • 网易:http://mirrors.163.com/.help/CentOS7-Base-163.repo
# 下载网络源repo文件
# wget -O,  --output-document=FILE    将文档写入 FILE
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/reps/Centos-7.repo

# 更新网络源
yum clean all
yum repolist

# 配置扩展源
yum install -y epel-release

三. 源代码编译安装程序

几乎所有的开源软件都支持在Linux下运行,而这些软件一般都以源码形式发放,只需要Linux安装了gcc、make、automake、autoconf都支持源码安装。

1、源代码安装的优缺点

源码安装的优点:

  • 获得最新的软件版本,及时修复bug
  • 根据用户需要,灵活定制软件功能
  • 因为可以定位到代码,所以debug方便
  • 本机兼容性最好(由于是本机编译的,只要编译通过,就没有各种库的依赖的问题)

源码安装的缺点:

  • 编译麻烦
  • 缺乏自动依赖管理,软件升级麻烦
2、源代码安装前的准备工作

源代码下载:.tar.gz和.tar.bz2 格式居多,源代码下载推荐去官网下载

完整性校验:

md5sum校验工具,计算MD5校验和,并与官方提供的值相比较,判断是否一致,若相同则说明该软件包没有被非法改动,对于校验和不一致的软件包,应尽量不要使用,以避免带来病毒、木马等不安全因素。

确定源代码编译环境:需安装支持C/C++程序语言的编译器

rpm -qa | grep gcc
yum install -y gcc gcc-c++

源码包安装流程:

获得所需安装的软件源代码以后,安装的基本过程包括解包、配置(检查安装环境、并对软件的安装目录、功能选择等参数进行预先设置)、编译和安装这几个通用步骤,如图所示,大多数开源软件的安装都遵循这个过程。当然,这四个步骤并不是一成不变的,实际安装时应参考软件自带的相关文档,如INSTALL、README

3、tar 命令
  • 描述:解压缩文件
  • 语法:tar [options] packages

-z, --gzip, --gunzip, --ungzip 通过 gzip 过滤归档

-v, --verbose 详细地列出处理的文件

-x, --extract, --get 从归档中解出文件

-f, --file=ARCHIVE 使用归档文件或 ARCHIVE 设备

-c, --create 创建一个新归档

-C, --directory=DIR 改变至目录 DIR

4、./configure 命令
  • 描述:预编译主要检测当前操作系统软件编译安装环境,如果检测缺少库文件或者软件包,需要手动安装
  • 语法:./configure [options] [VAR=Value]

--help 使用此参数可查看configure支持的详细参数信息

--prefix=PREFIX 指定安装路径,默认安装到/usr/local目录下

--sysconfdir=DIR 指定配置文件路径

5、源码安装 Apache

下载地址:

  • Index of /dist/httpd
  • Download - The Apache HTTP Server Project
a. 下载并解压
# 下载 httpd
wget http://archive.apache.org/dist/httpd/httpd-2.4.54.tar.gz

# 解压归档压缩包至/usr/local/src目录下:
tar -zxvf httpd-2.4.54.tar.gz -C /usr/local/src

# 进入解压目录查看目录结构
cd /usr/local/src/httpd-2.4.54
b. 编译并安装
# 预编译当前操作系统的软件环境
./configure --prefix=/usr/local/apache
# 检测上一条命令是否执行成果,0是成功,1是失败
echo $?			# 此处输出1,error:ARP not found

# 检测并安装apr
yum list | grep apr

# 安装Apache依赖包
yum -y install apr apr-devel apr-util apr-util-devel pcre pcre-devel

# 再次预编译
./configure --prefix=/usr/local/apache

# 编译
make -j 2
echo $?

# 安装
make install
c. 启动程序并访问
# 清理安装包
rm -rf /usr/local/src/httpd-2.4.54

# 查看apache安装目录
ls /usr/local/apache

# 启动apache
 /usr/local/apache/bin/apachectl start

 # 查看apache端口号
 netstat -antup | grep 80

 # 关闭防火墙
 systemctl stop firewalld

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

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

相关文章

vue3中父子组件传值

学习参考地址:【精选】Vue3父子组件间传参通信_vue3父子组件传参-CSDN博客 1、父传子 父组件直接通过属性绑定的方式给子组件绑定数据,子组件通过defineProps接收函数接收,例如: 父组件中: 子组件中接收props&#…

Leetcode1334. 阈值距离内邻居最少的城市

Every day a Leetcode 题目来源:1334. 阈值距离内邻居最少的城市 解法1:Floyd 算法 使用 Floyd 算法得到任意两点之间的最短路,然后统计每一个节点满足条件(距离在 distanceThreshold 以内)的邻居数量。 代码&…

Mysql词法分析实验(二)

表名叫select123能不能创建一个表? 在 MySQL 中,可以创建一个名为 select123 的表,但由于 SELECT 是 MySQL 的一个保留关键字,通常建议避免使用它作为表名的一部分,以防止潜在的解析错误或混淆。如果确实需要使用这样…

带头双向循环链表的实现

带头双向循环链表的实现 文章目录 带头双向循环链表的实现一、模型构建二、代码实现(接口函数以及测试用例)①初始化 Create函数②尾插③尾删④头插⑤头删⑥查找⑦在pos位置前插入新尾插新头插 ⑧删除pos位新尾删新头删 ⑨销毁链表⑩打印链表⑪测试用例…

SAP Debug时如何跳过(不执行)某些代码

Debug时如何跳过(不执行)某些代码 在DEBUG界面, 首先将光标定位到想跳至的代码行, 然后从右键菜单中选择Goto Statement, 或者从Debugger菜单中选择Goto Statement:(效果相同) 然后光标就会定位到想跳至的代码行 执行结果如下: 结果是000的原因是&#…

保姆级前端翻牌效果(CSS)

效果 翻牌效果 hover 时候 代码直接上 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…

微服务的注册发现和微服务架构下的负载均衡

文章目录 微服务注册模型服务注册与发现怎么保证高可用【1. 服务端崩溃检测】【2. 客户端容错】【3. 注册中心选型】 微服务架构下的负载均衡【1.轮询与加权轮询】【2.随机与加权随机】【3.哈希与一致性哈希】【4.最少连接数】【5.最少活跃数】【6.最快响应时间】【总结】 负载…

消防救援大队应用“码“上监管 实现重点领域监督全覆盖

近年以来&#xff0c;一直存在消防安全风险防控不精准、问题发现不及时、监督效果不明显等难点问题&#xff0c;我们充分利用信息化手段&#xff0c;探索开通“码上监督”网络举报平台&#xff0c;实现监督途径从“线下”拓展到“线上”&#xff0c;“码上监督”马上办。 问题…

容器size()无符号数导致的for循环崩溃

1.问题描述 容器size()无符号数导致的for循环崩溃 for (int index 0; index < static_cast(intVec.size())-1; index) { printf(“%d”,intVec[index]); } 如果不做强转&#xff0c;可能会有两个问题&#xff1a; &#xff08;1&#xff09;编译不过 &#xff08;2&#x…

K8S 集群搭建

1、搭建清单 2台linux服务器&#xff08;一个master节点&#xff0c;一个node节点&#xff09;&#xff0c;建议搭3台&#xff08;一个master&#xff0c;两个node&#xff09; 我使用的是腾讯云&#xff0c;节点与节点使用公网IP通信 确保2台服务器都安装了docker 2、服务…

unity 使用Vuforia扫描实体物体交互

文章目录 前言一、Vuforia是什么&#xff1f;二、Unity导入Vuforia1.去Unity - Windows – Asset Store&#xff0c;搜vuforia engine&#xff0c;添加到我的资源2.从 Unity 的菜单 Assets -> Import package -> Custom Package 导入脚本&#xff0c;添加 Vuforia Engine…

Echarts 图表添加横向 竖向滚动条

1.横向滚动条 dataZoom: [{// 设置滚动条的隐藏与显示show: true,// 设置滚动条类型type: "slider",// 设置背景颜色backgroundColor: "rgb(19, 63, 100)",// 设置选中范围的填充颜色fillerColor: "rgb(16, 171, 198)",// 设置边框颜色borderCo…

PGVector 管理工具 pgAdmin

PGVector 管理工具 pgAdmin pgAdmin 下载地址pgAdmin 安装pgAdmin 使用 pgAdmin 下载地址 https://www.postgresql.org/ftp/pgadmin/pgadmin4/ pgAdmin 安装 双击 pgadmin4-*-x64.exe 安装文件&#xff0c;选择安装路径&#xff0c;后面安装提示单击 next 就可以了。 pgAdm…

数据迁移教程 | 从 Postgre/Greenplum 到 DolphinDB

PostgreSQL 是一种开源的关系型数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;是最广泛使用的开源数据库之一。它允许用户通过添加自定义函数、数据类型和索引等方式扩展其功能&#xff0c;支持 ACID 事务&#xff0c;并使用多版本并发控制 (MVCC&#xff09;来管理并…

JDK 环境变量设置

目录 一. 前言 二. 下载 JDK 2.1. JDK 8 2.2. JDK 17 2.3. JDK 21 三. 环境变量设置 3.1. Windows 环境配置 3.1.1. 打开环境变量配置窗口 3.1.2. 配置环境变量 JAVA_HOME 3.1.3. 配置环境变量 CLASSPATH 3.1.4. 环境变量 Path 末尾追加 3.1.5. 检查JDK是否安装成…

北斗卫星推动我国法治建设

北斗卫星推动我国法治建设发展 10月26日下午&#xff0c;第二届北斗规模应用国际峰会北斗规模应用法治保障专题论坛在湖南省株洲市召开。与会专家围绕北斗法治建设全局、北斗涉外法治建设、北斗品牌塑造、北斗产业生态建设及政策法规完善等方面&#xff0c;进行了深入研讨交流。…

搬砖日记:post传数组(三种格式)

1. json型 request({url: /msg/message/batch/read,data,method: post,content-Type: application/json })2. formData数组型 Content-Type: application/x-www-form-urlencoded request({url: /msg/message/batch/read,data,method: post,})3.formData字段重复传型 把data换成…

经典文献阅读之--Fast and Robust Ground Surface Estimation...(均匀B样条采样快速估计地平面)

0. 简介 对于激光雷达的地面估计分割&#xff0c;目前其实有很多方法做了快速并鲁棒的分割&#xff0c;比如说我们之前写的一篇《经典文献阅读之–FEC》一文中就给出了快速分割的方案&#xff0c;当中第一步就是需要对地面进行分割。而我们这次看的是一篇使用均匀B样条的方法来…

第2关:多表查询

任务描述 join操作符编程要求测试说明 任务描述 本关任务&#xff1a; 使用join操作符实现多表查询。 join操作符 1.笛卡尔积&#xff0c;RXS 可直接转换为SQL语句 2.等值连接&#xff0c;记作 可直接转换为SQL语句 3.自然连接&#xff0c;记作 可转换为SQL语句 4.左外连接…

Java架构核心基础知识硬核整理,赶快收藏起来吧!!!

Java架构核心基础 lecture&#xff1a;波哥 一、数据结构和算法 1.数据结构 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下&#xff0c;精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同…