Linux 系统中 apt、yum、dnf 和 pkg 包管理命令介绍
ahcoder 2025-04-08 11:07 63 浏览
大多数现代的类 Unix 操作系统都提供了一种中心化的机制用来搜索和安装软件。软件通常都是存放在存储库中,并通过包的形式进行分发。不同的Linux发行版使用不同的包管理工具,目前主流Linux发行版中主要是apt、yum、dnf 和 pkg 包管理命令为主。
本指南旨在快速地介绍下在多种 Linux 发行版中使用不同包管理命令进行查找、安装和升级软件包的基础知识,并帮助您将这些内容在多个系统之间进行交叉对比。
简要概述
大多数包系统都是围绕包文件的集合构建的。包文件通常是一个存档文件,它包含已编译的二进制文件和软件的其他资源,以及安装脚本。包文件同时也包含有价值的元数据,包括它们的依赖项,以及安装和运行它们所需的其他包的列表。
虽然这些担保理系统的功能和优点大致相同,但打包格式和工具却因平台而异:
操作系统格式工具Debiandebapt, apt-cache, apt-get, dpkgUbuntudebapt, apt-cache, apt-get,
dpkgCentOSrpmyumFedorarpmdnfFreeBSDPorts, 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提示是否继续的地方直接默认yes| | Fedora |sudo dnf install package| | | |sudo 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卸载 port
`apt` 命令
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 page
在 man 中,你可以用箭头键导航。按 / 搜刮页面内的文本,使用 q 退出。
系统命令说明Debian / Ubuntuman apt-get更新当地包数据库以及与包一起工作man apt-cache在当地的包数据库中搜索man dpkg和单独的包文件一起工作以及能查询已安装的包man apt通过更简洁,用户友好的接口进行最基本的操作CentOSman yumFedoraman dnfFreeBSD Packagesman pkg和预先编译的二进制包一起工作FreeBSD Portsman ports和 Ports 集合一起工作
写在最后
希望通过本教程你能对Linux发行版中不同的包管理命令有所了解,熟悉之后可以让你更好的使用Linux操作系统。
相关推荐
- KaOS 2025.05版本发布:全面拥抱Qt6,彻底告别Qt5
-
KaOSLinux2025.05版本重磅发布:全面拥抱Qt6,开启KDE生态新篇章继2025.03版本发布两个月后,专注于KDE桌面环境、采用XFS文件系统的滚动发行版Li...
- 基于FIMC接口的CMOS摄像头驱动分析与设计
-
摘要:目前的嵌入式系统中,USB摄像头使用比较普遍,但其应用会受到传输速度的限制。本文采用一款高速CMOS摄像头,其驱动利用S3C6410内置的FIMC接口技术,采用DMA和ping-pong缓冲...
- 没错是微软 推出基于Linux的交换机系统
-
2015-09-2205:59:59作者:郑伟你没看错,为了提升自身Azure云数据中心内网络设备的兼容性及开放性,微软也开始推出基于Linux的网络交换机系统了。这个被称为AzureCloud...
- Linus Torvalds 宣布首个 Linux 内核 6.16 候选版本
-
Linux内核负责人兼创始人LinusTorvalds宣布关闭合并窗口,该窗口用于将主要新功能添加到内核中,并开始发布Linux6.16候选版本,从候选版本1(Linux6.16-r...
- Linux内核漏洞将影响Haswell架构服务器
-
在infoq网站上,GilTene最近报告一个十分重要,但并不为人知Linux内核补丁,特别对采用Haswell架构的Linux系统用户和管理员应该特别关注。报告提醒RedHat发行版的用户(包括...
- 关于Linux性能调优中网络I/O的一些笔记
-
写在前面和小伙伴分享一些Linux网络优化的笔记,内容很浅,可以用作入门博文内容结合《Linux性能优化》读书笔记整理涉及内容包括常用的优化工具(mii-tool,ethtool,ifconfig,i...
- 国产操作系统- Veket Linux(国产操作系统之光银河麒麟阅读理解)
-
VeketLinux是一个随身的可装在U盘的Linux操作系统。主要面向桌面用户。它的设计重点是提供简单易用且稳定的操作系统,同时保持更新和开发。它具有强大的功能集和广泛的用户基础,可满足...
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
-
IT之家5月21日消息,科技媒体linuxiac昨日(5月20日)发布博文,报道称代号为SageMargay的AlmaLinux9.6发行版已上线,距上一版本9.5发...
- 跟老韩学Linux运维架构师系列,vim与view的基本使用
-
下面是vim和view的10个实例:用vim打开一个新文件:vimnewfile.txt这个命令将会在vim编辑器中打开一个新文件。在vim中移动光标:使用方向键或h、j、k、l键来移动光标。在v...
- malloc底层原理剖析——ptmalloc内存池
-
malloc底层为什么是内存池malloc大家都用过,其是库函数。我们都知道库函数在不同的操作系统中其实执行的是系统调用,那么malloc在Linux上执行的是哪个系统调用呢?brk()和mmap()...
- Zen 6架构首秀Linux,AMD加速下一代处理器布局
-
IT之家5月15日消息,科技媒体Phoronix昨日(5月14日)发布博文,报道称AMD已经开始为下一代“Zen6”处理器做准备,已为该构架向Linux内核提交了首个补丁,...
- 为何越来越多企业转向安卓/Linux工业平板电脑?答案在这里
-
在工业领域,设备的稳定性至关重要,尤其是工业平板电脑,常年运行在高温、粉尘、潮湿等复杂环境下,一旦系统崩溃或者卡顿,可能会影响整个生产流程。那么,为什么越来越多的企业选择安卓/Linux工业平板电脑,...
- 从3ms到0.8ms:ARM+Linux如何重塑工业控制实时性标杆
-
在智能制造领域,产线控制系统对实时性的要求越来越高。根据行业调研数据,超过65%的工业现场出现过因系统响应延迟导致的故障停机,平均每次停机造成的直接损失高达2-8万元。传统x86架构搭配Windows...
- 看Linux如何"挖坑种树"
-
写在前面,有人看我的Linux文章说技术难度不深,笔者不是不想写深,笔者是觉得Linux难就难在入门,入门之后你就知道如何上网查询你所要要解决的Linux需求。如果你已入门,此文已对你无用,请略过此...
- AlmaLinux 9.6 发布,新增功能亮点纷呈!
-
距离上一版本AlmaLinux9.5发布六个月后,基于5.14内核的AlmaLinux正式宣布其企业级Linux发行版的9.x系列第六个更新——AlmaLinux9.6(Sag...
- 一周热门
- 最近发表
-
- KaOS 2025.05版本发布:全面拥抱Qt6,彻底告别Qt5
- 基于FIMC接口的CMOS摄像头驱动分析与设计
- 没错是微软 推出基于Linux的交换机系统
- Linus Torvalds 宣布首个 Linux 内核 6.16 候选版本
- Linux内核漏洞将影响Haswell架构服务器
- 关于Linux性能调优中网络I/O的一些笔记
- 国产操作系统- Veket Linux(国产操作系统之光银河麒麟阅读理解)
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- 跟老韩学Linux运维架构师系列,vim与view的基本使用
- malloc底层原理剖析——ptmalloc内存池
- 标签列表
-
- linux 远程 (37)
- u盘 linux (32)
- linux 登录 (34)
- linux 路径 (33)
- linux 文件命令 (35)
- linux 是什么 (35)
- linux 界面 (34)
- 查看文件 linux (35)
- linux 语言 (33)
- linux代码 (32)
- linux 查看命令 (33)
- 关闭linux (34)
- root linux (33)
- 删除文件 linux (35)
- linux 主机 (34)
- linux与 (33)
- linux 函数 (35)
- linux .ssh (35)
- cpu linux (35)
- 查看linux 系统 (32)
- linux 防火墙 (33)
- linux 手机 (32)
- linux 镜像 (34)
- linux ip地址 (34)
- linux 用户查看 (33)