To help with Linux packages, please join the F# Core Engineering Group. You can also submit an edit to this page.

Option 1: Use the F# Debian/Ubuntu packages

F# is available as a Debian package.

It is highly recommended (albeit optional) that you add the Xamarin Mono package repository to your sources to get a much more up-to-date version of the Mono runtime used by F#.

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list

For Ubuntu 12.04 and 12.10 you will need an additional repository as well, see these instrutions. Older F# and Mono packages are available in Debian testing and Ubuntu 14.04 (trusty/universe).

Regardless of which repository source you are using, proceed to install the fsharp & mono packages

sudo apt-get update
sudo apt-get install mono-complete fsharp

This installs fsharpc and fsharpi. If you don’t have access to these repositories, compile from source or see Option 6 below. Once installed, see the Linux and Cross-Platform Development Guide to go further.

Option 2: Build and install the F# 3.1 runtime, compiler and tools

  1. Get Mono, the cross-platform, open source .NET runtime implementation used by F#. Preferably use a package from your distribution or Xamarin. If this is not possible, install from source by following these instructions.

    Note that if you are installing to a private prefix, follow these instructions and ensure LD_LIBRARY_PATH includes the “lib” directory of that prefix location, e.g.

     export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/mono/lib/
    
  2. Build and install the F# Compiler (open edition) from source. If using a VM or other memory-constrained system, be aware that errors during compilation may be due to insufficient memory (in particular error 137).

     sudo apt-get install autoconf libtool pkg-config make git automake
     git clone https://github.com/fsharp/fsharp
     cd fsharp
     ./autogen.sh --prefix /usr
     make
     sudo make install
    

    If installing to a different prefix, use the same prefix as for the Mono runtime above.

Once installed, see the Linux and Cross-Platform Development Guide to go further.

Option 3: F# 3.x for RHEL, CentOS, Amazon, Fedora w/ puppet/configuration management

To see an example of how to set it up, navigate to https://github.com/haf/vagrant-eventstore#run, read the README and look inside the run file and the Vagrantfile file. It pulls down all required dependencies and starts vagrant to get you up and running EventStore (as a sample application).

With the epel, eventstore, mono and supervisor puppet module and a reference to packagecloud/haf/oss repository, you can install a full environment and running service in a couple of minutes:

class baseline {
  include ::epel
  include ::packagecloud

  packagecloud::repo { 'haf/oss':
    type => 'rpm',
  }
}

node default {
  include ::baseline

  class { 'mono':
    require => [
      Class['epel'],
      Packagecloud::Repo['haf/oss']
    ],
  }

  class { 'supervisor':
    require => [
      Class['epel'],
      Packagecloud::Repo['haf/oss']
    ],
  }

  include ::eventstore
}

Option 4: Get F# 3.1 on Gentoo (Sabayon/Funtoo/Calculate)

From portage tree:

    emerge fsharp

Alternatively there is an overlay available with current versions of various .NET programs, including F#, FAKE, NuGet and others.

  1. Add the “dotnet” overlay from layman. (If you need to set it up, there is a Manual on the Gentoo site.)

    layman -a dotnet 
    
  2. Now you can build F#.

    emerge fsharp
    
  3. (Optional) There are emacs mode and monodevelop bindings, you can chose what you want by setting use flags alike in following example:

    USE="+emacs -monodevelop" emerge fsharpbinding
    

Once installed, see the Linux and Cross-Platform Development Guide to go further.

Option 5: Use a Vagrant VM on Windows

To use F# on Linux VMs on Windows, use F# with Vagrant.