in-call@xxxxxxx 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: > > $ 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 > 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. -- David Kastrup, Kriemhildstr. 15, 44793 Bochum From: David Kastrup <dak@xxxxxxx> 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(-) diff --git a/INSTALL b/INSTALL index 289b046..38d6fdd 100644 --- a/INSTALL +++ b/INSTALL @@ -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: diff --git a/Makefile b/Makefile index 0055eef..caea6fb 100644 --- a/Makefile +++ b/Makefile @@ -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 -- 1.5.3.1.96.g4568 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html