Если я собираю пакет из исходного кода, как я могу удалить или удалить полностью?

Я использовал исходный код для сборки одного пакета, как показано ниже:

./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....

Как вы удалите это сейчас?

184
задан 31 December 2011 в 21:49

7 ответов

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

вы можете установить checkinstall из репозиториев, краткое описание пакета;

CheckInstall отслеживает все файлы, созданные или измененные вашим сценарием установки («make install», «make install_modules», «setup»). "и т. д.), создает стандартный бинарный пакет и устанавливает его в вашей системе, давая вам возможность удалить его с помощью стандартных утилит управления пакетами вашего дистрибутива.

Эти ссылки ниже могут быть полезны для лучшего понимания. http://en.wikipedia.org/wiki/CheckInstall

http://checkinstall.izto.org/

0
ответ дан 31 December 2011 в 21:49

Обычно вы можете просто использовать:

make uninstall

или

sudo make uninstall

, если приложение было установлено как root.

Но это будет работать, только если разработчик пакета позаботился о создании хорошего правила удаления.

Вы также можете попытаться взглянуть на шаги, используемые для установки программного обеспечения, запустив:

make -n install

И затем попробуйте отменить эти шаги вручную.

В будущем, чтобы избежать подобных проблем, старайтесь по возможности использовать checkinstall вместо make install (AFAIK всегда, если только вы не хотите сохранить и скомпилированную, и упакованную версию одновременно ). Он создаст и установит файл deb, который затем можно удалить с помощью вашего любимого менеджера пакетов.

make clean обычно очищает каталоги сборки, пакет не удаляется. Он используется, когда вы хотите быть уверены, что скомпилировано все, а не только измененные файлы.

0
ответ дан 31 December 2011 в 21:49

Это не ошибка - компиляция из исходного кода - это неподдерживаемый метод установки программного обеспечения, полностью обходящий систему управления пакетами (которая используется Центром программного обеспечения).

Не существует стандартного способа установки или удаления программного обеспечения, скомпилированного из исходного кода, поэтому Ubuntu не может знать, что делать. Программное обеспечение даже не указано как установленная программа.

Вы должны следовать инструкциям дистрибьютора по установке и удалению такого программного обеспечения. Вы также можете связаться с разработчиком, чтобы попросить их создать пакет Debian, чтобы можно было использовать систему управления пакетами.

0
ответ дан 31 December 2011 в 21:49

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

0
ответ дан 31 December 2011 в 21:49

Я скомпилировал 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

Сделайте это со всеми файлами, перечисленными в приведенном выше выводе, и у вас все готово для установки более новой версии с нуля.

0
ответ дан 31 December 2011 в 21:49

Это не ошибка, это то, что происходит, когда разработчики прибегают к распространению через источник, а не через нативные методы упаковки.

Вы можете сделать ваши исходные файлы пакетами debian, используя checkinstall или dhbuild. Честно говоря, на мой взгляд, новые пользователи должны избегать установки из исходных текстов, а разработчики должны избегать распространения только по исходным.

0
ответ дан 31 December 2011 в 21:49

Мне известно о нескольких пакетах, которые поддерживают «make uninstall», но многие другие, поддерживающие make install DESTDIR = xxx »для поэтапных установок.

Вы можете использовать это для создания пакета, который вы устанавливаете, вместо непосредственной установки из источника. Мне не повезло с checkinstall, но fpm работает очень хорошо.

Это также может помочь вам удалить пакет, ранее установленный с помощью make install . Вы просто Заставьте установить ваш собранный пакет поверх сборки make, а затем удалите его.

Например, я недавно использовал это для работы с 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      

Prefer yum to rpm, если можете.

В 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

Предпочитаю использовать apt для dpkg, где вы можете.

Я также разместил этот ответ на StackOverflow

0
ответ дан 31 December 2011 в 21:49

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

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