Chapter 4. Specifics of Individual Software Collections

This chapter is focused on the specifics of certain Software Collections and provides additional details concerning these components.

4.1. Red Hat Developer Toolset

Red Hat Developer Toolset is designed for developers working on the Red Hat Enterprise Linux platform. Red Hat Developer Toolset provides current versions of the GNU Compiler Collection, GNU Debugger, and other development, debugging, and performance monitoring tools. Similarly to other Software Collections, an additional set of tools is installed into the /opt/ directory. These tools are enabled by the user on demand using the supplied scl utility. Similarly to other Software Collections, these do not replace the Red Hat Enterprise Linux system versions of these tools, nor will they be used in preference to those system versions unless explicitly invoked using the scl utility.
For an overview of features, refer to the Main Features section of the Red Hat Developer Toolset Release Notes.
For a complete list of components, see the Red Hat Developer Toolset Components table in the Red Hat Developer Toolset User Guide.
Note that since Red Hat Developer Toolset 3.1, Red Hat Developer Toolset requires the rh-java-common Software Collection.

4.2. Eclipse 4.6.3

The rh-eclipse46 Software Collection, available for Red Hat Enterprise Linux 7, includes Eclipse 4.6.3, which is based on the Eclipse Foundation's Neon release train. This integrated development environment was previously available as a part of Red Hat Developer Toolset. Note that the rh-eclipse46 Software Collection requires the rh-java-common Collection.

Note

A new version of Eclipse is now available as the rh-eclipse47 component of the Red Hat Developer Tools offering. For more information, see Using Eclipse.
Eclipse is a powerful development environment that provides tools for each phase of the development process. It integrates a variety of disparate tools into a unified environment to create a rich development experience, provides a fully configurable user interface, and features a pluggable architecture that allows for an extension in a variety of ways. For instance, the Valgrind plug-in allows programmers to perform memory profiling, otherwise performed on the command line, through the Eclipse user interface.
Sample Eclipse Session

Figure 4.1. Sample Eclipse Session

Eclipse provides a graphical development environment alternative to traditional interaction with command line tools and as such, it is a welcome alternative to developers who do not want to use the command line interface. The traditional, mostly command line-based Linux tools suite (such as gcc or gdb) and Eclipse offer two distinct approaches to programming.
Note that if you intend to develop applications for Red Hat JBoss Middleware or require support for OpenShift Tools, it is recommended that you use Red Hat JBoss Developer Studio.

Table 4.1. Eclipse Components Included in the rh-eclipse46 Software Collection

PackageDescription
rh-eclipse46-eclipse-cdt The C/C++ Development Tooling (CDT), which provides features and plug-ins for development in C and C++.
rh-eclipse46-eclipse-changelog The ChangeLog plug-in, which allows you to create and maintain changelog files.
rh-eclipse46-eclipse-egit EGit, a team provider for Eclipse that provides features and plug-ins for interaction with Git repositories.
rh-eclipse46-eclipse-emf The Eclipse Modeling Framework (EMF), which allows you to build applications based on a structured data model.
rh-eclipse46-eclipse-epp-logging The Eclipse error reporting tool.
rh-eclipse46-eclipse-gcov The GCov plug-in, which integrates the GCov test coverage program with Eclipse.
rh-eclipse46-eclipse-gef The Graphical Editing Framework (GEF), which allows you to create a rich graphical editor from an existing application model.
rh-eclipse46-eclipse-gprof The Gprof plug-in, which integrates the Gprof performance analysis utility with Eclipse.
rh-eclipse46-eclipse-jdt The Eclipse Java development tools (JDT) plug-in.
rh-eclipse46-eclipse-jgit JGit, a Java implementation of the Git revision control system.
rh-eclipse46-eclipse-manpage The Man Page plug-in, which allows you to view manual pages in Eclipse.
rh-eclipse46-eclipse-mpc The Eclipse Marketplace Client.
rh-eclipse46-eclipse-mylyn Mylyn, a task management system for Eclipse.
rh-eclipse46-eclipse-oprofile The OProfile plug-in, which integrates OProfile with Eclipse.
rh-eclipse46-eclipse-pde The Plugin Development Environment for developing Eclipse plugins.
rh-eclipse46-eclipse-perf The Perf plug-in, which integrates the perf tool with Eclipse.
rh-eclipse46-eclipse-ptp A subset of the PTP project providing support for synchronized projects.
rh-eclipse46-eclipse-pydev A full featured Python IDE for Eclipse.
rh-eclipse46-eclipse-remote The Remote Services plug-in, which provides an extensible remote-services framework.
rh-eclipse46-eclipse-rpm-editor The Eclipse Spec File Editor, which allows you to maintain RPM spec files.
rh-eclipse46-eclipse-rse The Remote System Explorer (RSE) framework, which allows you to work with remote systems from Eclipse.
rh-eclipse46-eclipse-systemtap The SystemTap plug-in, which integrates SystemTap with Eclipse.
rh-eclipse46-eclipse-valgrind The Valgrind plug-in, which integrates Valgrind with Eclipse.
rh-eclipse46-eclipse-webtools The Eclipse Webtools plug-ins.

