大多数现代的类 Unix 操做系统都提供了一种中心化的机制用来搜索和安装软件。软件一般都是存放在存储库中,并经过包的形式进行分发。处理包的工做被称为包管理。包提供了操做系统的基本组件,以及共享的库、应用程序、服务和文档。前端
包管理系统除了安装软件外,它还提供了工具来更新已经安装的包。包存储库有助于确保你的系统中使用的代码是通过审查的,而且软件的安装版本已经获得了开发人员和包维护人员的承认。web
在配置服务器或开发环境时,咱们最好了解下包在官方存储库以外的状况。某个发行版的稳定版本中的包有可能已通过时了,尤为是那些新的或者快速迭代的软件。然而,包管理不管对于系统管理员仍是开发人员来讲都是相当重要的技能,而已打包的软件对于主流 Linux 发行版来讲也是一笔巨大的财富。shell
本指南旨在快速地介绍下在多种 Linux 发行版中查找、安装和升级软件包的基础知识,并帮助您将这些内容在多个系统之间进行交叉对比。数据库
大多数包系统都是围绕包文件的集合构建的。包文件一般是一个存档文件,它包含已编译的二进制文件和软件的其余资源,以及安装脚本。包文件同时也包含有价值的元数据,包括它们的依赖项,以及安装和运行它们所需的其余包的列表。浏览器
虽然这些包管理系统的功能和优势大体相同,但打包格式和工具却因平台而异:安全
Debian 及其衍生版,如 Ubuntu、Linux Mint 和 Raspbian,它们的包格式是 .deb。APT 这款先进的包管理工具提供了大多数常见的操做命令:搜索存储库、安装软件包及其依赖项,并管理升级。在本地系统中,咱们还可使用 dpkg 程序来安装单个的 deb 文件,APT 命令做为底层 dpkg 的前端,有时也会直接调用它。服务器
最近发布的 debian 衍生版大多数都包含了 apt 命令,它提供了一个简洁统一的接口,可用于一般由 apt-get 和 apt-cache 命令处理的常见操做。这个命令是可选的,但使用它能够简化一些任务。curl
CentOS、Fedora 和其它 Red Hat 家族成员使用 RPM 文件。在 CentOS 中,经过 yum 来与单独的包文件和存储库进行交互。工具
在最近的 Fedora 版本中,yum 已经被 dnf 取代,dnf 是它的一个现代化的分支,它保留了大部分 yum 的接口。url
FreeBSD 的二进制包系统由 pkg 命令管理。FreeBSD 还提供了 Ports 集合,这是一个存在于本地的目录结构和工具,它容许用户获取源码后使用 Makefile 直接从源码编译和安装包。
大多数系统在本地都会有一个和远程存储库对应的包数据库,在安装或升级包以前最好更新一下这个数据库。另外,yum 和 dnf 在执行一些操做以前也会自动检查更新。固然你能够在任什么时候候对系统进行更新。
在没有包系统的状况下,想确保机器上全部已安装的软件都保持在最新的状态是一个很艰巨的任务。你将不得不跟踪数百个不一样包的上游更改和安全警报。虽然包管理器并不能解决升级软件时遇到的全部问题,但它确实使你可以使用一些命令来维护大多数系统组件。
在 FreeBSD 上,升级已安装的 ports 可能会引入破坏性的改变,有些步骤还须要进行手动配置,因此在经过 portmaster 更新以前最好阅读下 /usr/ports/UPDATING 的内容。
大多数发行版都提供针对包集合的图形化或菜单驱动的工具,咱们能够分类浏览软件,这也是一个发现新软件的好方法。然而,查找包最快和最有效的方法是使用命令行工具进行搜索。
在安装软件包以前,咱们能够经过仔细阅读包的描述来得到不少有用的信息。除了人类可读的文本以外,这些内容一般包括像版本号这样的元数据和包的依赖项列表。
知道包名后,一般能够用一个命令来安装它及其依赖。你也能够一次性安装多个包,只需将它们所有列出来便可。
对于一个给定的操做系统,有时有些软件官方并无提供相应的包,那么开发人员或供应商将须要提供包文件的下载。你一般能够经过 web 浏览器检索这些包,或者经过命令行 curl 来检索这些信息。将包下载到目标系统后,咱们一般能够经过单个命令来安装它。
在 Debian 派生的系统上,dpkg 用来处理单个的包文件。若是一个包有未知足的依赖项,那么咱们可使用 gdebi 从官方存储库中检索它们。
在 CentOS 和 Fedora 系统上,yum 和 dnf 用于安装单个的文件,而且会处理须要的依赖。
因为包管理器知道给定的软件包提供了哪些文件,所以若是某个软件再也不须要了,它一般能够干净利落地从系统中清除这些文件。
Debian 家族发行版的管理员一般熟悉 apt-get 和 apt-cache。较少为人所知的是简化的 apt 接口,它是专为交互式使用而设计的。
虽然 apt 一般是一个特定操做的快捷方式,但它并不能彻底替代传统的工具,它的接口可能会随着版本的不一样而发生变化,以提升可用性。若是你在脚本或 shell 管道中使用包管理命令,那么最好仍是坚持使用 apt-get 和 apt-cache。
除了基于 web 的文档,请记住咱们能够经过 shell 从 Unix 手册页(一般称为 man 页面)中得到大多数的命令。好比要阅读某页,可使用 man:
man page
在 man 中,你能够用箭头键导航。按 / 搜索页面内的文本,使用 q 退出。