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

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

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

相关文章

荧光量子效率积分球的优势是什么

荧光量子效率积分球是一种测量设备,可以用于测量荧光材料在特定波长下的量子效率。它由一个具有高朗伯特性的漫反射PTFE材料制成,具有高达99%的反射率和朗伯特性。积分球有三个开口,分别为光入射口、样品口和光出射口。光入射口设置有一准直镜…

windows10上使用Visual Studio对树莓派进行交叉编译示例

本文主要介绍通过Visual Studio对树莓派进行交叉编译的方法。 1 环境 宿主机: 系统:Windows10 开发平台:Visual Studio 2022 (我用的是社区版) VisualGDB: VisualGDB - Download (我下的试用版本) GNU工具链: Prebuilt GNU toolchain f…

表白墙完善(数据库,前端,后端Servlet),再谈Cookie和Session。以及一个关于Cookie的练习小程序

目录 表白墙引入数据库 再谈Cookie和session 得到Cookie ​编辑 设置Cooie 使用Cookie编写一个登入的小界面 表白墙引入数据库 1.先引入数据库的依赖(驱动包),5.1.49 pom.xml中,在之前的两个之前,再去添加一个 &…

【Windows 开发环境配置——NVIDIA 篇】CUDA、cuDNN、TensorRT 三件套安装

CUDA 从CUDA Toolkit Archive下载相应版本的离线安装包,这里以11.7为例。 打开安装包,在安装选项选择自定义模式,点击下一步。 在自定义安装选项中,仅选择CUDA组件(其中Nsight相关组件用于代码调试与性能分析&#xff…

HarmonyOS分布式文件系统开发指导

分布式文件系统概述 分布式文件系统(hmdfs,HarmonyOS Distributed File System)提供跨设备的文件访问能力,适用于如下场景: 两台设备组网,用户可以利用一台设备上的编辑软件编辑另外一台设备上的文档。平板…

CKA认证模块②-K8S企业运维和落地实战-2

CKA认证模块②-K8S企业运维和落地实战-2 K8S常见的存储方案及具体应用场景分析 k8s存储-empty emptyDir类型的Volume是在Pod分配到Node上时被创建,Kubernetes会在Node上自动分配一个目录,因此无需指定宿主机Node上对应的目录文件。 这个目录的初始内容…

计算机网络之网络体系结构

计算机网络体系结构 一、常见的计算机体系结构 1.1 OSI标准以及TCP/IP体系结构 OSI标准失败的原因: OSI的专家们缺乏实际经验,他们在完成OSI标准时没有商业驱动力OSI的协议实现起来过分复杂,而且运行效率很低OSI标准的制定周期太长&#x…

css:文本对齐属性vertical-align实现化学元素上标下标的显示

文档 https://developer.mozilla.org/zh-CN/docs/Web/CSS/vertical-align 语法 vertical-align: <value>;可选值&#xff1a; sub&#xff1a;使元素的基线与父元素的下标基线对齐。 super&#xff1a;使元素的基线与父元素的上标基线对齐。 text-top&#xff1a;使…

JAVA 中集合取交集

日常工作 经常需要取两个数据集的交集。对常用的List 和Set集合做了一个测试 public static void main(String[] args) {List<Integer> list1 Lists.newArrayList();List<Integer> list2 Lists.newArrayList();Set<Integer> set3 Sets.newHashSet();Set&l…

基于SSM的药店药品销售系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

程序员的护城河

程序员的护城河是一个多维度的概念&#xff0c;它包括技术能力的深度、对创新的追求、沟通协作等软实力。这些因素共同构成了程序员在保障系统安全、数据防护以及网络稳定方面所起到的重要作用。 首先&#xff0c;技术能力的深度是程序员的核心竞争力之一。随着科技的不断发展…

车载通信与DDS标准解读系列(1):DDS-RPC

▎RPC & DDS-RPC RPC&#xff1a;Remote Procedure Call&#xff0c;远程过程调用。 远程过程调用是一种进程间通信&#xff0c;它允许计算机程序在另一个地址空间中执行子程序&#xff0c;就好像用别人的东西像用自己的一样&#xff0c;常用于分布式系统。 远程过程调用…

3分钟带你了解前端缓存-HTTP缓存

前情提要 前端缓存分为下面三大类&#xff0c;本文主要讲解HTTP缓存~ 1. HTTP缓存 强缓存协商缓存 2. 浏览器缓存 本地小容量缓存本地大容量缓存 3. 应用程序缓存 HTML5应用程序缓存 缓存作用 减少了冗余的数据传输减少服务器的负担提高了网站的性能加快加载网页速度 …

易基因:综合全基因组DNA甲基化和转录组学分析鉴定调控骨骼肌发育潜在基因 | 研究进展

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 DNA甲基化是骨骼肌发育中关键的表观遗传调控机制。但胚胎鸭骨骼肌发育中负责DNA甲基化的调控因子仍然未知。 2023年10月23日&#xff0c;南京农业大学动物科技学院于敏莉副教授团队在《…

核心!华为自研系统鸿蒙趋势

鸿蒙系统的推出引起了全球的关注&#xff0c;毕竟这是华为自主研发的操作系统。这个系统有一些特点很独特。首先&#xff0c;它的自主可控性是一大特色。因为是自家研发的&#xff0c;所以更容易适应外界变化。其次&#xff0c;它采用了分布式架构&#xff0c;这样不同设备之间…

GitHub Universe 2023:AI 技术引领软件开发创新浪潮

GitHub 是全球领先的软件开发和协作平台&#xff0c;数百万开发者和企业在此分享、学习和创建卓越的软件。同时 GitHub 处在 AI 技术前沿&#xff0c;通过其先进的 AI 技术增强开发者体验并赋能未来软件开发的使命。在今天的文章中&#xff0c;我们将一起看看在 GitHub 年度大会…

project打开文件时,显示无法识别此文件格式?

环境&#xff1a; Win 10 专业版 project 2021 问题描述&#xff1a; project打开文件时&#xff0c;显示无法识别此文件格式&#xff1f; 解决方案&#xff1a; 1.测试新建文件&#xff0c;打开都是这样&#xff0c;检查文件都不是旧版本创建&#xff08;未解决&#xff…

Linux之输入输出重定向和管道

一、是什么 linux中有三种标准输入输出&#xff0c;分别是STDIN&#xff0c;STDOUT&#xff0c;STDERR&#xff0c;对应的数字是0、1、2&#xff1a; STDIN 是标准输入&#xff0c;默认从键盘读取信息STDOUT 是标准输出&#xff0c;默认将输出结果输出至终端STDERR 是标准错误…

做作业用台灯好还是不用台灯?高口碑护眼台灯分享

相信大家在生活着也遇到过这个问题&#xff0c;就是孩子在写作业时需不需要使用台灯。有些家长可能认为家里室内的亮度已经很足了&#xff0c;没必要使用台灯。 其实这个想法是错误的&#xff0c;孩子在书写作业时是需要使用台灯的&#xff01;室内灯源照到书桌时时远远不够的&…

jupyter lab配置列表清单

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…