org configurar available upgrade rpm rpmbuild specifications

upgrade - configurar - no package mongodb-org available.



La actualizaciĆ³n de RPM desinstala el RPM (4)

Estoy actualizando nuestro proyecto RPM. El problema es que cuando actualizo de projectname-1.0-0 a projectname-1.0-1, primero instala el nuevo proyecto y desinstala el proyecto anterior, que, en general, elimina mi proyecto por completo. He utilizado la opción "vv" durante la actualización y el resultado mostró que la desinstalación se realizó después de la instalación.

Alguien por favor ayuda con este problema. ¿Hay algo que deba cambiar específicamente en la especificación de RPM o en las opciones de rpmbuild?


Cuando actualiza un paquete RPM, los scripts se ejecutan en el siguiente orden:

1. %Pre of new package 2. %Post of new package 3. %Preun of old package 4. %Postun of old package

Si la instalación es nueva o se actualiza, hay un argumento que se pasa a cada secuencia de comandos que representa la cantidad de RPM instalados del mismo paquete con diferentes versiones. Para los scripts pre y post será 1 en caso de que se instale por primera vez. Para los scripts preun y postun, será 0 para la última desinstalación.

Lo que podría estar sucediendo en su caso es que los scripts preun o postun pueden estar eliminando archivos que son útiles para un nuevo paquete. No necesita preocuparse por la eliminación manual de archivos en los scripts postun, ya que se manejará de manera inteligente a través de RPM.

ref: actualización y desinstalación


Sí, cuando se produce una actualización de RPM, RPM primero instala la nueva versión del paquete y luego desinstala la versión anterior del paquete. Sólo se eliminan los archivos del paquete anterior. Pero sus scripts (es decir,% pre,% post,% preun,% postun) deben saber si están manejando una actualización o simplemente una instalación o desinstalación simple.

El comando rpm pasará un argumento a sus scripts, es decir, $ 1, que es un recuento del número de versiones del paquete que están instaladas. La siguiente tabla (de la Guía de RPM de RedHat por Eric Foster-Johnston) proporciona una muestra de los posibles valores.

Install the first time: 1 Upgrade: 2 or higher (depending on the number of versions installed) Remove last version of package: 0

Por lo tanto, en su% preun, es probable que desee verificar si "$ 1 = 0" antes de eliminar cualquier servicio.

Para obtener más información (y una mejor tabla), consulte: http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch09s04s05.html


Sí. Durante la instalación de rpm, se llamarán los scripts% install y% post. Después de la instalación exitosa, se llamará a los scripts% preun y% postun para desinstalar la versión anterior de rpm. Si no se manejan adecuadamente, estos scripts% preun y% postun pueden manipular los cambios introducidos por% install y% post scripts.

El rpm establece un argumento de $ 1 con los valores apropiados para distinguir el número de versiones de rpm instaladas. Durante la instalación nueva de projectname-1.0-0, se invocará% install y% post scripts con $ 1 establecido en 1, lo que indica que esta es la única versión activa. Cuando se actualice a projectname-1.0-1, se llamarán% install y% post scripts con $ 1 establecido a 2. Después de lo cual, se llamará% preun y% postun scripts con $ 1 establecido a 1 para limpiar las cosas de projectname -1.0-0. Por lo tanto, al escribir el archivo de especificaciones basado en el valor de $ 1, podemos manejar las actualizaciones de manera efectiva.


es importante entender cómo funcionan las secciones de desinstalación en la actualización

Tenemos una variable de $ 1 que puede verificarse en pre, post, not, no post (su valor difiere según la instalación, actualización, desinstalación) Dependiendo de su valor, podemos decir si se instala o actualiza dentro de rpm

P.ej:

In Pre/post if $1 == 1 initial installation if $1 == 2 upgrade In preun/postun if $1 == 0 uninstall if $1 == 1 upgrade

Considere actualizar abc-1 de la versión 1 a la versión 2 (abc-2)

Run %pre from "abc-2". Run %post from "abc-2". Run %preun from "abc-1". Run %postun from "abc-1".