# 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
---------------------------------------------------

Reply via email to