If you find this useful and you use bitcoin, please donate:
Thank you.

Special Packages for RHEL/CentOS 7

This repository provides src and nosrc RPMs that are of very special interest and either should not or can not be distributed as install-able RPM packages.

To learn how to build a src or nosrc RPM into a usable install-able package, read the Building RPMs section. It does involve use of the command line.

NoSource Packages

These are nosrc.rpm packages where I am not allowed to legally distribute the source tarball (which is often binary in nature).

Adobe Flash Plugin


Unfortunately much of the web still uses flash. I wish it would go away, but it hasn't yet.

Adobe does provide an RPM for flash but it is shit. This is what it installs:

rpm -qlp flash-plugin-

I don't want all that sh*t. I just want the damn plugin and the readme.txt file. I don't need anything in /usr/bin, I don't need any of the KDE or icon crap. I just want the damn plugin, and I want it installed in the right place (/usr/lib64/mozilla/plugins) which Adobe's RPM doesn't even do. I suspect the README or setup file tells you to make a symbolic link to it.

With the nosrc.rpm I have here, you can download the tarball release and make a proper RPM that installs the browser plugin and just the browser plugin and puts it in the right place.


This is the easiest way to rip DVD and BluRay content I have ever used. The source tarballs you will need can be obtained from http://www.makemkv.com/forum2/viewtopic.php?f=3&t=224.

To build it, you need a recent FFmpeg, for RHEL/CentOS 7 users you can get that from my Media Repository. If you need to make backup copies of encrypted DVDs and BluRay discs, you will also need libdvdcss from that repository, but you don't need it to build MakeMKV.

Oracle Java


The open source Java stack has come a long way but there are still some parts that are not implemented due to licensing issues. There is still sometimes a need to use Java from Oracle.

Again, Oracle offers an RPM and again, I recommend against using it. Grab the tarball and make an RPM using the tarball, a proper RPM.

This nosrc RPM will (with the tarball you have to download from Oracle) install Oracle Java in /opt/oracle-java and set up the necessary /etc/alternatives symlinks for you. It also installs a file into /etc/profile.d that sets your JAVA_HOME environmental variable and puts the Oracle Java bin directory at the end of your PATH.

Other RPMs

These are not nosource RPMs but probably should not be in a yum repository for other reasons.


WARNING: This is a work in progress and is not yet fit for public consumption. See texlive.html for details.


Most people who are serious about TeX have the current version installed in /usr/local/texlive and keep it update with tlmgr. That's just the way TeX is done.

It can be extremely annoying when you want to install something, e.g. the graphical TeX editor LaTeXila, and yum wants to pull in over 200 texlive-* packages to meet the RPM dependencies.

This package tries to avoid that outdated bloat from being added to your system by explicitly providing what those packages require. You already have LaTeX, there is no need to have RPM manage a second install you are not even going to use.

There is both a noarch and a src RPM. You only need the src RPM if you need to change something and rebuild the noarch yourself.

Building an RPM

Hopefully most of the packages you need are supplied by an appropriate RPM package repository. However odds are that sooner or later, you may end up either needing to build an RPM yourself or modify an existing RPM yourself.

This article does not cover building an RPM from scratch, there are books dedicated to that.

NEVER BUILD AN RPM AS THE root USER. Install what you build as root, but never build as root. Sooner or later you will fuck up your system if you try.

Building RPMs now is a lot easier than it was when I first started (Red Hat 5.1 era - not RHEL 5.1, Red Hat 5.1, way before Fedora Extras. My first modified RPM was a kernel RPM for MkLinux DR3 that added a USB support patch needed to use my ink-jet printer) so don't sweat it, it isn't that hard now.

Build Environment

For the basics, you will need at least the following packages installed:

You also want to have a basic understanding of UNIX shell scripting.

Install A [No]Source RPM

As a regular un-privileged non-root user install the source RPM you want to modify or the NoSource RPM you want to build. For example:

[alice@seattle Downloads]$ rpm -ih oracle-java-jdk-8u20-1.nosrc.rpm 
Updating / installing...
################################# [100%]
[alice@seattle Downloads]$

That placed the spec file (the RPM build instructions) into the directory ~/rpmbuild/SPECS creating the directory if necessary. If the nosrc.rpm included any source files or patches, it would have installed them into the ~/rpmbuild/SOURCES directory, again creating it if necessary.

