Как я удаляю CMake после установки его из источника?

Я хотел обновить свою cmake версию. Таким образом, я сначала удалил его и затем попытался установить, как дали в этом сообщении teocci.

Однако это давало некоторые ошибки на вводе, делают, и теперь я хочу удалить его и установить предыдущую версию cmake. Я попробовал sudo apt-get purge cmake. Но это все еще остается в системе на вводе cmake --version.

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

2
задан 3 August 2017 в 19:55

1 ответ

TL; DR: выполненный sudo make uninstall в каталоге, куда Вы работали sudo make install прежде.

Вы следовали этому методу установки другой версии CMake. Это должно сказать, что Вы удалили версию, обеспеченную диспетчером пакетов Ubuntu, и вручную загрузили, скомпилированный, и установили его сами от исходного кода.

Принятие Вас смогло следовать тем инструкциям успешно, версии CMake, обеспеченного диспетчером пакетов Ubuntu (через cmake пакет), уже удаляется. Поскольку версия, которую Вы установили теперь, не обеспечивается диспетчером пакетов Ubuntu, но вместо этого версия Вы скомпилировали и установили себя, работая sudo apt-get purge cmake снова не удаляет его.

Так как Вы установили cmake путем компиляции его и затем выполнение sudo make install, решение для Вас к:

  1. Использовать cd вернуться к каталогу, куда Вы выполнили ту команду.
  2. Выполненный sudo make uninstall.

Не все программное обеспечение, которое может быть установлено путем выполнения make install имеет соответствие uninstall цель, позволяющая Вам выполненный make uninstall удалить его. Но CMake действительно поддерживает это 1

Если Вы удалили папку, в которой Вы работали sudo make install, или иначе измененный это, затем Ваш лучший выбор состоит в том, чтобы восстановить и переустановить его (убедиться использовать точно ту же версию) для возвращения способности работать sudo make uninstall. Таким образом, Вы следовали бы за теми же действиями по установке, начинающими с того же .tar.gz файл и передача всего одинакового опции Вы привыкли (если таковые имеются) для ./bootstrap. Если Вы просто работали ./bootstrap без аргументов после него сделайте это снова. После выполнения sudo make install снова, который (безопасно) перезаписал бы файлы, которые были уже установлены с копиями себя, Вы затем сможете использовать sudo make uninstall.

Другой возможный подход, который я сильно отговариваю Вас делать, должен был бы попытаться выяснить точно, какие файлы и каталоги были созданы в установке, и пытаться удалить просто те файлы и каталоги, но никаких других. Если Вы не передали --prefix кому: ./bootstrap при компиляции CMake затем, он установил файлы в /usr/local, но это не единственная программа, которая использует тот каталог. Это установило бы файлы в различных подкаталогах /usr/local, такой как bin и lib (и другие), таким образом, кроме ситуации, где Вы не знаете ничто иное, был установлен в /usr/local, эта опция требует большой работы.


1 легко стать перепутанным тем, можно ли удалить CMake путем выполнения sudo make uninstall потому что, по умолчанию, когда Вы используете CMake для создания сценариев сборки для собственного программного обеспечения, нет uninstall цель сгенерирована, если Вы явно не просите одного. Однако сам CMake разработан, чтобы быть легко удаленным, и его исходный код действительно определяет те цели удаления для себя. В Makefile сгенерированный от выполнения ./bootstrap Вы видите:

#=============================================================================
# Target rules for targets named uninstall

# Build rule for target.
uninstall: cmake_check_build_system
    $(MAKE) -f CMakeFiles/Makefile2 uninstall
.PHONY : uninstall

# fast build rule for target.
uninstall/fast:
    $(MAKE) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/build
.PHONY : uninstall/fast

Можно также искать поддержку удаления в ее файле CMakeLists.txt.

Безусловно, я протестировал это с CMake 3.9.0, и он действительно работает. uninstall цель сгенерирована и выполнение sudo make uninstall работы для удаления CMake.

6
ответ дан 2 December 2019 в 01:43

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

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