Если я собираю пакет из исходного кода, как я могу удалить или удалить полностью?
Я использовал исходный код для сборки одного пакета, например ниже:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib --with-package-name="Myplugin" --with-package-origin="http://www.ubuntu.org/" --enable-gtk-doc --disable-static
make
make install
Но, к сожалению, я обнаружил, что это последняя версия, и в ней много ошибок, поэтому мне нужно удалить / удалить ее. Но как я могу это сделать? Я старался make clean; make uninstall
но все же я вижу, что это существует:
# pkg-config --list-all | grep Myplugin
myplugin-....
$ ls /usr/lib/myplugin/libXYZ.so
exist....
Как вы удалите это сейчас?
7 ответов
Обычно вы можете просто использовать:
make uninstall
или же
sudo make uninstall
если приложение было установлено как root.
Но это будет работать, только если разработчик пакета позаботился о создании хорошего правила удаления.
Вы также можете попытаться взглянуть на шаги, используемые для установки программного обеспечения, запустив:
make -n install
А затем попробуйте отменить эти шаги вручную.
В будущем, чтобы избежать подобных проблем, попробуйте использовать checkinstall
вместо make install
по возможности (всегда AFAIK, если вы не хотите сохранить одновременно и скомпилированную, и упакованную версию). Он создаст и установит файл deb, который затем можно удалить с помощью вашего любимого менеджера пакетов.
make clean
обычно очищает каталоги сборки, пакет не удаляется. Он используется, когда вы хотите быть уверены, что все это скомпилировано, а не только измененные файлы.
Я не думаю, что это ошибка, было бы неплохо почитать и научиться использовать checkinstall при установке из исходного кода.
вы можете установить checkinstall из репозиториев, краткое описание пакета;
CheckInstall отслеживает все файлы, созданные или измененные вашим сценарием установки ("make install", "make install_modules", "setup" и т. Д.), Создает стандартный бинарный пакет и устанавливает его в вашу систему, что дает вам возможность удалить его с помощью стандартные утилиты управления пакетами вашего дистрибутива.
Эти ссылки ниже могут быть полезны для лучшего понимания. http://en.wikipedia.org/wiki/CheckInstall
Это не ошибка - компиляция из исходного кода - это неподдерживаемый метод установки программного обеспечения, который полностью обходит систему управления пакетами (которая используется Центром программного обеспечения).
Не существует стандартного способа установки или удаления программного обеспечения, скомпилированного из исходного кода, поэтому Ubuntu не может знать, что делать. Программное обеспечение даже не указано как установленная программа.
Вы должны следовать инструкциям дистрибьютора по установке и удалению такого программного обеспечения. Вы также можете связаться с разработчиком, чтобы попросить их создать пакет Debian, чтобы можно было использовать систему управления пакетами.
Сделать
Make - это программа, которая используется для компиляции и установки программ из исходного кода. Это не менеджер пакетов, поэтому он не отслеживает устанавливаемые файлы. Это затрудняет последующее удаление файлов.
В
make install
Команда копирует созданную программу и пакеты в каталог библиотеки и в указанные места из make-файла. Эти местоположения могут отличаться в зависимости от проверки, выполняемой скриптом настройки.
Проверить Установить
CheckInstall - это программа, которая используется для установки или удаления программ, скомпилированных из исходного кода. Он отслеживает и копирует файлы, установленные с помощью программы make. Он также устанавливает файлы с помощью диспетчера пакетов, который позволяет удалить его, как любой обычный пакет.
В
checkinstall
команда вызывает
make install
команда. Он отслеживает установленные файлы и создает из них двоичный пакет. Он также устанавливает двоичный пакет с менеджером пакетов Linux.
Заменить
source_location.deb
а также
name
на скриншоте с вашей собственной информацией:
Выполните следующие команды в каталоге исходного пакета:
Установить CheckInstall
sudo apt-get install checkinstall
Запустите сценарий настройки
./configure
Запустите команду Make
make
Запустить CheckInstall
sudo checkinstall
Переустановите пакет
sudo dpkg --install --force-overwrite source_location.deb
Удалить пакет
sudo apt remove name
Вот статья, которую я написал, в которой подробно описан весь процесс.
Это не ошибка, это то, что происходит, когда разработчики прибегают к распространению через исходный код, а не через нативные методы упаковки.
Вы можете сделать ваши исходные файлы пакетами debian, используя checkinstall или dhbuild. Честно говоря, на мой взгляд, новые пользователи должны избегать установки из исходного кода, а разработчики должны избегать распространения только по исходному тексту.
Нам нужно договориться о том, что make uninstall не всегда будет работать, поэтому ниже приведено более проактивное решение.
Это предполагает использование программы paco, которая доступна в программном центре Ubuntu. После того, как мы установили paco, мы можем использовать его в режиме журнала, когда мы "делаем установку" программы. Paco действует как оболочка для вашей "make install" и создает журнал в каталоге /var/log/paco со списком файлов, скопированных в различные каталоги. Кроме того, вы могли видеть файлы в интерфейсе Paco.
Например, когда я скомпилировал php из исходного кода, я сделал следующее:
paco -lp php5 "make install"
Параметр l заставляет paco работать в режиме журнала. Это создало файл журнала в /var/log/paco с именем php5 (имя, которое я дал в команде). Он содержит все файлы, которые копируются в различные стандартные места во время установки. Вы можете использовать редактор командной строки или paco gui для просмотра файлов.
Ниже приведен пример получения списка файлов с помощью редактора командной строки sed
(Замените php5 вашим именем файла).
cat /var/log/paco/php5 | sed -n 's/|\(.*\)//;/^#\(.*\)/d;p'
Как только вы получили список файлов, вы знаете, как их удалить, не так ли? Действительно, вы можете передать результаты вышеуказанной команды в rm, используя обратные пометки, как показано ниже:
sudo rm `cat /var/log/paco/php5 | sed -n 's/|\(.*\)//;/^#\(.*\)/d;p'`
Работа выполнена!
Примечание. Из-за ограничений LD_PRELOAD paco не может отслеживать трассировку suid-программ. Смотрите справочную страницу.
Я знаю несколько пакетов, которые поддерживают "make uninstall", но многие другие поддерживают make install DESTDIR=xxx"для поэтапной установки.
Вы можете использовать это для создания пакета, который вы устанавливаете, вместо того, чтобы устанавливать прямо из источника. Мне не повезло с checkinstall, но fpm работает очень хорошо.
Это также может помочь вам удалить пакет, ранее установленный с помощью make install. Вы просто принудительно устанавливаете собранный пакет поверх установленного, а затем удаляете его.
Например, я использовал это недавно, чтобы иметь дело с protobuf-3.3.0. На RHEL7:
make install DESTDIR=dest
cd dest
fpm -f -s dir -t rpm -n protobuf -v 3.3.0 \
--vendor "You Not RedHat" \
--license "Google?" \
--description "protocol buffers" \
--rpm-dist el7 \
-m you@youraddress.com \
--url "http:/somewhere/where/you/get/the/package/oritssource" \
--rpm-autoreqprov \
usr
sudo rpm -i -f protobuf-3.3.0-1.el7.x86_64.rpm
sudo rpm -e protobuf-3.3.0
Предпочитаю ням рпм, если можете.
На Debian9:
make install DESTDIR=dest
cd dest
fpm -f -s dir -t deb -n protobuf -v 3.3.0 \
-C `pwd` \
--prefix / \
--vendor "You Not Debian" \
--license "$(grep Copyright ../../LICENSE)" \
--description "$(cat README.adoc)" \
--deb-upstream-changelog ../../CHANGES.txt \
--url "http:/somewhere/where/you/get/the/package/oritssource" \
usr/local/bin \
usr/local/lib \
usr/local/include
sudo apt install -f *.deb
sudo apt-get remove protobuf
Предпочитаю подходить к dpkg, где вы можете.
Я также разместил этот ответ на stackoverflow
Если пользователь делает установку, а удаление не работает, вы можете удалить установленные файлы вручную.
Остановите службу Redis:
service redis_6379 stop
Теперь удалите все, что связано с сервером Redis, из /usr/local/bin/:
rm /usr/local/bin/redis-*
Удалить каталог файлов конфигурации Redis:
rm -r /etc/redis/
Удалите существующий каталог данных Redis:
rm -r /var/lib/redis/
Удалите существующие сценарии инициализации сервера Redis:
rm /etc/init.d/redis_*
Удалите существующие файлы Redis PID (только если они существуют):
rm /var/run/redis_*
Перезагрузите сервер, и теперь Redis полностью удален с вашего сервера.
Также, если вы установили исходный код традиционным способом, вы можете переустановить пакет, поместив себя в тот же каталог, откуда вы запустили
sudo make install
, Бег
sudo checkinstall
. Затем вы можете удалить его, просто набрав
sudo apt-get purge $program_name
Я скомпилировал php-5.6.30 из исходного кода, не настроив его с помощью openssl, поэтому мне пришлось вернуться и установить его с нуля. Использование make uninstall не работало, так как Makefile для php его не поддерживает.
Тем не менее, этот шаг работал для меня, - я перечислил все файлы, связанные с php и удалил их вручную, это заняло у меня около 5 минут, без пота. Вы также можете использовать эти шаги для удаления скомпилированного программного обеспечения.
Замените php программным обеспечением, которое необходимо удалить
whereis php
Приведенная выше команда выводит список каталогов, в которых установлены двоичные файлы, например: / usr / local / bin / php, / usr / bin / php.. удалите каждый файл / каталог, указанный в ваших выходных данных.
sudo rm -f /usr/local/bin/php
Сделайте это со всеми файлами, перечисленными в приведенных выше выходных данных, и вы готовы установить более новую версию с нуля.