
Wir haben festgestellt, dass einige unserer automatischen Tests fehlschlagen, wenn sie um 00:30 Uhr ausgeführt werden, aber den Rest des Tages einwandfrei funktionieren. Sie schlagen mit der Meldung fehl
gimme gimme gimme
in stderr
, was nicht erwartet wurde. Warum erhalten wir diese Ausgabe?
Antwort1
Liebling@colmmacuait, ich denke, wenn Sie um 00:01 Uhr „man“ eingeben, sollte „gimme, gimme, gimme“ ausgegeben werden.#abba
@marnanel- 3. November 2011
äh, das war mein Fehler, ich habe es vorgeschlagen. Tut mir leid.
So ziemlich die ganze Geschichte steht im Commit. Der Betreuer von man ist ein guter Freund von mir, und eines Tages vor sechs Jahren sagte ich im Scherz zu ihm, dass, wenn man man nach Mitternacht aufruft, es "Gib mir Gib mir Gib mir", wegen des Abba-Songs namens "Gib mir! Gib mir! Gib mir! (Ein Mann nach Mitternacht":
Nun, das tat er tatsächlichLeg es In. Einige Leute fanden es amüsant, es zu entdecken, und wir haben es bis heute größtenteils vergessen.
Ich kann nicht für Col sprechen, natürlich, aber ich habe nicht erwartet, dass dies jemals Probleme verursachen würde: Welche Art von Test würde beim Parsen der Ausgabe von man ohne Angabe einer Seite abgebrochen? Ich sollte wohl nicht überrascht sein, dass irgendwann einer auftauchte, aber es hat sechs Jahre gedauert.
(DerCommit-Nachrichtnennt mich Thomas, das ist mein gesetzlicher Vorname, obwohl ich ihn online nicht oft verwende.)
Dieses Problem wurde mit Commit behoben84bde8:Running Man man -w
löst dieses Easter Egg nicht mehr aus.
Antwort2
Dies ist ein Easter Egg in man
. Wenn Sie es man
ohne Angabe der Seite oder mit ausführen -w
, wird "gimme gimme gimme" an stderr ausgegeben, aber nur um 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
Der Exit-Code ist immer 0.
Die korrekte Ausgabe sollte immer sein:
# man -w
/usr/local/share/man:/usr/share/man:/usr/man
# echo $?
0
# man
What manual page do you want?
# echo $?
1
Die Zeichenfolge „gimme gimme gimme“ ist in RHEL, OpenSUSE, Fedora, Debian und wahrscheinlich noch mehr zu finden, ist also nicht wirklich distributionsspezifisch. Sie können grep
Ihre man
Binärdatei zur Überprüfung verwenden.
Dieser Code ist für die Ausgabe verantwortlich, hinzugefügt vondieses 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");
Ich habe wegen dieses Problems den RHEL-Support kontaktiert.
Die Saite stammt vom bekanntenABBA-Lied Gimme! Gimme! Gimme! (A Man After Midnight).
Der Entwickler der man-db, Colin Watson, entschied, dass es genug Spaß gab und die Geschichte nicht vergessen werden würde unddas Easter Egg komplett entfernt.
Danke, Colin!
Antwort3
Nach einiger Überlegung habe ichdieses Easter Egg wurde entfernt. Es wird im kommenden man-db 2.8.0 nicht mehr vorhanden sein.
Ich bin froh, dass es einige Leute zum Lächeln gebracht hat, was ja schließlich auch der Sinn der Sache war, und meine heutigen Twitter-Benachrichtigungen und so weiter lassen darauf schließen, dass die meisten Leute es eher amüsant als nervig fanden. Trotzdem fanden es einige Leute nervig, und sechs Jahre scheinen für so etwas eine ziemlich lange Zeit zu sein; es wird wahrscheinlich nicht wesentlich mehr Aufmerksamkeit bekommen, als es durch diese Frage ohnehin schon unerwarteterweise hat. Zeit, es zu den Akten zu legen.