Вопрос или проблема
На 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: Установка через системные пакеты
-
Проверка установленных пакетов
Прежде чем вносить изменения, убедитесь, что на вашем устройстве установлены необходимые пакеты. Выполните команду:dpkg -l | grep curl dpkg -l | grep mongodb
Эта команда покажет, какие версии
curl
иmongodb
уже установлены. -
Установка необходимых зависимостей
Убедитесь, что зависимостиmongodb
установлены. Обычно это включаяlibcurl3
. Выполните:sudo apt install -y libcurl3
-
Проблемы с зависимостями
Если вы попытаетесь установитьcurl
, получив сообщение об ошибке о зависимостиlibcurl4
, вам потребуется другой подход, так как иmongodb
, иcurl
конфликтуют из-за разных библиотек. -
Использование альтернативных доступных пакетов
Если у вас уже есть установленныйmongodb
сlibcurl3
, попробуйте установить версиюcurl
, которая может работать сlibcurl3
. Однако, пожалуйста, обратите внимание, что использование старых версий может повлечь за собой другие проблемы. -
Установка curl
Если вам всё же необходимо установитьcurl
и вы не можете обойтись без него, рассмотрите возможность добавления официальных PPA (Personal Package Archives), где может быть доступна более новая версия, совместимая сmongodb
. Например:sudo add-apt-repository ppa:curl/curl sudo apt update sudo apt install curl
Вариант 2: Контейнеризация с Docker
Если вы столкнулись с постоянными проблемами зависимостей, использование Docker станет наиболее оптимальным решением. Этот метод отвечает современным требованиям разработки и контроля версий, позволяя избежать конфликтов между разными пакетами.
-
Установка 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
-
Запуск 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 для жесткой изоляции приложений и их зависимостей может значительно упростить вашу задачу. Этот метод позволяет избежать конфликтов библиотек и предоставляет возможность легко управлять версиями программного обеспечения. Выводя программы из контекста операционной системы, вы можете сосредоточиться на их разработке и использовании.