Skip to content

Latest commit

 

History

History
81 lines (57 loc) · 2.4 KB

rpm.rst

File metadata and controls

81 lines (57 loc) · 2.4 KB

rpm - RedHat Package Manager

rpm is the package format used on RedHat Enterprise (RHEL), Fedora, CentOS, and a number of other Linux distributions.

You may be familiar with tools such as dnf and yum for installing packages from repositories. The package files that these tools install are rpms.

Supported Uses in FPM

fpm supports input and output for rpms. This means you can read an rpm and convert it to a different output type (such as a dir or deb). It also means you can write an rpm.

Arguments when used as input type

For the sample command reading an rpm as input and outputting a debian package:

fpm -s rpm -t deb file.rpm

The the argument is used as a file and read as an rpm.

Sample Usage

Create a package with no files but having dependencies:

% fpm -s empty -t rpm -n example --depends nginx
Created package {:path=>"example-1.0-1.x86_64.rpm"}

We can now inspect the package with rpm's tools if you wish:

% rpm -qp example-1.0-1.x86_64.rpm -i
Name        : example
Version     : 1.0
Release     : 1
Architecture: x86_64
Install Date: (not installed)
Group       : default
Size        : 0
License     : unknown
Signature   : (none)
Source RPM  : example-1.0-1.src.rpm
Build Date  : Wed 20 Oct 2021 09:43:25 PM PDT
Build Host  : snickerdoodle.localdomain
Relocations : /
Packager    : <jls@snickerdoodle>
Vendor      : none
URL         : http://example.com/no-uri-given
Summary     : no description given
Description :
no description given

Fun Examples

Changing an existing RPM

fpm supports rpm as both an input and output type (-s and -t flags), so you can use this to modify an existing rpm.

For example, let's create an rpm to use for our example:

% fpm -s empty -t rpm -n example
Created package {:path=>"example-1.0-1.x86_64.rpm"}

Lets say we made a mistake and want to rename the package:

% fpm -s rpm -t rpm -n newname example-1.0-1.x86_64.rpm
Created package {:path=>"newname-1.0-1.x86_64.rpm"}

And maybe the architecture is wrong. fpm defaulted to x86_64 (what fpm calls "native"), and we really want what rpm calls "noarch":

% fpm -s rpm -t rpm -a noarch newname-1.0-1.x86_64.rpm
Created package {:path=>"newname-1.0-1.noarch.rpm"}

RPM-specific command line flags