LPI Linux Essentials Objective 1.2 – Major Open Source Applications

By | 2018-11-03

The Linux Professional Institute (LPI) Exam 010 objective 1.2 is awareness of major open source applications and their development. This guide applies to exam version 1.6.

Disclaimer: I have not taken the exam. I do have more than a decade of professional experience working with Linux and open source software. Using my study guide does not guarantee passing the exam.

If you want to learn about the topics covered by the exam objectives keep reading. If you just want to pass the exam, this study guide probably isn’t for you.

I’m going to cover a lot of applications, so I’m not going to spend much time on each one. Besides, I would just be parroting the project web sites and Wikipedia pages; I recommend visiting these for each application. Poke around these resources until you have a solid grasp on what each application does and who develops them.

Awareness of free and open source software (FOSS) can save a lot of time and money. I recommend spending some time exploring the FOSS world and learning what is out there.

Finding Free Software

When I am looking for software, the first places I look are operating system repositories. At my day job, I have RHEL 7, Debian Stretch, and FreeBSD 11. The Debian and FreeBSD repositories have over 50000 and 30000 packages, respectively. My RHEL systems have over 18000 packages available. There is a good chance what I need is in the repositories.

The Free Software Foundation GNU project maintains tons of free software. A list of GNU projects can be found here.

Major Developers

A lot of the free software covered is maintained by a few key players. Visit each of the following organizations’ pages and familiarize yourself with them. Get to know their major applications, history, organization type (E.g. non-profit, for-profit), funding sources, and license.

Desktop Applications

There are some great FOSS desktop applications. I have been using a Linux desktop with mostly FOSS for my work and personal machines for years.

OpenOffice.org and LibreOffice

OpenOffice.org is an open source version of Sun Microsystem’s Star Office. When Oracle acquired Sun in 2010, the project was forked over concerns about Oracle. The fork is called LibreOffice. In 2011, Oracle gave OpenOffice.org to the Apache Foundation.

LibreOffice is a community project and is the more popular and actively developed of the two.

Thunderbird

Thunderbird is an email client that can also be used for RSS and chatting on a few popular networks. It is maintained and developed by The Mozilla Foundation.

Firefox

Firefox is a popular web browser that supports plugins, themes, and extensions. It is maintained by the Mozilla Foundation.

GIMP

GIMP, or GNU Image Manipulation Program, is an image editor that is a decent substitute for Adobe Photoshop. GIMP is developed and maintained by a group of volunteers.

Evolution

Evolution is a mail client, calender tool, and task manager. In some cases, it could be a suitable replacement for Microsoft Outlook. Evolution is maintained by the GNOME Foundation.

Keepass

Keepass is a password management tool. If you aren’t already using a password manager, Keepass is a great one. It is developed and maintained by Dominik Reichl.

GnuCash

GnuCash is accounting software for personal and small-business use. I have used GnuCash for my personal finances for years. It is maintained by a group of volunteers.

Other Notable Applications

  • Kodi – Media Player
  • VLC – Media Player
  • Kino – Video Editor

Server Applications

There are tons of free and open source server applications. The LPI web site lists Apache HTTPD, NGINX, MySQL, NFS, and Samba. Many of these applications have commercial support or paid versions with a few extra bells and whistles.

OpenSSH

OpenSSH provides and SSH server, SFTP client, SFTP server, SSH client, and key management tools. OpenSSH is developed by volunteers as part of the OpenBSD project.

HTTPD

HTTPD is developed by the Apache Foundation. HTTPD can also function as a reverse proxy and load balancer. HTTPD supports shared object modules. I.e. you can extend HTTPD to do more than just serve static web pages. Modules exist for PHP, Python, CGI, FTP, LDAP, caching, and more.

HTTPD is usually referred to as Apache.

If you are planning on a career in IT, taking a little time to become familiar with HTTPD would be well worth your time.

NGINX

NGINX is another open source HTTP server. Like HTTPD, NGINX has a lot of loadable modules. It can also function as reverse proxy and load balancer. NGINX was originally developed by Igor Sysoev. Paid support and proprietary version are available from NGINX, Inc.

Like HTTPD, it is worth becoming familiar with NGINX.

MySQL

