Linux系统中常见的几种软件包管理器

news2024/11/28 22:40:07

软件包管理器

  • DPKG
  • APT(APT-GET)
  • RPM
  • YUM
  • DNF

Linux软件包管理工具是一组命令的集合,其作用是在操作系统中提供安装、更新、删除及卸载软件的方法,同时提供对系统中所有软件状态信息的查询。不同的Linux发行版会有不同的包管理器,比较常见的包管理工具有DPKG、APT(APT-GET)、RPM、YUM、DNF等。

DPKG

DPKG(Debian Packager)是Debian包管理系统,是Debian Linux家族的基础包管理工具,用于安装、删除deb软件包以及提供deb软件包的信息。

dpkg本身是一个底层工具,如同rpm系统,其上层工具(如apt)被用于从远程获取软件包以及处理复杂的软件包关系。

所有源自Debian的Linux发行版都使用dpkg作为包管理系统,例如Knoppix、Debian、Ubuntu、Linux Mint等。

选项说明:
	-i -- 安装软件包
	-r -- 删除软件包
	-P -- 删除软件包的同时删除其配置文件
	-l -- 显示已安装软件包列表
	-L -- 显示软件包关联的文件
	--unpack -- 解开软件包
	-c -- 显示软件包内文件列表
	--configure -- 配置软件包
dpkg -i package.deb  # 安装deb软件包
dpkg -r package  # 删除软件包
dpkg -P package  # 删除软件包(包括配置文件)
dpkg -l  # 列出已安装的软件包
dpkg -l package  # 显示该软件包的版本
dpkg --unpack package.deb  # 解开deb软件包
dpkg -c package.deb  # 列出deb软件包的内容
dpkg --configure package  # 配置软件包

APT(APT-GET)

apt(advanced packaging tool)是dpkg包管理系统的一个前端工具,是一个非常受欢迎的、自由而强大的命令行包管理器系统,适用于Debian及其衍生版,如Ubuntu、Linux Mint。apt由几个操作软件包的命令行工具组成,包括apt-get、apt-cache和apt-cdrom。

为了解决命令过于分散的问题,引入了命令apt,它包括了命令apt-get使用最广泛的功能选项,以及命令apt-cache和apt-config中常用到的功能。在使用apt命令时,用户不必再由apt-get转到apt-cache或apt-config,而且apt更加结构化,并为用户提供了管理软件包所需的必要选项。简单来说,apt就是apt-get、apt-cache和apt-config中最常用命令选项的集合。

apt install package  # 安装包
apt remove package  # 删除包
apt autoremove  # 检查并清除无用的安装包
apt update&upgrade package  # 更新所有的安装包
apt-get upgrade  # 更新所有已安装的软件包
apt-get dist-upgrade  # 将系统升级到新版本
apt-get install package  # 安装包
apt-get remove package  # 删除包(保留配置文件)
apt-get --purge remove package  # 删除包(同时删除配置文件)
apt-get autoclean package  # 移除该软件的旧版本软件包(为了满足其他软件包的依赖而安装,但现在不再需要的软件包)
apt-get clean  # 移除下载到本地的已安装的软件包
sudo apt list --installed  # 列出已安装的软件包

RPM

RPM(RedHat Package Manager)是RedHat软件包管理工具,是由红帽公司开发的软件包管理方式,是Linux系统里面的打包安装工具,基于这个底层系统,产生了多个前端包管理工具可供使用。

RPM早期被称为RedHat Package Manager,但由于RPM非常流行,大部分的Linux发行版本都使用了RPM来管理软件包,所以它实际上已经成为Linux的工业标准。因此RPM现在又被称为RPM is Package Manager,RPM现在是Linux Standard Base(LSB)中采用的包管理系统。

RPM最大的特点就是需要安装的软件都已经编译过,并都已经打包成RPM机制的安装包,通过默认的数据库记录这个软件安装时需要的依赖软件。当我们在自己的Linux系统上安装时,RPM会先依照软件里头的数据查询Linux主机的相关依赖软件是否满足,若满足则予以安装,若不满足则不予安装。

在这里插入图片描述

RPM常用的前端工具有如下几种:

  • yum:作为RHEL及CentOS的软件包前端工具
  • dnf:作为Fedora的软件包前端工具
  • zypper:作为SUSE发行版的软件包前端管理工具
  • urpmi:作为Mandriva Linux及相关派生版的软件包前端管理工具

RPM包的名称格式:Apache-1.3.23-11.i386.rpm

  • Apache – 软件名称
  • 1.3.23-11 – 软件的版本号,主版本和此版本
  • i386 – 是软件所运行的硬件平台,Intel 32位处理器的统称
  • rpm – 文件扩展名,代表RPM包
