Как я могу установить и curl (зависит от libcurl4), и mongodb (зависит от libcurl3)?

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

На Lubuntu 18.04 я установил mongodb, следуя https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/#install-mongodb-community-edition

sudo apt install -y mongodb-org mongodb-org-server libcurl3

и теперь хочу установить curl

$ sudo apt install curl
Чтение списков пакетов... Готово
Формирование дерева зависимостей       
Чтение сведений о состоянии... Готово
Некоторые пакеты не могут быть установлены. Это может означать, что вы
запросили невозможную ситуацию или если вы используете нестабильный
дистрибутив, что некоторые необходимые пакеты еще не были созданы
или были перемещены из Incoming.
Следующая информация может помочь разрешить ситуацию:

Следующие пакеты имеют неудовлетворенные зависимости:
 curl : Зависит: libcurl4 (= 7.58.0-2ubuntu3.2), но это не будет установлено
E: Не удается исправить проблемы, у вас есть сломанные пакеты.

Я следовал https://askubuntu.com/a/1051988/1471

вы можете использовать механизм понижения версии apt (поэтому, не обязательно
удалять пакеты, которые зависят от libcurl4).

apt install -y libcurl4=7.58.0-2ubuntu3
apt install -y curl

Но тогда libcurl3 и mongodb были удалены

$ sudo apt install -y libcurl4=7.58.0-2ubuntu3
Чтение списков пакетов... Готово
Формирование дерева зависимостей       
Чтение сведений о состоянии... Готово
Следующие пакеты были автоматически установлены и больше не нужны:
  calibre-bin fonts-mathjax geoclue-2.0 iio-sensor-proxy libbrotli1 libchm1 libgeoclue-2-0 libjs-coffeescript libjs-mathjax libpodofo0.9.5 libqt5designer5 libqt5help5
  libqt5positioning5 libqt5sensors5 libqt5sql5 libqt5sql5-sqlite libqt5test5 libqt5webchannel5 libqt5webkit5 libqt5xml5 libwoff1 mongodb-org-mongos mongodb-org-shell
  mongodb-org-tools python-apsw python-asn1crypto python-bs4 python-cffi-backend python-chardet python-cherrypy3 python-cryptography python-cssselect python-cssutils
  python-dateutil python-dbus python-dnspython python-enum34 python-feedparser python-html5-parser python-html5lib python-idna python-ipaddress python-libxml2 python-lxml
  python-markdown python-mechanize python-msgpack python-netifaces python-olefile python-openssl python-pil python-pygments python-pyparsing python-pyqt5 python-pyqt5.qtsvg
  python-pyqt5.qtwebkit python-regex python-repoze.lru python-routes python-simplejson python-sip python-six python-utidylib python-webencodings python-webob python-yaml
Используйте 'sudo apt autoremove', чтобы удалить их.
Следующие пакеты будут УДАЛЕНЫ:
  libcurl3 mongodb-org mongodb-org-server
Следующие НОВЫЕ пакеты будут установлены:
  libcurl4
0 обновлено, 1 установлено вновь, 3 удалено и 0 не обновлено.
Необходимо загрузить 214 кБ архивов.
После этой операции будет освобождено 61,6 МБ дискового пространства.
Получение:1 http://us.archive.ubuntu.com/ubuntu bionic/main amd64 libcurl4 amd64 7.58.0-2ubuntu3 [214 kB]
Загружено 214 кБ за 1с (419 кБ/c)
(Чтение базы данных ... 235089 файлов и каталогов в данный момент установлено.)
Удаление mongodb-org (4.0.0) ...
Удаление mongodb-org-server (4.0.0) ...
Удаление libcurl3:amd64 (7.58.0-2ubuntu2) ...
Выбор ранее не выбранного пакета libcurl4:amd64.
(Чтение базы данных ... 235068 файлов и каталогов в данный момент установлено.)
Подготовка к распаковке .../libcurl4_7.58.0-2ubuntu3_amd64.deb ...
Распаковка libcurl4:amd64 (7.58.0-2ubuntu3) ...
Настройка libcurl4:amd64 (7.58.0-2ubuntu3) ...
Обработка триггеров для libc-bin (2.27-3ubuntu1) ...
Обработка триггеров для man-db (2.8.3-2) ...

Когда я пытался установить mongodb, тогда libcurl4 будет удален

$ sudo apt install -y mongodb-org mongodb-org-server
Чтение списков пакетов... Готово
Формирование дерева зависимостей       
Чтение сведений о состоянии... Готово
Следующие пакеты были автоматически установлены и больше не нужны:
  calibre-bin fonts-mathjax geoclue-2.0 iio-sensor-proxy libbrotli1 libchm1 libgeoclue-2-0 libjs-coffeescript libjs-mathjax libpodofo0.9.5 libqt5designer5 libqt5help5
  libqt5positioning5 libqt5sensors5 libqt5sql5 libqt5sql5-sqlite libqt5test5 libqt5webchannel5 libqt5webkit5 libqt5xml5 libwoff1 python-apsw python-asn1crypto python-bs4
  python-cffi-backend python-chardet python-cherrypy3 python-cryptography python-cssselect python-cssutils python-dateutil python-dbus python-dnspython python-enum34
  python-feedparser python-html5-parser python-html5lib python-idna python-ipaddress python-libxml2 python-lxml python-markdown python-mechanize python-msgpack python-netifaces
  python-olefile python-openssl python-pil python-pygments python-pyparsing python-pyqt5 python-pyqt5.qtsvg python-pyqt5.qtwebkit python-regex python-repoze.lru python-routes
  python-simplejson python-sip python-six python-utidylib python-webencodings python-webob python-yaml
