Во время пробежки
./configure --prefix=/mingw
в системе MinGW / MSYS для библиотеки, которую я ранее запускал
'./configure --prefix=/mingw && make && make install'
Я наткнулся на это сообщение:
ВНИМАНИЕ: Версия SDK плагина Vamp уже установлена. Ожидайте беспокойства и печали, если вы устанавливаете новую версию, не удаляя старую. (Продолжение)
Это меня беспокоило. Что противоположно «make install», то есть как библиотека удалена в Linux? Будет ли «сделать чистым» делать работу, или есть другие шаги?
sudo make uninstall
том, что файлы конфигурации установки все еще доступны, но нет других очевидных решений, если нет, кроме удаления с помощью утилиты управления пакетами системы, если установлено с помощью «checkinstall». " утилита.make install
мне никогда не нужноmake uninstall
было их удалять. Я всегда использовалxargs rm < install_manifest.txt
Ответы:
make clean
удаляет любые промежуточные или выходные файлы из вашего исходного / сборочного дерева. Однако это влияет только на дерево исходного кода / сборки; он не касается остальной части файловой системы и поэтому не удалит ранее установленное программное обеспечение.Если вам повезет, бег
make uninstall
будет работать. Однако, это зависит от авторов библиотеки; некоторые авторы предоставляютuninstall
цель, другие нет.Если вам не повезло, вам придется удалить его вручную. Запуск
make -n install
может быть полезен, поскольку он покажет шаги, которые программа предпримет для установки, но на самом деле ничего не сделает. Затем вы можете вручную отменить эти шаги.источник
Если
sudo make uninstall
недоступно:В системе на основе Debian, вместо (или после *) делать
make install
можно запустить ,sudo checkinstall
чтобы сделать.deb
файл , который автоматически установлен. Затем вы можете удалить его, используя системный менеджер пакетов (например,apt
/synaptic
/aptitude
/dpkg
). Checkinstall также поддерживает создание других типов пакетов, например RPM.Смотрите также http://community.linuxmint.com/tutorial/view/162 и некоторые основные использование Checkinstall и Debian пакет Checkinstall .
*: Если вы читаете это после установки с
make install
вами, вы все равно можете следовать приведенным выше инструкциям и сделатьdpkg -r $PACKAGE_NAME_YOU_CHOSEN
потом.источник
make install
перед использованиемcheckinstall
вместо этого.checkinstall
для этого превосходного ответа на работу.checkinstall
и если новая компиляция выполняется с теми же настройками, что и у старого, удаление установленного пакета сcheckinstall
должен удалить ранее установленные файлы.Если у вас есть
manifest
файл, в котором перечислены все файлы, которые были установлены вместе,make install
вы можете запустить эту команду, которую я получил из другого ответа:Если у вас есть,
sudo make install
вам нужно добавить sudo для удаления:источник
xargs echo rm | sh
? Совершенно очевидно, что тот, кто предложил это, не особенно опытен или не знает, как использовать оболочку.install_manifest.txt
содержится звездочка ...rm *
будет передан в оболочку.)install_manifest.txt
можно ожидать существование?В зависимости от того, насколько хорошо магия makefile / configure script / autofoo рассматриваемой программы может решить вашу проблему:
Проблема заключается в том, что вы должны выполнить это в дереве исходников установленной версии и с точно такой же конфигурацией, которую вы использовали для установки.
источник
Как удалить после "сделать установку"
Способ № 1 (сделать удаление)
Шаг 1: Вам нужно только следовать этому шагу , если вы удалили / изменили каталог сборки в любом случае: Скачать и сделать / сделать установку с помощью точного такого же процедур , как вы делали раньше.
Шаг 2: попробуйте сделать деинсталляцию.
Если это удастся, вы сделали. Если вы параноик, вы также можете попробовать выполнить «Метод № 3», чтобы убедиться, что
make uninstall
не пропустили ни одного файла.Метод № 2 (checkinstall - только для систем на основе Debian)
Обзор процесса
В системах на основе Debian (например, Ubuntu) вы можете
.deb
очень легко создать пакет, используя инструмент с именемcheckinstall
. Затем вы устанавливаете пакет .deb (это заставит вашу систему Debian понять, что все части вашего пакета действительно установлены) и, наконец, удалите его, чтобы менеджер пакетов правильно очистил вашу систему.Шаг за шагом
На этом этапе
checkinstall
запросит имя пакета. Введите что-то немного описательное и запишите, потому что вы будете использовать это через минуту. Он также запросит еще несколько данных, которые вы можете игнорировать. Если он жалуется на неприемлемую версию, просто введите что-то разумное, например1.0
. По завершении вы можете установить и, наконец, удалить:Способ № 3 (install_manifest.txt)
Если файл
install_manifest.txt
существует в вашем исходном каталоге, он должен содержать имена файлов каждого отдельного файла, созданного установкой.Итак, сначала проверьте список файлов и их время мод:
Вы должны получить ноль ошибок, и время модификации указанных файлов должно быть включено или после времени установки. Если все в порядке, вы можете удалить их за один раз:
Однако у пользователя Merlyn Morgan-Graham есть серьезное замечание относительно этого метода, о котором вы должны помнить (дословно скопировано здесь): «Следите за файлами, которые также могли быть установлены другими пакетами. Простое удаление этих файлов [...] может сломать другие пакеты. " , По этой причине мы создали
deleted-by-uninstall
каталог и переместили туда файлы вместо того, чтобы удалить их.99% этого поста существовали в других ответах. Я просто собрал все полезное в (надеюсь) простом практическом руководстве и попытался уделить дополнительное внимание важным деталям (таким как цитирование аргументов xarg и хранение резервных копий удаленных файлов).
источник
make clean
обычно очищает только встроенные файлы в каталоге, содержащем сам исходный код, и редко касается любого установленного программного обеспечения.Как правило, файлы Makefile не содержат цели для удаления - вам обычно приходится делать это самостоятельно, удаляя файлы из каталога, в который они были установлены. Например, если вы создали программу и установил его ( с помощью
make install
) в/usr/local
, вы хотите просмотреть/usr/local/bin
,/usr/local/libexec
,/usr/local/share/man
и т.д., и удалить ненужные файлы. Иногда Makefile включает в себяuninstall
цель, но не всегда.Конечно, обычно в системе Linux вы устанавливаете программное обеспечение с помощью диспетчера пакетов , который способен удалять программное обеспечение «автоматически».
источник
Утилита «stow» была разработана для решения этой проблемы: http://www.gnu.org/software/stow/
источник
stow
для решения этой проблемы?К сожалению, стандартов нет, это одна из опасностей установки из исходного кода. Некоторые файлы Makefile будут включать «деинсталляцию», поэтому
из исходного каталога может работать. Иначе, это может быть вопросом ручного удаления чего бы то
make install
ни было.make clean
обычно просто очищает исходный каталог - удаляя сгенерированные / скомпилированные файлы и т.п., вероятно, не то, что вам нужно.источник
Я знаю несколько пакетов, которые поддерживают "make uninstall", но многие другие поддерживают make install DESTDIR = xxx "для поэтапной установки.
Вы можете использовать это для создания пакета, который вы устанавливаете, вместо того, чтобы устанавливать прямо из источника. Я не везло с Checkinstall но FPM работает очень хорошо.
Это также может помочь вам удалить пакет, ранее установленный с помощью make install . Вы просто принудительно устанавливаете собранный пакет поверх установленного, а затем удаляете его.
Например, я использовал это недавно, чтобы иметь дело с protobuf-3.3.0. На RHEL7:
Предпочитаю ням рпм, если можете.
На Debian9:
Предпочитаю подходить к dpkg, где вы можете.
Я также написал ответ здесь
источник
Make
может рассказать вам, что он знает и что он будет делать. Предположим, у вас есть цель «install», которая выполняет такие команды:В ваших общих правилах добавьте:
Подобный трюк может сделать общий
make clean
.источник
преамбула
ниже может работать, а может и нет, все это дано как есть, вы и только вы являетесь ответственным лицом в случае некоторого повреждения, потери данных и так далее. Но я надеюсь, что все идет гладко!
Чтобы отменить
make install
я бы сделал (и я сделал) это:Идея: проверить, какой скрипт установлен, и отменить это простым скриптом bash.
--prefix=$PWD/install
. Для CMake вы можете перейти в каталог сборки, открыть CMakeCache.txt и исправить значение CMAKE_INSTALL_PREFIX.make install
снова).make install
скрипт устанавливает в пользовательский каталог то же самое содержимое, которое вы хотите удалить из другого места (обычно/usr/local
). Итак, нам нужен скрипт. 3.1. Скрипт должен сравнивать пользовательский каталог, с каталогом, который вы хотите очистить. Я использую это:anti-install.sh
3.2. Теперь просто запустите этот скрипт (он будет запущен всухую)
Например, вы не хотите чистить / usr / local, а ваш пользовательский установочный каталог - /user/me/llvm.build/install, тогда это будет
3.3. Внимательно проверьте журнал, если команды вам подходят, раскомментируйте
rm $RM_DIR/$fn
и запустите его снова. Но остановись! Вы действительно тщательно проверили? Может быть, еще раз проверить?Источник инструкции: https://dyatkovskiy.com/2019/11/26/anti-make-install/
Удачи!
источник