One of the main benefits of open source software is that it lets you access each application's core. Yet, even with that level of access, there's a need to run simple tasks (running scripts, starting system services...) in a more simple way. That simplified code is referred to as packages (RPM). The packages are not universal - they are designed to fit each operating system's (OS) particular framework. For this to work, each OS comes with its own packet manager. For example, Debian distributions use Advanced Packaging Tool ( APT) while Fedora employs the RPM packet manager. Fedora, OpenSUSE, Red Hat Entreprise Linux and many others make use of the RPM packet manager. Even the acronym used today - RPM - comes from Red Hat Packaging Manager.
Before creating your first RPM package, you'll need to install two tools by running
dnf install fedora-packager fedora-review
from your terminal. This installs:
After installing the tools, we're going to go ahead and add a new user to the 'mock' group by running
usermod -a -G mock yourusername
as under no circumstances should you build and/or test RPMs with the ROOT user.
For creating the RPM, we'll need to create a directory to hold the package and .spec file. Spec files contain metadata and information needed to install and compile the software. The file is being named by adding .spec to the package's name.
mkdir -p ~/test-package/hello cd ~/test-package/hello cat << EOF > hello #!/bin/bash echo "Hello world!" EOF chmod 644 hello
Running bash hello should return the desired output - Hello world! Now that we have something worth packaging, we'll create a file named hello.spec within the directory. Important: Use spaces, not tabs! The indentation is not important with spec files:
Name: hello Version: 1 Release: 1%{?dist} Summary: Say hello to the world License: Public Domain Source0: hello %description A simple program to greet the user. %install %files %changelog
You can now run a local build with
fedpkg --release f25 local
This leaves us with a small and not so much functional RPM package that we can use. The next tutorial will explore building RPMs in mock and koji, along with more complex (and useful) RPMs.
Fill out the enquiry form and we'll get back to you as soon as possible.
Fill out the enquiry form and we'll get back to you as soon as possible.