Uninstalling Git
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!
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-docFirst, 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
@@ -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
@@ -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
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-docFirst, 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
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-docFirst, 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