David Thomas Baker » Linux » Creating RPMs - Simple RPM Builder Script

Here's a simple script that helps package up RPM's - designed for packaging up php code from a /var/www/html/your_project directory - can be easily modified to suite other needs.

(hmm - I hope stripslashes() hasn't played around with anything too much)

Save the below into a file called "build_rpm.sh" and then run it from a shell like:
$ ./build_rpm.sh
It will ask you questions and then spit out an RPM.
Designed to run on RHEL5 boxes - if you want to run it on other systems then check that /usr/src/redhat/ exists. Might just be /usr/src/.


#!/bin/bash
# $BASENAME is the name of your software package
BASENAME="my_program_name";
SOURCELOC='/var/www/my_php_program';

echo "Building RPM for Your Program";

echo -n "Enter Version Number for RPM: (eg: 1) ";
read VERSION;
echo -n "Enter Release Number for RPM: (eg: 2) ";
read RELEASE;

cd /usr/src/redhat/SPECS/;
echo "Building $BASENAME-$VERSION-$RELEASE.spec";
echo "Summary: Summary to be included in RPM package
Name: $BASENAME
Version: $VERSION
Release: $RELEASE
Group: Applications/Internet
License: commercial
Source: $BASENAME-$VERSION-$RELEASE.tar.gz
BuildRoot: /var/tmp/%{name}-buildroot

%description
Description to be included in RPM package

%prep
%setup -q

%build

%install
cp -rvf \$RPM_BUILD_DIR/$BASENAME-$VERSION \$RPM_BUILD_ROOT

%clean
if( [ \$RPM_BUILD_ROOT != '/' ] ); then rm -rf \$RPM_BUILD_ROOT; fi;

%files
/.

%post
echo "your program has been installed in /var/www/your_program";
echo "restarting apache... (or whatever you want to do after install here) ";
/etc/init.d/httpd restart;" > "$BASENAME-$VERSION-$RELEASE.spec";

cd /usr/src/redhat/SOURCES/
echo "Making /usr/src/redhat/SOURCES/$BASENAME-$VERSION$SOURCELOC";
if( [ -d $BASENAME-$VERSION ] ); then
# needed if previous script build was inturrupted
echo " ( removing old directory $BASENAME-$VERSION ) ";
rm -rf $BASENAME-$VERSION;
fi;
mkdir -p $BASENAME-$VERSION$SOURCELOC;
echo "Copying Code From $SOURCELOC to ";
echo "/usr/src/redhat/SOURCES/$BASENAME-$VERSION$SOURCELOC";
# bit of a dodgey - so it copies .files
cp -rf $SOURCELOC $BASENAME-$VERSION$SOURCELOC/../;

# this program requires a custom apache config -
# just using apache as an example - you can put anything here
echo "Making the apache config";
mkdir -p $BASENAME-$VERSION/etc/httpd/conf.d/;
echo "<VirtualHost *:1234>
ServerAdmin your@email
DocumentRoot /var/www/your_app
ServerName workflow
<Directory "/var/www/your_app/">
AllowOverride All
</Directory>
</VirtualHost>" > $BASENAME-$VERSION/etc/httpd/conf.d/your_app.conf;

echo "Removing some un-needed files";
#any files from your locally running /var/www/your_app that
# you dont want to include in rpm
# eg : password config files etc..
rm -rf $BASENAME-$VERSION$SOURCELOC/includes/config/;

echo "Tar/Gzipping code";
tar -cf $BASENAME-$VERSION-$RELEASE.tar $BASENAME-$VERSION;
gzip $BASENAME-$VERSION-$RELEASE.tar;
echo "About to build RPM with rpmbuild";
sleep 5;
rpmbuild -ba /usr/src/redhat/SPECS/$BASENAME-$VERSION-$RELEASE.spec;
echo "RPM built in /usr/src/redhat/RPMS/i386/";
ls -lh /usr/src/redhat/RPMS/i386/;
 

ps: this script works fine for me - however use at own risk etc.. it does a few rm's - make sure it's not deleting anything you need.

Posted by David Baker in: Linux |
Tags:
Perm Link: link
Some ads...

Search My Site

Featured Projects

Collector Comics is THE place to buy, sell, and research comics online. Launching soon.
Launch » Screenshot »
Webitor is a kick-ass easy to use, easy to extend, non-database driven Content Management System. Version 2 with reseller plan coming soon.
Launch » Version 1 »
GC Lounge is my own pet social network and test bed for social related code. Made by locals for locals.
Launch »
GG has indexed over half a million recent Trade Mark applications. This revolutionary tool is extremely valuable for industry experts.
Launch »
GCWiFi is the hub for techies interested in joining a ad-hoc wireless mesh spread across the Gold Coast
Launch »
Web based financial client management system
Launch »
OS Commerce modules and template modification
Launch »
View More Projects »

Daves Friends

BlueTeddy
WebSpark
GC Designer Forum
IPWealth Trademarks
Cheap Websites
Bonsai Shop
Webitor CMS Resellers
Hayley Crook
David Novakovic
Ben Novakovic
Richard Morwood
Gold Coast Linux
Aussie Click
CMS Website Design
Inspire Tuition
Gold Coast Music Network and Gold Coast Gig Guide

Chat with Dave

Powered by...

In the works

Webitor - Easy to use Content Management System with Shop, Newsletter, and Reseller plan