MySQL is a relational database management system (RDBMS) developed and maintained by Oracle. There is a community edition of MySQL that is freely available and a commercial version that you have to pay for.

When Oracle acquired MySQL, a fork of MySQL called MariaDB was created. They are very similar and for the most part compatible. MariaDB is replacing MySQL in many operating system package repositories.

MySQL is commonly used to store data for a large number of a FOSS and commercial applications. For this reason, it is worth the time to familiarize yourself with it.

PostgreSQL

PostreSQL is another FOSS RDBMS. Like MySQL, it is commonly used for both FOSS and commercial applications. I would take a few minutes and read about PostgreSQL’s 30+ year history on the official history page.

I use PostgreSQL as a database whenever possible. It has served me well for years.

There are paid support options from a variety of companies.

NFS

Network File System (NFS) is a protocol used primarily by UNIX like operating systems to share files on a network. It was originally developed by Sun Microsystems, but the specifications are published by the Internet Engineering Task Force (IETF) as Requests For Comment (RFCs). NFS servers differ from most other types of servers because they are typically part of the OS kernel instead of a separate daemon. This isn’t always the case, the popular NFS server, NFS-Ganesha, runs as a regular daemon.

Samba

Samba is a suite of software to interact with a Windows network. Samba can function as a Microsoft Active Directory domain controller, domain member, file server, and print server. It can be used to mount a shared folder on a Windows server on a Linux or UNIX host.

Samba is developed by a group of volunteers. Paid support options are available from a number of companies.

Zabbix

Zabbix is used for monitoring just about anything. An agent can be installed on machines you are monitoring, but it can also use SNMP, IPMI, JMX, SSH, and perform simple connectivity checks. It can be configured to send SMS messages, Jabber messages, and email when problems occur.

Zabbix is maintained by Zabbix LLC. Zabbix LLC provides training, certification, support, and consultation services.

I have used Zabbix for years. I highly recommend it.

SaltStack

SaltStack is a Python based configuration management and IT automation tool. There is a proprietary and community edition.

SaltStack is maintained by SaltStack Inc. They provide support, training, certification, and consultation services.

I have been using the community edition for years.

Ansible

Ansible is another IT automation tool. Installing agents on your machines isn’t necessary because it operates entirely over SSH. Ansible is developed and maintained by Red Hat.

BIND

BIND is a widely used DNS server maintained by Internet Systems Consortium (ISC).

BIND was originally written by graduate students at UC Berkeley under a DARPA grant.

If you believe Wikipedia, roughly half of the root DNS servers use BIND.

ISC DHCP

ISC also maintains a widely used DHCP server.

Postfix

Postfix is a popular mail server. It is the default mail server used by Red Hat Enterprise Linux (RHEL) based distributions. Postfix was written by and is maintained by Wietse Venema.

Sendmail

Sendmail is another popular open source mail server. It is a derivative of an ARPANET project that shipped with BSD in the 1980s. It is now owned by proofpoint.

HAProxy

HAProxy is a reverse HTTP proxy, load balancer, and TCP proxy. It is used by several high-profile sites such as Reddit and Twitter.

I frequently use HAProxy for load balancing, high availability, and terminating TLS.

There is a proprietary version available with a few more bells and whistles and commercial support.

HAproxy is developed by Willy Tarreau. The company HAProxy Technologies offers a proprietary version and technical support.

Other Notable Servers

  • Asterisk – PBX/VoIP services
  • vsftpd – FTP server
  • Dovecot – IMAP/POP server
  • Tomcat – Java web application server
  • OSSEC – centrally managed host-based intrusion detection systems
  • Roundcube – web mail

Development Languages

There are ample FOSS programming languages available.

C

C is an old, small compiled language that is commonly used for writing OS kernels, device drivers, and system utilities. The most common FOSS implementations are GCC and Clang.

Java

Java is an object oriented language commonly used to develop web applications. It is compiled into an intermediary byte code that is executed by a virtual machine process. It was originally developed by Sun Microsystems. Oracle has been developing Java since they acquired Sun. The OpenJDK project provides both the virtual machine and compiler.

Perl

Perl is an imperative, interpreted language frequently used for processing text. With over 25000 projects in the Comprehensive Perl Archive Network repository, there is a library for almost anything. Perl is maintained by Larry Wall.

