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

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

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

Но, к сожалению, я обнаружил, что это последняя версия, и в ней много ошибок, поэтому мне нужно удалить ее / деинсталлировать. Но как я могу это сделать? Я пытался make clean; make uninstall но все же я вижу, что он существует:

# pkg-config --list-all | grep Mypluginmyplugin-....$ ls /usr/lib/myplugin/libXYZ.soexist....

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

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

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

http://checkinstall.izto.org/

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

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

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

Сделай

Make - это программа, которая используется для компиляции и установки программ из исходного кода. Это не менеджер пакетов, поэтому он не отслеживает файлы, которые он устанавливает. Это затрудняет последующее удаление файлов.

То make install команда копирует созданную программу и пакеты в каталог библиотеки и указанные местоположения из файла makefile. Эти местоположения могут варьироваться в зависимости от проверки, выполняемой сценарием настройки.

Проверьте установку

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

То checkinstall команда вызывает make install команда. Он отслеживает установленные файлы и создает из них двоичный пакет. Он также устанавливает двоичный пакет с помощью менеджера пакетов Linux.

Заменять source_location.deb и name на скриншоте с вашей собственной информацией:

Screenshot

Выполните следующие команды в каталоге исходного пакета:

  1. Установить проверить установку

    sudo apt-get install checkinstall
  2. Запустите сценарий настройки

    ./configure
  3. Запустите команду Make

    make
  4. Запустите CheckInstall

    sudo checkinstall
  5. Переустановите пакет

    sudo dpkg --install --force-overwrite source_location.deb
  6. Извлеките упаковку

    sudo apt remove имя

Вот пример статья Я написал, что проходит весь процесс с объяснениями.

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

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

Кроме того, если вы установили исходный код традиционным способом, вы можете переустановить пакет, поместив себя в тот же каталог, из которого вы запустили sudo make install, бегущий sudo checkinstall. Затем вы сможете удалить его, просто набрав sudo apt-get purge $program_name

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

Это предполагает использование программы paco, которая доступна в Центре программного обеспечения Ubuntu. После того, как мы установили paco, мы можем использовать его в режиме журнала, когда мы "делаем установку" программы. Paco действует как оболочка для вашей "make install" и создает журнал в каталоге /var/log/paco со списком файлов, скопированных в различные каталоги. Кроме того, вы могли видеть файлы во внешнем интерфейсе Paco.

Например, когда я скомпилировал php из исходного кода, я сделал следующее :

paco -lp php5 "make install"

Параметр l заставляет paco работать в режиме журнала.Это создало файл журнала в /var/log/paco с именем php5 (имя, которое я дал в команде). Он содержал все файлы, которые копируются в различные стандартные места во время установки. Вы можете использовать редактор командной строки или графический интерфейс paco для просмотра файлов.

Ниже приведен пример получения списка файлов с помощью редактора командной строки sed
(Замените php5 вашим именем файла).

cat /var/log/paco/php5 | sed -n 's/|\(.*\)//;/^#\(.*\)/d;p'

Как только вы получили список файлов, вы знаете, как их удалить, не так ли? Действительно, вы могли бы передать результаты приведенной выше команды в комната использование обратных кнопок, как показано ниже:

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 installed, а затем удаляете его.

Например, я недавно использовал это для работы с protobuf-3.3.0.На RHEL7:

make install DESTDIR=destcd destfpm -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      

Предпочитайте yum оборотам в минуту, если можете.

На Debian9:

make install DESTDIR=destcd destfpm -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

Если пользователь make install и make uninstall не работают, вы можете вручную удалить установленные файлы.

Остановить службу 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 полностью удален с вашего сервера.

Я составил 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

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