On Thu, Sep 04, 2008, Mathias Gug wrote:
> >  * it's not against policy to setup a system to try to expand its PATH
> >    to use additional data, as long as using the default PATH wouldn't
> >    break the system and its packages
> What do you mean by "as long as using the default PATH wouldn't break
> the system and its packages" ?

 I mean that even if the gems aren't in the PATH, the packages continue
 to work.

> Do you mean that only the gem system should be setup to use gem
> installed binaries ?

 No, I mean that it's not a policy violation to try to add the gem
 binary path to PATH on a best effort basis because packages will
 continue to work whether PATH has the gem binary patch or not.

 I wish manually installed gems benefit the users of the system
 (including the admin) and services as much as possible since someone
 went through the hassle of installing the gems: it means they either
 additional software or newer software available as gems.

>  A.The end user wants to use a binary provided by a gem from the command
>    line (shell environment). 
>    Example: the rails command to start a rails project. 

 Let's stop mentionning this one which is well understood and covered by
 all proposals so far.

>  B. A daemon that runs gem installed binaries. 
>    Example: cgi scripts under apache2.

 That one I'm afraid I thought would be covered by /etc/environment, but
 I now realized it's not.

 I thought /etc/environment was also sourced by central sysvinit scripts
 to affect all child processes, but this is wrong, it is only sourced by
 some scripts and used by pam_env for some services.

 I should dig up the rationale for implementing support of
 /etc/environment in the way; the OneTruePath spec doesn't hint at this.


 I'm certainly again overly naive, but it would seem to me that a
 central definition of the default environment should cover more than
 pam sessions and a handful of init scripts.
   Shall we revisit OneTruePath to cover non user-session use cases?  I
 certainly understand that pam_env made it easy to implement OneTruePath
 for cases where the environment needs to be cleared/sanitized (sshd
 comes to mind), but it seems to fall short on covering the use case you
 describe as B.
   Perhaps we can simply enforce this support in init/upstart?


 However, if there are reasons that we didn't want to support setting
 the PATH for *everything* which drove the current implementation of
 OneTruePath to only use pam_env and selectively read /etc/environment
 from some key places (e.g. gdm, cron) then these reasons probably apply
 equally to gems.
   In this case, we should pursue with the current style and add support
 for /etc/environment in apache2.

> It seems to me that symlinking gems binaries to /usr/local/bin/ is the
> simplest solution to cover both use case A. and B.

 While it might be simple to build on the current level of support for
 the /usr/local/bin path in various places, it seems to be a dangerous
 solution, even more when using the alternatives system.

 I think some admins run things like ./configure (the default usually
 installs in /usr/local) && make & sudo make install to install random
 software.  This would clash with the current symlinks.
   Ubuntu systems also need to allow similar situations to other
 parallel distribution/packaging systems (as provided by python tools,
 perl tools etc.).

-- 
Loïc Minier

-- 
Ubuntu-motu mailing list
Ubuntu-motu@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-motu

Reply via email to