it-roy-ru.com

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

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

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

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

133
YumYumYum

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

make uninstall

или же

Sudo make uninstall

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

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

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

make -n install

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

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

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

167
Javier Rivera

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

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

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

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

http://checkinstall.izto.org/

28
Sabacon

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

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

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

16
dv3500ea

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

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

3
RolandiXor

Я знаю несколько пакетов, которые поддерживают "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 [email protected] \
 --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

1
Bruce Adams

Я скомпилировал php-5.6. из исходного кода, не настроив его с помощью 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
Abhinay

Нам нужно договориться о том, что make uninstall будет not всегда работает, поэтому ниже приведено более проактивное решение.

Это подразумевает использование программы 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-программ. Смотрите справочную страницу.

0
sjsam