Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

dateien per zu erzeugendem rpm verteilen

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
thoryss
Newbie
Newbie
Beiträge: 2
Registriert: 21. Mär 2005, 17:10
Kontaktdaten:

dateien per zu erzeugendem rpm verteilen

Beitrag von thoryss »

hallo zusammen,

ich hoffe ich bin mit meiner frage hier richtig? als "linux-normalo" habe ich folgendes problem:

ich muss eine ganze liste von dateien auf andere server (sles 9) verteilen. diese dateien liegen in einem, unter /opt/ befindlichen userverzeichnis! genauer gesagt müssen die dateien im ordner /opt/irgendeinuser/install/ verteilt werden. das ganze spielt sich ebenfalls auf einem sles 9 server ab.

am optimalsten und auch so gewollt wäre eine verteilung nach dem rpm-mechanismus. bei den zu verteilenden dateien handelt sich jedoch nicht um zu compilierende quelltexte, sondern lediglich um skripte, steuerdateien und diverse datenpakete. dies wäre sicherlich mit einem tar.gz-file leichter zu bewerkstelligen, aber es muss unbedingt ein rpm sein!!!

letztendlich muss ich an dieser stelle gestehen ein dau zu sein! das was ich via google zum thema rpmbuild gefungen habe, hat mir leider auch nicht so recht weitergeholfen! aber vielleicht kann mir ja jemand von euch im bezug auf die erstellung einer (vermeindlich simplen) rpm-datei weiter helfen.

wenn ich etwas an infos vergessen habe, werde ich diese natürlich nachreichen...

tausend dank,
thomas
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

die Lösung besteht in dem "richtigen" spec-file, dem Bauplan für RPMs.

es ist durchaus möglich Software so zu verteilen.

Typischerweise besteht ein Spec-File aus den folgenden Komponenten:
Name: <name>
Summary: <kurze Beschreibung>
Version: <versionsnummer>
Release: <releasenummer>
License: GPL
Group: <Gruppe>
URL: <download-URL>
Source: <name des source-tar.gz>
BuildRoot: <temporäres Verzeichnis>
Requires: <was braucht dieses RPM an anderen RPMs>
Packager: <wer hat das RPM gebaut>
BuildArch: noarch

%description
<Beschreibung>

%prep
%setup

%install
<shell Befehle zum kopieren>

%clean
[ -d %{buildroot} -a "%{buildroot}" != "" ] && rm -rf %{buildroot}

%files
%defattr(-,root,root)
/opt/*

%changelog
<Historie>
In der %prep Anweisung wird deine Quelle entpackt nach /usr/src/packages/SOURCES. Das Spec-File steht in /usr/src/packages/SPECS.

In deinem Fall werden keine %build Anweisungen ausgeführt, nur die %install Befehle, diese kopieren deine Dateien in ein temporäres Verzeichnis, die buildroot. In der buildroot wird sozusagen ein Spiegelbild deiner Verzeichnisstruktur angegeben.
Die Verzeichnisse die du brauchst legst du mit mkdir -p %{buildroot}/opt/pfad an
dort steht dann z.Bsp cp datei %{buildroot}/opt/pfad/datei

In der %files Anweisung lässt du dann alle Dateien bearbeiten und in das RPM packen.

Das fertige RPM steht dann in /usr/src/packages/RPMS/noarch.

Beschreibungen zu dem spec-file findest du z.Bsp. hier:
http://www.rpm.org/max-rpm/index.html
http://www.linuxhaven.de/dlhp/HOWTO/DE-RPM-HOWTO-7.html
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User
thoryss
Newbie
Newbie
Beiträge: 2
Registriert: 21. Mär 2005, 17:10
Kontaktdaten:

Beitrag von thoryss »

danke, das hat mich in der tat etwas weitergebracht. ich habe allerdings den fehler "rpmbuild error: No source number 1" erhalten. was ich falsch gemacht habe ist mir noch nicht so ganz klar. bei der fehlersuche habe ich jedoch einen noch einfacheren weg gefunden per rpm dateien zu kopieren:

wenn man punkte wie %prep, %setup, %patch, %build und %install entfernt und lediglich unter %files nachfolgendes einträgt, funktioniert das wirklich auf banale weise!


%defattr(-,root,root)
/opt/irgendeinuser/install/skript.sh
/opt/irgendeinuser/install/datei.conf


man kann der einfachhalt halber auch /opt/irgendeinuser/install/* verwenden!

nebenwirkungen habe ich bis jetzt noch nicht entdecken können!
also nochmals viele grüsse und vielen dank für die schnelle hilfe

thomas
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

thoryss hat geschrieben:... ich habe allerdings den fehler "rpmbuild error: No source number 1" erhalten. was ich falsch gemacht habe ist mir noch nicht so ganz klar.
SOURCE: <name des source-tar.gz>
enthält typischerweise eine Angabe bestehend aus <name>-<version>-<release>.tar.gz oder <name>-<version>-<release>.tar.bz2
evtl entsprach dein Archiv nicht dieser Namensgenerik.

Ansonsten sollte deine Lösung auch so gut funktionieren, ABER durch die Anweisung %defattr(-,root,root) werden alle Dateien mit root:root installiert. Die Defaultrechte ergeben sich aus der aktuell für root gesetzen umask. Hier wäre eine Verbesserung denkbar durch die Angabe einer anderen umask in der %defattr Anweisung. Diese Anweisung kann auch pro Datei(-gruppe) separat angegeben werden.
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User
Antworten