テックブログ

技術ネタ

ターミナルで魚を眺める

こんにちは、技術部のfです。

今回は技術ネタ…とは少し違いますが、ターミナルから海が楽しめる(?)
Asciiquarium」をインストールしてみました。

利用環境は以下の通りです。

$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

$ perl -v

This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi
(with 39 registered patches, see perl -V for more detail)

Copyright 1987-2012, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

インストールとは言っても、READMEにある通り実体は単一のPerlスクリプトの為、
基本はダウンロードして必要なCPANモジュール(Term::Animation)を
インストールするだけのようです。

それでは早速ファイルをダウンロードします。

$ wget --no-check-certificate https://robobunny.com/projects/asciiquarium/asciiquarium.tar.gz
--2019-05-31 22:45:59--  https://robobunny.com/projects/asciiquarium/asciiquarium.tar.gz
robobunny.com (robobunny.com) をDNSに問いあわせています... 108.224.131.233
robobunny.com (robobunny.com)|108.224.131.233|:443 に接続しています... 接続しました。
警告: robobunny.com の証明書(発行者: `/C=US/O=Let\'s Encrypt/CN=Let\'s Encrypt Authority X3')の検証に失敗しました:
  発行者の権限を検証できませんでした。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 15436 (15K) [application/x-gzip]
`asciiquarium.tar.gz' に保存中

100%[======================================================================================================>] 15,436      79.0KB/s 時間 0.2s

2019-05-31 22:46:01 (79.0 KB/s) - `asciiquarium.tar.gz' へ保存完了 [15436/15436]

ダウンロードしたasciiquarimを展開します。

$ tar zxf asciiquarium.tar.gz

$ ls asciiquarium_1.1/
CHANGES MANIFEST README asciiquarium gpl.txt

Installationにある通り、/usr/local/binディレクトリにおいてみます。
コマンドとして実行できるように権限も付与します。

# cp asciiquarium_1.1/asciiquarium /usr/local/bin/
# chmod +x /usr/local/bin/asciiquarium

試しにこの状態でasciiquariumを実行してみましたが、必要なモジュールを
インストールしていない為、このままでは動作はしません。

$ asciiquarium
Can't locate Term/Animation.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/bin/asciiquarium line 42.
BEGIN failed--compilation aborted at /usr/local/bin/asciiquarium line 42.

READMEのRequirementsに記載されている「Term::Animation」CPANモジュールを
インストールする必要がありますが、
その前にCPANが入っていないので、CPANのインストールから行います。

# yum install cpan

次にCPANの初期セットアップを行います。
途中の入力が求められる箇所は、全てENTERでそのまま進みます。

# cpan

CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.

Would you like to configure as much as possible automatically? [yes] ←ENTER

Warning: You do not have write permission for Perl library directories.

To install modules, you need to configure a local Perl library directory or
escalate your privileges. CPAN can help you by bootstrapping the local::lib
module or by configuring itself to use 'sudo' (if available). You may also
resolve this problem manually if you need to customize your setup.

What approach do you want? (Choose 'local::lib', 'sudo' or 'manual')
[local::lib] ←ENTER

Autoconfigured everything but 'urllist'.

Now you need to choose your CPAN mirror sites. You can let me
pick mirrors for you, you can select them from a list or you
can enter them by hand.

Would you like me to automatically choose some CPAN mirror
sites for you? (This means connecting to the Internet) [yes] ←ENTER

(略)

Would you like me to append that to /root/.bashrc now? [yes] ←ENTER

commit: wrote '/root/.cpan/CPAN/MyConfig.pm'

You can re-run configuration any time with 'o conf init' in the CPAN shell
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.9800)
Enter 'h' for help.

cpan[1]>

これでCPANの初期セットアップが完了しました。
そのままTerm::Animationモジュールをインストールします。

cpan[1]> install Term::Animation

(略)

Test Summary Report
-------------------
t/use.t (Wstat: 256 Tests: 1 Failed: 1)
Failed test: 1
Non-zero exit status: 1
Files=1, Tests=1, 0 wallclock secs ( 0.02 usr 0.01 sys + 0.05 cusr 0.01 csys = 0.09 CPU)
Result: FAIL
Failed 1/1 test programs. 1/1 subtests failed.
make: *** [test_dynamic] エラー 1
KBAUCOM/Term-Animation-2.6.tar.gz
one dependency not OK (Curses); additionally test harness failed
/usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
reports KBAUCOM/Term-Animation-2.6.tar.gz
Running make install
make test had returned bad status, won't install without force
Failed during this command:
GIRAFFED/Curses-1.36.tar.gz : make NO
KBAUCOM/Term-Animation-2.6.tar.gz : make_test NO one dependency not OK (Curses); additionally test harness failed

「Test Summary Report」のResultがFAILになってしまいました。
上記では省略していますが、「Test Summary Report」の少し前に
以下のメッセージが出力されていました。

c-config.h:7:21: 致命的エラー: ncurses.h: そのようなファイルやディレクトリはありません
#include
^

ncurses.hが必要なようです。
yum whatprovidesで何のパッケージを入れれば良いのか確認してみます。

# yum whatprovides "*ncurses.h"
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* elrepo: ftp.ne.jp
* epel: ftp.riken.jp
latrace-0.5.11-6.1.el7.i686 : LD_AUDIT feature frontend for glibc 2.4+
リポジトリー : base
一致 :
ファイル名 : /etc/latrace.d/headers/ncurses.h

latrace-0.5.11-6.1.el7.x86_64 : LD_AUDIT feature frontend for glibc 2.4+
リポジトリー : base
一致 :
ファイル名 : /etc/latrace.d/headers/ncurses.h

ncurses-devel-5.9-14.20130511.el7_4.i686 : Development files for the ncurses library
リポジトリー : base
一致 :
ファイル名 : /usr/include/ncursesw/ncurses.h
ファイル名 : /usr/include/ncurses.h
ファイル名 : /usr/include/ncurses/ncurses.h

ncurses-devel-5.9-14.20130511.el7_4.x86_64 : Development files for the ncurses library
リポジトリー : base
一致 :
ファイル名 : /usr/include/ncursesw/ncurses.h
ファイル名 : /usr/include/ncurses.h
ファイル名 : /usr/include/ncurses/ncurses.h

どうも「ncurses-devel-5.9-14.20130511.el7_4.x86_64」を入れれば良さそうです。
yumでncurses-develをインストールしてみます。

# yum install ncurses-devel-5.9-14.20130511.el7_4.x86_64

ncurses-develパッケージのインストールが完了したので、
もう一度Term::Animationのインストールを試してみます。

# cpan
cpan[1]> install Term::Animation
Reading '/root/.cpan/Metadata'
Database was generated on Fri, 31 May 2019 10:55:17 GMT
Running install for module 'Term::Animation'
Running make for K/KB/KBAUCOM/Term-Animation-2.6.tar.gz
Checksum for /root/.cpan/sources/authors/id/K/KB/KBAUCOM/Term-Animation-2.6.tar.gz ok
Scanning cache /root/.cpan/build for sizes
............................................................................DONE

CPAN.pm: Building K/KB/KBAUCOM/Term-Animation-2.6.tar.gz

(略)

Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/use.t .. ok
All tests successful.
Files=1, Tests=1, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.08 cusr 0.01 csys = 0.11 CPU)
Result: PASS
KBAUCOM/Term-Animation-2.6.tar.gz
/usr/bin/make test -- OK
Running make install
Installing /usr/local/share/perl5/Term/Animation.pm
Installing /usr/local/share/perl5/Term/Animation/Entity.pm
Installing /usr/local/share/man/man3/Term::Animation.3pm
Installing /usr/local/share/man/man3/Term::Animation::Entity.3pm
Appending installation info to /usr/lib64/perl5/perllocal.pod
KBAUCOM/Term-Animation-2.6.tar.gz
/usr/bin/make install -- OK

途中で怒涛の警告メッセージが出ましたが(量が多すぎるので内容は割愛)、
ResultはPASSになっています。

この状態でasciiquariumを実行してみます。

$ asciiquarium


出てきました!
asciiquariumの使い方は至ってシンプルです。

Usage
-----

There are no command line arguments.
While running:
q quit
r redraw (will recreate all entities)
p toggle pause

rでredraw(再描画)、pでpause(一時停止)、qでquit(終了)です。

様々なお魚たちがのんびりと泳いでいたり、すいすい泳いでいたりします。
お魚じゃない生き物もたまに泳いでいます。

息抜きにぼーっと眺めてみても良い…かもしれません。

そういえば、先日Red Hatのロゴが帽子だけのシンプルなものに変わりましたね
過去にも何度かロゴの変更があったようですが、旧ロゴは今年でちょうど20年目だったようです。

帽子の人物のゆくえはいずこへ…

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください