[Haskell-cafe] Haskell-friendly Linux Distribution

Mathijs Kwik bluescreen303 at gmail.com
Sun Mar 28 06:13:18 EDT 2010


As a developer in 3 languages (ruby & java professionally, haskell as
hobby) I must say I really prefer just managing this manually,
separate from the package manager.

I'm running ubuntu LTS (8.04) on production servers.
I don't want to upgrade a server OS every 6 months, so I really like
the more conservative LTS approach that ubuntu took.
But this would mean that an environment for a language would also be
somewhat frozen for at least 2 years, which isn't very useful. When
10.04 gets out with ghc 6.12.1, it will still mean that's the only
thing available until 2012, or I need to upgrade the entire OS every 6
months.

Developers prefer newer versions of ubuntu on their machines, or
another distro (or use a mac).
To get stuff working the same on all machines, it's really just the
easiest just to use manual installation.

I just keep stuff in /opt
/opt/ghc-6.10.4
/opt/ghc-6.12.1
/opt/java6
/opt/jruby-1.4
/opt/ruby-1.9
/opt/ruby-enterprise-1.8.6
/opt/ruby-enterprise-1.8.7

This has a lot of advantages:
- I don't have to wait for certain updated packages (for libs or
compiler / interpreter stuff).
- I can keep multiple versions of a language around and just switch by
changing PATH (for which I have aliases/helpers).
This opens up possibilities to keep "legacy" code running (I mean
upgrading to ubuntu 10.04 will mean breaking any apps that aren't
fully 6.12 compatible yet), and allows somewhat more "experimental"
projects to use latests-and-greatest (or even beta) versions of an
environment.

- no problems mixing package-manager installed libs with manually
installed stuff
I saw this has improved a bit for ruby/haskell quite a bit, now
allowing installation of manually installed libs to a user home-dir.
But I prefer not splitting my packages over multiple locations, so
just keeping them in 1 place manually.

This means that (when building/installing stuff) I have to install
some packages like gcc/binutils and some -dev (header) packages when I
need to bind to native code (I can uninstall them afterwards).

For getting an environment up&running I just have some bash-scripts
which install needed (package-manager) packages, download the sources
I need and install stuff to /opt, and clean up afterwards.
It's easy to keep those scripts portable between
distributions/versions/architectures.
This way, developers can run any distro they like, and I can keep
using the more conservative LTS release on production.


For production machines (that all have same OS and architecture) I
build everything on 1 machine and have others just sync the /opt stuff
if needed.

This might not be a solution for you, it really depends on your needs,
but for me, I found it's often useful to control the exact environment
an application needs and it gives developers the freedom to run
whatever OS they like, which is a huge benefit if you use contractors
or if devs want to work from home.




On Sun, Mar 28, 2010 at 5:11 AM, Chris Dornan <chris at chrisdornan.com> wrote:
> Hi,
>
>
>
> I am choosing a Linux distribution for a production Haskell project and
> would would normally just go with Debian (pedigree, stability, and of course
> Haskell Platfom included) but CentOS is in the frame.
>
>
>
> Are there any particularly strong reasons for preferring or avoiding any
> particular distribution?
>
>
>
> Chris
>
>
>
> -------------------------------
>
> Chris Dornan
>
> email : chris at chrisdornan.com
>
> tel   : +1 (847) 691 7945
>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>


More information about the Haskell-Cafe mailing list