rpmerizor - build an rpm package from installed files




Rpmerizor is a script that allows you to create an RPM package from installed files. You simply have to specify files on the command line and answering a few interactive questions to fill rpm meta-data (package name, version ...). You can also use it in batch mode with command line options for meta-data.


to build an rpm from installed files :

rpmerizor {options} file|dir [file|dir [file|dir]]

to build an rpm from a chrooted directory which contain only the software you want to package

rpmerizor --rootdir directory


  Files and directories to include in rpm package
  Files are included as they are on their current filesystem.
  Only include dirs that should be _owned_ by the package.

  Since 2.2 version, giving a directory means giving all
  files under it : this is recursive


   --help : show short help text
   --man : show full help text
   --Version : display rpmerizor version and exit
   --debug/--nodebug : for rpmerizor debugging/ no debug
   --verbose/--noverbose : better rpm build diagnostics/no diag
   --buildall/--nobuildall : build also src.rpm package/build only binary
   --edit_spec/--noedit_spec : build spec file and edit it using EDITOR variable
   --spec_only/--nospec_only : build spec file and exit
   --sign/--nosign : sign rpm package with your gpg key / do not sign
   --list_group : display the list of available rpm groups
   --exclude 'foo[|bar]: give a pattern to exclude some files
   --rootdir dir : include all files as chrooted to dir directory. In this
        case, name and version meta-data are guessed from directory name
   --compat/--nocompat : build rpm package with compatibility with old rpm release (md5)
   --default : fill release and group with default values
   --guess/--noguess : guess about all meta data : package name, version ...
   --stdin : read file list from stdin. in this case, you have to give all
        meta-data from command line.
   --autoreq/--noautoreq : enable/disable auto require and auto provides rpmbuild feature

meta-informations for batch use

   --name pack_name: package name
   --version number : package version
   --release number : package release
   --group rpm_group : package group (use --list_group to list all values)
   --summary "package summary": short one line description
   --description "package description": multi-line description
   --buildarch arch : (optionnal) should be one of noarch/i386/i586/x86_64/...
   --url http://website : (optionnal) url of project
   --packager "your name" : (optionnal) name of rpm packager


rpm, perl


  initial author : Paul Miller
  current maintener :  Eric Gerbier
  url : http://rpmerizor.sourceforge.net/


  Copyright (C) 2001 by Paul Miller

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 2 of the License, or (at your option) any later version.


  rpmerizor /opt/software /etc/software.conf
  will ask for meta informations and build rpm

  rpmerizor -buildall /opt/software /etc/software.conf
  will ask for meta informations and build rpm and src.rpm

  rpmerizor -e /opt/software /etc/software.conf
  will ask for meta informations, edit specfile and build rpm

  rpmerizor -name software -version 1.0 -release 1 -group rpmerizor \
   -summary "software is ..." -description "software is ... " /opt/software /etc/software.conf
  will build rpm without any question (batch mode)

  rpmerizor -name software -version 1.0 -default \
   -summary "software is ..." -description "software is ... " /opt/software /etc/software.conf
  will build rpm without any question (batch mode), release and group use default value

  rpmerizor --spec_only /opt/software /etc/software.conf 
  rpmbuild -bb --buildroot=/tmp/rpmerizor_buildroot software.spec
  will first build the specfile, then build rpm package from specfile

  rpmerizor --exclude 'foo|bar' /opt/software
  will package files under /opt/software and exclude all files/directories
  which contain 'foo' or 'bar'

  rpmerizor --rootdir /tmp/foo-2.0/
  will build a package with all files under /tmp/foo-2.0/, but remove 
  '/tmp/foo-2.0/' from path
  if /tmp/foo-2.0 looks like :
  |-- etc
  |   `-- foo.conf
  `-- usr
      `-- local
          |-- bin
          |   `-- foo.bin
          `-- lib
               `-- foo.so
  the rpm package will be named foo, will be version 2.0, release 1
  and will contain the files:

  rpmerizor --rootdir /tmp/foo-2.0/ --compat
  build on fedora 14 (for example) for redhat/centos compatibility

  cat list | rpmerizor --stdin --default -name foo --version 1.2b --summary foo --description "toto"
  get list of directories/file from a pipe

  rpmerizor --guess /opt/software-2.0


rpmerizor uses the prefix WARNING and ERROR for diagnostics


0 if all is OK

>= 1 if the script detect a problem


you can use 3 levels of configuration file - global (host) : /etc/rpmerizorc - user : ~/.rpmerizorc - local (by project) : .rpmerizorc

they are loaded in this order : the last config wins ! (but can also be overloaded by program options)

a default rc file is available on /usr/share/doc/rpmerizor/


it is designed to work with rpm version 4 and greater


  you can send your bug reports to gerbier@users.sourceforge.net

  if you are using the guess option, rpmerizor guess the package name and version from
  the first given directory. summary and description are filled with default comments.


to edit the specfile, the code use EDITOR if exists. Else, it use the vi editor


if you want to build an rpm package from a tar file, which contain a makefile, you should use checkinstall (http://asic-linux.com.mx/~izto/checkinstall/)

if you want to build an rpm package from an already installes rpm package, you should use rpmrebuild (http://rpmrebuild.sourceforge.net/ )