Date: 16 Aug 2002 16:52:53 -0600 From: John-David Childs <nospamposter@nterprise.net> Cc: "'freebsd-questions@FreeBSD.ORG'" <freebsd-questions@FreeBSD.ORG> Subject: Re: uninstalling software Message-ID: <1029538374.25388.256.camel@lohr.digitalglobe.com> In-Reply-To: <20020815015623.GF36655@wantadilla.lemis.com> References: <98B01D2717B9D411B38F0008C7840931057F3AF6@its-xchg2.massey.ac.nz> <20020815015623.GF36655@wantadilla.lemis.com>
next in thread | previous in thread | raw e-mail | index | archive | help
If you install only one port, make it /usr/ports/sysutils/installwatch, which will "watch" any source compilation/installation and create a deinstallation script. There are/were two other programs: checkinstall (http://checkinstall.itzo.org) and spasm (http://www.codejunkie.net), but both sites appear to be dead. On Wed, 2002-08-14 at 19:56, Greg 'groggy' Lehey wrote: > On Thursday, 15 August 2002 at 8:58:48 +1200, Defryn, Guy wrote: > > > > > > I would like to uninstall some software on my freebsd box. > > I never use the ports or packages so I cannot use PKG_delete > > > > What is the best way of uninstalling programs if you've build them > > From the source code? > > That depends on the software. There's no "one size fits all". This > is one of the reasons we created the Ports Collection. > > I'd recommend you read the information supplied with your packages. > One other possibility is related to a recommendation in my book > "Porting UNIX Software" (starting on page 155): > > More frequently, however, you can't use this approach: the Makefile isn't > as easy to find, or you have long since discarded the source tree. In this > case, we'll have to do it differently. First, we find the directory where the > executable gs, the main ghostscript program, is stored: > > $ which gs > /opt/bin/gs > > Then we look at the last modification timestamp of /opt/bin/gs: > > $ ls -l /opt/bin/gs > -rwxrwxr-x 1 root wheel 3168884 Jun 18 14:29 /opt/bin/gs > > This is to help us to know where to look in the next step: we list the directory > /opt/bin sorted by modification timestamp. It's a lot easier to find what > we're looking for if we know the date. If you don't have which, or > possibly even if you do, you can use the following script, called wh: > > for j in $*; do > for i in `echo $PATH|sed 's/:/ /g'`; do > if [ -f $i/$j ]; then > ls -l $i/$j > fi > done > done > > wh searches the directories in the current environment variable > PATH for a specific file and lists all occurrences in the order > in which they appear in PATH in ls -l format, so you could > also have entered: > > $ wh gs > -rwxrwxr-x 1 root wheel 3168884 Jun 18 14:29 /opt/bin/gs > > Once we know the date we are looking for, it's easy to list the directory, page > it through more and find the time frame we are looking for. > > $ ls -lt /opt/bin|more > total 51068 > -rw------- 1 root bin 294912 Sep 6 15:08 trn.old > -rwxr-xr-x 1 grog lemis 106496 Sep 6 15:08 man > > -rw-rw-rw- 1 grog bin 370 Jun 21 17:24 prab~ > -rw-rw-rw- 1 grog bin 370 Jun 21 17:22 parb > -rw-rw-rw- 1 grog bin 196 Jun 21 17:22 parb~ > -rwxrwxrwx 1 grog wheel 469 Jun 18 15:19 tep > -rwxrwxr-x 1 root wheel 52 Jun 18 14:29 font2c > -rwxrwxr-x 1 root wheel 807 Jun 18 14:29 ps2epsi > -rwxrwxr-x 1 root wheel 35 Jun 18 14:29 bdftops > -rwxrwxr-x 1 root wheel 563 Jun 18 14:29 ps2ascii > -rwxrwxr-x 1 root wheel 50 Jun 18 14:29 gslp > -rwxrwxr-x 1 root wheel 3168884 Jun 18 14:29 gs > -rwxrwxr-x 1 root wheel 53 Jun 18 14:29 gsdj > -rwxrwxr-x 1 root wheel 51 Jun 18 14:29 gsbj > -rwxrwxr-x 1 root wheel 18 Jun 18 14:29 gsnd > -rwxrwxr-x 1 root wheel 54 Jun 18 14:29 gslj > -rwxr-xr-x 1 root bin 81165 Jun 18 12:41 faxaddmodem > -r-xr-xr-x 1 bin bin 249856 Jun 17 17:18 faxinfo > -r-xr-xr-x 1 bin bin 106496 Jun 17 15:50 dialtest > ...more stuff follows > > It's easy to recognize the programs in this format: they were all installed in > the same minute, and the next older file (faxaddmodem) is more than 90 > minutes older, the next newer file (tep) is 50 minutes newer. The files we > want to remove are, in sequence, font2c, ps2epsi, bdftops, > ps2ascii, gslp, gs, gsdj, gsbj, gsnd and > gslj. > > We're not done yet, of course: ghostscript also installs a lot of fonts > and PostScript files, as we saw in the Makefile. How do we find and remove > them? It helps, of course, to have the Makefile, from which we can see > that the files are installed in the directories /opt/bin, > /opt/lib/ghostscript and /opt/man/man1. If you don't have the Makefile, all is > not lost, but things get a little more complicated. You can search the complete > directory tree for files modified between Jun 18 14:00 and Jun 18 > 14:59 with: > > $ find /opt -follow -type f -print|xargs ls -l|grep "Jun 18 14:" > -rwxrwxr-x 1 root wheel 35 Jun 18 14:29 /opt/bin/bdftops > ...etc > -rw-rw-r-- 1 root wheel 910 Jun 18 14:29 /opt/man/man1/ansi2knr.1 > -rw-rw-r-- 1 root wheel 10005 Jun 18 14:29 /opt/man/man1/gs.1 > -rw-rw-r-- 1 root wheel 11272 Jun 18 14:29 /opt/lib/ghostscript/Fontmap > -rw-rw-r-- 1 root wheel 22789 Jun 18 14:29 /opt/lib/ghostscript/bdftops.ps > -rw-rw-r-- 1 root wheel 295 Jun 18 14:29 /opt/lib/ghostscript/decrypt.ps > -rw-rw-r-- 1 root wheel 74791 Jun 18 14:29 /opt/lib/ghostscript/doc/NEWS > -rw-rw-r-- 1 root wheel 13974 Jun 18 14:29 /opt/lib/ghostscript/doc/devices.doc > ...many more files > > There are a couple of points to note here: > > We used GNU find, which uses the -follow option to follow > symbolic links. If your /opt hierarchy contains symbolic links, > find would otherwise not search the subdirectories. Other versions of > find may require different options. > > You can't use ls -lR here because ls -lR does not show the full > pathnames: you would find the files, but the name at the end of the line would > just be the name of the file, and you wouldn't know the name of the directory. > > If the file is more than six months old, ls -l will list it in the form > > -rwxrwxrwx 1 grog wheel 22 Feb 10 1994 xyzzy > > This may be enough to differentiate between the files, but it's less certain. > GNU ls (in the fileutils package) includes a option > --full-time (note the two leading hyphens). This will always > print the full time, regardless of the age of the file. With this option, the file > above will list as: > > $ ls --full-time -l xyzzy > -rwxrwxrwx 1 grog wheel 22 Thu Feb 10 16:00:24 1994 xyzzy > > Greg > -- > When replying to this message, please copy the original recipients. > If you don't, I may ignore the reply. > For more information, see http://www.lemis.com/questions.html > See complete headers for address and phone numbers > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-questions" in the body of the message To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1029538374.25388.256.camel>