4.2.1. Installing Eclipse

The Eclipse development environment is provided as a collection of RPM packages. To install the rh-eclipse46 Software Collection, type the following command as root:
yum install rh-eclipse46

Note

The rh-eclipse46 Software Collection fully supports C, C++, and Java development, but does not provide support for the Fortran programming language.

4.2.2. Using Eclipse

To start the rh-eclipse46 Software Collection, either select ApplicationsProgrammingRed Hat Eclipse from the panel, or type the following at a shell prompt:
scl enable rh-eclipse46 eclipse
During its startup, Eclipse prompts you to select a workspace, that is, a directory in which you want to store your projects. You can either use ~/workspace/, which is the default option, or click the Browse button to browse your file system and select a custom directory. Additionally, you can select the Use this as the default and do not ask again check box to prevent Eclipse from displaying this dialog box the next time you run this development environment. When you are done, click the OK button to confirm the selection and proceed with the startup.

4.2.2.1. Using the Red Hat Developer Toolset Toolchain

To use the rh-eclipse46 Software Collection with support for the GNU Compiler Collection and binutils from Red Hat Developer Toolset, make sure that the devtoolset-7-toolchain package is installed and run the application as described in Section 4.2.2, “Using Eclipse”. The rh-eclipse46 Collection uses the Red Hat Developer Toolset toolchain by default.
For detailed instructions on how to install the devtoolset-7-toolchain package in your system, see the Red Hat Developer Toolset User Guide.

Important

If you are working on a project that you previously built with the Red Hat Enterprise Linux version of the GNU Compiler Collection, make sure that you discard all previous build results. To do so, open the project in Eclipse and select ProjectClean from the menu.

4.2.2.2. Using the Red Hat Enterprise Linux Toolchain

To use the rh-eclipse46 Software Collection with support for the toolchain distributed with Red Hat Enterprise Linux, change the configuration of the project to use absolute paths to the Red Hat Enterprise Linux system versions of gcc, g++, and as.
To configure Eclipse to explicitly use the Red Hat Enterprise Linux system versions of the tools for the current project, complete the following steps:
  1. In the C/C++ perspective, choose ProjectProperties from the main menu bar to open the project properties.
  2. In the menu on the left-hand side of the dialog box, click C/C++ BuildSettings.
  3. Select the Tool Settings tab.
  4. If you are working on a C project:
    1. select GCC C Compiler or Cross GCC Compiler and change the value of the Command field to:
      /usr/bin/gcc
    2. select GCC C Linker or Cross GCC Linker and change the value of the Command field to:
      /usr/bin/gcc
    3. select GCC Assembler or Cross GCC Assembler and change the value of the Command field to:
      /usr/bin/as
    If you are working on a C++ project:
    1. select GCC C++ Compiler or Cross G++ Compiler and change the value of the Command field to:
      /usr/bin/g++
    2. select GCC C Compiler or Cross GCC Compiler and change the value of the Command field to:
      /usr/bin/gcc
    3. select GCC C++ Linker or Cross G++ Linker and change the value of the Command field to:
      /usr/bin/g++
    4. select GCC Assembler or Cross GCC Assembler and change the value of the Command field to:
      /usr/bin/as
  5. Click the OK button to save the configuration changes.

4.2.3. Additional Resources

A detailed description of Eclipse and all its features is beyond the scope of this book. For more information, see the resources listed below.

Installed Documentation

  • Eclipse includes a built-in Help system, which provides extensive documentation for each integrated feature and tool. This greatly decreases the initial time investment required for new developers to become fluent in its use. The use of this Help section is detailed in the Red Hat Enterprise Linux Developer Guide linked below.

See Also

  • Using Eclipse describing usage of the rh-eclipse47 component of Red Hat Developer Tools.
  • The Red Hat Developer Toolset chapter in the Red Hat Developer Toolset User Guide provides an overview of Red Hat Developer Toolset and more information on how to install it on your system.
  • The GNU Compiler Collection (GCC) chapter in the Red Hat Developer Toolset User Guide provides information on how to compile programs written in C, C++, and Fortran on the command line.

4.3. Ruby on Rails 5.0

Red Hat Software Collections 3.0 provides the rh-ruby24 Software Collection together with the rh-ror50 Collection.
To install Ruby on Rails 5.0, type the following command as root:
yum install rh-ror50
Installing any package from the rh-ror50 Software Collection automatically pulls in rh-ruby24 and rh-nodejs6 as dependencies.
The rh-nodejs6 Collection is used by certain gems in an asset pipeline to post-process web resources, for example, sass or coffee-script source files. Additionally, the Action Cable framework uses rh-nodejs6 for handling WebSockets in Rails.
To run the rails s command without requiring rh-nodejs6, disable the coffee-rails and uglifier gems in the Gemfile.
To run Ruby on Rails without Node.js, run the following command, which will automatically enable rh-ruby24:
scl enable rh-ror50 bash
To run Ruby on Rails with all features, enable also the rh-nodejs6 Software Collection:
scl enable rh-ror50 rh-nodejs6 bash
The rh-ror50 Software Collection is supported together with the rh-ruby24 and rh-nodejs6 components.