选项说明:
	-a -- 查询所有套件
	-e -- 删除指定套件
	-h -- 安装套件时列出标记
	-i -- 安装指定的套件档,或显示套件的相关信息
	-p -- 查询指定的套件档
	-q -- 使用询问模式,当遇到任何问题时,rpm指令会先询问用户
	-R -- 显示套件的关联性信息
	-U -- 升级指定的套件档
	-l -- 显示套件的文件列表
	-v -- 显示指令的执行过程
	-vv -- 详细显示指令的执行过程,便于排错
rpm -qa  # 查询已安装的所有rpm软件包
rpm -qa | grep package  # 查询相应软件包
rpm -qi 软件名  # 查询已安装软件对应的rpm软件包的详细信息
rpm -ivh package.rpm  # 安装rpm软件包
rpm --force -ivh package.rpm  # 强制安装rpm软件包
rpm -Uvh package.rpm  # 升级rpm软件包
rpm -e rpm软件包  # 卸载rpm软件包
rpm -e --nodeps rpm软件包  # 卸载软件包时,不检查依赖,这样做可能会导致一些与该软件包存在依赖关系的软件无法正常工作

YUM

YUM(Yellow dog Updater, Modified)是一个在Fedora、RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并进行安装,可以自动处理依赖关系,并能一次安装所有依赖的软件包,无须繁琐地进行一次又一次的下载和安装。

