V 0.9 © Tilo Chucholowius (tc@tc-world) 10.12.2001
Das komplette Verzeichnis noch mal kopieren
cp -r <verzeichnis>
<verzeichnis.orig>
im "Bastelverzeichnis" (<verzeichnis>) kann man dann alle Änderungen
und Ergänzungen vornehmen.
z.B.
-./configure script anpassen -oder das Makefile selbst, wenn es kein
./configure Script gibt
-Sourcen editieren
-Neue Dateien hinzufügen (Konfigfiles) die später im /etc
stehen
Jetzt jagt man über die beiden Verzeichnisse einen recursieven
diff Befehl und lenkt den Output in eine Datei um.
diff -uNr <Verzeichnis.orig>
<Verzeichnis> > ../SOURCES/Verzeichnis.patch
Name eines RPM Paketes:
<Name>-<Version>-<Release>.<Architektur>.rpm
z.B.
tac_plus-F4.0.4.alpha-1.i386.rpm
Wie sieht die Datei aus? Ich werde in diesem HOWTO mit einem Beispiel
arbeiten, dann damit wird es am deutlichsten.
So kann ein *.spec File aussehen:
Summary: TACACS+ Server
F4.0.4.alpha from www.cisco.com.
Name: tac_plus
Version: F4.0.4.alpha
Release: 2
Packager: tc@tc-world.de
Copyright: GPL
Group: System Environment/Daemons
Source: http://ftp.cisco.com/tac_plus-F4.0.4.alpha.tar.gz
Patch: tac_plus-F4.0.4.alpha-buildroot.patch
BuildRoot: /var/tmp/%{name}-buildroot
%description
TACACS+ server for Linux.
The sources come from Cisco.
Version F4.0.4.alpha.
A demo configfile is
included. For detailed infos see the manpage.
%prep
%setup
%patch -p1 -b .buildroot
%build
#make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
tac_plus
make RPM_OPT_FLAGS="-O3
-fomit-frame-pointer -mcpu=pentiumpro -march=i586 \
-ffast-math -funroll-loops
-pipe -s" tac_plus
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/usr/local/bin
mkdir -p $RPM_BUILD_ROOT/usr/local/man/man1
mkdir -p $RPM_BUILD_ROOT/etc
install -s -m 755 tac_plus
$RPM_BUILD_ROOT/usr/local/bin/tac_plus
install -m 644 tac_plus.1
$RPM_BUILD_ROOT/usr/local/man/man1/tac_plus.1
install -m 644 tac_plus.confg
$RPM_BUILD_ROOT/etc/tac_plus.confg
#%cleancd
#rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
/usr/local/bin/tac_plus
/usr/local/man/man1/tac_plus.1
/etc/tac_plus.confg
%doc users_guide CHANGES
%config tac_plus.confg
%changelog
* Tue Sep 22 2001
Tilo Chucholowius <tc at tc-world.de>
- some filenames and
directories modified
- democonfig added (file
/etc/tac_plus.confg)
* Wed Sep 22 2001
Tilo Chucholowius <tc at tc-world.de>
- Initial release (source
F4.0.4.alpha)
Summary: -> Hier trägt man eine Kurzbeschreibung des
Paketes ein
Name: -> Name des RPM Paketes
Version: -> Version der Software
Release: -> laufende Nr. von der RPM Paketerstellung
Copyright: -> ohne Worte (GPL, BSD, public domain etc.)
Group: -> Welcher Gruppe ist das
Paket zuzuordnen
Source: -> orginal Sourcecode (Name
des Source-Files muß mit dem verwendeten Source-File übereinstimmen)
Patch: -> Nmae des Diff-Files
welches alle Änderungen an den Sourcen enthält
BuildRoot: -> temp.Verzeichnis relativ zu / in welche die fertingen
Binärdateien während des Buildprozesses reinkopiert werden
%description
TACACS+ server for Linux.
The sources come from Cisco.
Version F4.0.4.alpha.
A demo configfile is
included. For detailed infos see the manpage.
%prep
%setup
%patch -p1 -b .buildroot
%build
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
Achtung!
Wenn man make install
verwendet, das Makefile entsprechend anpassen und $RPM_BUILD_ROOT
als root Verzeichnis einfügen sonst werden die Dateien relativ zum
Rootverzeichnis ("/") kopiert und nicht ins RPM_BUILD_ROOT Verzeichnis.
Als Folge dessen werden diese Dateien nicht ins binär- und source
RPM Paket übernommen. (<paketname>.rpm, <paketname>.srpm)
Vorschalg:
make install prefix=$RPM_BUILD_ROOT
Im Beispiel gab es kein "make install" also habe ich die Dateien einzeln "installiert".
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/usr/local/bin
mkdir -p $RPM_BUILD_ROOT/usr/local/man/man1
mkdir -p $RPM_BUILD_ROOT/etc
install -s -m 755 tac_plus
$RPM_BUILD_ROOT/usr/local/bin/tac_plus
install -m 644 tac_plus.1
$RPM_BUILD_ROOT/usr/local/man/man1/tac_plus.1
install -m 644 tac_plus.confg
$RPM_BUILD_ROOT/etc/tac_plus.confg
%cleancd
(ist zu sehen wie "rm -rf $RPM_BUILD_ROOT")
Hier können Skripte angegeben werden die vor oder nach Installation/Deinstallation
von bin-Paketen gestartet werden.
Sind shared Libraries installiert worden, ist es z.B. notwendig danach
ldconfig aufzurufen um das dem System mitzuteilen.
Sections in dennen die Shell Skripte stehen:
%doc users_guide CHANGES
%config tac_plus.confg
%changelog
* Tue Sep 22 2001
Tilo Chucholowius <tc at tc-world.de>
- some filenames and
directories modified
- democonfig added (file
/etc/tac_plus.confg)
* Wed Sep 22 2001
Tilo Chucholowius <tc at tc-world.de>
- Initial release (source
F4.0.4.alpha)
Zuserst sollten wir sicherstellen das die Verzeichnisstruktur zum
RPM's basteln vorhanden ist. Die Struktur ist konfigurierbar im /etc/rpmrc
File bzw. spezielle Einstellungen für einen bestimmten User in .rpmrc
in dessen Home-Verzeichnis.
Wir brachen:
rpm -ba testsoftware-1.0.spec
Man sollte sich dazu im SPEC Verzeichnis befinden.
Zur option -b gibt es ein paar Optionen.
ein paar Zusatzoptionen:
Bsp.:
rpm -vv -ba tac_plus-F4.0.4.alpha.spec
Den Output von rpm -ba vom Beispiel habe ich mir hier geschenkt und
würde diese HOWTO ausufern lassen.
Dank an Donnie Barnes für die engl. RPM
HOWTO Copyright © 1999 by Red Hat, Inc. Rev. V3.0 1999 an die
ich mich angelehnt habe.
Den Overkill an Infos zu RPM "Maximum RPM" gibt es bei http://www.rpm.org.
Meinungen, Anregungen, Fragen,Wünsche --> tc@tc-world.de