Pregunta

Tengo varias aplicaciones que desea implementar mediante rpm. Algunos de los archivos en mis implementaciones de aplicaciones tienen preferencia sobre archivos de otros paquetes desplegados. Simplemente incluyendo los nuevos archivos en el paquete de implementación hará que los conflictos rpm.

Busco la forma correcta de utilizar rpm para actualizar / reemplazar archivos ya instalados.

Ya han llegado con algunas soluciones pero nada parece del todo bien.

  • Mantener versiones personalizadas de las revoluciones por minuto que contienen los archivos originales.

Esto parece como una gran cantidad de trabajo por un tiempo relativamente pequeña recompensa a pesar de que se siente menos como un truco que algunas de las otras soluciones posibles.

  • Incluya los archivos de la rpm con otro nombre y copiarlas en la sección posterior.

Esto funcionaría, pero significará ensuciando el sistema con múltiples copias de los archivos. También significa un mantenimiento adicional en la especificación de construcción rpm para cada archivo.

  • Usar wget en la sección posterior para reemplazar los archivos originales de algún servidor conocido.

Esto es similar a la técnica de copia, pero los archivos ni siquiera viviría en el número de revoluciones. Esto podría actuar como un buen autoridad configuración central embargo.

  • implementar los archivos como archivos nuevos, a continuación, utilizar enlaces simbólicos para anular los originales.

Esto es también similar a la técnica de copia, pero con menos desorden. El problema aquí es que algunos archivos no se comportan así como enlaces simbólicos.

¿Fue útil?

Solución

A lo mejor de mi conocimiento, RPM no está diseñado para permitir la actualización / reemplazar los archivos existentes, así que cualquier cosa que hagas va a ser un truco.

De las opciones que usted lista, elegiría # 1 como el mal truco menos si los sistemas de destino son sistemas que admin (como usted dice, es más trabajo, pero es la solución más limpia) y una combinación de # 2 y # 4 (enlaces simbólicos cuando sea posible, las copias en las que no) si estoy creando las RPMs para los demás sistemas (para no tener que distribuir un montón de RPM, pero me gustaría que sea muy claro en el docs lo que estoy haciendo).

No ha descrito, que necesitan ser actualizados o sustituidos archivos y cómo tienen que ser actualizados. Dependiendo de las respuestas a estas preguntas, es posible que tenga un par de otras opciones:

  • Muchos programas están diseñados para utilizar un archivo de configuración por defecto individual y también para agarrar los archivos de configuración desde un subdirectorio .d. Por ejemplo, Apache utiliza /etc/httpd/conf/httpd.conf y /etc/httpd/conf.d/*.conf, por lo que su RPM podría soltar archivos bajo /etc/httpd/conf.d en lugar de modificar /etc/httpd/conf/httpd.conf. Y si se podrían hacer los archivos que necesita para modificar son archivos de configuración que no siguen este patrón, pero que, se puede sugerir a los encargados del paquete que agregan esta capacidad; esto no le ayudaría de inmediato, pero haría que las futuras versiones más fácil.
  • Para utilidades de línea de comandos como sendmail y lpr que pueden ser proporcionados por varios paquetes, el sistema alternatives (ver man alternatives) permite más de 1 RPM que proporciona estas utilidades para ser instalados lado a lado. De nuevo, si los archivos que necesita para modificar son utilidades de línea de comandos que no siguen este patrón, pero podrían introducirse en, puede sugerir a los encargados del paquete que agregan esta capacidad.
  • cambios en los archivos de configuración en los sistemas que usted administra mejor se gestiona a través de una herramienta como Cfengine o Títeres en lugar de a través RPM personalizados. Creo que Red Hat favorece la marioneta.
  • Si estuviera creando los RPMs para los sistemas que no administran, me gustaría considerar el uso de una herramienta de terceros, como Bitrock y el vertido todas mis cosas bajo /opt sólo por lo que no tendría que pisar sobre los archivos instalados por RPM otros administradores.

Otros consejos

También puede ejecutar rpm -U --replacefiles --replacepkgs ..., que le dará lo que quiere.

Vea aquí para más información sobre RPM% Archivos de directivas:

http: //www.rpm. org / max-rpm / s1-rpm-dentro-archivos-list-directives.html

Puede utilizar los argumentos de las secciones de pre y% post% en el scriptles RPM para determinar si va a instalar, actualizar o eliminar paquetes.

Si $ 1 es 0 - entonces estamos quitando cosas viejas. Orientación 0 paquetes instalados. Si $ 1 es 1 - entonces estamos instalando cosas nuevas. Dirigidas a un total de 1 paquete para ser instalado. Si $ 1 es 2 o más - entonces estamos actualizando este paquete y $ 1 representa el número de paquetes ya instalados

.

Estas secciones ayudan a la gestión de archivos entre las versiones. No perder de vista lo que está haciendo entre las versiones y consideremos lo que se podría hacer si fueran a saltar una o dos versiones.

Tener consideración para estas cosas y usted debe ser bueno para ir!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top