Вопрос или проблема
Я пытаюсь полностью удалить Boost 1.71
. Мне нужно понизить версию до предыдущей рабочей библиотеки, так как с версии Boost 1.71
я получаю ошибку 'boost::placeholders' не объявлено
, поэтому я хочу понизить версию до Boost 1.66
.
После выполнения команды ldconfig
в терминале у меня осталась только одна версия:
emanuele@emanuele-pc:~$ ldconfig -p | grep libboost
libboost_thread.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_thread.so.1.71.0
Я пробовал удалить её с помощью:
sudo rm -f /lib/x86_64-linux-gnu/libboost_*
sudo rm -rf /lib/x86_64-linux-gnu/libboost_*
Но libboost_thread
всё ещё осталась..
Поэтому я попробовал зайти через sudo synaptic
и попытался удалить её оттуда, но получил следующее предупреждение о повреждённом пакете
:
Поскольку я подумал, что что-то сломано, я выполнил:
sudo apt-get update --fix-missing
sudo apt-get install -f
но ничего… libboost_thread
всё ещё есть.
Как мне убедиться, что всё полностью удалено?
Примечание о использовании неправильных методов
Выполнение команд, таких как
sudo rm -f /lib/x86_64-linux-gnu/libboost_* sudo rm -rf /lib/x86_64-linux-gnu/libboost_*
абсолютно неправильно. НЕ ДЕЛАЙТЕ ЭТО!
Такие файлы библиотек контролируются APT, вы должны сначала попросить APT удалить такие файлы.
Если вы скомпилировали эти библиотеки вручную, значит, вы сделали это неправильно. Они должны находиться в префиксе /usr/local/lib
. Это не контролируется APT.
Примечание о 'boost::placeholders'
На самом деле это пространство имен используется как в Boost 1.67, так и в 1.71, которые представлены в ваших официальных репозиториях Ubuntu 20.04 LTS. Для успешной разработки на основе Boost вам необходимо установить следующие пакеты разработки:
-
Для уже установленного 1.71 –
sudo apt-get install libboost1.71-all-dev --reinstall
-
Для возможной альтернативы 1.67 –
sudo apt-get install libboost1.67-all-dev
Дополнительные заметки
Если вы действительно понимаете, что пытаетесь сделать, тогда читайте дальше.
Вы можете использовать следующую команду для удаления ВСЕХ экземпляров Boost 1.71:
sudo apt autopurge $(dpkg -l | grep boost | grep 1.71 | awk '{print $2}')
Чтобы удалить только libboost_thread.so.1.71.0
, вам нужно выполнить:
sudo apt purge libboost-thread1.71.0
если вышеупомянутая команда не сработает, то перейдите на более низкий уровень и выполните в качестве резервного варианта
sudo dpkg --purge --force-all libboost-thread1.71.0
а затем выполните
sudo apt-get install -f
sudo dpkg --configure -a
Я хочу удалить Boost с моего компьютера, я никогда не запрашивал это и не подписывался на это.
Ответ или решение
Для полного удаления библиотеки Boost 1.71 и перехода на более раннюю версию, такую как Boost 1.66, выполните следующие шаги:
Шаг 1: Использование APT для удаления Boost
-
Проверка установленных пакетов Boost:
Сначала проверьте, какие пакеты Boost установлены на вашем компьютере, используя команду:dpkg -l | grep boost
-
Автоматическое удаление пакетов Boost:
Воспользуйтесь следующей командой для удаления всех пакетов Boost 1.71:sudo apt autopurge $(dpkg -l | grep boost | grep 1.71 | awk '{print $2}')
Эта команда автоматически найдет и удалит все пакеты, связанные с Boost 1.71.
-
Удаление конкретного пакета:
Если вы знаете, какой пакет хотите удалить, напримерlibboost-thread1.71.0
, выполните:sudo apt purge libboost-thread1.71.0
Шаг 2: Удаление при возникновении проблем
Если вышеуказанные действия не помогли и вы все еще видите библиотеку, выполните:
-
Принудительное удаление пакета:
В случае, если стандартное удаление не срабатывает, используйте эту команду:sudo dpkg --purge --force-all libboost-thread1.71.0
-
Удаление поврежденных пакетов:
Затем выполните:sudo apt-get install -f sudo dpkg --configure -a
Шаг 3: Установка Boost 1.66
После того как Boost 1.71 будет полностью удален, вы можете установить нужную версию:
- Установка Boost 1.66:
Вам нужно добавить репозиторий, если он недоступен по умолчанию. Это можно сделать, например, так:sudo add-apt-repository ppa:boostorg/boost sudo apt-get update sudo apt-get install libboost1.66-all-dev
Шаг 4: Проверка и финализация
После выполнения всех действий снова проверьте, установлены ли нужные библиотеки и версии:
ldconfig -p | grep libboost
Если вы видите, что список библиотек обновился и включает Boost 1.66, вы успешно завершили процедуру. Если остались какие-то проблемы или ошибки, дайте знать, и мы попробуем разобраться в ситуации более детально.