Skip to contentSkip to conversation

Uninstalling Git

DISCUSSION [email protected] 3 participants 4 messages Jun 15, 2016 Kbuild

lore
Share & tools
lore
#0 lore raw

Hello!

This must be a stupid-obvious-newbie question but...

Well, the point is that I installed the git version 1.5.2.1 in an ubuntu box. That was done following the INSTALL instructions in the corresponding tarball. I typed:

$ make configure
$ ./configure --prefix=/usr/local
$ make all doc
$ sudo make install install-doc

First, I'd like to uninstall the thing completely, how do I do that?

Second, what would be the correct procedure to follow if I would like just to upgrade to a newer version? install over the older perhaps? Is that always safe in the sense that there won't be any dangling piece of bin nor doc?

Thanks in advance!

#1 lore raw
Quoted 6 lines · [email protected] writes:

This must be a stupid-obvious-newbie question but...

Well, the point is that I installed the git version 1.5.2.1 in an ubuntu box. That was done following the INSTALL instructions in the corresponding tarball. I typed:

Quoted 6 lines
$ make configure
$ ./configure --prefix=/usr/local
$ make all doc
$ sudo make install install-doc

First, I'd like to uninstall the thing completely, how do I do that?

Basically, you are screwed. That being said, it might somewhat work to do the following:

find /usr/local -depth -iname 'git*' -exec rm -rf {} \;

But I think you'll catch more if you apply the following patch, then do

./configure --prefix=/opt/git
make all doc
sudo make install install-doc install-symlinks
sudo rm -rf /opt/git
sudo find /usr/local -lname '/opt/git/*' -delete

Quoted 4 lines

Second, what would be the correct procedure to follow if I would like just to upgrade to a newer version? install over the older perhaps? Is that always safe in the sense that there won't be any dangling piece of bin nor doc?

There is some software called xstow which is supposed to do something similar to the "install-symlinks" target of this patch.

Signature · 27 lines
David Kastrup, Kriemhildstr. 15, 44793 Bochum

From: David Kastrup <[email protected]>
Date: Wed, 18 Jul 2007 16:45:36 +0200
Subject: [PATCH] Makefile: create an install-symlinks target

[commit text mostly pinched from INSTALL]

An alternative global installation method making it much easier to
uninstall is to use a package-specific prefix like /opt/git, then
create symlinks from /usr/local into that hierarchy.  Uninstalling can
then be achieved by

	# rm -rf /opt/git; find /usr/local -lname '/opt/git/*' -delete

You can create a setup like that after having used one of the above
install recipes with prefix=/opt/git by writing

	# make prefix=/opt/git symlinkprefix=/usr/local install-symlinks

This works by copying the directory hierarchy of $prefix to
$symlinkprefix (not copying or descending to any directories of the
name git* matched case-insensitively), then linking all the rest.
---
 INSTALL  |   12 ++++++++++++
 Makefile |   10 +++++++++-
 2 files changed, 21 insertions(+), 1 deletions(-)
INSTALL +12 -0
index 289b046..38d6fdd 100644
@@ -21,6 +21,18 @@ set up install paths (via config.mak.autogen), so you can write instead
 	$ make all doc ;# as yourself
 	# make install install-doc ;# as root
 
+An alternative global installation method making it much easier to
+uninstall is to use a package-specific prefix like /opt/git, then
+create symlinks from /usr/local into that hierarchy.  Uninstalling can
+then be achieved by
+
+	# rm -rf /opt/git; find /usr/local -lname '/opt/git/*' -delete
+
+You can create a setup like that after having used one of the above
+install recipes with prefix=/opt/git by writing
+
+	# make prefix=/opt/git symlinkprefix=/usr/local install-symlinks
+
 
 Issues of note:
 
Makefile +9 -1
index 0055eef..caea6fb 100644
@@ -147,6 +147,7 @@ ALL_LDFLAGS = $(LDFLAGS)
 STRIP ?= strip
 
 prefix = $(HOME)
+symlinkprefix = /usr/local
 bindir = $(prefix)/bin
 gitexecdir = $(bindir)
 sharedir = $(prefix)/share
@@ -727,6 +728,7 @@ bindir_SQ = $(subst ','\'',$(bindir))
 gitexecdir_SQ = $(subst ','\'',$(gitexecdir))
 template_dir_SQ = $(subst ','\'',$(template_dir))
 prefix_SQ = $(subst ','\'',$(prefix))
+symlinkprefix_SQ = $(subst ','\'',$(symlinkprefix))
 
 SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
 PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH))
@@ -1039,7 +1041,13 @@ install-info:
 quick-install-doc:
 	$(MAKE) -C Documentation quick-install
 
-
+# The somewhat strange looking lines start with an ignored $(MAKE) in
+# order to be executed also in make -n calls.
+install-symlinks:
+	@: $(MAKE) && echo cd '$(prefix_SQ)' && cd '$(prefix_SQ)' && $(FIND) . -type d ! \( -iname 'git*' -prune \) -exec echo $(INSTALL) -m 755 -d '$(symlinkprefix_SQ)/{}' \;
+	@cd '$(prefix_SQ)' && $(FIND) . -type d ! \( -iname 'git*' -prune \) -exec $(INSTALL) -m 755 -d '$(symlinkprefix_SQ)/{}' \;
+	@: $(MAKE) && echo cd '$(prefix_SQ)' && cd '$(prefix_SQ)' && $(FIND) . \( -type d -iname 'git*' -prune -o ! -type d \) -exec echo $(RM) -r '$(symlinkprefix_SQ)/{}' \; -exec echo ln -s '$(prefix_SQ)/{}' '$(symlinkprefix_SQ)/{}' \;
+	@cd '$(prefix_SQ)' && $(FIND) . \( -type d -iname 'git*' -prune -o ! -type d \) -exec $(RM) -r '$(symlinkprefix_SQ)/{}' \; -exec ln -s '$(prefix_SQ)/{}' '$(symlinkprefix_SQ)/{}' \;
 
 ### Maintainer's dist rules
 
Signature · 1 line
1.5.3.1.96.g4568
#2 lore raw
In reply to [email protected]

Hi,

Quoted 6 lines · On Sun, 23 Sep 2007, [email protected] wrote:
$ make configure
$ ./configure --prefix=/usr/local
$ make all doc
$ sudo make install install-doc

First, I'd like to uninstall the thing completely, how do I do that?

I'd use checkinstall to install it (again), and then use the distro's regular tools; in case of Ubuntu, that would be dpkg I believe.

Quoted 4 lines

Second, what would be the correct procedure to follow if I would like just to upgrade to a newer version? install over the older perhaps? Is that always safe in the sense that there won't be any dangling piece of bin nor doc?

On Linux this should be safe at all times.

Hth,
Dscho

#3 lore raw

Hello!

Oh! great solution! I didn't know this tool, I'll do that! Thanks a lot!

Quoted 20 lines · Johannes Schindelin

Hi,

Quoted 6 lines · On Sun, 23 Sep 2007, [email protected] wrote:
$ make configure
$ ./configure --prefix=/usr/local
$ make all doc
$ sudo make install install-doc

First, I'd like to uninstall the thing completely, how do I do that?

I'd use checkinstall to install it (again), and then use the distro's regular tools; in case of Ubuntu, that would be dpkg I believe.

Quoted 1 line

Second, what would be the correct procedure to follow if I would like just to upgrade to a newer version? install over the older perhaps? Is that always safe in the sense that there won't be any dangling piece of bin nor doc?

On Linux this should be safe at all times.

Hth,
Dscho