2012-06-25 11 views
5

Sto provando a creare un RPM in Fedora 15 che installerà il mio software, ma per far funzionare correttamente il mio software una volta installato, devo anche modificare altri (configurazione) sul sistema, aggiungere utenti/gruppi, ecc. L'esecuzione di alcune di queste attività è consentita solo dall'utente root. So di non creare mai un RPM come utente root e capisco perché sia ​​una cattiva idea. Tuttavia, se aggiungo istruzioni script di shell al mio file spec (% post,% prep ... qualsiasi sezione) per modificare i file necessari, aggiungere utenti/gruppi, ecc., Il mio comando rpmbuild fallisce con il messaggio "Autorizzazione negata" (non sorprendentemente).Creare un RPM che può anche manipolare file e aggiungere utenti

Qual è il modo migliore per gestire questo? Devo dire ai miei utenti di installare prima il mio pacchetto, e quindi magari eseguire uno script di shell come root per configurarlo tutto? Non sembra molto elegante. Speravo di consentire a un utente di fare tutto con un semplice comando come "yum install mysoftware".

Molte delle mie ricerche suggeriscono che forse questo non dovrebbe nemmeno essere fatto tramite RPM. Ho letto molte parti di Maximum RPM e molte altre buone risorse, ma non ho trovato quello che sto cercando. Sono nuovo nella creazione di RPM, ma sono già stato in grado di creare con successo un semplice file spec per il mio software ... Non riesco a far funzionare tutto correttamente dopo che il pacchetto è stato decompresso e installato nella posizione corretta. Qualsiasi input è molto apprezzato!

risposta

5

La sezione %pre del file RPM .spec deve verificare tutte le condizioni necessarie per l'installazione del software.
La sezione %post del file RPM .spec dovrebbe apportare tutte le modifiche necessarie per l'esecuzione del software.
Per evitare errori di autorizzazione file nella sezione %post del file RPM .spec, è possibile impostare le autorizzazioni e la proprietà dei file nella sezione %files. In questo modo, l'utente che installa l'RPM dispone delle autorizzazioni appropriate per modificare i file di configurazione.

%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

Grazie! Questo è utile. Ciò che entrambe le risposte finora mi hanno aiutato a scoprire attraverso ulteriori ricerche è che le sezioni% pre e% post (tra le altre) NON sono eseguite durante il processo rpmbuild (come% build e% install sono), ma vengono eseguite solo durante comando rpm, che può essere eseguito come root. Non penso che questo sia chiaramente e chiaramente affermato in tutto ciò che ho letto finora. – flash

7

useradd deve essere eseguito in %pre e non deve essere eseguito durante rpmbuild. Questo è il modo standard per farlo. Vorrei raccomandare lo packaging guidelines e in particolare la sezione su users and groups.

Problemi correlati