阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

在 Ubuntu中从外部存储库安装软件包步骤

294次阅读
没有评论

共计 3374 个字符,预计需要花费 9 分钟才能阅读完成。

导读 你大概知道怎么在 Ubuntu 中使用 ​​apt​​ 命令安装软件包。那些软件包都是来自 Ubuntu 的官方存储库。

那第三方或者外部存储库呢?不,我这里并不是要讲 PPA。

早晚你会碰到那种至少四行的安装说明:你需要安装名为 ​​apt-transport-https​​ 的包、操作一下 GPG 和 源列表 source list

没有什么印象的话,那我分享一个 ​​在 Ubuntu 上安装最新版本的 Yarn​​ 的例子:

sudo apt install apt-transport-https curlcurl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -sudo sh -c 'echo"deb https://dl.yarnpkg.com/debian/ stable main">> /etc/apt/sources.list.d/yarn.list'sudo apt update && sudo apt install yarn

当你需要直接从开发者那里安装编程工具的时候,大概率会碰到这种安装方式。

许多人只是按照说明进行操作,并不会去思考其中的原理。这也没什么不对,但了解该过程实际上可以提升你在这方面的知识,而且有助于之后排除故障。

我来解释一下这些代码背后的逻辑。

理解从外部存储库安装的过程

整件事情其实就是在系统中添加一个新的外部存储库。这样,你就可以从这个新存储库下载并安装可用的软件包。如果这个存储库提供了包版本的更新,你可以在更新系统的同时更新这些软件包(​​apt update && apt upgrade​​)。

那么,这是什么工作原理呢?让我们一条一条地过一遍。

第 1 部分:为 apt 获取 HTTPS 支持

第一行是这样的:

sudo apt install apt-transport-https curl

​​curl​​ 是一个 ​​Linux 终端下载文件的工具​​。这里主要的部分是安装 ​​apt-transport-https​​,但事实上已经不需要了。

明白了吗?这个 ​​apt-transport-https​​ 包让你的系统通过 HTTPS 协议安全访问存储库。

按照设计,Ubuntu 的存储库使用 http 而不是 https 协议。

看看下面的截图。https 这张图是我已经添加到系统中的外部存储库。Ubuntu 的存储库和 PPA 使用 http 协议。

在 Ubuntu 中从外部存储库安装软件包步骤

在旧版本的 ​​apt​​ 包管理器中,不支持 https 协议。​​apt-transport-https​​ 包为 ​​apt​​ 添加了 https 支持。要新增一个使用 https 的存储库,首先就得先安装此包。

我之前不是说不需要安装这个包了吗?是的,因为较新版本的 ​​apt​​(高于 1.5)已经支持 https,所以你不需要再安装 ​​apt-transport-https​​。

但是你依然看到我在说明中提到了这个包。这更多是出于遗留原因,而且可能还有很旧的发行版在使用旧版本的 ​​apt​​ 包。

现在,你可能想知道既然 https 是安全协议,那为什么 Ubuntu 的存储库还要使用 http 而不是 https。这难道没有安全风险吗?接着往下看你就知道答案了。

第 2 部分:添加远程存储库的 GPG 密钥

Linux 存储库内置了基于 GPG 密钥的安全机制。每个存储库都将其 GPG 公钥添加到你的系统信任密钥中。来自存储库的包由这个 GPG 密钥“签名 signed”,并且通过这份存储的公钥,系统能够验证软件包正是来自这个存储库。

如果 ​​密钥之间不匹配,你的系统会发出提醒​​,而不会继续从该存储库安装或者更新软件包。

到目前为止,一切都很顺利。下一步是将外部存储库的 GPG 公钥添加到你的 Linux 系统,以便它能接收来自该存储库的软件包。

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

在上面的命令中,你使用 ​​curl​​ 从指定的 URL 下载 GPG 密钥。选项 ​​-sS​​ 能够让你不看多余的输出(静默模式),但会显示错误(如果有的话)。最后一个 ​​-​​ 告诉 ​​apt-key​​ 使用标准输入 stdin 而不是文件(在本例中是 ​​curl​​ 命令的输出)。

​​apt-key add​​ 命令已经将下载的密钥添加到系统中。

你可以通过 ​​apt-key list​​ 命令查看系统中各种存储库添加的 GPG 密钥。

在 Ubuntu 中从外部存储库安装软件包步骤

List GPG keys

这是将 GPG 密钥添加到系统的一种方法。你会看到一些其它的命令,看起来略有不同,但效果一样,都是将存储库的公钥添加到你的系统里面。

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

你会注意到 ​​apt-key​​ 已被弃用的警告。在 Ubuntu 22.04 之前,你还可以使用 ​​apt-key​​ 命令,但它最终会被删除。现在不需要杞人忧天。

第 3 部分:将外部存储库添加到源列表

下个命令是在系统的源列表中添加一个新条目。这样,你的系统就会知道它得检查该存储库中的包和更新。

sudo sh -c 'echo"deb https://dl.yarnpkg.com/debian/ stable main">> /etc/apt/sources.list.d/yarn.list'

有一个文件 ​​/etc/apt/sources.list​​ 包含 Ubuntu 存储库的详细信息。最好不要随便动这个文件。所有新增的存储库都应放在 ​​/etc/apt/sources.list.d​​ 目录中相应的文件里(约定以 ​​.list​​ 结尾)。

在 Ubuntu 中从外部存储库安装软件包步骤

External repository should have their own sources list file in the /etc/apt/sources.list.d directory

这使得包管理变得更容易。如果你要从系统中删除一个存储库,只需删除相应的源文件即可。无需修改主 ​​sources.list​​ 文件。

让我们再仔细地看一下这行命令。

sudo sh -c 'echo"deb https://dl.yarnpkg.com/debian/ stable main">> /etc/apt/sources.list.d/yarn.list'

使用 ​​sh​​ 可以在一个新的 shell 进程中运行命令,而不是 ​​子 shell​​。​​-c​​ 选项告诉 ​​sh​​ 命令从参数而不是标准输入读取命令。然后它运行 ​​echo​​ 命令,也就是把 ​​deb https://dl.yarnpkg.com/debian/ stable main​​ 这一行添加到 ​​/etc/apt/sources.list.d/yarn.list​​ 文件(会创建该文件)。

现在,你可以通过各种方法在指定目录中创建 ​​.list​​ 文件并在其中添加包含存储库详细信息的数据行。你也可以像这样使用:

echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

明白了吧?

第 4 部分:从新添加的存储库安装应用程序

到目前为止,你已经将存储库的 GPG 密钥和存储库的 URL 添加到系统中。

但是系统仍然不晓得这个新存储库中有哪些可用的包。这就是为什么你需要先使用下面这个命令更新包元数据的本地缓存:

sudo apt update

这时你的系统就已经知道新增存储库中可用软件包的信息,现在可以试试安装软件包:

sudo apt install yarn

为了节省时间,你可以在 ​​同一行挨着运行这两个命令​​e。

sudo apt update && sudo apt install yarn

​​&&​​ 可以确保第二个命令只会在前一个命令没有任何报错的前提下运行。

整个流程就是这样。

有没有豁然开朗呢,还是一脸懵逼?

我已经解释了在 Ubuntu 中使用外部存储库背后的逻辑。希望你现在能更好地理解它,当然可能还有很多细节会让你困惑。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计3374字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7982349
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新 SSL 证书系统、申请 godaddy 的 APIKEY 公司之前花钱购买的 ssl 证书快...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...