4.4. MongoDB 3.4

To install the rh-mongodb34 collection, type the following command as root:
yum install rh-mongodb34
To run the MongoDB shell utility, type the following command:
scl enable rh-mongodb34 'mongo'

Note

The rh-mongodb34-mongo-cxx-driver package has been built with the -std=gnu++14 option using GCC from Red Hat Developer Toolset 6. Binaries using the shared library for the MongoDB C++ Driver that use C++11 (or later) features have to be built also with Red Hat Developer Toolset 6. See C++ compatibility details in the Red Hat Developer Toolset 6 User Guide.

MongoDB 3.4 on Red Hat Enterprise Linux 6

If you are using Red Hat Enterprise Linux 6, the following instructions apply to your system.
To start the MongoDB daemon, type the following command as root:
service rh-mongodb34-mongod start
To start the MongoDB daemon on boot, type this command as root:
chkconfig rh-mongodb34-mongod on
To start the MongoDB sharding server, type this command as root:
service rh-mongodb34-mongos start
To start the MongoDB sharding server on boot, type the following command as root:
chkconfig rh-mongodb34-mongos on
Note that the MongoDB sharding server does not work unless the user starts at least one configuration server and specifies it in the mongos.conf file.

MongoDB 3.4 on Red Hat Enterprise Linux 7

When using Red Hat Enterprise Linux 7, the following commands are applicable.
To start the MongoDB daemon, type the following command as root:
systemctl start rh-mongodb34-mongod.service
To start the MongoDB daemon on boot, type this command as root:
systemctl enable rh-mongodb34-mongod.service
To start the MongoDB sharding server, type the following command as root:
systemctl start rh-mongodb34-mongos.service
To start the MongoDB sharding server on boot, type this command as root:
systemctl enable rh-mongodb34-mongos.service
Note that the MongoDB sharding server does not work unless the user starts at least one configuration server and specifies it in the mongos.conf file.

4.5. Git

Git is a distributed revision control system with a decentralized architecture. As opposed to centralized version control systems with a client-server model, Git ensures that each working copy of a Git repository is an exact copy with complete revision history. This not only allows you to work on and contribute to projects without the need to have permission to push your changes to their official repositories, but also makes it possible for you to work with no network connection. For detailed information, see the Git chapter in the Red Hat Enterprise Linux 7 Developer Guide.

4.6. Maven

The rh-maven35 Software Collection, available only for Red Hat Enterprise Linux 7, provides a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting, and documentation from a central piece of information.
To install the rh-maven35 Collection, type the following command as root:
yum install rh-maven35
To enable this collection, type the following command at a shell prompt:
scl enable rh-maven35 bash
Global Maven settings, such as remote repositories or mirrors, can be customized by editing the /opt/rh/rh-maven35/root/etc/maven/settings.xml file.
For more information about using Maven, refer to the Maven documentation. Usage of plug-ins is described in this section; to find documentation regarding individual plug-ins, see the index of plug-ins.

4.7. Passenger

The rh-passenger40 Software Collection provides Phusion Passenger, a web and application server designed to be fast, robust and lightweight.
The rh-passenger40 Collection supports multiple versions of Ruby, particularly the ruby193, ruby200, and rh-ruby22 Software Collections together with Ruby on Rails using the ror40 or rh-ror41 Collections. Prior to using Passenger with any of the Ruby Software Collections, install the corresponding package from the rh-passenger40 Collection: the rh-passenger-ruby193, rh-passenger-ruby200, or rh-passenger-ruby22 package.
The rh-passenger40 Software Collection can also be used with Apache httpd from the httpd24 Software Collection. To do so, install the rh-passenger40-mod_passenger package. Refer to the default configuration file /opt/rh/httpd24/root/etc/httpd/conf.d/passenger.conf for an example of Apache httpd configuration, which shows how to use multiple Ruby versions in a single Apache httpd instance.
Additionally, the rh-passenger40 Software Collection can be used with the nginx 1.6 web server from the nginx16 Software Collection. To use nginx 1.6 with rh-passenger40, you can run Passenger in Standalone mode using the following command in the web appplication's directory:
scl enable nginx16 rh-passenger40 'passenger start'
Alternatively, edit the nginx16 configuration files as described in the upstream Passenger documentation.

4.8. Database Connectors

Database connector packages provide the database client functionality, which is necessary for local or remote connection to a database server. Table 4.2, “Interoperability Between Languages and Databases” lists Software Collections with language runtimes that include connectors for certain database servers.

Table 4.2. Interoperability Between Languages and Databases

 Database
Language (Software Collection)MariaDBMongoDBMySQLPostgreSQLRedis
rh-nodejs4
rh-nodejs6
rh-nodejs8
rh-perl520
rh-perl524
rh-php56
rh-php70
rh-php71
python27
rh-python34
rh-python35
rh-python36
rh-ror50
rh-ror42
rh-ror41
Supported
Unsupported