Вопрос или проблема
Я пытаюсь протестировать библиотеку в 32-битной системе. В версиях до Ubuntu 22.04 я смог установить 32-битную версию BLAS, сделав это:
sudo dpkg --add-architecture i386
sudo apt-get -y install libblas-dev:i386
Однако теперь я получаю эту ошибку:
E: Не удается найти пакет libblas-dev:i386
Это странно, потому что я все еще могу устанавливать другие 32-битные библиотеки без проблем, например sudo apt-get -y install libboost-serialization-dev:i386
.
Что я упускаю? Возможно, Ubuntu больше не поставляет 32-битную версию BLAS, даже после добавления архитектуры i386.
Какие альтернативы у меня есть?
(Я пытался установить другие 32-битные реализации BLAS, такие как ATLAS и OpenBLAS, но эти 32-битные пакеты также не существуют).
Вот полная ошибка на CI машине: https://github.com/correaa/boost-multi/actions/runs/11565598763/job/32192856023#step:3:64
ПРЕДЛОЖЕНИЕ: Я осознаю, что раньше я не использовал Ubuntu, я использовал Debian. Но когда я переключился на Github (с Gitlab), единственный доступный образ – это ubuntu-latest
. https://github.com/actions/runner-images?tab=readme-ov-file#available-images
Тем не менее, вопрос остается: почему этого нет в Ubuntu?
Могу ли я скачать и установить (программно) пакет Debian и установить его в образ Ubuntu?
Ответ или решение
Установка 32-битной версии BLAS на Ubuntu 22.04
Вопрос, с которым вы столкнулись, касается установки 32-битной версии библиотеки BLAS (Basic Linear Algebra Subprograms) на платформе Ubuntu 22.04 с использованием пакетного менеджера apt-get
. Давайте разберёмся в данной ситуации и предложим возможные решения.
Проблема с установкой
Как вы верно заметили, команда, использовавшаяся ранее для добавления 32-битной архитектуры и установки libblas-dev:i386
, теперь не работает:
sudo dpkg --add-architecture i386
sudo apt-get -y install libblas-dev:i386
Ошибка E: Unable to locate package libblas-dev:i386
указывает на то, что 32-битный пакет libblas-dev
недоступен для установки через apt
на вашей версии Ubuntu. Это может произойти по нескольким причинам, включая изменения в репозиториях или стратегии поддержки определённых библиотек.
Что делать?
1. Проверка доступных архитектур
Убедитесь, что архитектура i386 была успешно добавлена:
dpkg --print-foreign-architectures
Ожидаемый вывод должен включать i386
. Если вывод не содержит i386, повторите команду:
sudo dpkg --add-architecture i386
sudo apt-get update
2. Установка других библиотек
Если libblas-dev:i386
по-прежнему недоступен, попробуйте установить альтернативные библиотеки, такие как libatlas-base-dev:i386
или libopenblas-dev:i386
. Однако, прежде, чем делать это, проверьте, доступны ли они:
apt-cache search libatlas-base-dev
apt-cache search libopenblas-dev
Если подходящих пакетов нет, вы все равно можете рассмотреть следующие альтернативы.
3. Установка из Debian
Так как вы упомянули, что ранее использовали Debian, возможно, разумно будет установить 32-битную версию BLAS из пакетов Debian. Следуйте следующим шагам:
-
Загрузите нужный пакет из репозиториев Debian. Например, найдите нужный
.deb
файл на Debian Packages и загрузите его. -
Установите пакет на Ubuntu, используя
dpkg
:
wget http://ftp.debian.org/debian/pool/main/b/blas/libblas-dev_*.deb
sudo dpkg -i libblas-dev_*.deb
Обратите внимание, что могут потребоваться дополнительные зависимости. Для установки их можно будет разрешить командой:
sudo apt-get install -f
4. Создание собственного PPA
Если другие пути не увенчались успехом, можно рассмотреть возможность создания собственного PPA (Personal Package Archive) для пакетов библиотеки BLAS, если у вас есть опыт работы с Ubuntu/Debian.
Заключение
Проблема с установкой 32-битной библиотеки BLAS на Ubuntu 22.04 может быть сложной, но существуют альтернативные методы, включая установку из Debian или поиск других 32-битных библиотек. Следуя данным рекомендациям, вы сможете установить необходимые зависимости для вашей среды разработки.
Если возникнут дополнительные вопросы или трудности, не hesitate to reach out for further assistance.