¿Por qué el hombre imprime "dame dame dame" a las 00:30?

1625

Hemos notado que algunas de nuestras pruebas automáticas fallan cuando se ejecutan a las 00:30 pero funcionan bien el resto del día. Fallan con el mensaje "dame dame dame dame" en stderr, que no era de esperar. ¿Por qué estamos obteniendo esta salida?

Jaroslav Kucera
fuente
55
Vinculación en: unix.stackexchange.com/questions/226716/…
Jeff Schaller
54
No lo entiendo ¿Por qué su script de prueba llama al hombre donde debería fallar?
Joshua
19
@Joshua Porque queríamos el "manpath" - 'man -w'. Ver la respuesta
Jaroslav Kucera
67
por el bien de la historia, ¿por qué necesitas hacer un 'hombre-w' cada minuto? ¿Qué estás probando realmente?
Olivier Dulac
22
@OlivierDulac Se activa solo una vez en la prueba. Hemos cambiado el orden de las pruebas y, de repente, este error apareció cuando se activó a las 00:30 ...
Jaroslav Kucera

Respuestas:

2146

Estimado @colmmacuait , creo que si escribe "hombre" a las 0001 horas, debería imprimir "dame dame dame". #abba @marnanel - 3 de noviembre de 2011

er, fue mi culpa, lo sugerí. Lo siento.

Casi toda la historia está en el compromiso. El mantenedor del hombre es un buen amigo mío, y un día hace seis años le dije en broma que si invocas al hombre después de la medianoche debería imprimir " dame dame dame ", debido a la canción de Abba llamada " Dame dame dame un hombre después de la medianoche ":

Bueno, en realidad él lo puso en . Algunas personas se divirtieron al descubrirlo, y en su mayoría lo olvidamos hasta hoy.

No puedo hablar por Col , obviamente, pero no esperaba que esto causara algún problema: ¿qué tipo de prueba se rompería al analizar la salida de man sin una página especificada? Supongo que no debería sorprenderme que finalmente apareciera uno, pero tardó seis años.

(El mensaje de confirmación me llama Thomas, que es mi nombre legal aunque no lo uso mucho en línea).

Este problema se ha solucionado con commit 84bde8 : ejecutar man with man -wya no activará este huevo de pascua.

Marnanel Thurman
fuente
361
¡Uy! Nunca tuvo la intención de afectar los casos sin errores. No tuve en cuenta esto cuando implementé git.savannah.gnu.org/cgit/man-db.git/commit/… . Solucionado en master: git.savannah.gnu.org/cgit/man-db.git/commit/…
Colin Watson el
3
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
terdon
13
Los comentarios son para pedir aclaraciones y / o discutir los puntos técnicos de una respuesta. Si quieres hablar sobre los méritos de los huevos de Pascua, tómalo para chatear .
terdon
8
Mamma mia, ahora realmente lo sé!
Enrico Maria De Angelis
3
tal vez el hombre necesita un parámetro serio
Patrick Taylor el
422

Este es un huevo de pascua man. Cuando ejecuta mansin especificar la página o con -w, genera "gimme gimme gimme" en stderr, pero solo a las 00:30:

# date +%T -s "00:30:00"
00:30:00
# man -w
gimme gimme gimme
/usr/local/share/man:/usr/share/man:/usr/man

El código de salida siempre es 0.

La salida correcta siempre debe ser:

# man -w
/usr/local/share/man:/usr/share/man:/usr/man
# echo $?
0
# man
What manual page do you want?
# echo $?
1

La cadena "gimme gimme gimme" se puede encontrar en RHEL, OpenSUSE, Fedora, Debian y probablemente más, por lo que no es realmente específica de la distribución. Puede grepsu manbinario para verificar.

Este código es responsable de la salida , agregada por este commit :

src/man.c-1167- if (first_arg == argc) {
src/man.c-1168-   /* 
http://twitter.com/#!/marnanel/status/132280557190119424 */
src/man.c-1169-   time_t now = time (NULL);
src/man.c-1170-   struct tm *localnow = localtime (&now);
src/man.c-1171-   if (localnow &&
src/man.c-1172-       localnow->tm_hour == 0 && localnow->tm_min == 30)
src/man.c:1173:     fprintf (stderr, "gimme gimme gimme\n");

Me puse en contacto con el soporte de RHEL sobre este problema.

¡La cuerda proviene de la conocida canción de ABBA Gimme! ¡Dame! ¡Dame! (Un hombre después de la medianoche) .


El desarrollador de man-db, Colin Watson, decidió que había suficiente diversión y que la historia no se olvidaría y eliminó por completo el huevo de pascua .

Gracias Colin!

Jaroslav Kucera
fuente
148
En plataformas faketimedisponibles, puede probar esto sin necesidad de cambiar la hora del sistema: faketime '00:30:00' man(Debian 8).
roaima
55
@rrauenza Ahí está el boleto de buzilla: bugzilla.redhat.com/show_bug.cgi?id=1515352
Jaroslav Kucera
38
El autor ahora ha apretado el huevo de Pascua para que solo se ejecute man, no man -w: git.savannah.nongnu.org/cgit/man-db.git/commit/src/… y el comentario de Colin sobre la confesión de Marnanel ^ Wanswer .
Martijn Pieters
21
Mencionemos que la confirmación inicial se activó a las 12:01 a.m. Una confirmación de seguimiento cambió eso a las 12:30 am con el mensaje de registro de confirmación "doce y media" que nuevamente se cita de la misma canción.
egmont
66
@ 0x90 man -wimprime la ruta de búsqueda de la página manual actual, que es el tipo de cosa que podría usar razonablemente como un bloque de construcción para otra cosa, por ejemplo, si la cosa que estaba automatizando involucraba instalar o probar páginas manuales.
Colin Watson el
363

Después de reflexionar, eliminé este huevo de Pascua . Se habrá ido en el próximo man-db 2.8.0.

Me alegro de que haya hecho sonreír a algunas personas, lo que, después de todo, era todo el propósito, y mis notificaciones de Twitter, etc., sugieren que la mayoría de la gente pensó que era más divertido que molesto. Aún así, algunas personas lo encontraron molesto, y seis años parece una muy buena carrera para ese tipo de cosas; probablemente no va a obtener una exposición significativamente mejor de lo que ya tiene inesperadamente a través de esta pregunta. Hora de acostarse.

Colin Watson
fuente
122
Estoy realmente triste de que hayas decidido eso. En mi opinión, muchas personas lo tienen por huevos de pascua.
Septiembre
36
No descartaré agregar algo diferente en el futuro, ¡aunque con más cuidado! Sin embargo, se estaba poniendo un poco rancio, y el humor requiere novedad.
Colin Watson
31
Tengo que estar de acuerdo con @Seth, es triste ver algo que nos hizo sonreír, necesitamos más de eso en este mundo.
Videonauth
190
Espero que esto no rompa ningún flujo de trabajo xkcd.com/1172
Lakshay Garg
74
@ColinWatson Creo que deshabilitar esto en un flujo predeterminado es una buena idea, por lo que no interrumpe el flujo de trabajo de nadie. Pero al mismo tiempo, es una pena que se haya quitado una obra maestra. Puede agregar una bandera especial como man -abbay cuando se dispara después de la medianoche le daría el huevo de Pascua.
Bartlomiej Skwira