[Hackage] #289: symlink binaries into ~/bin

Hackage trac at galois.com
Sun Aug 3 11:34:33 EDT 2008

#289: symlink binaries into ~/bin
  Reporter:  duncan              |        Owner:                     
      Type:  enhancement         |       Status:  new                
  Priority:  normal              |    Milestone:  Cabal-1.4          
 Component:  cabal-install tool  |      Version:                     
  Severity:  normal              |   Resolution:                     
  Keywords:                      |   Difficulty:  very easy (<1 hour)
Ghcversion:  6.8.2               |     Platform:                     
Comment (by Isaac Dupree):

 Replying to [comment:6 duncan]:
 > I guess you can tell cabal to put symlinks in ~/.cabal/bin instead of
 ~/bin and to use versioned binaries. Would that do?

 if it works, it's fine with me

 > Mess what mess? There will be some symlinks in `~/bin` pointing to
 `~/.cabal/bin`. Using `ls -l` they will be easily identifiable if you want
 to delete them.

 yes, that mess. And then there's always the risk that they come back next
 time (next time I use Cabal, that is), unless I found out how to disable
 it in the config, changed it, and didn't make any typoes or other
 mistakes. (Changing a config file is not the sort of thing you get instant
 feedback on.)

 > This should just work. You have `/usr/bin` in your `$PATH` before

 no I don't, I have `$HOME/bin` earlier.  Usually when I install things
 locally it's because the package-manager version is older and I want to
 use the newer version!  For completeness, here's my current `$PATH`:
 $ echo $PATH

 > Ok, but do you have any specific problems with what we're proposing? If
 so what is your suggestion for the best default behavior?

 I suggest that if the config file is empty, then if anything looks
 suspicious ($HOME/bin is not in PATH or is a symlink), you ask the user
 what they want to do, and record that choice in the config file.  Actually
 it'd probably be a service to ask even if they have no $HOME/bin, and
 create it if they want one, and otherwise record otherwise in the config
 file.  Is it a problem, being interactive?  Or simpler: just ask any time
 the config file doesn't say anything about it and you're installing a

 > > er, sorry for the rants, did it explain anything?  I think if all
 programs had always been as polite as Cabal is planning to be, I ''might''
 have appreciated it doing that automatically...
 > So you mean this sounds ok?

 okay as long as no one else complains about it -- and certainly aids
 discoverability, because anyone who looks in their `$HOME/bin` will
 implicitly be able to find out about the existence of `$HOME/.cabal`!

 > We're not really so concerned with people who know what they're doing,
 except to the extent that we do not annoy them. What we want is for things
 to "Just Work"(tm) for users who don't know and don't care. The current
 behavior of installing just to `~/.cabal/bin` fails that test.

 Yeah, that's why we need to worry about what happens for users that don't
 have a `$HOME/bin` currently.  And if we ever create `$HOME/bin`
 ourselves, about distros that don't add `$HOME/bin` to `$PATH`, because
 e.g. modifying files like `.bashrc` isn't going to be very reliable.  I
 noticed I have a directory "$HOME/perl", probably from using CPAN
 sometime, but I don't remember if I chose that directory-name or it did:
 > ls $HOME/perl/
 bin/  lib/
 > ls $HOME/perl/bin/
 config_data*  ptar*  ptardiff*  pwhich*  shasum*  ysh*
 # and $HOME/perl/lib/perl5/(lots of directories and stuff)

 Probably the best we can do is output a message explaining the situation
 whenever (or the first time) we install a binary, possibly with the
 addition of some choices.  Probably the message needs to be different on
 Windows too (If I was suddenly on Windows, I would need a helpful message
 like that :-)


Ticket URL: <http://hackage.haskell.org/trac/hackage/ticket/289#comment:7>
Hackage <http://haskell.org/cabal/>
Hackage: Cabal and related projects

More information about the cabal-devel mailing list