Shell Command Language

There are multiple FOSS implementations of the POSIX Shell Command Language. The most commonly used is probably bash. Some other POSIX shells are ksh, zsh, and dash.

Shell scripts are commonly used to automate system maintenance tasks and start and stop services.

Python

Python is an easy to learn, interpreted language. It has a wide range of uses including system utilities, statistical analysis, scientific computing, finance, and web development.

Python is maintained by the Python Software Foundation.

PHP

PHP is a scripting language primarily used for web applications, but it can be used for other purposes. Many popular web applications are written in PHP: WordPress, Mediawiki, phpBB to name a few.

PHP is developed by a community and Zend Technologies Ltd.

Whether you plan on developing software or managing systems, I recommend becoming familiar with PHP.

C++

C++ is an object oriented language created by Bjarne Stroustrup as an extension of C. Both GCC and Clang have a FOSS C++ compiler.

More Languages

Here are some other languages with FOSS implementations that are worth checking out.

Package Management Tools and Repositories

The preferred way to install software on Linux based operating systems is to use a package manager. Package managers maintained a database of installed packages, the files that were part of each package, which files are configuration files that should be left alone when upgrading, and dependencies.

Dependency tracking saves system administrators a lot of time. Unless overridden with a special force option, package management tools won’t let you install packages that don’t have all their dependencies met. E.g. if you try to install a package containing HTTPD, and you are missing a package that provides a library it won’t function without, the package manager will output an error and refuse to install HTTPD. This is also true when you are removing packages. The package manager won’t let you remove packages that other packages depend on.

Package managers can also run scripts during the installation, upgrade, or removal processes. These scripts do things like create system users when a package is installed and disable a service if it is being removed.

Package management systems are typically used with a package repository and tools to interact with repositories. Repository tools are amazing. When installing a package they will automatically determine the package’s dependencies, download and install the dependencies, and finally download and install the package you are trying to install. If you remove a package using a repository tool, they will automatically remove packages that depend on the one you are removing. If you remove a package and wish to remove packages that were installed as dependencies, repository tools do that too.

Package management systems are great for keeping your system up to date. If all of the software you use was installed from repositories, package managers can usually update all of the software on your system with a single command.

dpkg

dpkg is the package management system used by Debian based systems such as Ubuntu and Mint.

apt

Advanced Packaging Tool (APT), sometimes referred to by the commonly used command apt-get, is the repository tool used on Debian based systems. Apt is used to work with dpkg systems.

rpm

rpm is used on RHEL based systems, OpenSUSE, Fedora.

yum

Yum is used to access rpm repositories on RHEL based systems.

zypper

Zypper is the OpenSUSE tool used to access rpm repositories.

dnf

dnf is a repository tool used by Fedora.

Cloud

There are a few open source cloud options. If you have data that you don’t what in the cloud but want the convenience of popular cloud applications, there are a few open source options you can install on your own servers.

ownCloud

ownCloud is a community developed file sharing and syncing application. It was developed in 2010 as an alternative to proprietary services such as Dropbox. Android and iOS clients are available.

A paid version with support is available from ownCloud GmbH.

Nextcloud

In 2016, the primary ownCloud developer created a fork of ownCloud called Nextcloud. It includes applications for communication, file sharing and syncing, and groupware. Like ownCloud, Android and iOS clients are available.

A paid version with support is available from Nextcloud GmbH.

Exercises

  • Name two open source web servers.
  • What are some differences between MySQL and MariaDB?
  • Which package management tools are used by Debian based operating systems?
  • If you need several Windows PCs to access files on a Linux server, what software could you use? Would you choose something different if they were CentOS PCs? Why?
  • What language should you learn if you want to write device drivers? Name an open source implementation.
  • Search the web and find two open source LDAP servers.
  • Gnucash can be difficult to use for those who haven’t learned accounting. What are some some other open source applications that can be used for tracking expenses.
  • Name two alternatives to Microsoft Office. Which would you choose? Why?
  • Name two non-profit organizations that develop open source software and one of their most widely used applications.
  • Who created the Perl programming language?
  • What organization develops Python? Is it a for profit or non-profit?
  • Search the web and find two open source web-based project management applications.