Where should cabal install to by default?
apfelmus at quantentunnel.de
Mon Aug 4 07:36:34 EDT 2008
Duncan Coutts wrote:
> Manuel M T Chakravarty wrote:
>> * On OS X, its not generally appropriate to install into /usr/local
>> either. Each user has ~/Applications and ~/Library directories that
>> are usually used for per-user installs. Just generally using sudo and
>> put binaries into /usr/local is also bad because not every user will
>> have admin rights on the machine.
> Oh, great. I didn't know OS X had a standard location for per-user
> installs. That's excellent. So is there a preferred layout for those
> dirs? I'm guessing there probably is.
~/Applications seems to be new in OS X 10.5, I sure don't have it in 10.4. But
it seems sensible nonetheless. (And it's documented here
Note however that the ~/Applications directory is not directly comparable to a
UNIX /bin . That's because applications in Mac OS X have binaries, data and all
other batteries included in one folder, the "application bundle". For instance,
the Thunderbird application is really a folder "Thunderbird.app" and looks
something like this
~/Applications/Thunderbird.app/Contents/MacOS/thunderbird-bin -- binary
~/Applications/Thunderbird.app/Contents/Resources/thunderbird.icns -- icons
Bare-bones UNIX binaries like cabal-install itself and those produced by cabal
don't really fit that scheme. That's why Mac OS X has a standard UNIX-style tree
in /usr/local . Not sure what to do with per-user cabal, I'd make a fresh
so we have
>> * ~/.cabal is bad on Mac OS, too. Preferences ought to go into ~/
> Ok. BTW, in that case we should probably fix
> System.Directory.getAppUserDataDirectory to follow the system convention
> on OSX. Currently it uses $HOME/.appname on all unix systems (and the
> Windows convention on Windows). If necessary we may want to
> split getAppUserDataDirectory into a variant for config and another for
System.Directory.getAppUserDataDirectory should return
for programs that are packaged as OS X application bundle. Of course, that
doesn't apply to most UNIX software...
However, configuration files are to go in
which is sufficiently similar to /etc .
> Since cabal-install is a program should it still be
> using ~/Library/Preferences/ or is there are
> corresponding ~/Applications/Preferences/ ? Where would be
> appropriate for cabal-install put its download cache and build logs?
The ~/Library/ folder is more like /usr/etc and /usr/share than /usr/lib , so
it works for both executable and shared libraries.
for configuration files.
for application data that you don't need to run the application.
Like examples files or clip arts.
for cache files.
Some documentation from Apple:
More information about the Libraries