linux软件管理

news2025/8/6 9:59:25

软件管理

1、rpm管理工具

RPM是(Redhat Package Manager) 的缩写,由Red Hat公司提出的一种软件包管理标准

(1)rpm软件包的典型命名格式:

例:zsh-5.0.2-14.el8.x86_64.rpm

zsh-50214el8x8664
软件名主版本号次版本号修订号软件发布次数发行商RHEL8CPU架构商支持系统位数

(2)rpm安装

参数说明
-i,--install安装软件包
-v,--verbose显示安装过程
-h,--hash软件包安装显示#标记

在rpm相关网站下载软件包:

Rpmfind mirror  http://rpm.phone.net/RPM Search (pbone.net)http://rpm.phone.net/

(3)rpm命令

<1> 安装软件:rpm  -ivh  [软件包链接]

例:安装软件sl

[root@tianqinwei ~]# rpm -ivh http://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/s/sl-5.02-1.el8.x86_64.rpm

<2> 升级软件:

  • rpm  -Uvh  [软件包链接]  ---(-U:update,升级
  • rpm  -Fvh  [软件包链接]  ---(-F:freshen,前提是系统已安装旧版本

例:升级wget

下载wget:
[root@tianqinwei ~]# wget -c http://rpmfind.net/linux/centos/8-stream/AppStream/x86_64/os/Packages/wget-1.19.5-11.el8.x86_64.rpm

检查wget版本:
[root@tianqinwei ~]# rpm -q wget
wget-1.19.5-7.el8.x86_64

升级wget版本:
[root@tianqinwei ~]# rpm -Uvh wget-1.19.5-11.el8.x86_64.rpm

Uvh和Fvh的区别

1> 如果系统存在旧版本,则两者作用相同,都是升级软件

2> 如果系统内不存在旧版本,Uvh是直接安装新版本,Fvh放弃操作

<3> 卸载软件:rpm  -e  包名  ---(-e:erase,卸载

例:卸载wget

[root@tianqinwei ~]# rpm -e wget

<4> 查询软件:rpm  -q  包名

例:检查wget是否安装

法一:
[root@tianqinwei ~]# rpm -q wget
wget-1.19.5-11.el8.x86_64
法二:
[root@tianqinwei ~]# rpm -qa | grep wget
wget-1.19.5-11.el8.x86_64

-q 查询还存在许多子命令:

  • # rpm -qi 包名     查询已安装的包的信息
  • # rpm -qc 包名    查询已安装包的配置信息
  • # rpm -qd 包名    查询已安装包的文档信息
  • # rpm -ql 包名     列出软件包的文件
  • # rpm -qa            查询所有软件包
  • # rpm -qf 文件路径(查询文件是哪个包安装的)
[root@tianqinwei ~]# rpm -qf /etc/ssh
openssh-7.8p1-4.el8.x86_64

例:删除vim软件包,并且重新安装 

[root@tianqinwei ~]# rpm -qa | grep ^vim --- 查找以vim开头的软件包
vim-enhanced-8.0.1763-10.el8.x86_64
vim-common-8.0.1763-10.el8.x86_64
vim-minimal-8.0.1763-10.el8.x86_64
vim-filesystem-8.0.1763-10.el8.noarch
[root@tianqinwei ~]# rpm -e vim-enhanced --- 删除vim-enhanced软件包
[root@tianqinwei ~]# rpm -e vim-common
[root@tianqinwei ~]# mount /dev/cdrom /mnt/ --- 挂载安装光盘
[root@tianqinwei ~]# cd /mnt/AppStream/Packages --- 进入挂载目录
安装软件:
[root@tianqinwei Packages]# rpm -ivh vim-enhanced-8.0.1763-10.el8.x86_64.rpm 
warning: vim-enhanced-8.0.1763-10.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:
	vim-common = 2:8.0.1763-10.el8 is needed by vim-enhanced-2:8.0.1763-10.el8.x86_64
报错:错误的依赖关系
rpm最大的缺陷,无法解决软件包之间的依赖关系
解决方法:
<1> 先安装vim-common,再安装vim-enhanced
[root@tianqinwei Packages]# rpm -ivh vim-common-8.0.1763-10.el8.x86_64.rpm 
[root@tianqinwei Packages]# rpm -ivh vim-enhanced-8.0.1763-10.el8.x86_64.rpm
<2> 将依赖和被依赖的软件包一起安装,中间空格隔开
[root@tianqinwei Packages]# rpm -ivh vim-common-8.0.1763-10.el8.x86_64.rpm vim-enhanced-8.0.1763-10.el8.x86_64.rpm

2、yum(dnf)管理工具

YUM = YellowDog Update Modifier
DNF = Dandified YUM

为了有效的解决软件安装的依赖关系,我们可以使用yum进行rpm软件包管理

(1)实现yum功能,依赖于三个机制的建立

  • 其一是需要有一个包含各种rpm安装文件的软件仓库(即yum源)
  • 其二是有软件仓库的仓库数据库,其中收集了软件仓库中所有rpm包的头部信息,包含了该包的描述、功能、提供的文件、依赖关系等包信息
  • 其三是有软件仓库的地址等信息。支持三种:本地路径--file(file://)、ftp(ftp://)、http(http://)

(2)更新:rhel8中默认使用的软件批量管理工具由yum换成了速度更快的dnf,原有的yum命令仅为dnf的软链接

[root@tianqinwei ~]# ll /usr/bin/yum 
lrwxrwxrwx. 1 root root 5 Feb 14  2019 /usr/bin/yum -> dnf-3
dnf源文件所在目录依旧为/etc/yum.repos.d下。
[root@tianqinwei ~]# ls /etc/yum.repos.d --- 仓库文件依旧存放在原yum的目录下面
redhat.repo

rhel8在升级的基础上增加了两个仓库:

  • BaseOS提供一套核心的底层操作系统功能,为基础软件安装库
  • AppStream包括额外的用户空间应用程序、运行时语言和数据库,以支持不同的工作负载和用力。AppStream的内容有两种格式 --- RPM格式的和称为模块的RPM格式扩展
  • (3)案例

例1:以本地安装光盘来构建安装仓库 yum源

1>挂载光盘:
[root@tianqinwei ~]# mount /dev/cdrom /mnt/

2>配置yum源:
仓库目录:/etc/yum.repos.d/
文件:要求以.repo为后缀
[root@tianqinwei yum.repos.d]# vim rhel8.repo
[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS/
gpgcheck=0

[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream/
gpgcheck=0

3>检查
[root@tianqinwei yum.repos.d]# yum repolist
卸载:yum remove packagename
安装:yum install packagename

例2:配置互联网源

使用阿里云镜像https://mirrors.aliyun.com/

1>修改名字,让其失效
[root@tianqinwei yum.repos.d]# mv rhel8.repo rhel8.repo.bak

2>复制为centos8.repo
[root@tianqinwei yum.repos.d]# cp rhel8.repo.bak centos8.repo

3>进入vim编辑
[root@tianqinwei yum.repos.d]# vim centos8.repo
[BaseOS]
name=BaseOS
baseurl=https://mirrors.aliyun.com/centos/8.5.2111/BaseOS/x86_64/os/
gpgcheck=0

[AppStream]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8.5.2111/AppStream/x86_64/os/
gpgcheck=0

4>检查
[root@tianqinwei yum.repos.d]# yum repolist

(4)yum常用

<1> list

  • yum list all 列出仓库中所有可安装的软件包
  • yum list installed [包名] --- 列出已安装的所有或指定的rpm包(包名中可使用匹配符)

<2> yum info [包名] --- 查看指定软件包的详细信息

<3> yum search 模糊包名 --- 查看模糊包名的软件包

<4> yum install [-y] 包名 --- 安装指定软件包,-y指在工作过程中需要使用者响应,此参数可直接回复yes

例:安装httpd

[root@tianqinwei ~]# yum install -y httpd

<5> yum update [-y] 包名 --- 升级指定软件包或主机中所有已安装的软件包(如果不指定包名, 则更新所有有新版本的软件)

<6> yum remove [-y] 包名 --- 卸载已安装在系统中的指定软件包

例:删除httpd

[root@tianqinwei ~]# yum remove httpd --- 一般不加-y,万一卸载的软件包中有某个工具想使用,以备不时之需

<7> yum provides 文件名 --- 查找指定文件属于哪个包


例1:查找/etc/ssh文件属于哪个包

[root@tianqinwei ~]# yum provides /etc/ssh
[root@tianqinwei ~]# yum whatprovides /etc/ssh

例2:查看ifconfig命令由哪个软件提供?

[root@tianqinwei ~]# yum provides ifconfig --- 查看ifconfig命令由那个软件提供

[root@tianqinwei ~]# rpm -e net-tools --- 卸载后也依旧能查看ifconfig命令由net-tools提供

[root@tianqinwei ~]# yum install -y net-tools --- 下载net-tools

(5)模块相关

RHEL8相应地在yum命令下,增加了一个module子命令。多了个模块(module)、模块下多了个序列 (Stream)、序列下多了个组合(profile)

<1> yum module list  ---  列出所有模块

<2> yum module list [具体模块名]  ---  列出具体模块

[d] default(默认的);[e] enable(启用的)

[x] disabled(禁用的);[i] installed(已安装的)

<3> 安装指定版本的模块:

  • yum  install  @模块名:版本
  • yum  module  install  模块名:版本

例:安装nginx模块的1.14版本

法一:[root@tianqinwei ~]# yum install @nginx:1.14
法二:[root@tianqinwei ~]# yum module install nginx:1.14

<4> yum  remove  [模块名]

(6)yum-config-manager的使用


安装:

[root@tianqinwei ~]# yum provides yum-config-manager --- 查找yum-config-manageer由什么提供

[root@tianqinwei ~]# yum install dnf-utils --- 安装该dnf-utils

[root@tianqinwei yum.repos.d]# ls --- 查看是否成功生成
centos8.repo.bak                                                         redhat.repo
mirrors.tuna.tsinghua.edu.cn_docker-ce_linux_rhel_8_source_stable_.repo  rhel8.repo
[root@tianqinwei yum.repos.d]# cat mirrors.tuna.tsinghua.edu.cn_docker-ce_linux_rhel_8_source_stable_.repo --- 查看仓库信息

若想使用时,需将gpgcheck改为0


3、源码编译

(1)优点:

  • 获得最新的软件版本,及时修复bug
  • 根据用户需要,灵活定制软件功能

(2)应用场合举例:

安装较新版本的应用程序时,自由软件的最新版本大都以源码的形式最先发布。当前安装的程序无法满足需要时,编译安装可由用户自行修改、定制功能。需要为应用程序添加新的功能时,用户可以重新配置、自由修改源代码,加入新的功能。

(3)主要流程:

  • 解包 --- tar(解包、释放出源代码文件)
  • 配置 --- ./confifigure (针对当前系统、软件环境,配置好安装参数)
  • 编译 --- make (将源代码文件变为二进制的可执行程序)
  • 安装 --- make install(将编译好的程序文件复制到系统中)

(4)案例:wget


[root@tianqinwei ~]# rpm -q wget --- 查看当前wget版本
wget-1.19.5-11.el8.x86_64
[root@tianqinwei ~]# wget -c http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz --- 下载源码

<1> 删除老版的wget
[root@tianqinwei ~]# rpm -e wget

<2> 安装c,c++编译环境,make
[root@tianqinwei ~]# yum install -y gcc gcc-c++ make

<3> 解压(一般情况下解压到/usr/local/src目录下)
[root@tianqinwei ~]# tar xf wget2-2.0.0.tar.gz -C /usr/local/src/

<4> 配置 --- ./configure(针对当前系统的软硬件环境,配置好安装参数)
(一些新软件使用的是cmake方式。)
[root@tianqinwei ~]# cd /usr/local/src/wget2-2.0.0/ --- 进入到当前解压路径
[root@tianqinwei wget2-2.0.0]# ./configure --help --- 查看帮助
--prefix=PREFIX --- 安装路径,默认安装在[/usr/local]
--bindir=DIR --- 指定用户可执行的命令放置位置,默认放在[/usr/local/bin]
--sysconfdir=DIR --- 指定配置文件,默认放在[/usr/local/etc]
[root@tianqinwei wget2-2.0.0]# ./configure --- 直接全部用默认值,按回车
报错:configure: WARNING: *** GNUTLS was not found. Fallback to libnettle for hashing and checksumming.
错误处理:安装gnutls-devel.i686(缺少gnutls-devel.i686开发包)
[root@tianqinwei wget2-2.0.0]# yum list | grep gnutls --- 查找gnults-devel.i686
[root@tianqinwei wget2-2.0.0]# yum install gnutls-devel -y --- 安装
[root@tianqinwei wget2-2.0.0]# ./configure --- 再次执行无报错,进行下一步

<5> 编译make(一般如果make报错,需从./configure开始执行。只要解决报错,都得返回从./configure开始执行)
[root@tianqinwei wget2-2.0.0]# make

<6> 安装make install
[root@tianqinwei wget2-2.0.0]# make install

<7> 查看
[root@tianqinwei ~]# whereis wget2 --- 查看路径
wget2: /usr/local/bin/wget2
[root@tianqinwei ~]# wget2 -V --- 查看版本
GNU Wget2 2.0.0 - multithreaded metalink/file/website downloader

<8> 检查是否可用



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

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

相关文章

day26_HTML

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、二阶段介绍 二、HTML 零、 复习昨日 见代码 一、二阶段介绍 第一阶段: 基础入门 java基本语法编程基础(方法,数组)面向对象编程常用类高级(IO,线程,新…

新增 IEC61850、Profinet 驱动

2 月&#xff0c;Neuron 团队主要侧重于开发新的驱动&#xff0c;新增了南向 IEC61850 驱动、南向 Allen-Bradley DF1 驱动、Profinet 驱动支持以及静态点位等功能&#xff0c;这些新驱动和新功能将在 2.4 版本中正式发布。 IEC61850 驱动 IEC61850 标准是电力系统自动化领域…

网络基础(2)

目录1. 端口号2. 套接字socket3. 网络通信3.1 sockaddr与sockaddr_in3.2 接口服务端3.2.1 创建套接字&#xff0c;打开网络文件3.2.2 给该服务器绑定端口和ip&#xff08;特殊处理&#xff09;3.2.3 初始化相关服务器3.2.4 提供服务客户端3.2.5 绑定3.2.6 使用服务4. makefile实…

关于 JavaScript 中的 Promises

在 JavaScript 中&#xff0c;Promise 是一个对象&#xff0c;它表示一个可能还不可用&#xff0c;但会在未来解决的值。Promises 用于处理异步操作&#xff0c;例如发出网络请求或访问数据库&#xff0c;其中结果不是立即可用的。如果你准备好了&#xff0c;我想开始我们的冒险…

基于SpringBoot+SpringCloud+Vue前后端分离项目实战 --开篇

本文目录前言做项目的三大好处强强联手(天狗组合)专栏作者简介专栏的优势后端规划1. SpringBoot 和 SpringCloud 的选择2. Mybatis 和 MybatisPlus 和 JPA 的选择3. MySQL 和 Mongodb 的选择4. Redis 和 RocketMQ5. 后端规划小总结后端大纲提前掌握的知识点一期SpringBoot二期S…

EventLoop机制

JavaScript 是单线程的语言 JavaScript 是一门单线程执行的编程语言。也就是说&#xff0c;同一时间只能做一件事情。 单线程执行任务队列的问题&#xff1a; 如果前一个任务非常耗时&#xff0c;则后续的任务就不得不一直等待&#xff0c;从而导致程序假死的问题。 同步任…

机器学习和深度学习的综述

机器学习和深度学习的综述 1.1.1人工智能、机器学习、深度学习的关系 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是最宽泛的概念&#xff0c;是研发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。由于这个定义…

代码随想录算法训练营第二十一天打卡 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

打卡第21天&#xff0c;继续二叉树&#xff0c;前几天终于补完了&#xff0c;感觉难度上来了。 今日任务 530.二叉搜索树的最小绝对差501.二叉搜索树中的众数 二叉树的最近公共祖先 530.二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不…

计算机网络——路由、交换、子网篇

子网掩码 解释1 作者&#xff1a;纪言 链接&#xff1a;https://www.zhihu.com/question/56895036/answer/447915532 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 仅限ip4首先子网掩码这名字取得很好&#xff0c…

Java创建线程的方式只有一种:Thread+Runnable

Java创建线程的方式其实只有一种&#x1f468;‍&#x1f393;一、继承Thread&#x1f468;‍&#x1f393;二、实现Runnable接口&#x1f468;‍&#x1f393;三、实现Callable接口&#x1f468;‍&#x1f393;四、通过线程池创建&#x1f468;‍&#x1f393;五、总结一般我…

SOLID 原则要这么理解!

什么是 SOLID 原则 SOLID 原则其实是用来指导软件设计的&#xff0c;它一共分为五条设计原则&#xff0c;分别是&#xff1a; 单一职责原则&#xff08;SRP&#xff09;开闭原则&#xff08;OCP&#xff09;里氏替换原则&#xff08;LSP&#xff09;接口隔离原则&#xff08;…

Matter 系列 #9|乐鑫 Matter 预配置服务加速设备生产

乐鑫 Matter 系列文章 #9 目录 Matter 预配置服务 1. 设备认证 (Device Attestation) 2. 独特性 (Uniqueness) 3. 安全性 (Security) 联系我们​​​​​​​ 如今&#xff0c;物联网行业蓬勃发展&#xff0c;大量市场参与者正在积极地构建 Matter 智能设备。 乐鑫一直致…

盲盒开发:多元化设计、数字化销售、可持续发展

随着互联网的发展&#xff0c;盲盒成为了一种新型文化现象和玩具消费方式。它不仅满足了人们的消费需求&#xff0c;也引发了人们对玩具和收藏品的热爱和追求。目前&#xff0c;盲盒市场已经逐渐发展成为一个庞大的产业&#xff0c;其中海外盲盒市场更是异彩纷呈&#xff0c;备…

Git安装初始化及Gitee上传提交步骤

一、git安装git下载https://git-scm.com/download/win直接点击下一步“next”安装即可在桌面右键&#xff0c;选择 Git Bash Here 在 Git Bash Here 终端里输入 git --version 查看 git 版本&#xff0c;如图所示&#xff0c;说明 Git 安装成功。在终端设置用户签名邮箱git con…

windows7安装sql server 2000安装步骤 及安装过程中遇到的问题和解决方式

提示&#xff1a;文章写完后windows7安装sql server 2000安装步骤 及安装过程中遇到的问题和解决方式&#xff0c; 文章目录一、ms sql server 2000是什么&#xff1f;版本简介&#xff1a;**特点&#xff1a;****优点&#xff1a;**二、步骤1.下载安装包及Sq4补丁包2.安装 ms …

淘宝 APP 网络架构演进与弱网破障实践

作者&#xff1a;沈良炜 阿里大淘宝终端体验平台团队 面对移动互联网络下复杂多变的网络环境&#xff0c;如何提供更稳定可靠的请求性能&#xff0c;保障用户的加载浏览体验&#xff1f;本文将为大家分享淘宝APP统一网络库的演进。 一、引言 自2013年ALLIN无线到今天&#xff0…

ESP32设备驱动-土壤湿度传感器驱动

土壤湿度传感器驱动 1、土壤湿度传感器介绍 土壤湿度传感器由两个探头组成,用于测量水的体积含量。 两个探头让电流通过土壤,然后得到电阻值来测量水分值。 当有更多的水时,土壤会传导更多的电,这意味着电阻会更小。 因此,水分含量会更高。 干燥的土壤导电性差,所以当…

第八章.贝叶斯分析—贝叶斯定理朴素贝叶斯

第八章.贝叶斯分析 8.1 贝叶斯定理&朴素贝叶斯 贝叶斯主要应用与新闻分类&#xff0c;文本分类&#xff0c;评论分析。 1.数理统计学处理的信息 1).贝叶斯方法 关于统计推断的系统理论和方法&#xff0c;称为贝叶斯方法。 2).经典统计学 总体信息&#xff1a;当前总体样…

【2223sW2】LOG2

写在前面 好好学习&#xff0c;走出宿舍&#xff0c;走向毕设&#xff01; 一些心路历程记录&#xff0c;很少有代码出现 因为鬼知道哪条代码到时候变成毕设的一部分了咧&#xff0c;还是不要给自己的查重挖坑罢了 23.3.2 检验FFT 早上师兄帮忙看了一眼我画的丑图&#xff…

什么是模块,Python模块化编程(入门必读)

Python 提供了强大的模块支持&#xff0c;主要体现在&#xff0c;不仅 Python 标准库中包含了大量的模块&#xff08;称为标准模块&#xff09;&#xff0c;还有大量的第三方模块&#xff0c;开发者自己也可以开发自定义模块。通过这些强大的模块可以极大地提高开发者的开发效率…