linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Neil Brown <neilb@suse.de>
To: Mike Hearn <mike@plan99.net>
Cc: linux-kernel@vger.kernel.org, akpm@osdl.org
Subject: Re: [PATCH] Add a /proc/self/exedir link
Date: Tue, 4 Apr 2006 09:30:58 +1000	[thread overview]
Message-ID: <17457.45106.775055.392371@cse.unsw.edu.au> (raw)
In-Reply-To: message from Mike Hearn on Tuesday April 4

On Tuesday April 4, mike@plan99.net wrote:
> 
> To clarify, I'm proposing this patch for eventual mainline inclusion.
> 
> It adds a simple bit of API - a symlink in /proc/pid - which makes it 
> easy to build relocatable software:
> 
>    ./configure --prefix=/proc/self/exedir/..
> 
> This is useful for a variety of purposes:
> 
> * Distributing programs that are runnable from CD or USB key (useful for
>    Linux magazine cover disks)
> 
> * Binary packages that can be installed anywhere, for instance, to your
>    home directory
> 
> * Network admins can more easily place programs on network mounts
> 
> I'm sure you can think of others. You can patch software to be 
> relocatable today, but it's awkward and error prone. A simple patch can 
> allow us to get it "for free" on any UNIX software that uses the 
> idiomatic autotools build system.
> 
> So .... does anybody have any objections to this? Would you like to see 
> it go in? Speak now or forever hold your peace! :)

It strikes me that this is very fragile.  If the application calls
anything out of /bin or /usr/bin etc passing a path name which works
for the application, it will break for the helper.
It also requires all binaries use by the application to live in the
same directory.  This would be OK  for some applications, but not for
everything.

It sounds to me like you want a private, inherited, name space, and
Linux provides those via CLONE_NEWNS, however you probably need root
access to make that work, which isn't ideal.

I think you'd have move luck (ab)using an environment variable.
Make
   /proc/self/env_prefix
be a symlink pointing to whatever the "PREFIX" environment variable
stores.
Then you just need a little shell wrapper around the app with
something like
   path=`readlink /proc/$$/fd/255`
   export PREFIX=`dirname $path`
   exec $PREFIX/$APPLICATION

and build the application with
   ./configure --prefix=/proc/self/env_prefix

I'm not saying this is a "nice" solution, but I think it is no worse
than /proc/self/exedir/, and it should be more robust.

NeilBrown

  parent reply	other threads:[~2006-04-03 23:32 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-04-03 23:01 [PATCH] Add a /proc/self/exedir link Mike Hearn
2006-04-03 23:26 ` Joshua Hudson
2006-04-03 23:30 ` Neil Brown [this message]
2006-04-04 15:54 ` Jan Engelhardt
2006-04-04 21:24   ` Nix
2006-04-05 20:39 ` Eric W. Biederman
2006-04-05 21:52   ` Mike Hearn
2006-04-06 23:33     ` Tony Luck
2006-04-07  7:52       ` Neil Brown
2006-04-07  9:15         ` Andreas Schwab
2006-04-07 19:10           ` Eric W. Biederman
2006-04-08  8:26           ` Jan Engelhardt
     [not found] <5XGlt-GY-23@gated-at.bofh.it>
     [not found] ` <5XGOz-1eP-35@gated-at.bofh.it>
2006-04-06 11:39   ` Bodo Eggert
2006-04-06 13:21     ` Mike Hearn
2006-04-06 17:02       ` Bodo Eggert
2006-04-06 19:36         ` Mike Hearn
2006-04-07 18:40           ` Eric W. Biederman
2006-04-07 19:22             ` Mike Hearn

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=17457.45106.775055.392371@cse.unsw.edu.au \
    --to=neilb@suse.de \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mike@plan99.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).