rpm bauen

anti43

nicht mehr wegzudenken
hallo!
gibts hier jemanden, der weiss wie man rpms baut? ich habe eine java-application geschrieben, die ich gerne als rpm zur verfügung stellen würde.:)
 
Here you go, die SPEC Datei einer (beliebigen ) Java Anwendung inklusive KDE Menu Eintrag und Symlink in /usr/bin, angepasst für Netbeansprojekte:

Code:
Summary: Java app bla
Name: GJA
Version: 1
Release: 2
License: GPL
Group: Applications/Office
BuildRoot: %{_builddir}/%{name}-root
URL: http://www.internet.org
Vendor: geilo
Packager: Gerhard Isa Lothar Oswald
Prefix: %{install_dir}
BuildArchitectures: noarch
Requires:   java >= 1.6

%define my_dir /home/anti/NetBeansProjects/<Projectname>
%define install_dir /usr/local
%define app_short_name shorty
%define Version 1
%define Release 2

%description
Bla bla mega project bla
%prep


%build
cd %{my_dir}/dist/
rm -rf README.TXT
tar -cf %{_builddir}/%{app_short_name}%{Version}.%{Release}.tar *

%install
pwd
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{install_dir}/%{app_short_name}/%{app_short_name}%{Version}
cd $RPM_BUILD_ROOT%{install_dir}/%{app_short_name}/%{app_short_name}%{Version}.%{Release}.tar

# Create menu entry
mkdir -p $RPM_BUILD_ROOT%{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/misc
cat > $RPM_BUILD_ROOT%{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/misc/%{app_short_name}%{Version}.desktop <<EOF
[Desktop Entry]
Name=%{app_short_name} Version %{Version}
GenericName=%{app_short_name}%{Version}
Comment=lalala
Exec=java -jar %{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/%{app_short_name}%{Version}.jar
Icon=%{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/misc/%{app_short_name}d.png
Terminal=False
StartupNotify=false
Categories=Office;X-SuSE-Core-Office
Encoding=UTF-8
Type=Application
EOF

# Create run script
cat > $RPM_BUILD_ROOT%{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/misc/%{app_short_name}%{Version}.sh <<EOF
#!/bin/bash
java -jar %{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/%{app_short_name}%{Version}.jar
EOF

chmod 644 $RPM_BUILD_ROOT%{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/misc/%{app_short_name}%{Version}.desktop
cp -f $RPM_BUILD_ROOT%{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/misc/%{app_short_name}%{Version}.desktop /usr/share/applications/%{app_short_name}%{Version}.desktop
cp -f %{my_dir}/install/%{app_short_name}.png $RPM_BUILD_ROOT%{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/misc/%{app_short_name}.png

%post
ln -fs %{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/misc/%{app_short_name}%{Version}.sh  /usr/bin/%{app_short_name}%{Version}

%postun
rm -f /usr/share/applications/%{app_short_name}%{Version}.desktop
unlink /usr/bin/%{app_short_name}%{Version}

%clean
rm -rf $RPM_BUILD_ROOT
rm -rf %{_builddir}/%{app_short_name}%{Version}.%{Release}.tar *

%files
%defattr(755,user,user)
%{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/*.jar
%{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/lib/*.jar
%{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/misc/*

%attr(755,root,root)
%{install_dir}/%{app_short_name}/%{app_short_name}%{Version}/misc/%{app_short_name}%{Version}.sh



%changelog

in der build.xml des Netbeans Projectes nun

Code:
  <rpm
        specFile="specname.spec"
        topDir="install/rpm"
        cleanBuildDir="true"
        failOnError="true"/>

einfügen, und die RPM build Ordnerstruktur erstellen!

Gruss,

Andreas
 
Oben