The preferred way to install software on your CentOS system is to use the provided package management tools. CentOS uses the Red Hat Package Management (RPM) system and YUM as a front end to it. YUM is the preferred tool for installing software on your system. Online documentation for YUM is available here:
http://www.centos.org/docs/6/html/yum/ Links currently broken.
(Meanwhile see http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ch-yum.html)
YUM is a command line tool and, despite being extremely powerful, is very easy to use so users new to Linux need not be afraid of it. To use YUM to install software on your system you will need to be root. In it's basic form, YUM uses the following syntax:
Code: Select all
yum install <package>
Code: Select all
yum install firefox
Code: Select all
yum list *Firefox*
<snip>
Installed Packages
firefox.i386 3.6.9-2.el6.centos installed
Code: Select all
yum update
Using YUM really is that easy.
There is a page with some rather nifty RPM and YUM tips & tricks here:
http://wiki.centos.org/TipsAndTricks/YumAndRPM
See also:
http://wiki.centos.org/PackageManagement/Yum
Groups
Another powerful feature of YUM is the concept of groups of software. This is software related to a task grouped together. For example, suppose you chose not to install support for printing or any office-based software when you installed CentOS. Having to find and install packages we need individually could be time consuming so we can simply choose to install the whole software group.
To see a list of groups, we can do:
Code: Select all
yum grouplist
and to install a software group, we would do:
Code: Select all
yum groupinstall 'Printing Support'
Code: Select all
yum groupinstall 'Office/Productivity'
Code: Select all
yum groupinfo 'Printing Support'
<snip>
Group: Printing Support
Description: Install these tools to enable the system to print or act as a print server.
Mandatory Packages:
ghostscript
cups
Default Packages:
enscript
samba-client
system-config-printer
hal-cups-utils
hplip
a2ps
paps
Optional Packages:
bluez-utils-cups
All of the above works fine for installing software that is provided as part of the CentOS system, but what about if you want to install a software package that isn't provided by CentOS? This is where 3rd party repositories come in. A vast amount of software has been packaged and is maintained by the packagers and placed into 3rd party software repositories such that it can be installed using YUM. Please read the Wiki page on repositories here:
http://wiki.centos.org/AdditionalResources/Repositories
RPMForge and ATrpms were two of the larger 3rd party repositories that provided software packages for CentOS. However, rpmforge has been largely unmaintained for about 3 or 4 years at the time of writing (late 2016) and is no longer recommended for use. There have been no security updates published for rpmforge packages in several years and what exists may contain unfixed security vulnerabilities. The situation with ATRpms is similar although with this repo, the mirrors that contain the content are often offline so it's tricky to install anything at all and probably lucky that you cannot since it too suffers the same problems as rpmforge - late or missing updates.
The EPEL repository is generally safe and is now easily installable on all supported CentOS versions by running yum --enablerepo=extras install epel-release as the epel-release package is now in the CentOS "extras" repo to make life easier.
Other third party yum repositories include, nux-dextop which is the current best source for multimedia packages on CentOS and ELRepo which provides hardware support such as display and network drivers.
However, we need to be careful when enabling 3rd party repositories so that they don't conflict with CentOS packages. For example, they may contain newer versions of software packages that may break your system. For this reason we strongly advise not to update packages provided by CentOS with versions from 3rd party repositories as this may break things. Remember - if you break your system, you get to keep the pieces.
To get around this problem we can use a plugin for YUM called 'priorities'. Priorities allows us to rank repositories from 1 to 99 such that packages installed from a repository with a lower number (higher ranking) will never be overwritten or upgraded by a package from a repository with a higher number (lower ranking). For example, if the CentOS base and updates repositories have a priority of 1 and EPEL has a priority of 10, a package from EPEL will never be able to replace a package from CentOS base or updates.
If you are going to enable 3rd party repositories then it is highly recommended that you also install and configure the priorities plugin to manage them.
http://wiki.centos.org/PackageManagement/Yum/Priorities
What if you can't find an RPM package for CentOS / RHEL
Are you absolutely sure you've looked everywhere? If you're absolutely sure that an RPM for the software package you want to install doesn't exist then you have a number of options:
1) If there is a Fedora RPM package, then attempting to rebuild the corresponding source RPM package on your CentOS system may be a way to create a working binary RPM package.
2) Consider building your own RPM package. If you package the software yourself then it makes it far easier to handle updates.
3) As an absolute last resort you could compile the package from source. In an rpm-based distribution like CentOS you should avoid compiling from source whenever possible because doing so may break your system and it is highly recommended that you do NOT follow this route. Please read this Wiki article for an explanation as to why:
http://wiki.centos.org/PackageManagement/SourceInstalls