Как удалить программу в Linux? [дубликат]

Я попытался удалить установленный мной PCL 1.7.2 вручную (без sudo apt-get), но когда я попытался удалить их с помощью команды apt-get remove , терминал показал мне, что эти файлы нельзя удалить, потому что они не были установлены в первое место.

  1. Как я могу проверить, правильно ли были установлены файлы, если я установил файлы с помощью cmake

  2. Как я могу удалить файл, который я установил вручную с помощью cmake ?

  3. Как файлы, установленные с использованием apt-get vs cmake разные?

Примечание - аналогичный вопрос, но с использованием apt-get remove: Как можно полностью удалить пакет?

3
задан 13 April 2017 в 15:23

4 ответа

Резюме / TL; DR

Выполненный 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-файлов содержат дополнительные цели. Наиболее распространенные:

  • A check или test цель, которая тестирует программное обеспечение, которое было создано. make check или make test может быть выполнен прежде make install, и обычно желательно сделать так.
  • uninstall цель, которая удаляет программное обеспечение путем удаления файлов, созданных путем выполнения make install. (Иногда make uninstall имеет другое поведение также, для отмены действий make install кроме копирования файлов, но обычно это - просто вопрос удаления файлов.) Не все программное обеспечение имеет uninstall цель, но в эти дни большинство делает.
  • A 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

Полезно дать пример, и я мог бы также использовать программное обеспечение, которое Вы на самом деле пытаетесь удалить как тот пример. 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.

1
ответ дан 1 December 2019 в 15:34

В рассмотрении инструкций по установке это использует cmake и make. Для удаления необходимо смочь:

В terminal...

  • cd folder_of_original_source_code # папка, где Вы сделали cmake
  • sudo make uninstall # для удаления
2
ответ дан 1 December 2019 в 15:34

При установке 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.

1
ответ дан 1 December 2019 в 15:34

Краткий обзор Кв. - добирается

склонный - получают программы установок, которые были конкретно упакованы. Способная конфигурация имела подробную информацию о том, где все компоненты пакета будут установлены. Это также хранит информацию в системе точно, которую файлы и добавили к системе. Информация включает шаги удаления для файлов.

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

CMake

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 текстовый файл и Вы будете видеть все файлы, который был создан в том окне времени. Можно автоматически устранить много файлов как те в корневом каталоге. Это оставит Вас для основного рассмотрения двоичных файлов.

1
ответ дан 1 December 2019 в 15:34

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

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