分析apt、yum、dnf和pkg的功能和特点

导读大多数现代的类 Unix 操作系统都提供了一种中心化的机制用来搜索和安装软件。软件通常都是存放在存储库中,并通过包的形式进行分发。处理包的工作被称为包管理。包提供了操作系统的基本组件,以及共享的库、应用程序、服务和文档。

详解apt、yum、dnf 和 pkg

介绍

包管理系统除了安装软件外,它还提供了工具来更新已经安装的包。包存储库有助于确保你的系统中使用的代码是经过审查的,并且软件的安装版本已经得到了开发人员和包维护人员的认可。

在配置服务器或开发环境时,我们最好了解下包在官方存储库之外的情况。某个发行版的稳定版本中的包有可能已经过时了,尤其是那些新的或者快速迭代的软件。然而,包管理无论对于系统管理员还是开发人员来说都是至关重要的技能,而已打包的软件对于主流 Linux 发行版来说也是一笔巨大的财富。

本指南旨在快速地介绍下在多种 Linux 发行版中查找、安装和升级软件包的基础知识,并帮助您将这些内容在多个系统之间进行交叉对比。

包管理系统:简要概述

大多数包系统都是围绕包文件的集合构建的。包文件通常是一个存档文件,它包含已编译的二进制文件和软件的其他资源,以及安装脚本。包文件同时也包含有价值的元数据,包括它们的依赖项,以及安装和运行它们所需的其他包的列表。

虽然这些包管理系统的功能和优点大致相同,但打包格式和工具却因平台而异:

操作系统 格式 工具

Debian.debapt, apt-cache, apt-get, dpkgUbuntu.debapt, apt-cache, apt-get, dpkgCentOS.rpmyumFedora.rpmdnfFreeBSDPorts, .txzmake, pkg

Debian 及其衍生版,如 Ubuntu、Linux Mint 和 Raspbian,它们的包格式是 .deb。APT 这款先进的包管理工具提供了大多数常见的操作命令:搜索存储库、安装软件包及其依赖项,并管理升级。在本地系统中,我们还可以使用 dpkg 程序来安装单个的 deb 文件,APT 命令作为底层 dpkg 的前端,有时也会直接调用它。

最近发布的 debian 衍生版大多数都包含了 apt 命令,它提供了一个简洁统一的接口,可用于通常由 apt-get 和 apt-cache 命令处理的常见操作。这个命令是可选的,但使用它可以简化一些任务。

CentOS、Fedora 和其它 Red Hat 家族成员使用 RPM 文件。在 CentOS 中,通过 yum 来与单独的包文件和存储库进行交互。

在最近的 Fedora 版本中,yum 已经被 dnf 取代,dnf 是它的一个现代化的分支,它保留了大部分 yum的接口。

FreeBSD 的二进制包系统由 pkg 命令管理。FreeBSD 还提供了 Ports 集合,这是一个存在于本地的目录结构和工具,它允许用户获取源码后使用 Makefile 直接从源码编译和安装包。

更新包列表

大多数系统在本地都会有一个和远程存储库对应的包数据库,在安装或升级包之前最好更新一下这个数据库。另外,yum 和 dnf 在执行一些操作之前也会自动检查更新。当然你可以在任何时候对系统进行更新。

系统 命令

Debian / Ubuntusudo apt-get updatesudo apt updateCentOSyum check-updateFedoradnf check-updateFreeBSD Packagessudo pkg updateFreeBSD Portssudo portsnap fetch update更新已安装的包

在没有包系统的情况下,想确保机器上所有已安装的软件都保持在最新的状态是一个很艰巨的任务。你将不得不跟踪数百个不同包的上游更改和安全警报。虽然包管理器并不能解决升级软件时遇到的所有问题,但它确实使你能够使用一些命令来维护大多数系统组件。

在 FreeBSD 上,升级已安装的 ports 可能会引入破坏性的改变,有些步骤还需要进行手动配置,所以在通过 portmaster 更新之前最好阅读下 /usr/ports/UPDATING 的内容。

系统 命令 说明

Debian / Ubuntusudo apt-get upgrade只更新已安装的包sudo apt-get dist-upgrade可能会增加或删除包以满足新的依赖项sudo apt upgrade和 apt-get upgrade 类似sudo apt full-upgrade和 apt-get dist-upgrade 类似CentOSsudo yum updateFedorasudo dnf upgradeFreeBSD Packagessudo pkg upgradeFreeBSD Portsless /usr/ports/UPDATING使用 less 来查看 ports 的更新提示(使用上下光标键滚动,按 q 退出)。cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a安装 portmaster 然后使用它更新已安装的 ports搜索某个包

