【Ubuntu】apt命令安装最新版本Nginx

环境

Ubuntu 22.04

前言

ubuntu官方apt软件仓库(或者叫软件源)的软件版本可能会比较旧,导致无法安装最新版的软件包,例如在Ubuntu 22.04中,默认情况下,执行apt install nginx命令安装到的 Nginx 版本是1.18.0(2020年4月发布),比较旧。

如果希望安装最新版本的Nginx,需要添加 Nginx 的外部仓库,其它软件也同理。

另外一种方法是到 Nginx 的官网下载新版本tar.gz源码包,手动编译安装,本文暂不讨论。

添加Nginx仓库步骤

1、仓库公钥

每一个外部仓库都有一个公钥,此公钥用来验证软件包是否真的来自此仓库。

仓库的公钥有两种类型,一种是文本公钥,一种是二进制GPG公钥(扩展名为.gpg)。

文本公钥适用于 apt 版本 >= 1.4的,而二进制GPG公钥适用于所有版本。

查看apt版本的命令:

apt --version

一般软件都有提供自己的仓库公钥下载地址,例如 Nginx 的是:

https://nginx.org/keys/nginx_signing.key

Docker的是:

https://download.docker.com/linux/ubuntu/gpg

如何确定公钥的类型?如果公钥的内容全部都是文本,不是乱码,而且第一行内容含有BEGIN PGP PUBLIC KEY BLOCK字样的,就是文本公钥。

例如Nginx仓库的公钥就是文本公钥:
在这里插入图片描述

下载文本公钥,保存到/etc/apt/keyrings/目录(此目录需要手动创建):

curl -fsSL https://nginx.org/keys/nginx_signing.key -o /etc/apt/keyrings/nginx-repo-keyring.key

正如上文讲到的,1.4版本以上的apt已经支持文本公钥,下载好后就可以直接使用。如果你还是想要将文本公钥转换为二进制GPG公钥,请看下面第二步骤。

在旧版本的Ubuntu中,仓库公钥下载后,是使用apt-key add命令添加的,但通过该命令添加的公钥,不仅仅会被当前仓库使用,还会被其它的所有仓库共用,会有安全风险。因此自从Ubuntu 20.10版本开始,apt-key命令就被标记为“过时”,并且在22.04版本(不含)后会被正式移除。而新的方法是在source文件中使用signed-by关键字指定仓库公钥的位置(见下面第三步骤)

2、文本公钥转二进制GPG公钥(可选)

使用gpg命令将文本公钥转换为二进制公钥,同样是保存到/etc/apt/keyrings/目录,不过文件的后缀名是.gpg

curl -fsSL https://nginx.org/keys/nginx_signing.key \
    | sudo gpg --dearmor -o /etc/apt/keyrings/nginx-repo-keyring.gpg

3、添加apt软件源

创建source文件,名字为nginx.list,并往里写入内容:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/nginx-repo-keyring.gpg] https://nginx.org/packages/ubuntu/ $(lsb_release -cs) nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list > /dev/null

注意signed-by后面跟的是Nginx仓库公钥的路径,根据实际情况修改。

生成的nginx.list文件内容示例:

deb [arch=amd64 signed-by=/etc/apt/keyrings/nginx-repo-keyring.gpg] https://nginx.org/packages/ubuntu/ jammy nginx

4、安装新版Nginx

添加好 Nginx 仓库后,就可以安装新版的 Nginx 了:

apt update
apt install nginx

参阅

相关推荐

  1. centos8拉取nginx最新版本到本地

    2024-05-10 06:44:12       46 阅读
  2. CentOS7安装最新版本git

    2024-05-10 06:44:12       53 阅读
  3. docker 安装nacos最新版本单机版

    2024-05-10 06:44:12       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-10 06:44:12       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-10 06:44:12       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-10 06:44:12       82 阅读
  4. Python语言-面向对象

    2024-05-10 06:44:12       91 阅读

热门阅读

  1. MySQL变量的定义与应用

    2024-05-10 06:44:12       28 阅读
  2. Node.js身份证实名认证接口、身份证识别API

    2024-05-10 06:44:12       28 阅读
  3. 第七十五章 锁定 Apache (UNIX® Linux macOS)

    2024-05-10 06:44:12       29 阅读
  4. Node.js发票ocr识别、发票查验接口

    2024-05-10 06:44:12       28 阅读
  5. MySQL中的字符集陷阱:为何避免使用UTF-8

    2024-05-10 06:44:12       24 阅读
  6. 【Web漏洞指南】服务器端 XSS(动态 PDF)

    2024-05-10 06:44:12       30 阅读
  7. CNOCR和PaddleOCR提取pdf中文字-个人记录

    2024-05-10 06:44:12       35 阅读
  8. leetcode152. 乘积最大子数组

    2024-05-10 06:44:12       33 阅读