Ubuntu Server: Repository 'ondrej/php' changed its 'Label' value как перейти на packages.sury.org/php?
На сервере с Ubuntu 24 / 22 LTS после выполнения apt update у меня появилось такое сообщение:
Repository 'https://ppa.launchpadcontent.net/ondrej/php/ubuntu noble InRelease' changed its 'Label' value from 'PPA for PHP' to 'Use https://packages.sury.org/php/ instead'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
У меня это вылезло на Ubuntu Server с подключенным ppa:ondrej/php.
Суть проблемы простая: репозиторий PHP PPA от Ondřej Surý теперь рекомендует использовать другой репозиторий https://packages.sury.org/php/ для установки и обновления PHP в вашей системе:
Ниже привожу короткий рабочий вариант, как заменить старый репозиторий на новый.
1. Делаем бэкап apt sources
sudo cp -a /etc/apt/sources.list.d /root/sources.list.d.bak.$(date +%F-%H%M%S)
2. Удаляем старый PPA ondrej/php
sudo add-apt-repository --remove -y ppa:ondrej/php
Если команда выше по какой-то причине отработала с ошибками, можно руками удалить старые .list файлы:
sudo rm -f /etc/apt/sources.list.d/ondrej-ubuntu-php*.list
sudo rm -f /etc/apt/sources.list.d/ondrej-php*.list
3. Добавляем ключ нового репозитория
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://packages.sury.org/php/apt.gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/deb.sury.org-php.gpg
sudo chmod 0644 /etc/apt/keyrings/deb.sury.org-php.gpg
4. Добавляем packages.sury.org/php
Команда сама возьмёт codename текущей Ubuntu, например noble:
. /etc/os-release
echo "deb [signed-by=/etc/apt/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ ${VERSION_CODENAME} main" \
| sudo tee /etc/apt/sources.list.d/deb-sury-org-php.list
5. Обновляем apt
sudo apt update
6. Проверяем, откуда теперь берётся PHP
Например для PHP 8.4:
apt-cache policy php8.4-cli php8.4-fpm php8.4-common
В выводе должен быть новый источник:
https://packages.sury.org/php
7. Обновляем пакеты
sudo apt upgrade
Перед обновлением можно посмотреть список пакетов:
sudo apt list --upgradable
Быстрый временный вариант
Если нужно просто пропустить предупреждение apt и продолжить обновление текущего репозитория:
sudo apt-get --allow-releaseinfo-change update
Но нормальный вариант для сервера — сразу перейти на новый источник packages.sury.org/php, чтобы дальше PHP-пакеты приходили уже оттуда.