在 Ubuntu 和 Debian 中配置 CodeIT 软件仓库

CodeIT 软件仓库

面向 Ubuntu 和 Debian 的 nginx 和 Apache httpd 构建,支持 HTTP/3、TLS 1.3 和 Brotli。

支持: Ubuntu 22.04 (jammy)Ubuntu 24.04 (noble),支持 amd64arm64 架构。还支持 Linux Mint 等 Ubuntu 衍生发行版;请使用其所基于的 Ubuntu 版本。

快速安装

检测系统版本并安装匹配的软件仓库配置包:

curl -fsSL https://repo.codeit.guru/setup | sudo sh

要在不修改系统的情况下查看脚本将执行的操作:

curl -fsSL https://repo.codeit.guru/setup | sh -s -- --print

脚本只会识别系统版本并安装一个软件包。如果您不希望将脚本直接传给命令解释器,请使用下一节的方法;结果完全相同。

不使用脚本安装

选择您的系统版本。该软件包会安装 apt 软件源和签名密钥。

Ubuntu 24.04 — noble

curl -fsSLO https://repo.codeit.guru/codeit-repo-release.noble.deb
sudo dpkg -i codeit-repo-release.noble.deb
sudo apt-get update

Ubuntu 22.04 — jammy

curl -fsSLO https://repo.codeit.guru/codeit-repo-release.jammy.deb
sudo dpkg -i codeit-repo-release.jammy.deb
sudo apt-get update

如何查看当前系统版本?

. /etc/os-release; echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}"

对于 Mint、Pop!_OS 等系统,应使用 UBUNTU_CODENAMEVERSION_CODENAME 保存的是衍生发行版本身的代号,而我们不会为该代号发布软件包。

每个版本都需要单独的软件包,因为 apt 与 dnf 不同,无法在软件源文件中展开变量;代号必须明确写入文件。

验证后安装

适用于希望在安装前检查软件包内容的用户。以下每一步都是可选的,最终结果完全相同。

在以下所有命令中,将 jammy 替换为您的系统版本代号。

1. 仅下载软件包,不安装

curl -fsSLO https://repo.codeit.guru/codeit-repo-release.jammy.deb

2. 检查软件包内容

dpkg -I codeit-repo-release.jammy.deb    # control data, dependencies
dpkg -c codeit-repo-release.jammy.deb    # every file it installs

软件包包含两个文件:apt 软件源和密钥环。它没有维护者脚本,因此安装时不会执行任何代码。

3. 查看将要添加的 apt 软件源

dpkg-deb --fsys-tarfile codeit-repo-release.jammy.deb \
  | tar -xO ./etc/apt/sources.list.d/codeit.sources

4. 将密钥与下方公布的指纹进行核对

dpkg-deb --fsys-tarfile codeit-repo-release.jammy.deb \
  | tar -xO ./usr/share/keyrings/codeit-archive-keyring.asc \
  | gpg --show-keys --with-fingerprint

请将其与 签名密钥表格中的值进行比较。

信任依据。 该软件包通过 HTTPS 下载,但软件包自身并未签名。在 apt 中,签名位于软件仓库的 Release 文件中,而且只有安装密钥后才能验证。因此,真正重要的是上面的指纹核对步骤,而它的可靠性取决于您对本页面的信任。如果这不足以满足您的威胁模型,请先通过独立渠道获取指纹。

5. 安装刚刚检查过的文件

sudo dpkg -i ./codeit-repo-release.jammy.deb
sudo apt-get update

安装软件包

sudo apt-get install -y nginx
sudo apt-get install -y apache2

两个软件包系列位于同一个发行套件中,因此无需先启用任何内容;Enterprise Linux 的模块流在 apt 中没有对应机制。

要将软件包固定到此仓库,或查看它将从哪个来源安装:

apt policy nginx

验证安装结果

apt policy | grep -i codeit
ls -l /etc/apt/sources.list.d/codeit.sources
ls -l /usr/share/keyrings/codeit-archive-keyring.asc

成功运行 apt-get update 且没有 NO_PUBKEYsignature 警告,表示软件仓库的 Release 文件已使用安装的密钥验证通过。

测试套件

系统还会安装一条默认禁用的预发布构建配置。要启用它,请将第二个配置段中的 Enabled: no 改为 Enabled: yes

sudoedit /etc/apt/sources.list.d/codeit.sources
sudo apt-get update

测试套件包含尚未正式发布的构建。不要在重要系统上保持启用状态。

签名密钥

Ubuntu 和 Debian 软件包使用同一把密钥签名。

用途 密钥 指纹
Ubuntu、Debian EL 8、9、10 MasterOfDevon <[email protected]> RSA 2048,2021-12-08 A841 3774 B3FA A303 D8A6  CD79 5F53 E10D 0918 7DCD

要查看系统中已安装密钥的指纹:

gpg --show-keys --with-fingerprint /usr/share/keyrings/codeit-archive-keyring.asc

该密钥不会加入 apt 的全局密钥环,也不应该加入。它以文件形式安装,并通过 Signed-By: 字段在 codeit.sources中引用,因此只能为此软件仓库提供信任。使用 apt-key 添加的密钥会被 系统中的每个 软件仓库信任;这正是该命令已弃用并从当前发行版中移除的原因。

删除软件仓库

sudo apt-get remove -y codeit-repo-release
sudo apt-get update

此操作会同时删除 apt 软件源和密钥环。已安装的软件包会保留;如果也要删除这些软件包,请先将其卸载。