# from Eric Wilhelm
# on Thursday 18 October 2007 16:32:
># from Michael:
>>The install step is configurable and I don't think there's anything
>>stopping you from saying... "make install DESTDIR=/usr/local/stow &&
>>stow ..."
>
>And `sudo stow` (or xstow) might actually be safe.
Yay, I now have the sudoers line reduced to this:
stowpan ALL=(ALL) NOPASSWD: /usr/bin/stow -d /usr/local/stow cpan
The following is not for the faint of heart. The process of setting-up
on an existing box is pretty tricky and involves trolling through
the .packlists (which are incomplete for e.g. XML::SAX.) See the
utils/ directory in the repository (make a backup!) It's not strictly
necessary to clean-out your /usr/local[bin|man|lib|share], but mine is
now entirely symlinks :-)
A further challenge for making this consumer-friendly is that the
default CPAN.pm with many distributions doesn't have support for the
make|build_install_make|build_command options. So, making an
out-of-the-box setup scheme requires possibly shipping a CPAN.pm
upgrade in-the-box?
I'm not pleased with the dirty DESTDIR trick being played by the
wrapper, but `make install PREFIX=...` is ignored, which means
PREFIX/--prefix would have to be in the make|build_install_arg of the
cpan config and the wrapper would then be really thin. (Yes, it needs
to be 'prefix' and not install_base -- stow is *all about* the prefix
thing.)
The wrapper is:
http://scratchcomputing.com/svn/stowpan/trunk/bin/stowpin
Notes
adduser --disabled-password --gecos '' stowpan
mkdir /usr/local/stow/cpan/
chown stowpan:stowpan /usr/local/stow/cpan/
chmod g+w /usr/local/stow/cpan/
The g+w is optional, but you might want a maintainers group to be able
to install by hand (though they will have to set PREFIX/--prefix.)
$ grep 'install\|stow\|MB' ~stowpan/.cpan/CPAN/MyConfig.pm
'build_dir' => q[/home/stowpan/build],
'cpan_home' => q[/home/stowpan/cpan],
'histfile' => q[/home/stowpan/cpan/histfile],
'keep_source_where' => q[/home/stowpan/sources],
'make_install_arg' => q[],
'make_install_make_command' => q[/usr/local/bin/stowpin make],
'mbuild_install_arg' => q[],
'mbuild_install_build_command' => q[/usr/local/bin/stowpin Build],
'prefer_installer' => q[MB],
Then (assuming proper permissions for your user)
su - stowpan /usr/bin/cpan Foo::Bar
--Eric
--
The reasonable man adapts himself to the world; the unreasonable man
persists in trying to adapt the world to himself. Therefore all progress
depends on the unreasonable man.
--George Bernard Shaw
---------------------------------------------------
http://scratchcomputing.com
---------------------------------------------------