Day 1-3 of #Pengiunember
I was using a Macbook Air as my primary device for close to 3 months at this point, and had gotten quite used to it. After my #noVIMember month of using VIM only for text editing, I was ready for more explorations of alternative ways to accomplish my work and home computing. The constant VIM usage caused me to focus more on the task at hand since leave VIM meant a huge context switch from terminal to a GUI. So I picked December to give Linux a go again.
I’ve been a Linux user on and off for 18 years. A box of RedHat Linux 3.2 from Electronics Boutique was one of my favorite presents of all time. I got it for my birthday ran home and could wait to install it on my Packard Bell machine. I used Convex SuperUnix, SGI Irix, and Sun Solaris in my internship at the Air Force base, and I wanted to use *nix at home to get better at developing for it. That lead to building my ISP, MIDTNN.net, from the ground up using RedHat 5.1 for all the mail, nntp, www, RADIUS and real media servers. I used it at every enterprise job I’ve ever had to crack passwords, backup configs, monitor networks, and run Oracle financials. In short, I love *nix in basically all flavors. SO, I was reminiscing a bit when I picked this month’s change.
So I spent day one of this month, trying my darnest to dual boot Xubuntu on my Macbook Air using rEFIt only to have this that and the other not work with the bios faking and grub. I loaded it up in virtualbox to get a feel for the process and to make sure I wasn’t missing anything. I found a great link at MakeTechEasier.com that helped immensely and I proceeded forward using that, but I couldn’t ever get the system to boot directly into Linux I wasn’t willing to try bare metal and lose my working Mountain Lion system. So I did some work on #GLu and moved on to just living with the multistage boot process.
On Day two I grew tired of that and grabbed a Toshiba R705 13″ not quite ultrabook I used to use in my network consulting days. It had specs similar to the Air, but without the EFI bios. I loaded up Xubuntu quickly, and I was off. However, the fonts began to bother me, and by lunch on Day 3 my eyes were strained from looking at them.
I had a discussion with a full time Ubuntu user we had in the office, and switched back to the normal spin of Ubuntu. The fonts are much better, and I’m adjusting to the Unity desktop environment. So why Xubuntu and Ubuntu, well that’s an easy one, I have a few friends at Google who are huge Goobuntu users and convienced me I should use it minus their secret packages. No other glamorous reason sorry.
Setting Up My Environment
First, I install Ubuntu and run all the updates after the fact. Next I install Git, Bash tab completion, VIM, Curl, and Dropbox.
sudo apt-get install git bash-completion vim curl nautilus-dropbox
Because I like to be able to switch between different versions of python, I use a system called pythonbrew. It puts the python executables in ~.pythonbrew. You can get details at https://github.com/nvie/pythonbrew.
- curl -LO http://github.com/utahta/pythonbrew/raw/master/pythonbrew-install
- chmod +x pythonbrew-install
- ./pythonbrew-install
The next step is to clone down my dotfiles-linux repo and setup my system defaults
- git clone https://github.com/jasonamyers/dotfiles-linux.git
- cd dotfiles-linux
- git submodule init
- git submodule update
- cd ~
- ln -s ~/dotfiles-linux/bash_profile .bash_profile
- ln -s ~/dotfiles-linux/bashrc .bashrc
- ln -s ~/dotfiles-linux/vimfolder .vim
- ln -s ~/dotfiles-linux/vimrc .vimrc
- ln -s ~/dotfiles-linux/xchat2 .xchat2
Now to make sure I have everything it takes to build python with the modules I like to use:
- sudo apt-get install build-essential libbz2-dev libsqlite3-dev zlib1g-dev libxslt1-dev libreadline5 libreadline-gplv2-dev libgdbm-dev libxml2 libssl-dev tk-dev libgdbm-dev libexpat1-dev libncursesw5-dev libncurses5-dev libpq-dev
To install a version of python
- pythonbrew install 2.7.3
To activate a version of python
- pythonbrew switch 2.7.3
To ensure that I have everything completely seperated from the system packages I also use virtualenv and virtualenvwrapper. I have it configured to put all the virtual environments in .virtualenv.
- pip install virtualenv
- pip install virtualenvwrapper
To create a virtualenv using virtualenvwrapper
- mkvirtualenv <name>
To work inside a given virtual environment
- workon <name>
To leave a given virtual environment
- deactivate
To delete a given virtual environment
- rmvirtualenv <name>
Awesome. I was going to have you walk through setting Python and all dependancies anyway. This should do the trick.
Make sure to copy the config pieces from my dotfile-linux for pythonbrew and virtualenv. Also, don’t forget to run the pip install -r requirements.txt once inside the virtualenv.