Ubuntu: Как заблокировать php на определенной версии?

Вопрос или проблема

Клиент, использующий Ubuntu 18.04, хочет обновить php с версии 7.2.24-0ubuntu0.18.04.17 (cli) до последней версии 7.4 и заблокировать её (программное обеспечение, которое он использует, не работает с php8). Я видел другие вопросы о блокировке пакетов на определённой версии, но не уверен, что делаю не так. Является ли php особым случаем?

На данный момент я сделал следующее:

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.4

php -v показывает версию 7.4.33, что вполне нормально.

sudo vi /etc/apt/preferences

Я добавил следующие строки в preferences:

Package: php
Pin: version 7.4.*
Pin-Priority: 1000

Таким образом, насколько я понимаю, после этого каждый раз, когда я выполняю, например,

sudo apt update
sudo apt full-upgrade
sudo apt autoremove

версия php должна оставаться на 7.4.*. Однако этого не происходит, php -v показывает версию 8.2.4 после этого, что я упустил? Неправильное имя сборки или что-то другое?

Также, связанный с этим вопрос: как быть со всеми другими сборками, начинающимися со строки php (sudo apt list php*)? Я предполагаю, что они также должны оставаться на версии, совместимой с php 7.4.x, так они останутся на месте, пока php будет на 7.4.x, или мне нужно добавить все их в настройки apt также? Могу ли я использовать подстановочный знак php* для этого?

Или есть какой-то лучший способ заблокировать php на версии 7.4?

ОБНОВЛЕНИЕ: Будет ли, например:

sudo apt-mark hold <имя пакета>

простым способом заблокировать версию, и могу и должен ли я использовать php* как имя пакета, чтобы заблокировать любые связанные с php пакеты на их текущих версиях? Есть ли какие-либо недостатки в этом?

Чтобы установить конкретную версию как умолчание для PHP, вы можете использовать следующую команду:

sudo update-alternatives --config php

Эта команда отобразит меню, подобное этому: это.

Ответ или решение

Для того чтобы зафиксировать версию PHP на Ubuntu 18.04, вам нужно выполнить несколько шагов, так как ваша цель — не только обновить PHP до версии 7.4, но и предотвратить его автоматическое обновление до более поздних версий (например, PHP 8). Основное внимание будет уделено нескольким методам, а также тому, как можно управлять другими пакетами PHP.

1. Установка PHP 7.4

Вы уже выполнили необходимые команды для добавления PPA и установки PHP 7.4. Давайте убедимся, что всё было выполнено корректно:

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.4

Теперь вы можете проверить текущую версию PHP:

php -v

Если выводит 7.4.33, значит установка прошла успешно.

2. Закрепление версии с помощью APT Preferences (необходимые модификации)

Вы пытались использовать файл /etc/apt/preferences, но, возможно, допустили небольшую ошибку, так как до сих пор видите обновлённую версию PHP 8.2.4. Убедитесь, что содержимое файла выглядит следующим образом:

Package: php7.4
Pin: version 7.4.*
Pin-Priority: 1000

Package: php*
Pin: version 7.4.*
Pin-Priority: 50
  • Здесь первый блок влияет на пакет php7.4, а второй используется для других связанных пакетов, начинающихся с php.

3. Использование apt-mark hold для удержания версии

Альтернативный способ зафиксировать версию PHP — использование команды apt-mark hold. Это позволит заблокировать так необходимые пакеты:

sudo apt-mark hold php7.4
sudo apt-mark hold php7.4-cli
sudo apt-mark hold php7.4-common
sudo apt-mark hold php7.4-fpm

Вы можете повторить этот процесс для любых других зависимостей PHP, установленных у вас на системе. В отличие от метода с preferences, метод hold более прямолинеен и прост в управлении.

4. Проверка текущих установленных пакетов

Чтобы убедиться в том, что вы удерживаете все необходимые пакеты PHP на версии 7.4, выполните следующую команду:

apt list --installed | grep php

Это позволит вам увидеть все установленные версии пакетов и убедиться, что они соответствуют нужной версии.

5. Обновление альтернативных версий PHP

Если у вас установлено несколько версий PHP и вы хотите установить PHP 7.4 по умолчанию, выполните следующую команду:

sudo update-alternatives --config php

После выполнения этой команды вы увидите меню для выбора текущей версии PHP.

Заключение

Таким образом, для фиксирования версии PHP на Ubuntu 18.04 вы можете использовать как настройки в apt preferences, так и команду apt-mark hold. Убедитесь, что вы также следите за обновлениями и зависящими пакетами, чтобы избежать возможного несоответствия. Эти методы являются стандартными и позволят вам избежать нежелательных обновлений в будущем, сохраняя стабильную работу вашего программного обеспечения на PHP 7.4.

Оцените материал
Добавить комментарий

Капча загружается...