Как удалить установленный git из исходного кода? [закрыто]

21

Я установил Git, используя эту статью . Теперь я хочу удалить GIT. Как это сделать?

Михаил
источник
1
У вас все еще есть исходный код, который вы скачали и сделали make installс ним?
Hennes
Да, у меня есть исходный код
Михаил
Что выводит «make uninstall»? Не во всех файлах Makefile есть эта опция, но у многих есть.
Hennes
1
make: *** Нет правила, чтобы сделать цель "удалить". Стоп.
Михаил
1
почему -1? объяснить
Михаил

Ответы:

15

Я нашел решение здесь .

ОБНОВЛЕНО 2.11.2012

Если вы были достаточно умны и использовали какой-то нестандартный префикс при настройке Git, чтобы он был установлен под определенной иерархией, например в / opt / git, то просто рекурсивно удалите эту иерархию.

Если нет, то вы можете пойти так:

1) Получите архив с исходными текстами именно той версии, которую вы создали и установили, распакуйте.

2) Настройте его точно так же, как вы делали это при первоначальной установке, с учетом мест установки (префикс, exec-prefix и т. Д.); предположительно, вы не должны ничего переопределять.

3) Создайте временный каталог для выполнения установки, например: $ mkdir / var / tmp / git

4) Установите Git, передав правильную переменную DESTDIR, чтобы сделать: $ make DESTDIR = / var / tmp / git install Иерархия Git будет создана в этом временном каталоге.

5) Используйте созданную иерархию, чтобы решить, какие файлы удалять в реальной иерархии («/»).

Последний шаг - это то, где происходит «волшебство», поэтому оно требует большего объяснения. Например, вы можете запустить

$ find /var/tmp/git -type f -printf '/%P\n' | xargs -n 10 rm -f

(как пользователь root) удалите файлы, установленные при первой неправильной установке, в корневую файловую систему. Приведенное выше кодирование использует иерархию / var / tmp / git для печати списка найденных файлов, но заменяет в них префикс "/ var / tmp / git" на "/", так что "/ var / tmp / git / usr / bin / git "в выводе в итоге будет указан как" / usr / bin / git ". Затем этот список конвейер , xargsкоторый проходит rm по именам файлов он читает в пакетах по десяти ( как раз , чтобы уменьшить количество вызовов на rmодин порядок величины).

После работы с файлами, запустите

$ find /var/tmp/git -type d -printf '/%P\n'

проверить список установленных каталогов. Это требует ручного подхода, поэтому просто посмотрите на сгенерированный список и подумайте, какие из них вы могли бы безопасно использовать в rmdirсвоей системе (это будут каталоги вроде "/ usr / libexec / git" или что-то вроде этого; вы, вероятно, не захотите удалять "/ usr / share / man / mann" или что-то еще, даже если оно пустое).

PS В будущем никогда не устанавливайте ничего в систему, запустив ее make install! Большинство make-файлов в наши дни не поддерживают цель «удалить», поскольку они используются либо для установки в закрытое хранилище для тестирования, либо для создания пакета (.rpm, .deb и т. Д.), А затем менеджер пакетов заботится об очистке. Если вам нужно что-то установить, попробуйте найти официальный пакет или попробуйте скопировать другой официальный пакет из более поздней версии вашей ОС, если она доступна. В качестве последнего средства, попробуйте использовать checkinstallинструмент, который пытается создать двоичный пакет из вашего make installзапуска. Это отстой, но все же лучше, чем голые make install.

Михаил
источник
Пожалуйста, раскройте некоторые детали, найденные там. Бывает гниль, и когда это происходит, этот ответ становится бесполезным.
sysadmin1138
хорошо, я обновил свой ответ
Михаил
Респект. это работает
dotslash
Резюме: ./configure. sudo make && sudo make DESTDIR=/var/tmp/git install, sudo find /var/tmp/git -type f -printf '/%P\n' | sudo xargs -n 10 rm -f
Вахид
3

Я только что прошел 2691 строку Makefile. На самом деле не делать деинсталляцию. Убирайся.

В этом случае можно обойти эту make rpmопцию. Установите rpm (перезаписывая все установленные файлы, которые должны совпадать с уже установленными файлами). Затем удалите обороты.

Во всех будущих случаях создайте пакет (RPM, yum, что угодно). Это делает обслуживание намного проще.

Hennes
источник
1
За исключением, как правило, make installпомещает вещи в префикс, /usr/localтогда как rpm / deb / your-package-here запускается ./configureс другими параметрами, поэтому устанавливаемые ими файлы заканчиваются префиксом /usr.
Птман
Я новичок в CentOS. Какую команду я должен выполнить? Можете ли вы объяснить больше, пожалуйста
Михаил
Я управлял make rpmкомандой. Что мне делать дальше?
Михаил
Начните с man rpmили 'rpm --help. Это, вероятно, скажет вам использовать rpm -i packagename.rpm. Однако, возможно, лучше попросить системного администратора в зонтичной сети помочь вам. Мы можем сделать так много на расстоянии.
Hennes