大多数发行版都提供针对包集合的图形化或菜单驱动的工具,我们可以分类浏览软件,这也是一个发现新软件的好方法。然而,查找包最快和最有效的方法是使用命令行工具进行搜索。

系统 命令 说明

Debian / Ubuntuapt-cache search search_stringapt search search_stringCentOSyum search search_stringyum search all search_string搜索所有的字段,包括描述Fedoradnf search search_stringdnf search all search_string搜索所有的字段,包括描述FreeBSD Packagespkg search search_string通过名字进行搜索pkg search -f search_string通过名字进行搜索并返回完整的描述pkg search -D search_string搜索描述FreeBSD Portscd /usr/ports && make search name=package通过名字进行搜索cd /usr/ports && make search key=search_string搜索评论、描述和依赖查看某个软件包的信息

在安装软件包之前,我们可以通过仔细阅读包的描述来获得很多有用的信息。除了人类可读的文本之外,这些内容通常包括像版本号这样的元数据和包的依赖项列表。

系统 命令 说明

Debian / Ubuntuapt-cache show package显示有关包的本地缓存信息apt show packagedpkg -s package显示包的当前安装状态CentOSyum info packageyum deplist package列出包的依赖Fedoradnf info packagednf repoquery –requires package列出包的依赖FreeBSD Packagespkg info package显示已安装的包的信息FreeBSD Portscd /usr/ports/category/port && cat pkg-descr从存储库安装包

知道包名后,通常可以用一个命令来安装它及其依赖。你也可以一次性安装多个包,只需将它们全部列出来即可。

系统 命令 说明

Debian / Ubuntusudo apt-get install packagesudo apt-get install package1 package2 …安装所有列出来的包sudo apt-get install -y package在 apt 提示是否继续的地方直接默认 yessudo apt install package显示一个彩色的进度条CentOSsudo yum install packagesudo yum install package1 package2 …安装所有列出来的包sudo yum install -y package在 yum 提示是否继续的地方直接默认 yesFedorasudo dnf install packagesudo dnf install package1 package2 …安装所有列出来的包sudo dnf install -y package在 dnf 提示是否继续的地方直接默认 yesFreeBSD Packagessudo pkg install packagesudo pkg install package1 package2 …安装所有列出来的包FreeBSD Portscd /usr/ports/category/port && sudo make install从源码构建安装一个 port从本地文件系统安装一个包

对于一个给定的操作系统,有时有些软件官方并没有提供相应的包,那么开发人员或供应商将需要提供包文件的下载。你通常可以通过 web 浏览器检索这些包,或者通过命令行 curl 来检索这些信息。将包下载到目标系统后,我们通常可以通过单个命令来安装它。

在 Debian 派生的系统上,dpkg 用来处理单个的包文件。如果一个包有未满足的依赖项,那么我们可以使用 gdebi 从官方存储库中检索它们。

在 CentOS 和 Fedora 系统上,yum 和 dnf 用于安装单个的文件,并且会处理需要的依赖。

系统 命令 说明

Debian / Ubuntusudo dpkg -i package.debsudo apt-get install -y gdebi && sudo gdebi package.deb安装 gdebi,然后使用 gdebi 安装 package.deb 并处理缺失的依赖CentOSsudo yum install package.rpmFedorasudo dnf install package.rpmFreeBSD Packagessudo pkg add package.txzsudo pkg add -f package.txz即使已经安装的包也会重新安装删除一个或多个已安装的包

由于包管理器知道给定的软件包提供了哪些文件,因此如果某个软件不再需要了,它通常可以干净利落地从系统中清除这些文件。

系统 命令 说明

Debian / Ubuntusudo apt-get remove packagesudo apt remove packagesudo apt-get autoremove删除不需要的包CentOSsudo yum remove packageFedorasudo dnf erase packageFreeBSD Packagessudo pkg delete packagesudo pkg autoremove删除不需要的包FreeBSD Portssudo pkg delete packagecd /usr/ports/path_to_port && make deinstall卸载 portapt 命令

Debian 家族发行版的管理员通常熟悉 apt-get 和 apt-cache。较少为人所知的是简化的 apt 接口,它是专为交互式使用而设计的。

传统命令 等价的 apt 命令

apt-get updateapt updateapt-get dist-upgradeapt full-upgradeapt-cache search stringapt search stringapt-get install packageapt install packageapt-get remove packageapt remove packageapt-get purge packageapt purge package

虽然 apt 通常是一个特定操作的快捷方式,但它并不能完全替代传统的工具,它的接口可能会随着版本的不同而发生变化,以提高可用性。如果你在脚本或 shell 管道中使用包管理命令,那么最好还是坚持使用 apt-get 和 apt-cache。

获取帮助

除了基于 web 的文档,请记住我们可以通过 shell 从 Unix 手册页(通常称为 man 页面)中获得大多数的命令。比如要阅读某页,可以使用 man:

