Top 10 "Yum" installables to be productive as a developer on Red Hat Enterprise Linux

Red Hat Enterprise Linux (RHEL) is not Ubuntu. Out of the box, it seems the default packages installed for developers are somewhat limited. To provide exceptional long-term stability, Red Hat takes a different approach to default packages and software repositories (repos). Development tools aren’t installed unless specifically selected. The repos that are initially enabled only contain packages that Red Hat supports over the long term lifecycle of RHEL. Because RHEL’s default repos don’t have as large a selection of development tools as other freely available operating systems’ servers, that doesn’t mean you are out of luck. Enabling a few additional repos from Red Hat and a third party makes a wide variety of packages available using the same familiar yum commands.

In preparing to write this article, I spent hours scouring RHEL’s package lists in order to highlight some of the most useful “yum” installables that you can use to supercharge your development productivity. Some are available from the default repos, others require enabling an additional repo which I’ll point out. Here are my top 10.

vim

Ohh, VIM. Hate it or love it, it is one of the most powerful editors in the world. With 40 years of development behind it, it is one of the oldest actively developed editors in existence. When a graphical user interface is not an option, being able to hold your own in VIM is one of the most powerful things you can learn to do as a developer. Looking to improve your VIM game? Head on over to http://vimcasts.org/ for dozens of awesome tutorials!

zsh

Zsh is a bash replacement, but it’s more than just a Unix shell. It is to bash what vim is to Sublime Text. With 26 years of development behind it, zsh packs powerful scripting language, and is host to some of the most amazing shell plugins I’ve ever used.

tmux

Talk to any zsh fan, and you’ll inevitably get an earful about tmux as well. Tmux is a terminal multiplexer, which gives you the ability to manage multiple virtual consoles rather than just one. It is invaluable in headless server environments where access to modern GUI tools isn’t available, allowing you to manage terminals using tabs, splits, and even background them for later access.

gdb

Gdb is a portable debugger that can be used to debug code in many programming languages, including C, C++, Objective-C, and more. It provides in-depth access to the inner workings of a running application, and can be used to debug even the most stubborn of issues.

valgrind

While gdb is used to trace running applications, Valgrind is most commonly used to profile application memory usage. It is a powerful tool that has personally saved me hours of manually running down memory leaks.

wireshark

Wireshark isn’t going to be useful to every developer, but I’ve found it super handy while trying to debug third-party network libraries. For the uninitiated, Wireshark is a network protocol analyzer that can be used for network troubleshooting, analysis, and development.

Extra Packages for Enterprise Linux

Because Red Hat Enterprise Linux strives to provide only stable, long term supported packages, many newer development tools aren’t yet available from the official Red Hat repositories. However, this is where Extra Packages for Enterprise Linux (EPEL) comes in. EPEL is a package repository from the Fedora Project that creates, maintains and manages a high-quality set of packages of RHEL. The key part of EPEL is that, by design, it never overrides packages in the RHEL core repositories, meaning that the packages mentioned above will stay consistent. Note: that by adding a third-party repository, you may be installing packages that aren’t supported by Red Hat.

git-cola

We love git. I say we, because every developer I know loves the power that it provides. Unfortunately, git can get incredibly confusing as projects grow. Git Cola is a GUI application that allows you to work with git repositories from the safety of your desktop environment.

guake

Guake is awesome. It is a Quake-like terminal that drops down from the top of your screen at the press of a button. At first glance, guake seems like more of a fun novelty than a useful development tool, but the ease of access comes in incredibly handy when you need to run quick commands. Checking DNS records, pinging remote servers, deploying code…When you don’t need a terminal open at all times, it is the perfect solution.

cunit + phpunit + junit + nodeunit

Thanks to EPEL, the majority of unit testing frameworks are easily installable. I know, unit testing isn’t sexy, but when you commit to it, you will never be more productive. And developing code with a test-covered safety net is incredibly relaxing.

simplecov + phpcov + jscoverage

The flip-side of unit testing is code coverage. Covering your code with unit tests is great, but it is crucial to understand exactly how much of your code is covered by unit tests. EPEL was kind enough to provide us with some of the top code coverage tools, along with the top unit testing tools.

While not every development tool is available via the default repos, using RHEL you can have the best of both worlds: stable packages that are supported for the long term from Red Hat, or cutting edge development tools from EPEL.

About Zach

Zachary Flower (@zachflower) is a freelance web developer, writer, and polymath. He has an eye for simplicity and usability, and strives to build products with both the end user and business goals in mind. From building projects for the NSA to creating features for companies like Name.com and Buffer, Zach has always taken a strong stand against needlessly reinventing the wheel, often advocating for the use of well established third-party and open source services and solutions to improve the efficiency and reliability of a development project.

Editor’s Note: If you are interested in development tools for Red Hat Enterprise Linux:

The latest stable versions of C/C++ development tools such as GCC, GDB, Valgrind, and Oprofile are available from Red Hat Developer Toolset.