Я получал сумасшедшую ошибку компиляции в моих заголовках библиотеки boost :: thread (которую я не трогал), поэтому я удалил /usr/include/boost
.
Я очистил libboost-all-dev
, а затем сделал sudo apt-get install libboost-all-dev
, но заголовки не вернутся.
Что мне делать?
Удаление 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-связанный пакет и пакеты, которые будут удалены наряду с ним, кажутся не связанными с Повышением или многочисленны, необходимо отказаться продолжить двигаться. Для пакетов неповышения возможно зависеть от Связанных с повышением пакетов.
Относительно Вашей исходной проблемы с ошибками компиляции Вы могли бы рассмотреть регистрацию отдельного вопроса об этом, после того как Вы вернули заголовки.
В более общем плане, если Вы хотите попытаться удалить файлы, которые были установлены Вашим диспетчером пакетов для поиска и устранения неисправностей проблемы, лучше использовать диспетчер пакетов для удаления их. Если действительно необходимо вручную удалить файлы, необходимо рассмотреть перемещение их где-то в другом месте, таким образом, можно легко восстановить их при необходимости, вместо того, чтобы удалить их напрямую. К счастью, удаление файлов, принадлежащих пакетам, которые не важны для операции системы - поскольку Вы сделали - может обычно отменяться довольно легко путем переустановки корректных пакетов.