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.
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".