Creating Linux RPM's From Already Installed Packages
You can call today's command "rpm_remk".
# ./rpm_remk mutt (If, for example, you wanted to create
an RPM of the installed version of "mutt" on your system.)
You can be as specific or general as RPM will let you when you use this
command. For instance, on my box, I only have one instance of mutt.
# rpm –qa | grep mutt
mutt-1.5.6i-64.9
Here is this script helps you out and makes it a little easier for you
to retrieve some of those old installed software packages for which the
original RPM's have long since disappeared.
# vim rpm_remk
#!/bin/bash
#
#
rpm_remk - Create new RPM's from installed RPM's
#
trap
'rm -rf $temp_var;exit 1' 1 2 3 9 15
if
[ $# -ne 1 ]
then
echo
"Usage: $0 PackageName"
exit
1
fi
existing_rpm=$1
starting_point=`pwd`
temp_var=$$
mkdir
${starting_point}/RPMS
mkdir
${starting_point}/RPMS/noarch
mkdir
${starting_point}/RPMS/`uname -i`
mkdir
$temp_var
cd
$temp_var
if
[ `expr match \`rpm -q --queryformat "%{INSTALLPREFIX}\n"
$existing_rpm\` '(none)'` -ne 0 ]
then
Prefix="/"
else
Prefix=`rpm
-q --queryformat "Prefix: %{INSTALLPREFIX}\n" $existing_rpm`
fi
echo
"%define _topdir $starting_point" >>$existing_rpm.spec
rpm
-q --queryformat "Summary: %{SUMMARY}\n" $existing_rpm
>>$existing_rpm.spec
rpm
-q --queryformat "Name: %{NAME}\n" $existing_rpm
>>$existing_rpm.spec
rpm
-q --queryformat "Version: %{VERSION}\n" $existing_rpm
>>$existing_rpm.spec
rpm
-q --queryformat "Release: %{RELEASE}\n" $existing_rpm
>>$existing_rpm.spec
rpm
-q --queryformat "Copyright: %{COPYRIGHT}\n" $existing_rpm
>>$existing_rpm.spec
rpm
-q --queryformat "Group: %{GROUP}\n" $existing_rpm
>>$existing_rpm.spec
echo
"Prefix: $Prefix" >>$existing_rpm.spec
description=`rpm
-q --queryformat "%{DESCRIPTION}\n" $existing_rpm`
echo
"%description" >>$existing_rpm.spec
echo
"$description" >>$existing_rpm.spec
echo
"%files" >>$existing_rpm.spec
rpm
-ql $existing_rpm|while read x
do
echo
"%{prefix}$x" >>$existing_rpm.spec
done
rpmbuild
-bb $existing_rpm.spec 2>&1|grep -v twice
cd
$starting_point
mv
-f ${starting_point}/RPMS/*/* .
rm
-rf $temp_var ${starting_point}/RPMS
:wq
No comments:
Post a Comment