介绍
大多数现代的Unix类型操作系统提供一个集中机制来查找和安装软件. 软件通常以包装形式分发,存储在包装库中。
包管理系统不仅仅是一次性安装软件,还提供了升级已安装的软件包的工具。包存库有助于确保代码已被测试用于您的系统,并且已安装的软件版本已得到开发人员和包维护者的批准。
在配置服务器或开发环境时,往往需要超越官方存储库。在一个发行版的稳定版本中的包可能过时,尤其是在涉及到新的或快速变化的软件的情况下。
本指南旨在为各种发行版找到、安装和升级包的基本知识提供快速参考,并应该帮助您在系统之间翻译这些知识。
包装管理系统:简要概述
大多数包系统都是围绕包文件的集合构建的。包文件通常是包含软件所使用的编译应用程序和其他资源的档案,以及安装脚本。
虽然它们的功能和优势在很大程度上相似,但包装格式和工具因平台而异:
- 对于 Debian/Ubuntu:
.deb
由apt
和dpkg
安装的包* 对于 Rocky/Fedora/RHEL:.rpm
由yum
安装的包* 对于 FreeBSD:.txz
由pkg
安装的包
在 Debian 和基于 Debian 的系统中,如 Ubuntu、Linux Mint 和 Raspbian,包的格式是.deb 文件。 `apt' 是先进的包装工具,提供用于大多数常见操作的命令:搜索存储库,安装包集及其依赖,并管理升级。
大多数Debian衍生发行版的最近版本包括一个单一的apt
命令,它为传统上通过更具体的apt-get
和apt-cache
处理的常见操作提供了简洁和统一的界面。
Rocky Linux、Fedora 和其他 Red Hat 家族成员使用 RPM 文件. 这些文件使用了一个名为yum
的包管理器. 在最近的 Fedora 版本和衍生品中,yum
已被dnf
取代,这是一个现代化的叉子,它保留了yum
的大部分界面。
FreeBSD 的二进制包系统由pkg
命令管理。FreeBSD 还提供 Ports Collection,一个本地目录结构和工具,允许用户使用 Makefiles 直接从源头接收、编译和安装包,通常使用pkg
更方便,但偶尔无法使用预编译的包,或者您可能需要更改编译时间选项。
更新包列表
大多数系统都保留来自远程存储库的可用包的本地数据库。在安装或升级包之前最好更新此数据库。作为此模式的一部分例外,dnf
会在执行某些操作之前检查更新,但您可以随时询问是否有更新。
- 对于 Debian / Ubuntu:
sudo apt update
- 对于 Rocky / Fedora / RHEL:
dnf check-update
- 对于 FreeBSD 包:
sudo pkg update
- 对于 FreeBSD 端口:
sudo portsnap fetch update
升级安装的包
确保计算机上安装的所有软件都保持最新状态,如果没有软件包系统,这将是一个巨大的任务,您将不得不跟踪上游的变化和数百个不同的软件包的安全警报,而软件包管理器并不能解决您在升级软件时遇到的每一个问题,但它确实允许您通过几个命令维护大多数系统组件。
在 FreeBSD 上,升级已安装的端口可能会引入突破性更改或需要手动配置步骤,最好在使用portmaster
升级之前阅读/usr/ports/UPDATING
。
- 对于 Debian / Ubuntu:
sudo apt upgrade
- 对于 Rocky / Fedora / RHEL:
sudo dnf upgrade
- 对于 FreeBSD 包:
sudo pkg upgrade
找到一个包
大多数发行版都提供图形或菜单驱动的包集前端,这些可以是搜索类别和发现新软件的好方法,但是,最快、最有效的方法是使用命令行工具搜索包。
- 对于 Debian / Ubuntu:
apt search_string
- 对于 Rocky / Fedora / RHEL:
dnf search_string
- 对于 FreeBSD 包:
pkg search_string
<$>[注]
**注:**在Rocky、Fedora或RHEL上,您可以使用DNF搜索所有
一起搜索包标题和描述,在FreeBSD上,您可以使用pkg搜索 -D <$>
搜索描述。
查看有关特定包的信息
在决定要安装什么时,通常有助于阅读包的详细描述,以及可人读的文本,这些内容通常包括版本号和包依赖的列表等元数据。
- 对于 Debian / Ubuntu:
apt show package
- 对于 Rocky / Fedora / RHEL:
dnf info package
- 对于 FreeBSD Packages:
pkg info package
- 对于 FreeBSD Ports:
cd /usr/ports/category/port && cat pkg-descr
从仓库中安装一个包
一旦你知道一个包的名称,你通常可以用一个命令来安装它及其依赖,一般来说,你可以通过列出它们全部来提供多个包来同时安装。
- 对于 Debian / Ubuntu:
sudo apt install package
- 对于 Rocky / Fedora / RHEL:
sudo dnf install package
- 对于 FreeBSD Packages:
sudo pkg install package
从本地文件系统中安装一个包
有时,即使软件尚未正式为特定操作系统包装,开发者或供应商会提供可下载的软件包文件. 您通常可以通过您的 Web 浏览器或在命令行上的弯曲
来获取这些文件。
在 Debian 衍生系统中,dpkg
处理个别的包文件,如果一个包具有未满足的依赖性,则gdebi
通常可以用来从官方存储库中获取它们。
在Rocky Linux、Fedora 或 RHEL 上,dnf
用于安装单个文件,还会处理所需的依赖性。
- 对于 Debian / Ubuntu:
sudo dpkg -i package.deb
- 对于 Rocky / Fedora / RHEL:
sudo dnf install package.rpm
- 对于 FreeBSD Packages:
sudo pkg add package.txz
删除一个或多个已安装的软件包
由于包管理器知道哪个文件是由一个数据包提供的,它通常可以清洁地从系统中删除它们,如果软件不再需要。
- 对于 Debian / Ubuntu:
sudo apt remove package
- 对于 Rocky / Fedora / RHEL:
sudo dnf erase package
- 对于 FreeBSD Packages:
sudo pkg delete package
求助
除了基于 Web 的文档,请记住,Unix 手册页面(通常称为 man 页面)可用于大多数壳中的命令。
1man page
在人
中,您可以使用箭头键导航。 按 / 以搜索页面中的文本,并按 q 以停止。
- 对于 Debian / Ubuntu:
man apt
- 对于 Rocky / Fedora / RHEL:
man dnf
- 对于 FreeBSD 包:
man pkg
- 对于 FreeBSD 端口:
man 端口
结论和进一步阅读
本指南概述了可以在系统之间进行交叉引用的操作,但只对复杂主题的表面进行扫描。
- 本指南详细介绍了Ubuntu和Debian的包管理 *有 Fedora关于dnf 的维基页面,还有 官方指南为dnf本身)。
- 本指南介绍了使用pkg的FreeBSD包管理
- FreeBSD 手册包含了使用端口集合的部分(https://www.freebsd.org/doc/handbook/ports-using.html).