Я удалил / usr / include / boost, установка libboost-all-dev не вернет заголовки

Я получал сумасшедшую ошибку компиляции в моих заголовках библиотеки boost :: thread (которую я не трогал), поэтому я удалил /usr/include/boost.

Я очистил libboost-all-dev, а затем сделал sudo apt-get install libboost-all-dev, но заголовки не вернутся.

Что мне делать?

0
задан 27 July 2019 в 08:07

1 ответ

Удаление libboost-all-dev снова, затем выполненный sudo apt autoremove, затем установка libboost-all-dev снова. Это будет обычно работать. Эти команды являются одним способом выполнить это:

sudo apt remove libboost-all-dev
sudo apt autoremove
sudo apt install libboost-all-dev

Вы могли использовать purge вместо remove и --purge autoremove вместо плоскости autoremove если Вам нравится, но в этом случае это походит на файлы, в которых Вы нуждаетесь восстановленный, не conffiles так, чтобы не должен был иметь значения.


libboost-all-dev метапакет. Это не обеспечивает библиотек Boost непосредственно, но вместо этого вызывает им, чтобы быть установленным путем объявления других пакетов, которые обеспечивают их как зависимости (выполненный apt show libboost-all-dev для деталей). Удаление libboost-all-dev не удаляет те пакеты, и так как они были все еще установлены, когда Вы установили libboost-all-dev снова, они не были переустановлены.

Однако удаление libboost-all-dev действительно делает те другие пакеты имеющими право на автоматическое удаление, пока Вы вручную не устанавливали их и ничто иное, что зависит от них, установлен. Вот почему выполнение autoremove действие, когда libboost-all-dev удаляется должен решить проблему.

Если это не делает, можно заняться расследованиями далее путем списка пакетов, которые в настоящее время устанавливаются и, вероятно, будут связаны с Повышением:

apt list --installed '*boost*'

Можно затем переустановить тех, которые имеют sudo apt --reinstall install ... или, лучше, удалите их и затем установите libboost-all-dev снова вернуть их. Я рассматриваю это лучше, потому что затем они не отмечены, как вручную установлено и таким образом будут иметь право на автоматическое удаление в будущем, если Вы удаляете libboost-all-dev и ничто иное не зависит от них.

Конечно, при удалении пакетов, удостоверьтесь, что посмотрели на какой apt- или apt-get, или безотносительно команды Вы используете - говорит, будет сделан. В частности, если Вы идете для удаления то, что, кажется, Booost-связанный пакет и пакеты, которые будут удалены наряду с ним, кажутся не связанными с Повышением или многочисленны, необходимо отказаться продолжить двигаться. Для пакетов неповышения возможно зависеть от Связанных с повышением пакетов.


Относительно Вашей исходной проблемы с ошибками компиляции Вы могли бы рассмотреть регистрацию отдельного вопроса об этом, после того как Вы вернули заголовки.

В более общем плане, если Вы хотите попытаться удалить файлы, которые были установлены Вашим диспетчером пакетов для поиска и устранения неисправностей проблемы, лучше использовать диспетчер пакетов для удаления их. Если действительно необходимо вручную удалить файлы, необходимо рассмотреть перемещение их где-то в другом месте, таким образом, можно легко восстановить их при необходимости, вместо того, чтобы удалить их напрямую. К счастью, удаление файлов, принадлежащих пакетам, которые не важны для операции системы - поскольку Вы сделали - может обычно отменяться довольно легко путем переустановки корректных пакетов.

2
ответ дан 23 October 2019 в 08:50

Другие вопросы по тегам:

Похожие вопросы: