Подключение репозитория CodeIT в Ubuntu и Debian

Репозиторий CodeIT

Сборки nginx и Apache httpd с поддержкой HTTP/3, TLS 1.3 и Brotli для Ubuntu и Debian.

Поддерживаются: Ubuntu 22.04 (jammy) и Ubuntu 24.04 (noble) для архитектур amd64 и arm64. Поддерживаются и производные Ubuntu, например Linux Mint: используйте версию 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_CODENAME — это нужное значение. VERSION_CODENAME содержит собственное имя производного дистрибутива, а пакеты для такого набора мы не публикуем.

Для каждого выпуска нужен отдельный пакет: в отличие от dnf, apt не умеет подставлять переменную в файл источников, поэтому кодовое имя должно быть указано явно.

Проверенная установка

Для тех, кто предпочитает проверить содержимое пакета перед установкой. Все шаги необязательны; результат будет тем же.

Заменяйте 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_PUBKEY или signature означает, что файл 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 и связка ключей. Уже установленные пакеты останутся; если их тоже нужно удалить, сделайте это заранее.