Redhat is a company providing a Linux distribution. Gizmola.com was installed using Redhat's distribution.
In the early days of Unix system software was usually distributed in source code form. Part of the allure of Unix to many users was it's portability aross a variety of different computer systems. Developers would usually create a "tarball" archive of the source code, along with a makefile and basic instructions for how to recompile the software for use on a system. Over time, the issue of upgrading software could become a cumbersome, time consuming matter, often requiring a sysadmin to patch the source code, and recompile the program in order to address bugs and security holes. Unix vendors and open source developers began to develope alternatives to this method for distributing precompiled or configured programs or scripts.
One of the RedHat's innovations is it's linux package manager, RPM (RedHat package manager). Packages are installation modules that handle the installation, upgrade or deletion of software on a redhat system.
The RPM system created a standardized naming and versioning system, by which the installation (or absence) of a particular software package can be handled. RPM keeps a database of information on all the packages installed on a host. By querying the rpm database with rpm, it is possible to determine whether a particular software package has been installed, the version of that package, and some basic descriptive information about the package. You can also find out what package a particular file belongs to, and whether or not that file has been changed from the one that was installed initially.
Furthermore rpm allows for installation, upgrade and patching of packages.
Here's a list of what I've found to be some of the most useful redhat linux rpm commands, (examples assume a bash shell prompt).
In general you can pass the package name to various rpm commands, and ignore the version string.
rpm -q depends on matching the package name up to the last - prior to the package version information. This example searched for the popular sysadmin tool perl. If the query succeeds, the currently installed package string is returned. In this case, the example indicates that perl version 5.00503-12 is installed.
Version : 5.8.0 Vendor: Red Hat, Inc.
Version : 0.5.2 Vendor: Red Hat, Inc.
Note the reference to the Source RPM. RPM's are compiled into a binary format for efficiency and compression. If you are interested in the complete source for the RPM you can download the src.rpm and take a look at it with a text editor. RPM provides a full set of tools for creating your own RPM's for distributing your own open source projects. The details of this process is covered in Maximum RPM published by RedHat and distributed by them in electronic form on their website.
Sometimes you are looking at a file, and aren't sure what package it belongs to. This rpm command will determine that for you. Note that you must pass the full path to the file and not just the filename itself, if you expect rpm to find a match.
RPM's main purpose is to actually install packages, so you don't have to compile everything from source. It's also worth noting that packages are created by the linux distro creators typically, and represent someones opinion on how a particular piece of software should be installed on your system. Although you can override these defaults to a degree, it's probably not the best idea to fight against the "official" stance of the distro on how that package works best.
If you are having trouble installing a package because it depends on other packages to already have been installed first, try www.rpmfind.net. It's a handy database which cross references packages across all the linux distributions and architectures that support RPM's. For example, try searching for libcrypto.so.0. The results indicate the various packages which include that file, and the location of the rpm for download.
I always tack on the vh options to get verbose output and the progress hashes so you can determine whether or not rpm has locked up, which on rare occasions it has been known to do.
So, you find out that a program you are using has a security vulnerability and a new patch (and hopefully a new rpm) has been issued. Upgrading with rpm is usually a snap.
The -U option causes rpm to update the new package, checking for a prior versions, and saving or reusing configuration options before deleting any prior versions of the package from the system.
I've had debates with people about this, but when two packages are in an rpm deadly embrace where each is dependent on the other, there is no way to move forward without telling one of the two to simply install anyways. Although this should be used with care, it obviously exists for a reason, and I've used it a few times without issue.
Sometimes you will have a whole slew of patched rpm's to deal with, and not be completely sure if you need them or not. One solution is the rpm freshen option.
Like -U -F causes an update or "Freshening" of the package, however, if a prior version of the package doesn't exist, rpm will exit without doing any installation. Security patches are often distributed with the recommendation that this mode be used. This way sysadmins can download the security patches and attempt to freshen them without concern about whether or not the patch is really needed.
I hope these notes help you out with your use of rpm.
In the recent past, someone broke into Gizmola.com, and basically planted a bunch of backdoor software. I don't know what they hoped to gain from access to what is essentially a personal server with limited bandwidth available to it. Fortunately for me, they did a pretty crappy job of covering up their tracks, even locking me out of my own server (bright script kiddies!). Since then, I've been meaning to upgrade my version of Linux in order to try and recover from the damage. I finally got around to it, and upgraded to version 6.x of Redhat Linux. The upgrade was so easy, I'm wondering why I was dreading it for so long. With the exception of a tweak to a couple of config files, everything seems to be running again as usual.