Slackware の pkgtool の Setup セクションを補完するスクリプトを作る

# [当方執筆の技術情報に関するライセンス、免責事項、禁止事項](https://qiita.com/EarthSimilarityIndex/items/6b9bb2ccacb38aae15b1)
****

# 本記事について
動機から製作、公開の流れをおおざっぱにまとめました。何かの役に立てて下さい :no_mouth::thumbsup:

# 製作動機

Slackware のシステム管理・パッケージ管理は柔軟であり、インストールの際セットアップで行った変更の「ほぼ」全てを、後から /sbin/pkgtool の Setup セクションで対話的に再設定可能です。

ですが残念ながら、コンソールのキーマップの選択、及びパッケージグループの選択に関しては再設定のための対話的ツールが見当たりません。

ならばやることはひとつ。ないなら作れば良いのです。

# 使用許諾で悩む

最初はセットアップスクリプトの流用を考えましたが、Slackware 付属スクリプトの使用許諾で認められる範囲なのか判断がつきません。そこで「表面的には類似するが内部処理は別物」なツールにしようと考えました。

# 組み立て
シェルスクリプトは基本的には「コマンド行の列挙」です。したがって、部品毎に動作をチェックする場合、ターミナルエミュレータから簡単に行えます。なお、長く複雑なパーツを一行でテストしたい場合、「[シェル芸](https://qiita.com/tags/%E3%82%B7%E3%82%A7%E3%83%AB%E8%8A%B8)」タグを参照するのが良いでしょう。

# 互換性の検証
bash 上でテストし組み立てたシェルスクリプトが ash（もしくは dash）でも動くか確認します。気をつけていても bash 固有の便利機能が入ってしまうのはよくある話。

また、今回は関係ありませんが、GNU なコマンドには便利に拡張されたものも多く、結果として「他の UNIX-Like な環境では動かない」スクリプトの原因になってしまうことも。移植性を上げる場合は使用するコマンドの互換性にも気を配る必要がありそうです。

# リファクタリング
ノリと勢いによる、あるいはアルコールドリブン開発によるコードは大概可読性に難があります。各種「[コーディング規約](https://qiita.com/search?q=%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E8%A6%8F%E7%B4%84)」が可読性向上のヒントとして有用でした。

# 公開
コードの公開先は色々ありますが、今回は GitLab で。

## Linuxコンソールのキーマップを再設定するツール（テストも出来るよ）
ダウンロードしたスクリプトを /usr/local/sbin に置いて実行権限を付与。
使用時は root で実行して下さい。
https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/blob/master/fa-keyboardreconfig
![VirtualBox_Slackware_14.2_14_07_2019_16_06_35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/41e0090f-3789-d3e1-1a7e-002ed4b12ac1.png)
![VirtualBox_Slackware_14.2_14_07_2019_16_06_47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/8a33029a-ca14-9336-8241-d561dfe8bb8c.png)
![VirtualBox_Slackware_14.2_14_07_2019_16_07_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/9328e31e-d135-34c1-c65e-2ee0d2b3f991.png)
![VirtualBox_Slackware_14.2_14_07_2019_16_07_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/c6926f70-5788-f237-336f-4c261306b157.png)

## パッケージグループを再選択するツール（削除も出来るよ）
ダウンロードしたスクリプトを /usr/local/sbin に置いて実行権限を付与。
使用時は root で実行して下さい。
https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/blob/master/fa-packagereselect
![VirtualBox_Slackware_14.2_14_07_2019_16_08_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/cdac8bd4-7a2b-90c4-9b2a-d2f09550ccc8.png)
![VirtualBox_Slackware_14.2_14_07_2019_16_08_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/aa8a3610-a5c2-b3ab-cefd-7d88505ea099.png)
![VirtualBox_Slackware_14.2_14_07_2019_16_08_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/c4019a1a-d2e9-677a-70e4-65a064118b11.png)
![VirtualBox_Slackware_14.2_14_07_2019_16_09_47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/06087563-efb5-ca4c-06d1-002e955d7350.png)
![VirtualBox_Slackware_14.2_14_07_2019_16_10_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/220519bc-065b-4524-0800-7c7a9cedbbf3.png)
![VirtualBox_Slackware_14.2_14_07_2019_16_10_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/d702b93a-acb9-ce39-241a-a4370bb9f24b.png)
![VirtualBox_Slackware_14.2_14_07_2019_16_11_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/6c33ab39-db08-d60e-e6b7-515b9ab0e110.png)

## デフォルトのランレベルを変更するツール（シングルユーザーモードも選べるよ）
ダウンロードしたスクリプトを /usr/local/sbin に置いて実行権限を付与。
使用時は root で実行して下さい。
https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/blob/master/fa-defaultrunlevel

![VirtualBox_Slackware64_17_08_2019_17_44_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/aeb64ea4-e4b8-01f1-b5bf-aa6e3c03d160.png)
![VirtualBox_Slackware64_17_08_2019_17_45_59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/649b69b1-a595-519d-b46e-95d4154cd1f2.png)
![VirtualBox_Slackware64_17_08_2019_17_46_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/5f4d92f1-b409-064c-e191-951ac16e70cd.png)

# TODO
コメント行で各部の動作説明を書く。