The Ubuntu Experience

July 31, 2011

Here are the notes of my attempt to create the ultimate 64-bit Ubuntu 11.04 dev machine, from fresh install to “finish” (as if the tweaking is ever trully finished).

Get Wireless Working

Just after I installed Ubuntu, I noticed that my wireless was acting a little slow. After a little probing, it turned out to be a driver conflict with the default Ralink USB drivers. A quick lsmod | grep rt showed that I had rt2870sta running (which was fine), and then a few other drivers that needed to be blacklisted. I had to append the following to /etc/modeprobe.d/blacklist.conf:

# Get wireless working
blacklist rt2800usb
blacklist rt2800lib
blacklist rt2x00usb
blacklist rt2x00lib

Everything was pretty snappy after rebooting.

UI Tweaks / Hardware Drivers / etc

I mostly followed these two articles immediately after installing Ubuntu:

OpenGL & SDL

Some packages for OpenGL/SDL bindings:

$ sudo apt-get install xorg-dev mesa-common-dev libglu1-mesa-dev \
                       libsdl1.2debian \
                       libsdl1.2debian-alsa \
                       libsdl1.2-dev \
                       libsdl-image1.2 \
                       libsdl-image1.2-dev \
                       libsdl-mixer1.2 \
                       libsdl-mixer1.2-dev \
                       libsdl-net1.2 \
                       libsdl-net1.2-dev \
                       freeglut3 freeglut3-dev \
                       glutg3 glutg3-dev

Adobe Air & Pandora One

I don’t know about you, but I can’t live without Pandora One. Unfortunately, installing Adobe Air on 64-bit Ubuntu wasn’t as easy as I had hoped. You can get it to work with a little finagling though: Install Adobe AIR on 64-bit Ubuntu 10.10.

Exuberant CTags

$ sudo apt-get install exuberant-ctags

(D)VCS

$ sudo apt-get install subversion git-core mercurial

R

$ sudo apt-get install r-base r-base-dev

Java JRE & JDK

See here.

Scala

See here.

Haskell

You should be able to sudo apt-get install haskell-platform, but there was a bug in the package that caused apt-get to fail. Until it gets fixed, take a look here.

Here’s what I did:

$ sudo add-apt-repository ppa:brcha/ppa
$ sudo apt-get update
$ sudo apt-get install haskell-platform

Ruby

I initially installed Ruby via sudo apt-get install ruby, but quickly removed the package in favor of letting RVM handle my rubies through and through. If you’re not familiar with RVM, give this a good read: Ubuntu, Ruby, RVM, Rails, and You.

GNU Smalltalk

Until Ubuntu starts packaging gst again, you’ll need to compile it yourself. Grab the latest version from here (at the time of writing, it was v3.2.4).

To compile:

# Prereqs:
$ sudo apt-get install tcl tcl-dev tk tk-dev

# Compile:
$ wget ftp://ftp.gnu.org/gnu/smalltalk/smalltalk-3.2.4.tar.gz
$ tar xzf smalltalk-3.2.4.tar.gz
$ cd smalltalk-3.2.4
$ autoreconf -vi
$ ./configure

# If ./configure outputs
#   "checking whether to install <SOME_PACKAGE_HERE>... no"
# you'll probably want to see which headers couldn't be found,
# and apt-get the corresponding library before continuing.

$ make
$ sudo make install

Squeak Smalltalk

$ sudo apt-get install squeak-vm

Racket

$ sudo add-apt-repository ppa:plt/racket
$ sudo apt-get update
$ sudo apt-get install racket

MIT Scheme

This site suggests that the following esential and optional packages be installed (respectively):

$ sudo apt-get install m4 autotools-dev libssl-dev libncurses5-dev libx11-dev libxt-dev libltdl-dev
$ sudo apt-get install libmhash-dev libmcrypt-dev libgdbm-dev libpq-dev libdb-dev

Then download and compile:

$ wget http://ftp.gnu.org/gnu/mit-scheme/snapshot.pkg/20090107/mit-scheme-c-20090107.tar.gz
$ tar xzf mit-scheme-c-20090107.tar.gz
$ cd mit-scheme-c-20090107/src
$ etc/make-liarc.sh
$ sudo make install

CLISP

$ sudo apt-get instal clisp

SBCL

$ sudo apt-get instal sbcl

Erlang

See this gist/script.

MongoDB

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
$ sudo nano /etc/apt/sources.list
$ echo "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen" | sudo tee --append /etc/apt/sources.list
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install mongodb-10gen

Programming Environments

I installed Eclipse, Netbeans and Emacs from the Software Center. Vim and IntelliJ IDEA were a little more involved, though.

Installing IntelliJ IDEA

See here.

Installing Vim

I wanted a decent Vim will all the bells and whistles, including Command-T. Ubuntu has a package for Vim, but it’s a little flakey with Ruby extensions (it was at the time wrote this, anyway). Here’s (more or less) everything I needed to get a big fat vim compiled and installed from source.

# Vim dependencies:
$ sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev \
  libgtk2.0-dev libatk1.0-dev libbonoboui2-dev \
  libcairo2-dev libx11-dev libxpm-dev libxt-dev

# Language bindings:
$ sudo apt-get install python python-dev lua5.1 luarocks perl libperl5.10

# Compile:
$ hg clone https://vim.googlecode.com/hg/ ~/vim
$ cd ~/vim
$ hg update -C v7-3-154
$ ./configure --with-features=huge \
            --enable-perlinterp --enable-pythoninterp \
            --enable-rubyinterp --enable-gui=gnome2 \
            --disable-largefile \
            --enable-luainterp=dynamic
$ make
$ sudo make install

# If you get "Terminal entry not found in terminfo 'gnome-256color'" in terminal vim,
# you'll want this:
$ sudo apt-get install ncurses-term

Dotfiles

After installing my favorite apps, I needed to get my dotfiles from my Windows box copied over. This presented a bit of a problem, considering how I had my dotfiles stored in git: all files were in the root, which meant that I had to clone the repo directly into my home folder. I settled on creating a dedicated ~/.dotfiles folder to host my dotfiles, each of which would then be symlinked into ~/ via a Rakefile. Whenever I get around to customizing my bash, I’ll throw in a script to recursively load my scripts.

You can take a look at my Rakefile and dotfiles here.

Discussion, links, and tweets

I'm a developer at LivingSocial. Follow me on Twitter.