はじめに
某ベンダで、クラウドの人材育成企画と研修トレーニングのデリバリを担当しています。
今回は、懐かしいネタで記事を書いてみようと思います。slコマンドを使って、Amazon Linux 2のターミナルにSL機関車を走らせてみたいと思います。
slについては、詳細がwikiに記載されています。ぜひこちらを参考をください。
Debian/Ubuntuだとdebパッケージが提供されているので、apt-getで簡単にインストールできます。Amazon Linux 2のyum リポジトリではRPMパッケージが提供されていないようなので、今回はUbuntuのDEBパッケージをalienコマンドでRPMパッケージに変換してみようと思います。
alienを利用したslパッケージ(.rpm)の作成
UbuntuのEC2を立ち上げて、以下の手順でパッケージを作成します。手順は、全てroot権限で実施します。
1. slパッケージ(.deb)のダウンロード
# apt-get -d install sl
/var/cache/apt/archives以下にパッケージ(.deb)がダウンロードされます。
2. alienのインストール
# apt-get install alien
3. .debから.rpmへの変換
# alien -r /var/cache/apt/archives/sl_5.02-1_amd64.deb
sl-5.02-2.x86_64.rpm generated
4. 変換したパッケージ(.deb)の詳細確認
# rpm -qpi sl-5.02-2.x86_64.rpm
Name : sl
Version : 5.02
Release : 2
Architecture: x86_64
Install Date: (not installed)
Group : Converted/games
Size : 35525
License : see /usr/share/doc/sl/copyright
Signature : (none)
Source RPM : sl-5.02-2.src.rpm
Build Date : Fri Mar 18 05:55:34 2022
Build Host : ip-172-31-34-123.ap-southeast-2.compute.internal
Relocations : (not relocatable)
Summary : Correct you if you type `sl' by mistake
Description :
Sl is a program that can display animations aimed to correct you
if you type 'sl' by mistake.
SL stands for Steam Locomotive.
(Converted from a deb package by alien version 8.95.)
alienで変換したエビデンスが残っています。
(Converted from a deb package by alien version 8.95.)
5. Amazon Linux 2へのインストール
# rpm -Uvh sl-5.02-2.x86_64.rpm
error: Failed dependencies:
libncurses.so.6(NCURSES6_5.0.19991023)(64bit) is needed by sl-5.02-2.x86_64
libtinfo.so.6(NCURSES6_TINFO_5.0.19991023)(64bit) is needed by sl-5.02-2.x86_64
ライブラリの依存関係でエラーが出てます。単純にパッケージ変換で移植できると思ったのですが、失敗。。。ソースファイルからコンパイルする方針に変更して、再トライしてみます。
[再トライ] ソースファイルからコンパイルする
1. slコマンドのソース入手
Ubuntuからソースファイルを取得しようと思いましたが、GitHubに最新のソースコードが公開されています。最新のversion 5.03を入手します。
2. 必要ライブラリの追加
ヘッダファイルを確認するとcurses.hが必要になりそうです。EPEL(Extra Packages for Enterprise Linux)を有効にして、必要なライブラリを追加します。
# yum install epel-release
# yum install ncurses-devel
3. コンパイル
# make
4. 実行
# ./sl
Amazon Linux 2 のターミナルにSL機関車が走ります。ポッポッポー♪♪♪ポッポッポー♪♪♪懐かしい〜。
おわりに
パッケージ形式の移植で簡単に出来るかなーと思ったのが大きな見込違いで、3時間近く試行錯誤してしまいました。家の環境もMacになって久しく、自前でコンパイルしてPPをインストールする機会もなくなりました。でも、たまにはこういう作業も懐かしくていいですね。