Вопрос или проблема
Я пытаюсь установить python graph tool на Ubuntu 16.04.
Я попробовал оба пути, предложенные здесь https://graph-tool.skewed.de/download#packages:
- ручная установка с помощью
.\configure
make
make install
- предварительно скомпилированные пакеты и
apt-get install python-graph-tool
Ручная установка имеет много проблем на этапе make
.
Второй путь (который также является рекомендуемым) выдает мне следующую ошибку:
sudo apt-get -y --force-yes install python-graph-tool
[sudo] пароль для riccardo:
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Некоторые пакеты не могут быть установлены. Это может означать, что вы
попросили невозможную ситуацию или если вы используете нестабильный
дистрибутив, где некоторые необходимые пакеты не были созданы
или были перемещены из Incoming.
Следующая информация может помочь решить ситуацию:
Следующие пакеты имеют неудовлетворенные зависимости:
python-graph-tool : Зависит от: libboost-iostreams1.58.0, но он не может быть установлен
Зависит от: libboost-python1.58.0, но он не может быть установлен
Зависит от: libboost-regex1.58.0, но он не может быть установлен
Зависит от: libboost-graph1.58.0, но он не может быть установлен
Зависит от: libboost-system1.58.0, но он не может быть установлен
Зависит от: libboost-thread1.58.0, но он не может быть установлен
E: Не удаётся исправить проблемы, вы удерживаете поврежденные пакеты.
Если я запускаю sudo apt-get install libboost-all-dev
я получаю :
sudo apt-get install libboost-all-dev
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
libboost-all-dev уже является самой новой версией (1.61.0.2).
0 обновлено, 0 новых установлено, 0 для удаления и 13 не обновлено.
А когда я пытаюсь установить каждый пакет вручную, я получаю, например:
sudo apt-get install libboost-coroutine1.58.0
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Пакет libboost-coroutine1.58.0 недоступен, но на него ссылается другой пакет.
Это может означать, что пакет отсутствует, устарел или
доступен только из другого источника
E: Пакет 'libboost-coroutine1.58.0' не имеет кандидатов на установку
Я новичок в Python и Linux. Можете помочь мне понять, что здесь не так?
Большое спасибо
Найдите отсутствующие пакеты в индексе пакетов Ubuntu для xenial-updates
(пример) и загрузите их для вашей архитектуры. Затем установите их с помощью вашего любимого пакетного менеджера. В командной строке это может быть:
sudo apt install libboost*_$(dpkg --print-architecture).deb
В документации указано, что DISTRIBUTION может быть любым из
xenial, yakkety, zesty
У меня была такая же ошибка, как у вас, с zesty
:
Следующие пакеты имеют неудовлетворенные зависимости:
python3-graph-tool : Зависит от: libboost-iostreams1.62.0, но он не может быть установлен
Зависит от: libboost-python1.62.0, но он не может быть установлен
Зависит от: libboost-regex1.62.0, но он не может быть установлен
Зависит от: libboost-graph1.62.0, но он не может быть установлен
Зависит от: libboost-system1.62.0, но он не может быть установлен
Зависит от: libboost-thread1.62.0, но он не может быть установлен
Рекомендует: python3-matplotlib, но он не будет установлен
E: Не удаётся исправить проблемы, вы удерживаете поврежденные пакеты.
, но не было проблем, когда пробовал xenial
:
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Следующие пакеты были автоматически установлены и более не требуются:
gdebi-core libgles1-mesa linux-headers-4.4.0-62 linux-headers-4.4.0-62-generic linux-headers-4.4.0-72 linux-headers-4.4.0-72-generic
linux-image-4.4.0-62-generic linux-image-4.4.0-72-generic linux-image-extra-4.4.0-62-generic linux-image-extra-4.4.0-72-generic
Используйте 'sudo apt autoremove', чтобы удалить их.
Следующие дополнительные пакеты будут установлены:
fonts-lyx libboost-context1.58.0 libboost-coroutine1.58.0 libboost-graph1.58.0 libboost-python1.58.0 libcgal11v5 libjs-jquery-ui
python-matplotlib-data python3-cycler python3-dateutil python3-decorator python3-matplotlib python3-numpy python3-pyparsing python3-scipy
python3-tk python3-tz ttf-bitstream-vera
Рекомендуемые пакеты:
libjs-jquery-ui-docs ffmpeg ipython3 python-matplotlib-doc python3-cairocffi python3-gobject python3-nose python3-pyqt4 python3-sip
python3-tornado ttf-staypuft gfortran python-numpy-doc python3-dev python3-numpy-dbg python-scipy-doc tix python3-tk-dbg
Следующие НОВЫЕ пакеты будут установлены:
fonts-lyx libboost-context1.58.0 libboost-coroutine1.58.0 libboost-graph1.58.0 libboost-python1.58.0 libcgal11v5 libjs-jquery-ui
python-matplotlib-data python3-cycler python3-dateutil python3-decorator python3-graph-tool python3-matplotlib python3-numpy python3-pyparsing
python3-scipy python3-tk python3-tz ttf-bitstream-vera
0 обновлено, 19 новых установлено, 0 для удаления и 61 не обновлено.
Необходимо получить 51.1 MB архивов.
После этой операции будет использовано 247 MB дополнительного дискового пространства.
Желаете продолжить? [Y/n] Y
ПРЕДУПРЕЖДЕНИЕ: следующие пакеты не могут быть проверены!
python3-graph-tool
Установить эти пакеты без проверки? [y/N] Y
В дополнение к вышесказанному попробуйте изменить дистрибутив
deb [ arch=amd64 ] https://downloads.skewed.de/apt DISTRIBUTION main
из опций на странице (bullseye, buster, sid, bionic, eoan, focal, groovy), только “focal” сработал правильно.
.
Ответ или решение
Установка Graph Tool на Ubuntu 16.04 может оказаться достаточно сложной задачей, особенно если вы сталкиваетесь с проблемами несовместимости зависимостей или отсутствующими пакетами. Давайте разберем возможные способы решения этой задачи.
Понимание проблемы
Вы пытаетесь установить python-graph-tool на Ubuntu 16.04 двумя способами:
- Ручная установка (через
./configure
,make
,make install
) сталкивается с проблемами на этапеmake
. - Установка через APT (используя
apt-get install python-graph-tool
) выводит ошибку о том, что несколько необходимых пакетовlibboost
не могут быть установлены.
Анализ проблемы
Ошибки APT показывают, что пакеты libboost
версии 1.58.0 не доступны для установки. Это может быть связано с тем, что эти пакеты устарели или их репозитории больше не поддерживаются для вашей версии Ubuntu.
Вы также упомянули, что у вас установлена версия libboost-all-dev
1.61.0.2, что может вызвать несовместимость, поскольку python-graph-tool
требует именно версию 1.58.0.
Возможные решения
-
Обновление системы: Рассмотрите возможность обновления до более новой версии Ubuntu, например, 20.04 LTS. Новые версии обычно имеют более актуальные версии библиотек и исправленные зависимости.
-
Использование верного дистрибутива: Измените дистрибутив, указанный в файле источников APT для Graph Tool, на
xenial
, который соответствует вашей версии Ubuntu. Этого можно достичь, отредактировав файл:sudo nano /etc/apt/sources.list.d/graph-tool.list
Здесь замените DISTRIBUTION на
xenial
. -
Ручная установка зависимостей: Вам также нужно будет загрузить недостающие пакеты вручную из архивов Ubuntu для dистрибутива
xenial-updates
. Вы можете загрузить пакеты необходимой версии через packages.ubuntu.com и установить их с помощью команды:sudo dpkg -i <имя_пакета>.deb
-
Использование виртуального окружения: Рассмотрите возможность использования контейнеров, таких как Docker, где вы можете управлять зависимостями более гибко и изолированно.
-
Обратитесь к документации: Убедитесь, что вы следуете последним инструкциям по установке из официальной документации Graph Tool.
Заключение
Чтобы эффективно установить python-graph-tool, настоятельно рекомендуется проверить актуальность вашей системы и соответствие пакетов. Обновление системы до более новой версии может заметно упростить этот процесс. Кроме того, если вы новичок в Linux, рассмотрите возможность изучения базовых принципов управления пакетами и зависимостями в Ubuntu. Это поможет вам в будущем избегать подобных проблем.