I'm a MacOS guy for several years until my MBP died on me last year and haven't got a replacement for it. However, my 8 to 5 job revolves around Windows. Recently, Win10 has been working great for me. But, I always wanted a development environment that is different from what I use every day at work, change of scenery of some sort. So for 3 to 4 months I was reviewing the different flavors of Linux has to offer. Ubuntu has always got a soft spot for me, I have been on and off the platform since 2006. But the current interface has put me off. Either my system lags using it or I just need a more efficient OS. I'm not into games or the fancy graphics stuff anyway, I just need a reliable development machine. Eventually, I have decided to go with Xubuntu, an Ubuntu flavor utilizing a more resource friendly xfce interface. I never looked back since then.
Fast forward to now, I'm moving to the Focal Fossa 20.04 LTS release. I finally found time to migrate and wanted to start with a clean install. And with that, I have to re-install everything I needed. Been looking for a way to automate this process but for now I'll go the manual route.
What do I need ?
As I have mentioned, I just need my development tools available and ready to roll. Let me list them down:
The foundations
- gcc
- wget
- curl
- git
The dev kits
- dotnet
- python
- ruby
Editors and others
- vscode
- oh my zsh
- typora
- azure cli
- powershell core
Lets get down to business
First order of business is to get all the foundations setup. Without these, I cant seem to progress any further.
- gcc - the GNU Compiler Collection that includes a lot of libraries for the basic languages in Linux (e.g. C , C++)
# check if you have gcc installed
$ gcc --version
# install if needed, this will include gcc, g++ and make
$ sudo apt update
$ sudo apt install build-essential
# install the manual
$ sudo apt-get install manpages-dev
- wget - this is a command-line utility for downloading files from the web. In most cases, if you will be install other packages later on, wget will come in handy.
# check if you have wget installed
$ wget --version
# install if needed
$ sudo apt update
$ sudo apt install wget
- curl - is a command-line utility for transferring data from or to a remote server and just like wget, you will be needing this later if you intend to install additional packages.
# check if you have curl installed
$ curl --version
# install if needed
$ sudo apt update
$ sudo apt install curl
- git - in this era of open source and gitlabs and githubs, you wont survive without git!
# check if you have git installed
$ git --version
# install if needed
$ sudo apt update
$ sudo apt install git
Then we go to the programming languages I use.
- dotnet - I am a developer that mostly used Microsoft technology ( dotNet, C#, VB.Net and many more) for my entire developers life. I have longed for using C# in Linux since the day of Mono 1.0. I am just glad with this new dotnet revolution embracing cross platform development.
Ubuntu support for .NET 5 can be found on this (page.)[https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu]
# check if you have dotnet installed
$ dotnet --version
# install here
# add the Microsoft package signing key to your list of trusted keys and # add the package repository
$ wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb
# install the SDK
$ sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-5.0
#install the runtime
$ sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y aspnetcore-runtime-5.0
- python - Next to dotnet, python is my next go to language. Python usually comes out of the box with latest Xubuntu. But if you need to, see the steps below.
# check if you have python installed
$ python --version
# if you must
$ sudo apt update
$ sudo apt install python3.8
- ruby - Not for actual development purpose for now, I just need it for my blog. Trying out Jekyll as I move on from blogspot.
# check if you have ruby installed
$ ruby --version
# if you must
$ sudo apt update
$ sudo apt install ruby-full
- more? - Indeed! Rust and Golang to follow.
Now, we go to my tools.
- vscode - My editor of choice. I used the Software app to install VSCode.
- oh my zsh - I work with the terminal evernow and then, it is just fitting to use "oh my zsh" with "agnoster" as my cli.
# make sure zsh is installed
$ zsh --version
# install if you must
$ sudo apt-get update
$ sudo apt upgrade
$sudo apt install zsh
# install the needed powerline font
sudo apt-get install powerline fonts-powerline
# clone and install oh-my-zsh
$ sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
# customize your theme, I use agnoster :)
- typora - Again, for my blog!
$ wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add -
# add Typora's repository
$ sudo add-apt-repository 'deb https://typora.io/linux ./'
$ sudo apt-get update
# install typora
$ sudo apt-get install typora
- azure cli - For my cloud works. Azure has been my choice, though, I have the option to use Alibaba Cloud as well.
$ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
- powershell core - As I have mentioned before, I'm a MS guy, so.
$ wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt -y install powershell
What's next?
For basic development work I can roll with the setup above. However, my list above is not complete. Obviously, docker is missing. For my machine, I chose not to install a database directly on the system. I will go with a cloud approach or a container. But for now, I'm all set.
How about you? Whats on your Linux backpack?
This article is also posted on my personal blog
Top comments (1)
I haven't gotten far testing this new build but 20.04 is also LTS, I'm hoping whatever issues with python will be resolved. Would using virtualenv make a difference?