YUM原理:

  • Server端先对程序包进行分类后存储到不同的repository容器中,再收集大量RPM软件包的数据库文件中关于描述程序包之间依赖关系的数据,然后根据这些数据生成描述RPM软件包的依赖关系及所需文件在服务端的存放位置的说明文件(.xml格式),并将此说明文件存放在服务器端的repodata目录下供Client端取用。

  • Cilent端通过yum命令安装软件时发现缺少某些依赖性程序包,Client会根据本地的配置文件(/etc/yum.repos.d/*.repo)找到指定的Server端,然后从Server端repodata目录下获取说明文件(xxx.xml)后,存储在本地/var/cache/yum中方便以后读取。通过xxx.xml文件查找到需要安装的依赖性程序包在Server端的存放位置,再进入Server端yum库中的指定repository容器中获取所需程序包,下载完成后在本地实现安装。

主要特点:

  • 可以自动解决软件包的依赖关系
  • 可以对RPM包进行分组,基于组进行安装操作
  • 引入仓库概念,支持多个仓库(即可以同时配置多个资源库),可以从发行官方存储库和其他第三方存储库安装RPM软件包
  • 简洁的配置文件(/etc/yum.conf)

YUM类似java中的maven和python中的pip,可以从镜像网站上下载应用程序,并直接安装。
YUM是一个在线软件管理工具,所以使用YUM进行的操作大都需要在联网的条件下才能正常使用。

YUM和RPM的区别:

YUM只是一个前端用来便捷管理RPM软件包的工具,而RPM则是一个软件包管理系统(软件包管理器、软件包管理组件),RPM会把软件打包成以.RPM为扩展名的文件,并且也提供简单的命令来管理软件包,只不过RPM的命令工具没有YUM的命令强大罢了。
而YUM则是在RPM的基础上对软件包进行管理,实现了RPM软件包管理器在功能上的扩展,YUM必须依赖于RPM,因此YUM是不能脱离RPM而独立运行的。

RPMYUM
红帽于 1995 年推出了RPMYellowdog Updater(YUP)于1999-2001年开发,YUM 在 2003 年取代了原始的 YUP
RPM 代表 RPM 软件包管理器(以前称为 Red Hat 软件包管理器)YUM 代表经过修改的 Yellowdog Updater
RPM 命令工具不能解决依赖关系,您必须手动安装它们YUM 命令工具可以自动解决软件包的依赖关系并同时安装它们
允许同时安装同个软件包的多个版本不允许,会提示该软件包已经安装,但是你可以更新和升级
使用 RPM 命令安装软件包时,必须提供软件包的确切位置可以安装存储库中可用的任何软件包,只需要知道软件包名称
RPM 不依赖 YUMYUM 是一个 RPM 软件包的前端工具,在后端依旧使用 RPM 软件包管理器来管理软件包
RPM 命令工具只能安装已经下载到本地机器上的软件包YUM 能在线下载并安装软件包,而且能在线快速更新/升级已安装的软件
RPM 不允许您将整个系统升级到最新的可用版本YUM 允许您将系统升级到最新的可用版本
RPM 不允许您自动更新/升级系统上安装的软件包YUM允许您自动更新/升级系统上安装的软件包
它不使用在线存储库执行任何操作它完全依靠在线存储库来完成所有工作
RPM 属于低级软件包管理器,不仅提供基础的软件包管理功能,而且还负责将软件打包成以 .RPM 为扩展名的文件YUM 属于高级的软件包管理前端工具,YUM 是在 RPM 的基础上对软件包进行管理的,也就是说 YUM 是依赖于 RPM 的
RPM 适用于所有环境YUM 要搭建本地 YUM 源才可以使用
RPM 是底层管理工具YUM 是上层管理工具
# yum [选项] [参数]
# 选项为-y时,表示在安装过程中遇到的系统提问都默认回答yes,这样就不用在安装应用时停下来手动继续
参数说明:
	install  # 安装rpm软件包
	update  # 更新rpm软件包
	check-update  # 检查是否有可更新的rpm软件包
	remove  # 删除指定的rpm软件包
	list  # 显示软件包信息
	clean  # 清理yum过期的缓存
	deplist  # 显示yum软件包的所有依赖关系
	localinstall  # 安装本地的rpm软件包
	localupdate  # 更新本地的rpm软件包
	
yum -y install firefox  # 使用yum安装firefox

DNF

DNF是一个基于RPM包管理系统的包管理工具,是下一代的YUM,Fedora 18引入了它,它是Fedora 22及更新版本的默认包管理器,Rhel 8和CentOS 8也在应用。

dnf install package  # 安装软件包
dnf update package  # 升级软件包
dnf update && dnf upgrade  # 升级所有软件
dnf check-update  # 检查可更新的软件包
dnf remove package  # 删除软件包
dnf erase package  # 删除软件包
dnf autoremove  # 删除无用孤立的软件包
dnf clean all  # 删除缓存的无用软件包
dnf repolist  # 查看系统中可用的DNF软件库
dnf repolist all  # 查看系统中可用和不可用的所有DNF软件库
dnf list  # 列出所有的rpm软件包
dnf list installed  # 列出所有已安装的rpm软件包
dnf list available  # 列出所有可供安装的rpm软件包
dnf search package  # 搜索软件库中的rpm包
dnf provides /bin/bash  # 查找某一文件的提供者(查找bash的提供者)
dnf info package  # 查看软件包详情
dnf grouplist  # 查看所有的软件包组

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

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

相关文章

问道管理:新三板创新层最新标准?

近年来,我国资本商场改革不断推进,新三板成为中小微企业的重要融资渠道。为进一步提高新三板商场的效率和流动性,相关部分推出了新三板立异层。可是,刚刚施行不久的新三板立异层是否达到预期效果,是否真实契合商场需求…

将Linux上的cpolar内网穿透配置为开机自启动——“cpolar内网穿透”

将Linux上的cpolar内网穿透配置为开机自启动 文章目录 将Linux上的cpolar内网穿透配置为开机自启动前言一、进入命令行模式二、输入token码三、输入内网穿透命令 前言 我们将cpolar安装到了Ubuntu系统上,并通过web-UI界面对cpolar的功能有了初步了解。当然cpolar除…

【C++基础(八)】类和对象(下)--初始化列表,友元,匿名对象

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C初阶之路⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 类和对象 1. 前言2. 初始化列表2.1初始化列表的作用…

nginx基于源码安装的方式对静态页面、虚拟主机(IP、端口、域名)和日志文件进行配置

一.静态页面 1.更改页面内容 2.更改配置文件 3.测试 二.虚拟主机配置 1.基于IP (1)在html目录下新建目录存放测试文件 (2)修改nginx.conf文件,在htttp模块中配置两个server模块分别对应两个IP (3&am…

Centos7安装openvpn客户端

Background 关于openvpn服务端的部署配置可参考:【Docker安装pritunl】【Centos7使用docke搭建openV】openvpn windows 客户端下载地址 1、下载安装 yum -y install epel-release yum -y install openvpn问题:Error: pritunl-openvpn conflicts with op…

Redis学习笔记Day01-Redis入门

声明:本博客部分内容是从终极SpringBoot讲义摘抄的,文字是OCR识别出来的,有可能存在识别错误的可能,如有错误,请大胆指正,我马上修改! 目录 0.官方参考手册API1.连接命令2.key相关命令3.String命…

Android模板设计模式之 - 构建整个应用的BaseActivity

1. 模式介绍 模式的定义 定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模式的使用场景 1.多个子类有公有的方法,并且逻辑基本相同时。 2.重要、复杂的算法,可…

基于Tars高并发IM系统的设计与实现-实战篇6

基于Tars高并发IM系统的设计与实现-实战篇6 客户端设计实现 客户端采用跨平台SDK原生UI的方案。 此处重点介绍SDK实现,UI用户可以根据自己需求进行开发。 方案架构图: 方案实现: TCP链接 CTcpSocket CSSLSocket 长链接维护、数据收发 CTNSendRecvThr…

PHP最简单自定义自己的框架控制器自动加载运行(四)

1、实现效果调用控制中方法 2、创建控制器indexCrl.php <?php class indexCrl{public function index(){echo 当前index控制器index方法;} } 3、KJ.php字段加载控制器文件 public static function run(){//定义常量self::_set_const();//创建模块目录self::_mk_module();…

Windows下运行Tomcat服务时报GC Overhead Limit Exceeded

根本原因是在新建Tomcat作为Windows服务时&#xff0c;系统默认设置的堆内存太小了&#xff0c;我们打开/bin/service.bat文件&#xff0c;将如下图所示的默认值改大一些就好了 if "%JvmMs%" "" set JvmMs512 if "%JvmMx%" "" set J…

嵌入式AI芯片架构用处

Blaize将其GSP描述为能够执行“直接图处理&#xff0c;片上任务图管理和执行以及任务并行性”。简而言之&#xff0c;Blaize设计了GSP来满足AI&#xff0c;GPU&#xff0c;CPU或DSP以前无法满足的处理需求。 对于许多涉及嵌入式ai处理器的行业分析师而言&#xff0c;这是他们之…

算法通关村——轻松搞定最大深度问题

前言 二叉树的深度&#xff1a;从根节点到当前节点的最长简单路径边的条数 题目 给定一个二叉树&#xff0c;找出其最大深度&#xff0c;二叉树的深度为根节点到最远叶子节点的最长路径上的节点数 说明 如下图所示&#xff0c;对于node(3) &#xff0c; 最大深度自然是左右子节…

pmp考试是智商税吗,是一场持久的割韭菜战吗?

在一些大型企业中&#xff0c;PMP认证已成为担任“项目经理”必备的资格之一。此外&#xff0c;在国际上&#xff0c;PMP认证也成为参与项目招标的必要条件之一&#xff0c;只有拥有PMP认证的项目经理所在的公司才有资格参与竞标&#xff0c;而承建项目经理也必须持有PMP认证。…

RabbitMQ 安装教程

RabbitMQ 安装教程 特殊说明 因为RabbitMQ基于Erlang开发&#xff0c;所以安装时需要先安装Erlang RabbitMQ和Erlang版本对应关系 查看地址&#xff1a;www.rabbitmq.com/which-erlan… 环境选择 Erlang: 23.3及以上 RabbitMQ: 3.10.1Windows 安装 1. 安装Erlang 下载地…

海外进出口跨境电商独立站开发(多语言+多货币)

要搭建一个海外进出口跨境电商独立站开发&#xff0c;需要考虑以下几个方面&#xff08;以下步骤不分先后&#xff09;&#xff1a; 设计系统架构在开始编写代码之前&#xff0c;首先需要设计系统的整体架构。对于一个大型的电商系统&#xff0c;需要考虑系统可扩展性、高可用…

NameError: No such file or directory 解决方法

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 问题 最近有小伙伴经常问到这个报错&#xff0c;今天来分享一下具体怎么解决。 [Errno 2] No such file or directory: ./mnist_image_label/mnist_train_jpg_60000.txt这个没有查找到子文件或者子文件夹的问题 解决…

CPU与硬件的交互方式(中断、轮询)

CPU与硬件的交互方式 轮询方式&#xff1a;CPU不断的访问硬件有没有进行操作&#xff0c;如果接收到了信息&#xff0c;CPU就处理。如果没有过一会在访问一遍 直到有信息为止 中断方式&#xff1a;硬件操作的时候会写一个中断&#xff0c;向CPU发送这个中断&#xff0c;CPU正常…

【LeetCode】练习习题集【4月 - 7 月】

LEETCODE习题集【4月-7月总结】 简单 数组部分 1.重复数 题目&#xff1a; 在一个长度u为 n 的数组 nums 里的所有数字都在 0&#xff5e;n-1 的范围内。数组中某些数字是重复的&#xff0c;但不知道有几个数字重复了&#xff0c;也不知道每个数字重复了几次。请找出数组中…

网络安全—黑客技术【自学】

一、黑客是什么 原是指热心于计算机技术&#xff0c;水平高超的电脑专家&#xff0c;尤其是程序设计人员。但后来&#xff0c;黑客一词已被用于泛指那些专门利用电脑网络搞破坏或者恶作剧的家伙。 二、学习黑客技术的原因 其实&#xff0c;网络信息空间安全已经成为海陆空之…

Linux驱动——input子系统

一、input子系统基本框架 Linux内核为了两个目的&#xff1a; 简化纯输入类外设&#xff08;如&#xff1a;键盘、鼠标、游戏杆、轨迹球、触摸屏。。。等等&#xff09;的驱动开发 统一输入类外设产生的数据格式&#xff08;struct input_event&#xff09;&#xff0c;更加方…