2012-06-25 11 views
5

Ich versuche ein RPM in Fedora 15 zu erstellen, das meine Software installieren wird, aber damit meine Software nach der Installation korrekt funktioniert, muss ich auch andere bearbeiten (Konfigurationsdateien) auf dem System, fügen Sie Benutzer/Gruppen usw. hinzu. Einige dieser Aufgaben dürfen nur vom Benutzer root ausgeführt werden. Ich weiß, dass ich nie einen RPM als root-Benutzer erstellen muss, und ich verstehe, warum das so eine schlechte Idee ist. Wenn ich jedoch Shell-Skriptanweisungen zu meiner Spezifikationsdatei hinzufüge (% post,% prep ... any section), um die notwendigen Dateien zu bearbeiten, Benutzer/Gruppen usw. hinzuzufügen, scheitert mein rpmbuild-Befehl mit der Meldung "Permission denied" (nicht überraschenderweise).Erstellen Sie ein RPM, das auch Dateien manipulieren und Benutzer hinzufügen kann

Was ist der beste Weg, damit umzugehen? Muss ich meinen Benutzern sagen, dass sie zuerst mein Paket installieren und dann vielleicht ein Shell-Skript als root ausführen, um alles zu konfigurieren? Das scheint nicht sehr elegant zu sein. Ich hatte gehofft, einem Benutzer zu erlauben, alles mit einem einfachen Befehl wie "yum install mysoftware" zu machen.

Ein Großteil meiner Forschung schlägt vor, dass dies vielleicht nicht einmal über RPM getan werden sollte. Ich habe viele Teile von Maximum RPM gelesen, und viele andere gute Ressourcen, aber habe nicht gefunden, was ich suche. Ich bin neu beim Erstellen von RPMs, konnte aber bereits erfolgreich eine einfache Spezifikationsdatei für meine Software erstellen ... Ich kann einfach nicht alles richtig konfigurieren, nachdem das Paket entpackt und am richtigen Ort installiert wurde. Jede Eingabe wird sehr geschätzt!

Antwort

5

Der %pre Abschnitt Ihrer RPM .spec Datei sollte alle Bedingungen überprüfen, die für die Installation Ihrer Software erforderlich sind.
Der %post Abschnitt Ihrer RPM .spec Datei sollte alle Änderungen vornehmen, die für die Ausführung Ihrer Software erforderlich sind.
Um Dateiberechtigungsfehler im Abschnitt %post Ihrer RPM-Datei .spec zu vermeiden, können Sie die Dateiberechtigungen und den Besitz im Abschnitt %files festlegen. Auf diese Weise verfügt der Benutzer, der den RPM installiert, über die entsprechenden Berechtigungen zum Ändern der Konfigurationsdateien.

%install 
# Copy files to directories on your installation server 

%files 
# Set file permissions and ownership on your installation server 
%attr(775, myuser, mygroup) /path/to/my/file 


%pre 
# Check if custom user 'myuser' exists. If not, create it. 
# Check if custom group 'mygroup' exists. If not, create it. 
# All other checks here 

%post 
# Perform post-installation steps here, like editing other (configuration) files. 
echo "Installation complete." 
+0

Vielen Dank! Dies ist hilfreich. Was beide Antworten bisher durch weitere Recherchen herausgefunden haben, ist, dass die% pre - und% post - Abschnitte (unter anderem) NICHT während des rpmbuild - Prozesses ausgeführt werden (wie% build und% install), sondern nur während des rpm-Befehl, der als root ausgeführt werden kann. Ich glaube nicht, dass dies in allem, was ich bisher gelesen habe, offensichtlich und deutlich ist. – flash

7

useradd sollte in %pre ausgeführt werden und sollte nicht während rpmbuild ausgeführt werden. Das ist die übliche Art, das zu tun. Ich würde die packaging guidelines und speziell den Abschnitt users and groups empfehlen.