На этот вопрос уже есть ответ здесь:
Я попытался удалить установленный мной PCL 1.7.2 вручную (без sudo apt-get), но когда я попытался удалить их с помощью команды apt-get remove
, терминал показал мне, что эти файлы нельзя удалить, потому что они не были установлены в первое место.
Как я могу проверить, правильно ли были установлены файлы, если я установил файлы с помощью cmake
Как я могу удалить файл, который я установил вручную с помощью cmake
?
Как файлы, установленные с использованием apt-get
vs cmake
разные?
Примечание - аналогичный вопрос, но с использованием apt-get remove: Как можно полностью удалить пакет?
Выполненный make uninstall
(или sudo make uninstall
, если необходимо было работать sudo make install
) от каталога сборки, куда Вы работали make
и make install
. В сборках, настроенных с CMake, каталог сборки обычно является не исходным каталогом верхнего уровня. Но помимо этого, удаляя программу или библиотеку, сборка которой была настроена с CMake, не отличается от удаления других программ или библиотек, которые Вы создали из исходного кода.
Некоторые поддержки программного обеспечения make install
но нет make uninstall
, в этом случае Вам, вероятно, придется исследовать, какие шаги сделаны когда make install
выполняется, или консультируйтесь с документацией программного обеспечения, чтобы видеть, указывает ли она, какие файлы она помещает где. Однако PCL, действительно кажется, поддерживает удаление через make uninstall
.
cmake
и make
CMake является системой для конфигурирования сборки. После того, как настроенный, сборка должна обычно выполняться с помощью некоторой системы сборки. В подобных Unix операционных системах, таких как Ubuntu, сборки, настроенные с CMake почти всегда, используют Сделать систему сборки.
Программное обеспечение Most, которое использует CMake, требует, чтобы Вы создали отдельный каталог сборки, обычно называемый build
, и выполненный cmake
команда из того каталога. Каталог сборки заполняется с файлами, необходимыми для выполнения сборки. Затем Вы работаете make
в том каталоге. Необходимо создать build
каталог везде, где инструкции для программного обеспечения Вы создаете, советует для помещения его. Обычно это будет подкаталог каталога дерева источника верхнего уровня (каталог высшего уровня, созданный, когда Вы распаковали источник tarball или вызвали систему управления версиями как git
или bzr
загружать код).
Когда Вы работаете make
, это находит и читает make-файл - обычно называемый Makefile
- это содержит список целей, инструкции для создания целей, и как цели зависят друг от друга. Обычно цель по умолчанию, которую Вы не должны указывать, создает программное обеспечение, и install
цель, которую действительно необходимо указать, устанавливает его.
Много make-файлов содержат дополнительные цели. Наиболее распространенные:
check
или test
цель, которая тестирует программное обеспечение, которое было создано. make check
или make test
может быть выполнен прежде make install
, и обычно желательно сделать так.uninstall
цель, которая удаляет программное обеспечение путем удаления файлов, созданных путем выполнения make install
. (Иногда make uninstall
имеет другое поведение также, для отмены действий make install
кроме копирования файлов, но обычно это - просто вопрос удаления файлов.) Не все программное обеспечение имеет uninstall
цель, но в эти дни большинство делает.clean
будьте нацелены удалять файлы из источника или каталога сборки, которые были созданы во время сборки. Почти все make-файлы имеют это.Существует несколько других относительно общих целей как distclean
и realclean
это менее относится к CMake. Однако полезно знать это, если Вы настроены сборка путем запущения настраивать скрипта (./configure
) вместо CMake, затем конфигурация может обычно стираться путем выполнения make distclean
.
Разработчик, использующий CMake, должен написать код для генерации uninstall
цель - CMake не делает этого автоматически. Однако как многие разработчики, разработчики PCL сделали это и make uninstall
должен работать. Посмотрите следующий раздел ("Пошаговый Пример") для деталей.
Удалять программное обеспечение, make-файл которого поддерживает uninstall
цель:
make install
(или sudo make install
) каталог, к которому необходимо возвратиться, для выполнения make uninstall
(или sudo make uninstall
). Для программного обеспечения, которое не использует CMake, это обычно - каталог верхнего уровня исходного дерева. Но для программного обеспечения, которое использует CMake, это обычно не - вместо этого, это обычно - отдельный каталог сборки.make install
, лучше не работать make clean
(ни вручную удалить любые файлы).make clean
или удалите исходный код программного обеспечения или каталог сборки, все еще обычно возможно удалить успешно. Просто выполните те же шаги сборки, с той же самой версией программного обеспечения, настроенного и созданного с теми же опциями (или ни один, если Вы не настроили его), чтобы перейти к сути дела, куда можно работать make uninstall
(или sudo make uninstall
). Для некоторого программного обеспечения Вам, вероятно, на самом деле даже придется работать make install
снова сначала, который будет обычно перезаписывать файлы от предыдущей сборки. Затем выполненный make uninstall
(или sudo make uninstall
) как обычно.Когда существует нет uninstall
цель и Вы должны удалить программное обеспечение, необходимо будет исследовать, какие файлы это создает. Можно работать make -n install
показать Вам, чем приняты меры make install
. Вы не должны работать make -n install
с sudo
(принятие начальной буквы make
не потребовал sudo
). Когда make
передается -n
флаг, это выполняет пробный прогон, который обычно ничего не должен изменять, и поэтому не должен должен быть делать что-либо требующее, поднял полномочия.
Полезно дать пример, и я мог бы также использовать программное обеспечение, которое Вы на самом деле пытаетесь удалить как тот пример. PCL 1.7.2, действительно кажется, использует cmake
генерировать uninstall
цель в ее make-файле, и поэтому должна поддерживать make uninstall
.
В дополнение к исследованию uninstall_target.cmake.in
, Я проверил что сгенерированный Makefile
содержит uninstall
цель в 64-разрядной системе тестирования Ubuntu 16.04. Однако я не закончил создавать PCL, таким образом, я могу установить его и затем протестировать sudo make uninstall
. (Моя тестовая машина является очень медленной, и PCL является большим.) Я планирую обновить это с дополнительной информацией, когда я получаю шанс сделать так, когда-то после того, как сборка закончилась.
При установке PCL 1.7.2 Вы, вероятно, сделали что-то вроде этого:
cd /usr/local/src
wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.7.2.tar.gz
tar xf pcl-1.7.2.tar.gz
cd pcl-pcl-1.7.2
mkdir build
cd build
cmake ..
make -j2
sudo make -j2 install
Это базируется (свободно) на официальных инструкциях, но конечно не может быть точно, что Вы сделали. В частности, я загрузил и распаковал pcl-1.7.2.tar.gz
в /usr/local/src
. При помещении его где-то в другом месте затем, необходимо будет заменить /usr/local/src
с тем везде, где Вы действительно помещали его.
Изменение /usr/local/src
при необходимости необходимо смочь удалить программное обеспечение путем выполнения:
cd /usr/local/src/pcl-pcl-1.7.2/build
sudo make uninstall
Даже если Вы работали make -j2 install
чтобы позволить нескольким операциям происходить одновременно, не должно быть никакой потребности в Вас передать -j2
отметьте, когда Вы будете работать make uninstall
.
В рассмотрении инструкций по установке это использует cmake
и make
. Для удаления необходимо смочь:
В terminal
...
cd folder_of_original_source_code
# папка, где Вы сделали cmakesudo make uninstall
# для удаления При установке PCL Вы на самом деле выполнили два шага:
сама установка (эти sudo make -j 2 install
, рекомендуют в Вашем случае), сценарий, записанный авторами PCL. нет никакого сообщения, что этот сценарий сделал к Вашей системе, кроме чтения исходного кода сценария. Нет никакой стандартизации здесь, сценарий может сделать то, что он хочет к Вашей машине, включая стирание важных файлов или изменение конфигурации способами, которыми не ожидает программное обеспечение Ubuntu стандарта.
С тех пор нет никакого сообщения, что сценарий установки сделал к Вашей системе, нет никакого способа, которым другая программа (такой как APT
) может отменить изменения после того, как они были сделаны. Ваш лучший выбор в таком случае состоит в том, чтобы или сохранить вывод сценария установки (чтобы считать его позже и отменить изменения вручную) или восстановить системное резервное копирование.
А deb
пакет отличается. Автор пакета выполнил этап компиляции на его или ее собственная машина, исследовал произведенные файлы и поместил их всех в порядок, как они должны быть в надлежащей системе Ubuntu. Он затем поместил их в своего рода zip-файл, который является deb
пакет. Автор также записал установку и сценарии удаления, в случае, если для программного обеспечения нужны некоторые другие модификации, сделанные в то время, когда это установлено. Автор также записал все необходимые метаданные, особенно который другие пакеты (такие как совместно использованные библиотеки) этот зависит от того, для выполнения.
, Когда APT устанавливает пакет, он отслеживает, которых были извлечены файлы, и так может удалить их позже.
Теперь, для ответа на вопросы:
Q1. Если Вы не сохранили вывод сценария установки PCL (предположение, что этот вывод включал полную и правдивую деталь всего, что делалось), или Вы сравниваете содержание своего жесткого диска с резервным копированием, которое Вы выполнили перед установкой PCL нет никакого способа знать, были ли файлы установлены правильно. Лучшее, которое можно сделать, выполняется программное обеспечение, и посмотрите, хорошо работает ли оно.
Q2. Существует возможность, что создатели PCL записали удаление, сценарии, возможно, работая sudo make uninstall
сделают что-то полезное. Необходимо было бы консультироваться с документацией PCL для этого. Иначе необходимо удалить файлы индивидуально, вручную.
Q3. Сами установленные файлы не отличаются. То, что отличается, является программой, используемой для копирования их в системных каталогах. склонный - добираются, отслеживает то, что было установлено от deb
файлы и может удалить его. cmake делает это его собственный путь, неизвестный APT.
склонный - получают программы установок, которые были конкретно упакованы. Способная конфигурация имела подробную информацию о том, где все компоненты пакета будут установлены. Это также хранит информацию в системе точно, которую файлы и добавили к системе. Информация включает шаги удаления для файлов.
Когда Вы решаете использовать склонный - добираются для удаления файлов, это будет использовать эту информацию для безопасного удаления файлов, который был добавлен к компьютеру.
Cmake является утилитой, чтобы скомпилировать и установить программы. Человек, включая Вас, может создать приложение, столь же простое как "Привет Мир", и использовать Cmake, чтобы скомпилировать и поместить программу везде, где Вы решаете поместить его.
apt-get
утилита не будет знать обо всех программах, которые Вы решаете поместить куда угодно в свой компьютер. Если автор хотел, чтобы программа была установлена через apt-get
они настроили бы его для него и обеспечили бы a .deb
пакет для установщика.
apt-get
Для удаления вручную установленных программ необходимо было бы следовать условию авторов для удаления. Команда cmake, а также сделать команда имеет конфигурационные файлы, которые позволяют Вам указывать вещи такой как build
, install
, install with special conditions
, и uninstall
. Те функции до разработчика программы.
Много программ идут с шагами (файл readme.txt) для установки и удаления. Необходимо будет посмотреть на содержание пакета для наблюдения то, что обеспечил автор. Если там не был обеспечен шаги удаления, необходимо будет вручную удалить его путем поиска фактических файлов, который был добавлен к компьютеру программой.
Проверьте если разработчик как предусмотрено uninstall
цель с:
$ cmake uninstall
Нахождение файлов из программы:
Ищите install_manifest.txt
файл, который может быть создан после выполнения установки. Это должно показать Вам, где файлы.
Другой способ найти файлы из программы состоит в том, чтобы изучить файл CMakeList.txt. Ищите каталоги, который относится для вывода. Это будет обычно указывать, куда двоичные файлы и библиотеки будут помещены.
Можно также узнать то, с чем файлы были добавлены к системе find
. Укажите окно в течение времени, когда Вы выполнили установку, и Вы получите список файлов. Существуют некоторые изменения этой команды.
Можно использовать эти шаги для нахождения файлов, который создавал в окне между Jan 18 в полночь и Jan 19 в полночь. Вместо того, чтобы использовать нуль Вы могли указать определенный час и минуту.
Создайте файл метки времени для запуска периода времени:
$ touch -t 201701180000 starttime
Создайте файл метки времени для конца периода времени:
$ touch -t 201701190000 starttime
Это находится в формате: YYYYMMDDHHMM
Затем выполненный:
$ find ~/ -mount -newer starttime ! -newer endtime > find.out
Теперь исследуйте find.out
текстовый файл и Вы будете видеть все файлы, который был создан в том окне времени. Можно автоматически устранить много файлов как те в корневом каталоге. Это оставит Вас для основного рассмотрения двоичных файлов.