linux软件安装之详解apt、yum、dnf 和 pkg包安装

介绍

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

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

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

包管理系统:简要概述

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

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

操作系统格式工具
Debian.debapt, apt-cache, apt-get, dpkg
Ubuntu.debapt, apt-cache, apt-get, dpkg
CentOS.rpmyum
Fedora.rpmdnf
FreeBSDPorts, .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 update
 sudo apt update
CentOSyum check-update
Fedoradnf check-update
FreeBSD Packagessudo pkg update
FreeBSD 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 update 
Fedorasudo dnf upgrade 
FreeBSD Packagessudo pkg upgrade 
FreeBSD 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_string 
 apt search search_string 
CentOSyum search search_string 
 yum search all search_string搜索所有的字段,包括描述
Fedoradnf search search_string 
 dnf 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 package 
 dpkg -s package显示包的当前安装状态
CentOSyum info package 
 yum deplist package列出包的依赖
Fedoradnf info package 
 dnf repoquery --requires package列出包的依赖
FreeBSD Packagespkg info package显示已安装的包的信息
FreeBSD Portscd /usr/ports/category/port && cat pkg-descr 

从存储库安装包

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

系统命令说明
Debian / Ubuntusudo apt-get install package 
 sudo apt-get install package1 package2 ...安装所有列出来的包
 sudo apt-get install -y package在 apt 提示是否继续的地方直接默认 yes
 sudo apt install package显示一个彩色的进度条
CentOSsudo yum install package 
 sudo yum install package1 package2 ...安装所有列出来的包
 sudo yum install -y package在 yum 提示是否继续的地方直接默认 yes
Fedorasudo dnf install package 
 sudo dnf install package1 package2 ...安装所有列出来的包
 sudo dnf install -y package在 dnf 提示是否继续的地方直接默认 yes
FreeBSD Packagessudo pkg install package 
 sudo 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.deb 
 sudo apt-get install -y gdebi && sudo gdebi package.deb安装 gdebi,然后使用 gdebi 安装 package.deb 并处理缺失的依赖
CentOSsudo yum install package.rpm 
Fedorasudo dnf install package.rpm 
FreeBSD Packagessudo pkg add package.txz 
 sudo pkg add -f package.txz即使已经安装的包也会重新安装

删除一个或多个已安装的包

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

系统命令说明
Debian / Ubuntusudo apt-get remove package 
 sudo apt remove package 
 sudo apt-get autoremove删除不需要的包
CentOSsudo yum remove package 
Fedorasudo dnf erase package 
FreeBSD Packagessudo pkg delete package 
 sudo pkg autoremove删除不需要的包
FreeBSD Portssudo pkg delete package 
 cd /usr/ports/path_to_port && make deinstall卸载 port

apt 命令

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

传统命令等价的 apt 命令
apt-get updateapt update
apt-get dist-upgradeapt full-upgrade
apt-cache search stringapt search string
apt-get install packageapt install package
apt-get remove packageapt remove package
apt-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 yum 
Fedoraman dnf 
FreeBSD Packagesman pkg和预先编译的二进制包一起工作
FreeBSD Portsman ports和 Ports 集合一起工作
### 回答1: 如果您想在CentOS 8上安装Python 3.6,有两种方法可以使用yumdnf软件管理器。在使用这些管理器之前,请确保您具有管理员访问权限。 方法1:使用yum安装Python 3.6 1.安装EPEL存储库 yum install epel-release 2.安装Python3.6 yum install python36 3.查看Python版本号 python3.6 -V 方法2:使用dnf安装Python 3.6 1.启用PowerTools仓库 dnf config-manager --set-enabled PowerTools 2.安装Python3.6 dnf install python3.6 3.查看Python版本号 python3.6 -V 以上两种方法均可在CentOS 8上安装Python3.6,您可以根据自己的需要选择其中一种。使用yumdnf软件管理器安装Python 3.6非常方便,并且可以轻松地配置和管理Python解释器。 ### 回答2: CentOS 8作为一个基于Red Hat Enterprise Linux 8开发的Linux发行版,标配的Python版本为Python 3.6以上,所以我们不需要进行安装即可使用。但是,有些特定的项目或应用程序需要安装Python 3.6及以上版本来进行开发和运行。下面以CentOS 8系统为例,介绍安装Python 3.6的方法。 使用YUM安装Python 3.6: 1.首先,通过更新yum仓库,使其更新到最新: sudo dnf update 2.安装Python 3.6的依赖项: sudo dnf install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel xz-devel 3.下载并安装Python 3.6源代码: wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz tar xzf Python-3.6.5.tgz cd Python-3.6.5 ./configure --enable-optimizations make altinstall 注意:使用“altinstall”而不是“install”,因为后者将覆盖系统默认的Python版本。 4.验证Python 3.6安装是否成功: python3.6 -V 如果控制台输出Python 3.6.5,则说明已正确安装Python 3.6。 使用dnf安装Python 3.6: 1.添加dnf源: sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm 2.启用Remi库: sudo dnf module reset -y python38 sudo dnf module enable python38:remi 3.安装Python 3.6: sudo dnf install python36 4.验证Python 3.6安装是否成功: python3.6 -V 如果控制台输出Python 3.6.5,则说明已正确安装Python 3.6。 注意:如果您想在系统上同时拥有多个Python版本,建议使用Python虚拟环境来管理它们。虚拟环境可完全隔离不同的Python版本和依赖项,方便程序员进行不同版本Python代码的开发、部署和测试。 ### 回答3: 安装Python3.6是CentOS 8的一项基本操作,因为Python 3.6是面向对象编程中最流行的语言之一,有很多应用和库都是使用Python 3.6编写的。要安装Python 3.6的方法有很多种,但是本文将介绍最简单的方法:使用yum/dnf命令来安装Python 3.6的rpm。 步骤1:更新系统 在安装Python 3.6之前,建议更新你的CentOS 8系统。可以输入以下命令来更新软件库中的所有软件: sudo dnf update 步骤2:添加EPEL和额外的软件库 要安装Python 3.6,必须添加EPEL和额外的软件库。可以使用以下命令进行安装: sudo dnf install epel-release sudo dnf config-manager --set-enabled PowerTools 步骤3:安装Python 3.6.rpm 已经更新过软件库并添加了必要的软件库,可以输入以下命令来安装Python 3.6的rpm: sudo dnf install python36 步骤4:验证安装安装完成后,可以通过输入以下命令来测试Python 3.6是否已成功安装: python3.6 -V 输出的结果应该如下: Python 3.6.x 如果成功安装且输出与预期相同,则说明Python 3.6已经成功安装。 总结: 在CentOS 8上安装Python 3.6非常简单,只需要运行上述命令即可完成安装。当然,如果需要安装其他版本的Python,可以下载源代码自行编译安装。无论你选择哪种方法,Python 3.6都是一门非常方便的编程语言,在任何领域都非常有用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菲宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值