| ||||||
| 5/28 |
| 2001/5/1 [Computer/SW/Unix] UID:21158 Activity:very high |
4/30 Uninstall for Unix? Assuming you install something with the usual
./configure make make install routine, and later decide, "Fuck that
was the wrong distribution" or the wrong version or whatever. If you
aren't using a package, how do you know that you are removing all
the right stuff before you go to install the other version? I assume
that most big companies must depend on packages made on dev. machines
that are then installed, no? What is a reasonable policy as far as
this stuff goes?
\_ Install packages so that each of them is contained completely
within a separate directory, e.g. /opt/local/packages/pine-4.30,
then create symbolic links from /opt/local/{bin,man.sbin,lib,include}
to the real packages directory. If you need to remove a package
just nuke it's directory. Sure, there are still dangling symbolic
links, but at least you know what package they belong to if you
want to remove it. See how /opt/local/ is setup on OCF for example.
\_ Another neat idea would be to have a subdirectory within
/opt/local/packages/pine-4.30 called consolidated-links, or
something like that, which contains symbolic links to those
other symbolic links you were talking about. That way, when
you decide to trash a "package" you can run a little script
that will readlink and rm each link so that you won't have
dangling links.
\_ There's a package called opt_depot which manages a link
farm (in /usr/local/{bin,man,lib} by default) based on
installations in a package (or "depot") directory like
the above. http://www.arlut.utexas.edu/csd/opt_depot.
-tom
\_ Here's my little scheme, its similar to OCFs:
0. mkdir /usr/pubsw/ and required subdirs:
{bin,sbin,include,lib,libexec,share,etc,pgms,src}
(you only need to do this once)
1. untar your the source for your program into
/usr/pubsw/src/<program>/<program>-<version>
2. ./configure your program with prefix set to
/usr/pubsw/pgms/<program>/<program>-<version>
3. make && make install
4. cd into /usr/pubsw/pgms/<program> and ln -s
<program>-<version> to <program> (remove the
old link if you have one)
5. for new programs cd into /usr/pubsw and foreach
of the {bin,sbin,include,lib,libexec,share,etc} <dirs>
ln -s ../pgms/<program>/<program>/<dir>/* .
Now to acutally use the programs and libraries, all you
have to do is set PATH and LD_LIBRARY_PATH to point to
the /usr/pubsw/{bin,sbin} and /usr/pubsw/lib dirs.
To upgrade a pkg, you just download the new source, build
it, make install and change one symlink. To uninstall a
pkg just remove its directory. To downgrade, just change
one link.
The other advantages are that the top level directory is
clean (less overhead on directory reads) and source and
programs are stored using similar naming conventions making
it easy to track down problems and do upgrades, etc.
I'm giving you the brief version here. The full setup
also handles multiple architectures and OS revisions and
has some perl tools for cleaning up and installing. |
| 5/28 |
|
| www.arlut.utexas.edu/csd/opt_depot -> www.arlut.utexas.edu/csd/opt_depot/ Jeremy Thibeaux, Amy Shook, Jonathan Abbey, and Erik Grostic directly contributed to the code. I've not looked at the Andrew Depot package for a while now. We found Depot to be less flexible and more complex than we wanted, with some basic 29 design decisions that gave us problems. Much more extensive than opt_depot, but also more complex to use. Includes a GUI mechanism for selecting and manipulating packages. Cicero provides support for an environment in which trust is an issue, and in which NFS mounting cannot be assumed. Note that it appears that Cicero is not currently available for download outside of NASA. It appears to be a bit less refined in some ways than opt_depot. However, Stow is under the GPL, so it will likely garner a good bit of popularity and improvements with time. LUDE is a project both to achieve a standard package format and to build up a library of packaged software. Makes it possible to download and install a new package into your /usr/local tree in one step. Includes a number of utilities and alternate implementations for tools to work with their package archive format. It doesn't seem to have the opt_link style NFS support, but it does have support for tools to automatically document installed software. Sort of similar to Stow, but more flexible about handling files in the tree that did not come from package archives. Unlike most of these packages, the graft script is intended to be manually run on a per-package basis. Has some of the nice features of opt_depot, including clean integration with target directories containing non-reflect managed files and symlinks. Reflect allows per-package configuration files, and a package may be configured so that particular files are linked into multiple locations in the filesystem. In this way, Reflect is approaching the more location agnostic design of RPM. Like Graft, Reflect is designed to be run manually on a package-by-package basis. Using SrcPkg, large and complex software packages that are not depot-friendly can be depotized after the fact in an automatic fashion. SpkgTool actually provides a set of GUI tools to manage the symbolic links for packages. Apparently inspired by Graft in the first instance, SpkgTool also supports automated installation of tar files that conform to the autoconf standard. |