apt/apt-get のエイプリルフール牛さん

昨夜なんとなく apt コマンドのイースターエッグの apt moo を実行してみました．するといつもとは違った牛が!

Debian sid 環境だったのでもしかしてキャラクター変更されたのだろうかと思ったのですがしばらくしてから再度実行するといつもの牛．

時計を見ると日付が04/01から04/02に変わったところでした．
04/01に出現したってことはエイプリルフールな牛かな?と faketime command を利用して1日前にして実行すると出てきました．

$ faketime -f '-1d' apt moo
_ _
(_\___( \,
)___ _ Have you smashed some milk today?
/( (_)-(_) /
,---------' \_
//( ',__,' \ (' ')
// ) '----'
'' ; \ .--. ,/
| )',_,'----( ;
||| ''' '||

若しくは04/01を指定

$ faketime '20190401' apt moo
_ _
(_\___( \,
)___ _ Have you smashed some milk today?
/( (_)-(_) /
,---------' \_
//( ',__,' \ (' ')
// ) '----'
'' ; \ .--. ,/
| )',_,'----( ;
||| ''' '||

多分この辺ですね

$ grep -A21 bool\ DoMooApril ./apt-private/private-moo.cc
static bool DoMooApril() /*{{{*/
{
// by Christopher Allan Webber and proposed by Paul Tagliamonte
// in a "Community outreach": https://lists.debian.org/debian-devel/2013/04/msg00045.html
if (_config->FindI("quiet") >= 2)
{
std::cerr << "Have you smashed some milk today?" << std::endl;
return true;
}
c1out <<
" _ _\n"
" (_\\___( \\,\n"
" )___ _ Have you smashed some milk today?\n"
" /( (_)-(_) /\n"
" ,---------' \\_\n"
" //( ',__,' \\ (' ')\n"
" // ) '----'\n"
" '' ; \\ .--. ,/\n"
" | )',_,'----( ;\n"
" ||| ''' '||\n";
return true;
}

1.4 で入ったぽい?

$ zgrep -A2 \(1.4\) /usr/share/doc/apt/changelog.gz
apt (1.4) unstable; urgency=medium

* The April Fools' Release

Community Outreach to other communities

Brogrammer cow — GNU MediaGoblin

ちなみに moo moo でカラフルな牛が出てこないときは，APT::Moo::Color オプションが使えるようです．(エイプリルフール牛は単色のみみたい)

永続化する場合や色をカスタマイズしたい場合は /usr/share/doc/apt/examples/configure-index.gz を参考に /etc/apt/apt.conf に設定すればok．

$ zgrep moo::color /usr/share/doc/apt/examples/configure-index.gz
apt::moo::color "<BOOL>";
$ echo 'apt::moo::color "true";' | sudo tee -a /etc/apt/apt.conf
apt::moo::color "true";

apt – configure the colors – Unix & Linux Stack Exchange

$ dpkg-query -W apt faketime
apt 1.8.0
faketime 0.9.7-3
$ lsb_release -dr
Description: Debian GNU/Linux buster/sid
Release: unstable
$ uname -m
x86_64