Linux 常用的软件包管理器/软件包管理工具详解

文章目录

  • RPM 是什么?
    • 应用于哪些系统
    • RPM 的前端工具有哪些
    • RPM 包命名规范
    • RPM 安装软件的默认路径
    • RPM 安装原理图
    • RPM 命令详解
  • YUM 是什么?
    • 应用于哪些系统
    • YUM 原理说明
    • 主要特点
    • YUM 和 RPM 的区别
    • YUM 命令详解
  • DNF 是什么
    • 应用于哪些系统
    • DNF 命令详解
  • APT 是什么
    • 应用于哪些系统
    • APT 命令详解
    • APT-GET 是什么
    • APT-CACHE 是什么
    • APT-CDROM 是什么
    • APT 与 APT-GET 比较
  • DPKG 是什么
    • 应用于哪些系统
    • DPKG 命令详解
  • YAST2 是什么
    • 应用于哪些系统
  • ZYPPER 是什么
    • 应用于哪些系统
    • ZYPPER 命令详解

RPM 是什么?

RPM 是 RedHat Package Manage 的简写,是一种由红帽公司开发的软件包管理方式,在 Linux 中通过以 .rmp 为扩展名的文件对应用程序包进行管理。RPM 文件带有 .rpm 扩展名,RPM 程序包由一个存档文件组成,该文件包含特定程序包的库和依赖项。使用 RPM 我们可以方便的进行软件的安装、查询、卸载、升级、校验等工作。

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

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

所以想要解决 RPM 软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个 RPM 包组成时,有时候装一个软件要安装很多其他的软件包,忒麻烦!

应用于哪些系统

RPM 软件包管理方式一般是 Red Hat 派系的发行版本使用,另外 openSUSE、SUSE企业版、PCLinuxOS、Mandriva Linux、Mageia 也是要 RPM 作为软件包管理系统。

RPM 的前端工具有哪些

  1. yum:作为 RHEL 及 CentOS 的软件包前端工具

  2. dnf:作为 Fedora 的软件包前端工具

  3. zypper:作为 SUSE 发行版的软件包前端管理工具

  4. urpmi:作为 Mandriva Linux 及相关派生版的软件包前端管理工具

注意:还应该注意 rpm 是操作 RPM 的主要命令,而 .rpm 是 RPM 文件使用的扩展名。所以 “一个 rpm” 或 “某某 rpm” 一般是指 RPM 文件,而 rpm 通常指命令。

RPM 包命名规范

命名格式:name-version-release.os.arch.rpm软件名称-版本号-发布次数.适合linux系统.硬件平台.rpm

name:程序名称

version:程序版本号

release:软件包发布次数

os:即说明 RPM 包支持的操作系统版本。如:el6(即rhel6)、centos6、el5、suse11

arch:主机平台。如:i686、x86_64、amd64、ppc(power-pc)、noarch(即不依赖平台)

示例:bash-4.3.2-5.el6.x86_64.rpm,包全名为:bash-4.3.2-5.el6.x86_64.rpm,包名:bash

RPM 安装软件的默认路径

/etc 配置文件放置目录

/usr/bin 一些可执行文件

/usr/lib 一些程序使用的动态链接库

/usr/share/doc 一些基本的软件使用手册与说明文件

/usr/share/man 一些man page档案

RPM 安装原理图

在这里插入图片描述

RPM 命令详解

RPM 文件类似于 ubuntu 的 deb 文件,RPM 命令类似于 ubuntu 的 dpkg 命令。

详见《Linux 命令之 rpm – RPM 软件包的管理工具》

YUM 是什么?

YUM 是 Yellowdog Updater, Modified 的简写,YUM 是使用 RPM 作为软件包管理器的 Linux 操作系统的免费的开放源代码的命令行软件包管理应用程序,它是 Duke University 物理系最初为了管理 Red Hat Linux 系统而开发的软件包管理工具。

YUM 是基于 RPM 的前端管理工具,它是对 RPM 包进行管理的客户端,它是一种 Shell 前端软件包管理器。YUM 可以通过HTTP服务器下载、FTP服务器下载、本地软件池的等方式获得软件包,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理软件包的依赖关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。YUM 在安装软件时,会从服务器下载相应软件包,且会缓存在本地。

YUM 提供了查找、安装、删除某一个或一组甚至全部软件包的命令,而且命令简洁而又好记。使用 YUM 对 RPM 包进行管理,非常简单方便。

应用于哪些系统

目前它主要应用于 Red Hat 派系下的 Fedora、RHEL、SUSE 等 Linux 发行版中。

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 容器中获取所需程序包, 下载完成后在本地实现安装。
在这里插入图片描述
注意:YUM是一个在线软件管理工具,所以使用YUM进行的操作大都是需要在联网的条件下才能正常使用。

主要特点

  1. 可以自动解决软件包的依赖关系

  2. 可以对 RPM 包进行分组,基于组进行安装操作

  3. 引入仓库概念,支持多个仓库(即可以同时配置多个资源库),可以从发行官方存储库和其他第三方存储库安装 RPM 软件包

  4. 简洁的配置文件(/etc/yum.conf)

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 命令详解

