Рейтинг:0

Debian: как поставить две версии libcurl в одну систему?

флаг jp

Я пытаюсь перенести два веб-приложения на один сервер (debian10), для обоих требуются разные версии php, и для правильной работы обоих требуются расширения cURL.

php5.6-curl использует libcurl v3

php8.1-curl использует libcurl v4

Во-первых, я установил php5.6-curl, и когда я попытался установить php8.1-curl, apt выдает уведомление, что Следующие пакеты имеют неудовлетворенные зависимости: php8.1-curl: Зависит: libcurl4 (>= 7.56.1), но не будет установлен

Если я использую -f на apt, он удаляет php5.6-curl...

Каков самый элегантный способ сделать эти две библиотеки libcurl доступными в одной системе?

Спасибо, Роберт

редактировать: Насколько я понимаю, проблема в том, что libcurl3 и libcurl4 используют один и тот же файл /usr/lib/x86_64-linux-gnu/libcurl.so.4, и он меняется при переустановке пакета (libcurl3<->libcurl4). php[5.6,8.1]-fpm пытается загрузить библиотеку, тот, который получает неправильную версию libcurl.so.4, терпит неудачу, и php не может использовать этот модуль.

Может быть, есть элегантный способ заставить двоичные файлы 4eg php5-curl использовать библиотеку из определенного пользователем пути?

Рейтинг:1
флаг in

Поместите оба приложения в контейнер, содержащий все необходимое.

Robert Grubba avatar
флаг jp
к сожалению, мне не разрешено использовать контейнеры в этом проекте...
Nikita Kipriyanov avatar
флаг za
Вы уверены, что находитесь в деловой среде?
Рейтинг:0
флаг jp

Я нашел обходной путь сам, если вы хотите решить подобную проблему, вы можете пойти моим, не самым элегантным путем.

  1. установить все необходимые пакеты php5.6;
  2. скопировать каталог /usr/lib в /usr/php56libs
  3. отредактируйте файл службы systemd в моем случае: systemctl изменить --полный php5.6-fpm
  4. под оказание услуг раздел добавить переменную среды: Среда="LD_LIBRARY_PATH=/usr/php56libs"
  5. теперь вы можете установить все пакеты php8.1 с помощью apt (принудительно -f вариант) он удалит все конфликтующие библиотеки из /usr/lib, но это не имеет значения, потому что служба php5.6-fpm будет использовать библиотеки из /usr/php56libs
флаг in
Версия PHP 5.6 устарела в **2018**. С тех пор он не получал обновлений безопасности. Запуск устаревшего программного обеспечения опасен, использование контейнеров, по крайней мере, добавит еще один уровень безопасности для предотвращения повышения привилегий.
Рейтинг:-2
флаг ru

Войдите на свой сервер через SSH. Убедитесь, что вы находитесь в домашнем каталоге вашего пользователя. Найдите версию, которую вы хотите установить Разархивируйте файл. Перейдите в этот новый каталог. Откройте свой .bash_profile с помощью nano или vim. Например: Добавьте нужный файл в .bash и обновите Обновите свой .bash_profile, чтобы активировать новую конфигурацию. Проверьте расположение и версию curl

флаг in
Это вообще не имеет никакого смысла.
Robert Grubba avatar
флаг jp
Не знаю, как это поможет в моей проблеме. Насколько я понимаю, проблема в том, что libcurl3 и libcurl4 используют один и тот же файл ```/usr/lib/x86_64-linux-gnu/libcurl.so.4```, и он меняется при переустановке пакета (libcurl3libcurl4) . php[5.6,8.1]-fpm пытается загрузить библиотеку, тот, который получает неправильную версию libcurl.so.4, терпит неудачу, и php не может использовать этот модуль.

Ответить или комментировать

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