Используйте 'sudo apt autoremove', чтобы удалить их.
Следующие дополнительные пакеты будут установлены:
  libcurl3
Следующие пакеты будут УДАЛЕНЫ:
  libcurl4
Следующие НОВЫЕ пакеты будут установлены:
  libcurl3 mongodb-org mongodb-org-server
0 обновлено, 3 установлено вновь, 1 удалено и 0 не обновлено.
Необходимо загрузить 15,7 МБ архивов.
После этой операции будет использовано 61,6 МБ дополнительного дискового пространства.
Получение:1 http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 libcurl3 amd64 7.58.0-2ubuntu2 [214 kB]
Получение:2 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0/multiverse amd64 mongodb-org-server amd64 4.0.0 [15.5 MB]
Получение:3 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0/multiverse amd64 mongodb-org amd64 4.0.0 [3,518 B]                                                              
Загружено 15.7 МБ за 25с (639 кБ/c)                                                                                                                                                
(Чтение базы данных ... 235073 файлов и каталогов в данный момент установлено.)
Удаление libcurl4:amd64 (7.58.0-2ubuntu3) ...
Выбор ранее не выбранного пакета libcurl3:amd64.
(Чтение базы данных ... 235068 файлов и каталогов в данный момент установлено.)
Подготовка к распаковке .../libcurl3_7.58.0-2ubuntu2_amd64.deb ...
Распаковка libcurl3:amd64 (7.58.0-2ubuntu2) ...
Выбор ранее не выбранного пакета mongodb-org-server.
Подготовка к распаковке .../mongodb-org-server_4.0.0_amd64.deb ...
Распаковка mongodb-org-server (4.0.0) ...
Выбор ранее не выбранного пакета mongodb-org.
Подготовка к распаковке .../mongodb-org_4.0.0_amd64.deb ...
Распаковка mongodb-org (4.0.0) ...
Настройка libcurl3:amd64 (7.58.0-2ubuntu2) ...
Обработка триггеров для libc-bin (2.27-3ubuntu1) ...
Обработка триггеров для man-db (2.8.3-2) ...
Настройка mongodb-org-server (4.0.0) ...
Настройка mongodb-org (4.0.0) ...

Как мне установить и curl, и mongodb

Другой способ решения проблем с зависимостями библиотек – использовать контейнер docker.

Например, в этом случае, после установки docker-ce, вы можете запустить что-то вроде этого:

docker run -d --name mongo-4.0.9  -p 127.0.0.1:27017:27017  --restart unless-stopped -v /var/lib/mongodb:/data/db mongo:4.0.9 

Таким образом, вы не зависите от зависимостей вашей системы.

Надеюсь, это поможет.

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

Установка curl и mongodb на Lubuntu 18.04 может вызвать некоторые проблемы с зависимостями, так как они требуют разные версии библиотеки libcurl. В этой статье мы рассмотрим, как можно решить эту проблему, включая два альтернативных подхода: использование системных пакетов и применение контейнеризации с Docker.

Вариант 1: Установка через системные пакеты

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

    dpkg -l | grep curl
    dpkg -l | grep mongodb

    Эта команда покажет, какие версии curl и mongodb уже установлены.

  2. Установка необходимых зависимостей
    Убедитесь, что зависимости mongodb установлены. Обычно это включая libcurl3. Выполните:

    sudo apt install -y libcurl3
  3. Проблемы с зависимостями
    Если вы попытаетесь установить curl, получив сообщение об ошибке о зависимости libcurl4, вам потребуется другой подход, так как и mongodb, и curl конфликтуют из-за разных библиотек.

  4. Использование альтернативных доступных пакетов
    Если у вас уже есть установленный mongodb с libcurl3, попробуйте установить версию curl, которая может работать с libcurl3. Однако, пожалуйста, обратите внимание, что использование старых версий может повлечь за собой другие проблемы.

  5. Установка curl
    Если вам всё же необходимо установить curl и вы не можете обойтись без него, рассмотрите возможность добавления официальных PPA (Personal Package Archives), где может быть доступна более новая версия, совместимая с mongodb. Например:

    sudo add-apt-repository ppa:curl/curl
    sudo apt update
    sudo apt install curl

Вариант 2: Контейнеризация с Docker

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

  1. Установка Docker
    Убедитесь, что у вас установлен docker. Если он не установлен, выполните следующие команды:

    sudo apt update
    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt update
    sudo apt install -y docker-ce
  2. Запуск MongoDB в Docker
    После установки Docker выполните следующую команду для запуска MongoDB без конфликтов с системными библиотеками:

    docker run -d --name mongo -p 127.0.0.1:27017:27017 --restart unless-stopped -v /var/lib/mongodb:/data/db mongo:4.0.0

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

Заключение

Существует несколько способов установки curl и mongodb на Lubuntu 18.04, однако использование Docker для жесткой изоляции приложений и их зависимостей может значительно упростить вашу задачу. Этот метод позволяет избежать конфликтов библиотек и предоставляет возможность легко управлять версиями программного обеспечения. Выводя программы из контекста операционной системы, вы можете сосредоточиться на их разработке и использовании.

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

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