在 man 中,你可以用箭头键导航。按 / 搜索页面内的文本,使用 q 退出。

系统 命令 说明

Debian / Ubuntuman apt-get更新本地包数据库以及与包一起工作man apt-cache在本地的包数据库中搜索man dpkg和单独的包文件一起工作以及能查询已安装的包man apt通过更简洁,用户友好的接口进行最基本的操作CentOSman yumFedoraman dnfFreeBSD Packagesman pkg和预先编译的二进制包一起工作FreeBSD Portsman ports和 Ports 集合一起工作

以上就是分析apt、yum、dnf和pkg的功能和特点的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3046552.html

(0)
上一篇 2025年3月13日 18:18:22
下一篇 2025年3月8日 15:00:06

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 系统进程:10个运维人员必须熟悉的知识点

    导读在日常的运维工作中,当我们习惯性的执行ps命令后会看到很多“奇奇怪怪”的进程,而这些进程大部门都是系统的内核进程。很多同学对之了解的甚少,因此今天就为大家整理一篇入门级的系统进程介绍帖,希望能够帮助大家对操作系统进程的理解。 在日常的运…

    2025年3月13日
    200
  • 优化 man 使用方法,提高效率和速度

    导读我们通常通过 google 来查询 Linux 中的命令说明,但是其实还有一个更好的办法:那就是通过 Linux 自带的 man 帮助页来查询命令详尽完整的使用说明。 man 页面的历史本身比 linux 还长,可以追溯到 unix 早…

    编程技术 2025年3月13日
    200
  • Linux的脚本编写方法有哪些

    code 1 #!/bin/sh 登录后复制 脚本的第一行,看起来是一行注释,但其实并不是。它规定了接下来的脚本,将要采用哪一个SHELL执行。像我们平常用的bash、zsh等,属于sh的超集,这个脚本使用sh作为执行的shell,具有更好…

    编程技术 2025年3月13日
    200
  • linux重命名文件方法有哪些

    linux重命名文件的方法是:1、使用mv命令,用来移动文件或重命名文件;2、使用rename命令,可以批量重命名文件;3、使用mmv命令,可以用来批量重命名文件;4、使用GUI文件管理器。 本教程操作环境:linux5.18.14系统、D…

    2025年3月13日
    200
  • 如何在Linux中使用grep命令进行日志分析?

    如何在linux中使用grep命令进行日志分析? 引言:日志是系统运行过程中产生的重要记录,对于系统运维和故障排查来说,日志分析是一项必不可少的工作。在Linux操作系统中,grep命令是一种强大的文本搜索工具,非常适合用于日志分析。本文将…

    编程技术 2025年3月13日
    200
  • 如何通过Linux命令行工具进行日志过滤和分类?

    如何通过linux命令行工具进行日志过滤和分类? 日志是系统运行中非常重要的一部分,它记录了系统的运行状态、错误信息和其他关键数据。然而,当日志文件变得庞大而复杂时,处理和分析日志可能会变得非常困难。在Linux系统中,我们可以利用命令行工…

    编程技术 2025年3月13日
    200
  • Linux下实现高效的日志搜索和过滤方法

    linux下实现高效的日志搜索和过滤方法 概述:在日常的系统运维和开发工作中,经常会遇到需要检索和过滤日志信息的情况。针对大规模的日志文件,如何高效地搜索和提取所需信息是一个常见的挑战。本文将介绍在Linux环境下实现高效的日志搜索和过滤的…

    编程技术 2025年3月13日
    200
  • 如何在Linux中使用awk命令进行日志分析和处理?

    如何在linux中使用awk命令进行日志分析和处理? 简介:在Linux系统中,awk是一种强大的文本分析和处理工具。它可以用来搜索和提取文件中的特定内容,进行数据格式化,以及执行一些简单但有用的计算。本文将介绍如何在Linux中使用awk…

    编程技术 2025年3月13日
    200
  • Linux环境下的日志分析与数据可视化

    linux环境下的日志分析与数据可视化 随着计算机系统的快速发展,日志已成为我们了解系统运行状况的重要工具。在Linux环境下,生成的各种日志文件如系统日志、应用程序日志等记录了系统运行过程中的各种信息,如错误日志、访问日志、性能日志等。然…

    编程技术 2025年3月13日
    200
  • linux如何切割文件

    linux切割文件的方法:1、使用split命令,可以将一个大文件切割成多个较小的文件,语法“split[选项]文件名[前缀]”;2、使用dd命令,用于转换和复制文件的工具,也可以用于切割文件,语法“dd if=文件名of=输出文件名bs=…

    2025年3月13日
    200

发表回复

登录后才能评论