介绍
大多数现代的类Unix操作系统提供用于查找和安装软件的集中式机制。 软件通常分布在包的形式,存放在仓库 。 使用包被称为包管理 。 软件包提供操作系统的基本组件,以及共享库,应用程序,服务和文档。
包管理系统做的不止一次性安装软件。 它还提供用于升级已安装的软件包的工具。 软件包存储库有助于确保代码已经过审核,可在您的系统上使用,并且已安装的软件版本已经由开发人员和软件包维护人员批准。
在配置服务器或开发环境时,通常需要查看官方存储库。 分发版的稳定版本中的包可能已过期,特别是在涉及新的或快速变化的软件的情况下。 然而,软件包管理对于系统管理员和开发人员来说是至关重要的技术,而且用于主要发行版的包装软件的财富是一个巨大的资源。
本指南旨在作为查找,安装和升级各种发行版包的基础的快速参考,并且应帮助您在系统之间翻译这些知识。
软件包管理系统:概述
大多数包系统是围绕包文件集合构建的。 包文件通常是包含编译的二进制文件和构成软件的其他资源以及安装脚本的存档。 包还包含有价值的元数据,包括它们的依赖 ,安装和运行它们所需的其他包的列表。
虽然它们的功能和好处大体相似,但包装格式和工具因平台而异:
操作系统 | 格式 | 工具 |
---|---|---|
Debian | .deb |
apt , apt-cache , apt-get , dpkg |
Ubuntu | .deb |
apt , apt-cache , apt-get , dpkg |
CentOS | .rpm |
yum |
Fedora | .rpm |
dnf |
FreeBSD | 端口, .txz |
make , pkg |
在此基础上Debian和系统,如Ubuntu,Linux Mint的,和Raspbian,包格式是.deb
文件。 APT(高级打包工具)提供用于大多数常见操作的命令:搜索存储库,安装软件包及其依赖关系集合以及管理升级。 APT命令操作为前端到较低级别dpkg
实用程序,它处理的个别安装.deb
文件在本地系统上,有时直接调用。
对于大多数Debian衍生分布最近发布的包括apt
命令,它提供了一个简洁,统一的接口来那些传统被更具体的处理常见的操作apt-get
和apt-cache
。 它的使用是可选的,但可以简化一些任务。
CentOS,Fedora和Red Hat家族的其他成员使用RPM文件。 在CentOS的, yum
是用来与两个单独的包文件和库进行交互。
在最近版本的Fedora, yum
已被取代dnf
,一个现代化的叉子其中保留了大部分的yum
的接口。
FreeBSD的二进制包系统与管理pkg
命令。 FreeBSD还提供了Ports Collection,一个本地目录结构和工具,允许用户使用Makefiles直接从源代码获取,编译和安装软件包。 它通常是更方便使用pkg
,但偶尔预编译包不可用,或者您可能需要更改编译时的选项。
更新软件包列表
大多数系统保留远程仓库中可用的软件包的本地数据库。 最好在安装或升级软件包之前更新此数据库。 作为一个局部的例外模式, yum
和dnf
将检查执行某些操作之前更新,但你可以在任何时间更新是否可用问他们。
系统 | 命令 |
---|---|
Debian / Ubuntu | sudo apt-get update |
sudo apt update |
|
CentOS | yum check-update |
Fedora | dnf check-update |
FreeBSD包 | sudo pkg update |
FreeBSD端口 | sudo portsnap fetch update |
升级已安装的软件包
确保机器上所有已安装的软件保持最新将是一个巨大的任务,没有包装系统。 您必须跟踪上百个不同包的上游更改和安全警报。 虽然软件包管理器不能解决升级软件时遇到的每个问题,但它确实能够使用几个命令来维护大多数系统组件。
在FreeBSD上,升级已安装的端口可能会引入中断更改或需要手动配置步骤。 这是最好看/usr/ports/UPDATING
与升级前portmaster
。
系统 | 命令 | 笔记 |
---|---|---|
Debian / Ubuntu | sudo apt-get upgrade |
只有在可能的情况下才升级安装的软件包。 |
sudo apt-get dist-upgrade |
可以添加或删除软件包以满足新的依赖关系。 | |
sudo apt upgrade |
就像apt-get upgrade 。 |
|
sudo apt full-upgrade |
就像apt-get dist-upgrade 。 |
|
CentOS | sudo yum update |
|
Fedora | sudo dnf upgrade |
|
FreeBSD包 | sudo pkg upgrade |
|
FreeBSD端口 | less /usr/ports/UPDATING |
使用less 查看更新笔记端口(使用箭头键来滚动,按q退出)。 |
cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a |
安装portmaster ,并使用它来更新安装的端口。 |
查找包裹
大多数发行版都提供了一个图形或菜单驱动的前端包装集合。 这些可以是按类别浏览和发现新软件的好方法。 然而,通常,找到包的最快和最有效的方法是使用命令行工具进行搜索。
系统 | 命令 | 笔记 |
---|---|---|
Debian / Ubuntu下 | apt-cache search search_string |
|
apt search search_string |
||
CentOS | yum search search_string |
|
yum search all search_string |
搜索所有字段,包括说明。 | |
Fedora | dnf search search_string |
|
dnf search all search_string |
搜索所有字段,包括说明。 | |
FreeBSD包 | pkg search search_string |
按名称搜索。 |
pkg search -f search_string |
按名称搜索,返回完整描述。 | |
pkg search -D search_string |
搜索说明。 | |
FreeBSD端口 | cd /usr/ports && make search name= package |
按姓名搜索。 |
cd /usr/ports && make search key= search_string |
搜索注释,描述和依赖关系。 |
查看有关特定软件包的信息
在决定安装什么时,阅读软件包的详细描述通常很有帮助。 除了人类可读的文本,这些通常包括元数据,如版本号和包的依赖关系的列表。
系统 | 命令 | 笔记 |
---|---|---|
Debian / Ubuntu | apt-cache show package |
显示有关软件包的本地缓存信息。 |
apt show package |
||
dpkg -s package |
显示软件包的当前安装状态。 | |
CentOS | yum info package |
|
yum deplist package |
列出包的依赖关系。 | |
Fedora | dnf info package |
|
dnf repoquery --requires package |
列出包的依赖关系。 | |
FreeBSD包 | pkg info package |
显示已安装软件包的信息。 |
FreeBSD端口 | cd /usr/ports/ category / port && cat pkg-descr |
从存储库安装软件包
一旦知道包的名称,通常可以使用单个命令安装它及其依赖项。 一般来说,您可以提供多个软件包,只需列出所有软件包即可。
系统 | 命令 | 笔记 |
---|---|---|
Debian / Ubuntu | sudo apt-get install package |
|
sudo apt-get install package1 package2 ... |
安装所有列出的包。 | |
sudo apt-get install -y package |
假设“是”,其中apt 通常会提示继续。 |
|
sudo apt install package |
显示彩色进度条。 | |
CentOS | sudo yum install package |
|
sudo yum install package1 package2 ... |
安装所有列出的软件包。 | |
sudo yum install -y package |
假设“是”,其中yum 通常会提示继续。 |
|
Fedora | sudo dnf install package |
|
sudo dnf install package1 package2 ... |
安装所有列出的软件包。 | |
sudo dnf install -y package |
假设“是”,其中dnf 通常会提示继续。 |
|
FreeBSD包 | sudo pkg install package |
|
sudo pkg install package1 package2 ... |
安装所有列出的软件包。 | |
FreeBSD端口 | cd /usr/ports/ category / port && sudo make install |
从源代码构建并安装端口。 |
从本地文件系统安装软件包
有时,即使软件不是针对给定操作系统正式打包的,开发商或供应商将提供用于下载的包文件。 通常,您可以使用Web浏览器检索这些,或者通过curl
在命令行上。 一旦包在目标系统上,它通常可以使用单个命令安装。
在Debian衍生系统, dpkg
处理单个包文件。 如果一个软件包有不能满足的依赖, gdebi
往往可以用来从官方的资料库检索。
在CentOS和Fedora系统, yum
和dnf
用于安装单独的文件,也将处理所需的依赖。
系统 | 命令 | 笔记 |
---|---|---|
Debian / Ubuntu | sudo dpkg -i package.deb |
|
sudo apt-get install -y gdebi && sudo gdebi package.deb |
安装并使用gdebi 安装package.deb 和检索任何缺少的依赖。 |
|
CentOS | sudo yum install package.rpm |
|
Fedora | sudo dnf install package.rpm |
|
FreeBSD包 | sudo pkg add package.txz |
|
sudo pkg add -f package.txz |
即使已安装,也会安装软件包。 |
删除一个或多个已安装的软件包
由于软件包管理器知道给定软件包提供了什么文件,因此如果不再需要该软件,它通常可以从系统中清除它们。
系统 | 命令 | 笔记 |
---|---|---|
Debian / Ubuntu | sudo apt-get remove package |
|
sudo apt remove package |
||
sudo apt-get autoremove |
删除不需要的软件包。 | |
CentOS | sudo yum remove package |
|
Fedora | sudo dnf erase package |
|
FreeBSD包 | sudo pkg delete package |
|
sudo pkg autoremove |
删除不需要的软件包。 | |
FreeBSD端口 | sudo pkg delete package |
|
cd /usr/ports/ path_to_port && make deinstall |
卸载已安装的端口。 |
该apt
命令
Debian的家庭分布的管理员已经基本熟悉了apt-get
和apt-cache
。 不太广为人知的是简化的apt
接口,专为交互式使用设计的。
传统命令 | apt 等效 |
---|---|
apt-get update |
apt update |
apt-get dist-upgrade |
apt full-upgrade |
apt-cache search string |
apt search string |
apt-get install package |
apt install package |
apt-get remove package |
apt remove package |
apt-get purge package |
apt purge package |
而apt
通常对于给定的操作更快的简写,它不打算作为对传统工具的完整的更换,和它的接口可以版本之间改变,以改善可用性。 如果您在使用脚本或一个管道内的包管理命令,这是一个好主意,坚持使用apt-get
和apt-cache
。
得到帮助
除了基于Web的文档,请记住,Unix的手册页(通常被称为手册页 )可用于从外壳大多数命令。 阅读页面,使用man
:
man page
在man
中,您可以用箭头键导航。 按/搜索页面中的文本,q退出。
系统 | 命令 | 笔记 |
---|---|---|
Debian / Ubuntu | man apt-get |
更新本地包数据库和使用包。 |
man apt-cache |
查询本地包数据库。 | |
man dpkg |
使用单个软件包文件和查询已安装的软件包。 | |
man apt |
使用更简洁,用户友好的界面来执行大多数基本操作。 | |
CentOS | man yum |
|
Fedora | man dnf |
|
FreeBSD包 | man pkg |
使用预编译的二进制包。 |
FreeBSD端口 | man ports |
使用端口集合。 |
结论和进一步阅读
本指南提供了可在系统之间交叉引用,但仅划痕复杂主题表面的基本操作的概述。 有关给定系统的更多详细信息,可以参考以下资源:
- 本指南将详细介绍Ubuntu和Debian软件包管理。
- 这里有一个官方的CentOS指导与管理软件的
yum
。 - 有一个Fedora的维基页面有关
dnf
,以及对官方手册dnf
本身 。 - 本指南使用FreeBSD的覆盖包管理
pkg
。 - 在FreeBSD手册包含了关于如何使用Ports集合区域 。