yum 命令类似于 ubuntu 的 apt 命令。

详见《Linux 命令之 yum – 》

DNF 是什么

DFN 是新一代的 RPM 软件包管理器。

应用于哪些系统

首次出现在 Fedora 18 这个发行版中。而最近,它取代了 YUM,正式成为 Fedora 22 的包管理器。

DNF 命令详解

APT 是什么

APT(Advanced Packaging Tool 的缩写)是 Linux 下的一款安装包管理工具,APT 是 dpkg 的前端管理工具。APT 可以快速、实用、高效的安装/更新软件包,并且可以自动管理软件包的关联文件和维护软件包已有的配置文件。

APT 由几个名字以“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 中最常用命令选项的集合。

应用于哪些系统

目前它主要应用于 Debian 派系下的 Debian、Ubuntu、Linux mint、elementary OS 等 Linux 发行版中。

APT 命令详解

APT-GET 是什么

APT-CACHE 是什么

APT-CDROM 是什么

APT 与 APT-GET 比较

DPKG 是什么

dpkg 是 Debian Packager 的简写。为 “Debian” 专门开发的软件包管理系统,方便软件的安装、更新及移除。

dpkg 是 Debian 和基于 Debian 的系统的软件包管理器的基础,它被伊恩·默多克创建于1993年。dpkg 与 RPM 十分相似,用于安装、卸载、查询和管理 deb 格式的软件包。

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

dpkg 是一种 Linux 软件包管理系统,一般为 Debian 派系的 Linux 发行版本使用,前端管理工具为 apt。

应用于哪些系统

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

DPKG 命令详解

YAST2 是什么

yast2 是图形化界面,是 SUSE Linux 发行版的系统设置与软件管理工具,其实 SUSE Linux 也是以 RPM 作为软件包管理器。

现在的 yast 和 yast2 都是 yast2,2 表示版本号。为了兼容旧版 yast,yast 是 yast2 的软链接。

yast2 为了满足用户的使用界面,提供了 qt、gtk、ncurses 三种 frontend。但是内部仍然是同一套代码,只是表现层不同而已。你在 term 里面输入 yast2,也是使用 ncurses 界面。

使用这一工具我们就可以在GUI中配置:

  • Apache
  • DHCP(Dynamic Host Configuration Protocol),
  • DNS(Domain Name System),
  • Samba
  • 配置和集成硬件
  • 配置网络服务
  • 硬盘驱动器
  • 文件系统管理
  • 软件管理
  • 系统安装和更新
  • 用户管理

除了邮件服务器配置,ftp 配置及 LDAP 服务器配置外,YaST2 可能是最好的 Linux 系统管理工具了。

应用于哪些系统

SUSE Linux、openSUSE

ZYPPER 是什么

zypper 是 SUSE 发行版所特有的包管理工具,类似于 yum 和 apt-get ,适用于社区发行版 openSUSE 和企业发行版 SUSE Linux Enterprise。

应用于哪些系统

SUSE Linux、openSUSE

ZYPPER 命令详解

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

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

相关文章

java world_Java World中的GraphQL简介

java world许多人认为GraphQL仅适用于前端和JavaScript,它在Java等后端技术中不占优势,但事实确实如此。 还经常将GraphQL与REST进行比较,但是这种比较是否合理? 首先,让我开始回答其中最重要的问题。 什么是GraphQL…

快速排序 动图_Java十大排序算法最强总结

看到一篇很不错的文章,不多说,看吧排序算法说明0.1 排序的定义对一序列对象根据某个关键字进行排序。0.2 术语说明稳定:如果a原本在b前面,而ab,排序之后a仍然在b的前面;不稳定:如果a原本在b的前…

linux安装2870无线网卡,ubuntu15.04安装usb无线网卡

一般这种无线网卡都是联fake芯片,我使用的ralin(你懂的k)的usb无线1150 M。你去找lei凌官网找不到,只能去找芯片类型的制造者,所以只能去联Fake官网查询下载对应型号。1、我是这样子查看型号的,找到通过驱动软件检测并已经安装成功…

Linux 应用程序的源码包如何安装?

文章目录configuremakemake install关于文件 configure 的简单介绍其它命令简介C 语言开发的应用程序的源码包常以 .tar.gz 为扩展名,并且这些源码包通常使用 GNU 的 AUTOCONF 和 AUTOMAKE 生成编译配置文件,我们拿到这样的软件包后,执行下面…

exec su-exec_WildFly Kubernetes exec探针

exec su-exec活动性和就绪性探针会告诉Kubernetes,某个Pod是否正在运行并准备进行一些工作。 企业应用程序可以通过HTTP探测应用程序的状态。 如果没有暴露HTTP端点,Kubernetes也可以通过执行命令进行探测。 WildFly附带了有用的jboss-cli.sh 。 此CLI检…

feignclient注解使用_从 Feign 使用注意点到 RESTFUL 接口设计规范

