2012-06-25 14 views
5

Estoy tratando de crear un RPM en Fedora 15 que instalará mi software, pero para que mi software funcione correctamente una vez instalado, también necesito editar otro (configuración) en el sistema, agregue usuarios/grupos, etc. La realización de algunas de estas tareas solo está permitida por el usuario raíz. Sé que nunca crearé un RPM como usuario root, y entiendo por qué es una mala idea. Sin embargo, si agrego instrucciones de script de shell a mi archivo spec (% post,% prep ... cualquier sección) para editar los archivos necesarios, agregar usuarios/grupos, etc., mi comando rpmbuild falla con el mensaje "Permiso denegado" (no asombrosamente).Crear un RPM que también puede manipular archivos y agregar usuarios

¿Cuál es la mejor manera de manejar esto? ¿Tengo que decirle a mis usuarios que instalen mi paquete primero y luego, quizás, ejecutar un script de shell como root para configurarlo todo? Eso no parece muy elegante. Esperaba permitir que un usuario hiciera todo con un comando simple como 'yum install mysoftware'.

Gran parte de mi investigación sugiere que quizás esto ni siquiera debería hacerse a través de RPM. He leído muchas partes de Maximum RPM y muchos otros recursos buenos, pero no he encontrado lo que estoy buscando. Soy nuevo en la creación de RPM, pero ya he podido crear con éxito un archivo de especificaciones simple para mi software ... Simplemente no puedo configurar todo correctamente después de que el paquete se descomprime y se instala en la ubicación correcta. ¡Cualquier aporte es muy apreciado!

Respuesta

5

La sección %pre de su archivo RPM .spec debe verificar todas las condiciones necesarias para la instalación de su software.
La sección %post de su archivo RPM .spec debe realizar todas las modificaciones necesarias para que se ejecute su software.
Para evitar errores de permisos de archivos en la sección %post de su archivo RPM .spec, puede establecer los permisos y la propiedad del archivo en la sección %files. De esta forma, el usuario que instala el RPM tiene los permisos adecuados para modificar los archivos de configuración.

%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

¡Gracias! Esto es útil. Lo que ambas respuestas hasta ahora me han ayudado a descubrir a través de más investigaciones es que las secciones% pre y% post (entre otras) NO se ejecutan durante el proceso de rpmbuild (como% build y% install), sino que solo se ejecutan durante el comando rpm, que se puede ejecutar como root. No creo que esto se exprese de manera clara y evidente en nada que haya leído hasta ahora. – flash

7

useradd debe ejecutarse en %pre y no debe ejecutarse durante rpmbuild. Esa es la forma estándar de hacerlo. Recomendaría el packaging guidelines y específicamente la sección en users and groups.

Cuestiones relacionadas