thanks
--
Ramakrishnan
_________________________________________________
For list-related administrative tasks:
http://lists.racket-lang.org/listinfo/users
One way to make uninstalling installs from source easy, and to get an
additional benefit, is to use the "--prefix" option to "configure" to
put a Racket installation into its own directory tree.
My consulting work requires me to have a few different Racket versions
installed at once, so I always install as
"/usr/local/<PLT-OR-RACKET>-<VERSION>". I also have consulting clients
do this, if they can't use the ".deb" or ".rpm" for some reason. On the
computer I'm typing on right now, this looks like:
$ cd /usr/local
$ ls -d plt* racket*
plt-4.2.5 plt-5.0.1 racket-5.0.2
plt-5.0 plt-mflatt-gr2 racket-pre-20110208
--
http://www.neilvandyke.org/
The simplest thing for the final user would be for Racket too maintain
the package-making Make targets that the various distros use. But this
might not be the simplese for the Racket devalopers. Then you could
just install nd uninstall using Linux's package manager.
Have you tried getting the source code from your distro and making
packages from that, modifying it as necessary for the latest upstream
Racket code?
-- hendrik
A far easier way (for unix platforms) is to *not* use `--prefix'.
This gets the tree to compile in-place, which you can then move to any
place in the file system, and when you want to uninstall it you can
just `rm -rf' the whole thing.
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!
And BTW, this is only for building from source.
When installing, you can choose the same single-directory
"installation" which creates a single (freely movable, and easily
removable) directory, or a unix-style installation that tries to
follow the FHS. The latter puts files in the right places, and also
generates an uninstaller script that cleans everything up.
Because of these two things, there is generally no need for providing
a `make uninstall': most people compile source in place, or use the
installers. ("No need" other than making the makefile have more
common targets.)
Note that originally I started building from source because the
distribution ".deb" or ".rpm" build didn't include the CGC binaries on
which one of my clients depends. Now that we've been building from
source, the "--prefix" has been handy for letting us have multiple
versions installed, and for having them follow a consistent naming
convention (with less chance for user error in having the correct
version number in the pathname, since we're never manually moving the
tree around nor manually renaming it).
That said, I think that most people building from source are probably
doing it because they're a Racket core developer or they're playing with
the latest from Git. Not because they need CGC and also have a highly
controlled production environment that is strict about version numbers.
So I defer to Eli on what's the best way for most people to install from
source.
--
http://www.neilvandyke.org/
It will.
> Note that originally I started building from source because the
> distribution ".deb" or ".rpm" build didn't include the CGC binaries
> on which one of my clients depends. Now that we've been building
> from source, the "--prefix" has been handy for letting us have
> multiple versions installed, and for having them follow a consistent
> naming convention (with less chance for user error in having the
> correct version number in the pathname, since we're never manually
> moving the tree around nor manually renaming it).
Since you're using a racket-specific path as a prefix, you're getting
a very similar end result -- but IMO less convenient in the prefix
case.
I'll try to clarify the visible differences.
The build part is nearly identical. Here are the build steps that
you'd use in *both* cases, with sample directory names -- steps that
are different are marked with "PRFX" for a --prefix build and "INPL"
for an in-place one:
cd /tmp
tar xzf racket-5.1-src-unix.tgz
cd racket-5.1/src
mkdir build
cd build
PRFX ../configure --prefix /usr/local/racket-5.1
INPL ../configure
make
make install
cd /tmp
PRFX rm -rf racket-5.1
INPL rm -rf racket-5.1/src # <-- optional
INPL mv racket-5.1 /usr/local
The differences at this point are:
* In the prefix case, you cannot move the resulting directory. In the
in-place case it can move -- and it can be accessed by different
paths. (For example, you mount /usr/local as /mnt/server/local on a
second machine, and then run /mnt/server/local/racket-5.1/racket)
* In the prefix case, things are spread in an FHS-like way:
- executables: /usr/local/racket-5.1/bin/*
- collections: /usr/local/racket-5.1/lib/racket/collects/*
- documentation: /usr/local/racket-5.1/share/racket/doc/*
- libraries: /usr/local/racket-5.1/lib/*
and /usr/local/racket-5.1/lib/racket/*
- includes: /usr/local/racket-5.1/include/racket
- man pages: /usr/local/racket-5.1/share/man/man1/*
and in the in-place case you get a simpler tree in your resulting
directory:
- executables: /usr/local/racket-5.1/bin/*
- collections: /usr/local/racket-5.1/collects/*
- documentation: /usr/local/racket-5.1/doc/*
- libraries: /usr/local/racket-5.1/lib/*
- includes: /usr/local/racket-5.1/include/*
- man pages: /usr/local/racket-5.1/man/*
* In the racket case, the directory layout corresponds to the source,
so you can keep the .git directory, easily create patches, etc.
IMO, these are all advantages for the in-place side. They're minor,
but since building involves the same efforst, I prefer the better
option.
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!
This thread is about compiling from source -- this is always separate
from a packaging system. (Unless you're using the source package from
your distro, for example, using rpmbuild with the source rpm.)
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!
Thanks.
--
Ramakrishnan
Yes, that's what I meant. Stick revised source into the source package
from your distro.
-- hendrik
In that case you're not building from the racket source archive. The
two things (building from a distro-specific source package and
building from the actual racket source) are really unrelated. The
former uses the distro's packaging system for uninstallation, and the
latter can't know about it (and shouldn't even try).
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!