最近项目中大量使用了Spring Cloud Feign来对接http接口,踩了不少坑,也产生了一些对RESTFUL接口设计的想法,特此一篇记录下。SpringMVC的请求参数绑定机制了解Feign历史的朋友会知道,Feign本身是Netflix的产品,Spring …

Linux 的发行版 Ubuntu 的发展简史

Ubuntu(又称乌班图)是一个是基于 Debian GNU/Linux 的以桌面应用为主的免费开源的 GNU/Linux 操作系统,由全球化的专业开发团队 Canonical 公司打造的。 Ubuntu Linux 是由南非人马克沙特尔沃思(Mark Shuttleworth)创办的基于 Debian Linux的…

linux实验报告五gcc编译,Linux之GCC命令 -- 解析GCC编译的四个过程

在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序。Gcc指令的一般格式为:Gcc [选项] 要编译的文件 [选项] [目标文件]。其中,目标文件可缺省,Gcc默认生成可执行的文件名为:编译文件.out看一下经典…

python创建虚拟环境命令_Python创建虚拟环境报错

我使用命令:mkvirtualenv -p python3 test1,创建虚拟环境,然后报错如下(),虚拟机是用nat模式的: Exception: Traceback (most recent call last): File "/home/python/.virtualenvs/test11/share/python-wheels/urllib3-1.13.1-py2.py3-…

java7和java8切换_切换表达式到Java吗?

java7和java8切换已创建一个标题为“ Java语言的开关表达式”的JEP草案 。 当前的“摘要”状态为:“扩展switch语句,以便可以将其用作语句或表达式,并改善switch处理null的方式。 这些将简化日常编码,并为在switch使用模式匹配做好…

Xenix 操作系统的简史

简介 Xenix 是一种UNIX操作系统,可在个人电脑及微型计算机上使用。该系统由微软公司在1979年从美国电话电报公司获得授权,为Intel处理器所开发。后来,圣克鲁兹作业公司(SCO)收购了其独家使用权,自那以后&a…

servlet 配置 使用_配置HTTPS以与Servlet一起使用

servlet 配置 使用要配置Java EE应用程序以通过HTTPS进行通信,需要在web.xml文件中使用几行XML。 web.xml文件位于项目的WEB-INF目录中,通常在IDE生成Java EE Web应用程序时自动创建。 如果不是,您可以自己创建它。 HTTPS的动机 为Web应用程…

python写接口测试代码_python写运单接口测试(增改查)完整代码

importrequestsimportjsonfrom urllib importparseclassHttpWayBillRquest:运单的增改查 defaccess_token(self):获取tokenurl http://xxxxxxxxx.comusername 12333password 12334566res_json requests.get(url, auth(username, password)).json()print(access_token的结果为&a…

linux终端cd未找到命令,为什么`which`命令不能用于`cd`?我也找不到`cd`的可执行文件!...

问题描述我尝试了which cd,它没有给出路径,而是返回退出代码1(用echo $?检查)。 coreutil cd本身正在工作,所以可执行文件应该在那里,对吧?我还为cd运行了find,但没有显示可执行文件。那怎么实现呢&#x…

Xenix — 微软与UNIX的短暂爱恋

微软向外宣布Microsoft Xenix OS,一个为16位微处理器开发的可移植的操作系统。它是一个交互的,多用户多任务系统,可以运行在Intel 8086, Zilog Z8000, Motorola M68000以及DEC公司的PDP-11系统计算机上。所有微软已经开发的系统软件&#xff…

optionals_Java Optionals获得更具表现力的代码

optionals我们中任何使用允许空引用的语言进行编程的人,都将在尝试取消引用一个引用时经历过。 无论是导致segfault还是NullPointerException,它始终是一个错误。 托尼霍尔将其描述为他十亿美元的错误 。 当函数向客户端的开发人员未预料到的客户端返回空…

python排序sorted_sorted排序的两个方法 - Python

在给列表排序时,sorted非常好用,语法如下: sorted(iterable[, cmp[,key[,reverse]]]) 简单列表排序,很容易完成,sorted(list)返回的对象就是列表结果,但是遇到列表中嵌套元组时,需要使用特殊的方…

linux vim自动执行快捷键,Linux Vim快捷键操作命令整理

VIM中常用的替换模式总结1,简单替换表达式替换命令可以在全文中用一个单词替换另一个单词::%s/four/4/g“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可如果…

Mach 微内核的命名趣闻

据 Tevanian 说,MACH,源于一个读音错误。当时他正和其他人在匹兹堡一个下雨天里一边躲避着路上的泥水坑,一边讨论着新内核的事,Tevanian开玩笑地建议他们的新微核命名为MUCK,意为“多用户通信内核”(Multi-…

eclipse占用内存过大_Java性能调优学习(三)-jmap+mat分析内存溢出问题实战

上一节我们讲了jinfo,jstat,jmap的使用,还简单的讲了下如何使用jmap导出内存映像文件,这次,我们来实战一把内存溢出问题。环境准备首先我们先模拟一下内存溢出的场景,以下这段代码在访问后肯定会造成堆内存…