NAME

RPM::Packager - Manifest-based approach for building RPMs

VERSION

Version 0.3.4

SYNOPSIS

Building RPMs should be easy.

This is a manifest approach to easily create custom RPMs. Once this module is installed, building RPMs should be as simple as writing a YAML file that looks like the following:

---
name: testpackage
version: grep Changelog             # version string or some command to retrieve it
os: el6                             # optional, don't specify anything if package is os-independent
dependencies:
  - perl-YAML > 0.5
  - perl-JSON
files:
  bin: /usr/local/bin               # directory-based mapping.  RPM will install CWD/bin/* to /usr/local/bin.
user: apache                        # specify the owner of files.  default: root
group: apache                       # specify the group owner of files.  default: root
sign:                               # optionally, gpg signing of RPM
  gpg_name: ED16CAB                 # provide the GPG key ID
  passphrase_cmd: cat secret_file   # command to retrieve the secret
after_install: path/to/script       # shellscript to run after the package is installed (%post)
architecture: noarch                # specify the architecture for this package (default: x86_64)

Then run:

rpm_packager.pl <path_to_manifest.yml>

Note : You need to have fpm available in PATH. For GPG signing, you need to have proper keys imported.

Note2: The 'release' field of RPM will be determined by the BUILD_NUMBER env variable plus 'os' field, like '150.el7'. If BUILD_NUMBER is unavailable, 1 will be used. If os is unspecified, nothing will be appended.

You may also interact with the library directly as long as you pass in the manifest information in a hash:

use RPM::Packager;

my %args = (
    name    => 'testpackage',
    version => 'grep Changelog',
    files   => { bin => '/usr/local/bin' },
    dependencies => [
        'perl-YAML > 0.5',
        'perl-JSON'
    ],
    os      => 'el6',
    user    => 'apache',
    group   => 'apache',
    sign    => {
        'gpg_name' => 'ED16CAB',
        'passphrase_cmd' => 'cat secret_file'
    },
    after_install => 'foo/bar/baz.sh',
    architecture => 'noarch'
);

my $obj = RPM::Packager->new(%args);
$obj->create_rpm();                           # RPM produced in CWD

SUBROUTINES/METHODS

new(%args)

Constructor. Pass in a hash containing manifest info.

create_rpm

Creates RPM based on the information in the object

AUTHOR

Satoshi Yagi, <satoshi.yagi at yahoo.com>

BUGS

Please report any bugs or feature requests to bug-rpm-packager at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=RPM-Packager. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

perldoc RPM::Packager

You can also look for information at:

ACKNOWLEDGEMENTS

LICENSE AND COPYRIGHT

Copyright 2016 Satoshi Yagi.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.