¿Cómo evito buscar actualizaciones para un módulo específico?

35

En un proyecto actual, tuve que parchear la vida de algunos módulos (jerarquía de nodos, acceso al banco de trabajo y algunos más). Estos módulos ahora son absolutamente perfectos para las necesidades del proyecto y es muy poco probable que se rompan con futuras actualizaciones del núcleo.

Dicho esto, cuando se entregue la aplicación, los clientes tendrán acceso completo (usuario 1) al sistema y, por lo tanto, se les advertirá cuando estos módulos tengan actualizaciones disponibles. Y los actualizarán, sin importar cuántas veces les ruego que no lo hagan (¡oh, qué fácil sería la vida sin clientes!).

¿Hay alguna forma (tal vez en los .infoarchivos de los módulos ) de persuadir al administrador de actualizaciones para que no busque actualizaciones para estos módulos?

EDITAR

Soy consciente de la project status urlclave que está disponible para el .infoarchivo, así que supongo que podría establecerlo en una URL inexistente, pero preferiría hacerlo de una manera limpia si es posible.

Clive
fuente

Respuestas:

31

Necesitas implementar hook_update_projects_alter().

Modifique la lista de proyectos antes de buscar datos y comparar versiones.

La mayoría de los módulos nunca necesitarán implementar este gancho. Es para una interacción avanzada con el módulo de estado de actualización: los simples mortales no necesitan aplicar. El caso de uso principal para este enlace es agregar proyectos a la lista, por ejemplo, para proporcionar datos de estado de actualización en módulos y temas deshabilitados. Un módulo contribuido puede querer ocultar proyectos de la lista, por ejemplo, si hay un módulo específico del sitio que no tiene lanzamientos oficiales, ese módulo podría eliminarse de esta lista para evitar advertencias de "No se encontraron lanzamientos disponibles" en El informe de actualizaciones disponibles. En casos excepcionales, un módulo puede querer alterar los datos asociados con un proyecto que ya está en la lista.

Chapabu
fuente
19

El script de empaquetado en drupal.org agrega la projectclave del archivo .info para identificar de qué proyecto proviene el módulo. El uso principal es para el módulo de estado Actualizar para monitorear las versiones de los paquetes instalados y notificar a los administradores cuando hay nuevas versiones disponibles.

Simplemente elimine o comente esta línea en el archivo .info y Drupal deja de buscar actualizaciones de este módulo.

smartinm
fuente
¿Fue esto rechazado porque es incorrecto o por alguna otra razón?
mpdonadio
¡Esto es IMO, la mejor y más fácil forma!
AyeshK
1
@MPD El uso projectmanual se desaconseja en los documentos, esa podría ser la razón de los votos negativos.
Mołot
Esta fue la única forma en que pude dejar de buscar una versión personalizada de un tema. Yo, por supuesto, me gustaría hacerlo "de la manera correcta", pero esto funcionó y la reutilización de npc está codificada pero con THEMENAME_update_projects_alter no.
nedwardss
3
@nedwardss usando MYMODULE_o THEMENAME_solo indica la ubicación en la que se debe colocar este código. Al usar este código en un archivo de función de tema en lugar de un módulo personalizado, puede procesarse en una etapa diferente y puede no funcionar como se esperaba. Los temas deben incluirse en la $projectsvariable.
emc
14

Simplemente proporcione un ejemplo de código para ayudar a la respuesta elegida:

function MYMODULE_update_projects_alter(&$projects){
    unset($projects['slug_of_the_module_you_want_to_disable']);
    //dsm($projects);  // view a list of projects
}

Ingrese el nombre del módulo en la $projects[]variable a deshabilitar. Si no está seguro de cuál es el slug (estará en minúscula y subrayado), use esa dsm()llamada o print_r()imprima una lista de los módulos.

emc
fuente
1
Una nota: sluges simplemente un nombre técnico del módulo que es el mismo que el nombre del .infoarchivo del módulo . Para que no tenga que volcar la matriz de proyectos, solo mire en la carpeta del módulo. En la mayoría de los casos, el nombre es el mismo que el de la carpeta del módulo.
Nux
1
@Nux "la mayoría de los casos" es contraproducente por las pocas veces que la bala no coincide con el nombre del módulo. Al ver y usar la babosa por primera vez, educamos al desarrollador y reducimos el número de posibles problemas.
emc
El término usado de Drupal no es babosa sino el nombre de la máquina . Slug se usa de algunos CMS como equivalente de URL canónica o alias de ruta ,
kiamlaluno
12

Puedes hacerlo de dos maneras.

  • drush pm-updatecode --lock = module_to_ignore
  • Use el módulo update_advanced . Le permite marcar los módulos que desea ignorar en la página de administración del módulo.

En particular, la configuración por proyecto para ignorar ciertos proyectos o incluso lanzamientos específicos, está ausente en la versión principal del módulo. El módulo "Actualizar la configuración avanzada del estado" restaura esta configuración y podría proporcionar funcionalidades adicionales para el módulo principal "Actualizar estado".

4life
fuente
El comando drush es exactamente lo que estaba buscando, ¡muchas gracias!
Después del
Esto drush help upcle dará la --lockayuda: --lock = <foo, bar> Agregue un bloqueo persistente para eliminar los proyectos especificados de consideración durante las actualizaciones. Los bloqueos pueden eliminarse con el parámetro --unlock, o anularse nombrando específicamente el proyecto como un parámetro para pm-update o pm-updatecode. El bloqueo no afecta a pm-download.
Yzmir Ramirez
2

Tengo el mismo problema con las actualizaciones del módulo, instalé el módulo Desactivar actualizaciones parece funcionar bien.

Este es un pequeño módulo administrativo que permite a los administradores del sitio deshabilitar la búsqueda de actualizaciones en ciertos temas y módulos, al exponer la funcionalidad de hook_update_projects_alter () en el formulario de configuración de actualización (/ admin / reports / updates / settings). Permite la selección arbitraria de temas y módulos, así como la detección automática de módulos personalizados, módulos parcheados y módulos de características específicas del sitio.

ingrese la descripción de la imagen aquí

Krishna Mohan
fuente
0

Básicamente, hiciste un tenedor, ¿verdad? Entonces deberías:

  1. Cambie el nombre para incluir su marca de horquilla
  2. En el archivo de información, configúrelo project status urlen su repositorio de ese módulo.

Por último, pero no menos importante, si no es compatible pero no fue desaprobado en favor de ningún otro módulo, considere solicitar ser co-mantenedor y compartir sus soluciones con la comunidad.

Mołot
fuente
2
Donschoe: mantenedor aquí. Estaría muy dispuesto a ayudarlo a ponerse al día si lo desea.
Berkes