Modify the Spec File (if necessary)

For the sake of argument, let us pretend Oracle released a new version of the Java JDK. We do not want to use the old version, it may have some security issues, we want to create an RPM for the hypothetical 8u37 update.

Looking at the RPM spec file, which should be ~/rpmbuild/SPECS/oracle-java-jdk.spec we can see the packager made it relatively easy for us by defining macro versions at the top:

%define majorversion 1.8.0
%define minorversion 20
%define sversion 8u%{minorversion}
%define sarch x64
Name:           oracle-java-jdk
Version:        %{sversion}
Release:        1
Source0:        jdk-%{sversion}-linux-%{sarch}.tar.gz
ExclusiveArch:  x86_64

nosource:       0

If the packager did it correctly and the package did not change much in layout, all we would need to do is change %define minorversion 20 to %define minorversion 37 and the build instructions will try to create a package for a newer version.

Note: In this Java example, you should not need to do that unless Oracle has released a new version since I made the nosrc.rpm.

Change Log

Whenever you modify an RPM spec file, you should update the %changelog section. Newer entries go at the top. The first line of a new entry starts with a * and indicates date, who made the change, version of the package, and release:

* Thu Oct 02 2014 Alice Wonder <user@host.tld> - 8u37-1

Date always starts with Day of the Week (three first letters) followed by Month (first three letters) followed by the day of the month (with leading zero for days before 10).

This is followed by your name and e-mail address, with your e-mail address between an opening < and a closing >. While it is not strictly required, a single - with a space on either side usually follows the e-mail address.

Version number goes next, in this case 8u37 followed directly by a - followed directly by the release number.

Release Number

The Release number is not related to the version of the software itself, it is the RPM release of that version of the software.

With a few legitimate exceptions, the release should always be an integer and should always be 1 for the first building of an initial version. When you need to modify a spec file but do not change the version, then you increment the release by one. When you change to a new version, then you set the release back to 1.

The release part of the %changelog entry should match the Release: tag at the top of the RPM spec file.

After indicating the date, name, version, and release of the RPM you need to make a comment indicating what you changed. Comments start with a - as the first character on the line, and the entire line should not be longer than 80 characters wide. The changelog entry with comment would look like:

* Thu Oct 02 2014 Alice Wonder <user@host.tld> - 8u37-1
- Updated to version 8u37

Building the RPM

If you tried building the RPM from the spec file now, you would get an error:

[alice@seattle SPECS]$ rpmbuild -bb oracle-java-jdk.spec 
error: File /home/alice/rpmbuild/SOURCES/jdk-8u37-linux-x64.tar.gz: No such file or directory
[alice@seattle SPECS]$

The rpmbuild command can not create the RPM because the source file is not present. You have to download that from Oracle and put it in the ~/rpmbuild/SOURCES directory. Once it is there, you can try building the RPM and it should in theory succeed:

[alice@seattle SPECS]$ rpmbuild -bb oracle-java-jdk.spec
... [lots of stuff] ...
Processing files: oracle-java-jdk-8u37-1.x86_64
Provides: oracle-java-jdk = 8u37-1 oracle-java-jdk(x86-64) = 8u37-1
Requires(interp): /bin/sh /bin/sh
Requires(rpmlib): rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1
Requires(post): /usr/sbin/update-alternatives /bin/sh
Requires(preun): /usr/sbin/update-alternatives /bin/sh
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/alice/rpmbuild/BUILDROOT/oracle-java-jdk-8u37-1.x86_64
Wrote: /home/alice/rpmbuild/RPMS/x86_64/oracle-java-jdk-8u37-1.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.tXHosw
+ umask 022
+ cd /home/alice/rpmbuild/BUILD
+ cd oracle-java-jdk-8u37
+ rm -rf /home/alice/rpmbuild/BUILDROOT/oracle-java-jdk-8u37-1.x86_64
+ exit 0
[alice@seattle SPECS]$

If all went according to plan, you can install that RPM and enjoy Oracle Java. Well, okay, the enjoy part may be a bit of a stretch ;)

More Information

If you want more information on building RPM packages, a good place to start is the Fedora Packaging Guidelines.


I do not offer official support but I do try to help people when I can. Eventually there may be a discussion list, but for now you can just e-mail me, remove the #s and @ the [at] and . the <dot> : alice#wonder[at]shasta#herps<dot>org