初老丸的Plamo Linuxのススメ

この記事は [初老丸 Advent Calendar 2016](http://qiita.com/advent-calendar/2016/syoroumaru) 20 日目のエントリです。

「初老丸」の定義をよく知らないまま書いております。筆者は初老ではあるので、初老のおっさん向けの記事を書けば良いのかなという勝手な思い込みで書いてみます。

# 初老と Linux

私を初老と置いて記事を書いているので、それ以上のエキスパート初老丸な先輩方から見ると「こんな記事初老丸でもなんでもない、若造が」とか怒られそうですが（筆者は SLS とか知りませんので…）、初老丸若かりし頃 Linux を使い始めた頃といえばこんな時代ではなかったでしょうか。

* [「Run Run (るんるん) Linux」](https://www.amazon.co.jp/dp/4756130151) (なつかしい) を買ってきて Slackware + JE (+ JG) をインストール
* Software Design 誌を買ってきて、付録 CD-ROM から Plamo Linux をインストール (1.4 とかですね、確か)。シーラカンス本とかトッパンの書籍に付いてたりもしました。

初老丸的 Linux の入門ってこんな人多くないですか? え? 多くない? ああ、Red Hat Linux に JE 入れたりしてそのまま Vine とか Turbo Linux とかに行ってしまわれたのでしょうか…

まあ、いずれにせよ、今じゃ皆さん CentOS とか Debian とか Ubuntu でしょうか?

# Plamo Linux

まあ、そういう具合に（どういう具合やねん）、「いや〜、Plamo 懐かしいねえ。おれも Linux 使い始めた頃は Plamo だったよ」って方も多いんじゃないでしょうか。

そんな方でも Plamo Linux が**まだ存在して開発も活発である**とご存知でない方も多くないでしょうか!? まだ Plamo Linux は現役ですよ。

ChangeLog を見ると、これを書いている時点での最新の更新パッケージは本日!! 12 月 20 日の OpenSSH 7.4p1 パッケージですし、まあまあ今風の[公式ページ](http://www.plamolinux.org/)もあります。

## パッケージ管理

パッケージは昔ながらの依存関係管理なしのパッケージです。でも、以前はパッケージ形式は tar.gz だったでしょうが、今は tar.xz が標準です。パッケージ管理コマンドは昔ながらのシェルスクリプトで書かれた `installpkg`とか `removepkg`とか。

しかし！Plamo 6.x では、イマドキな感じにパッケージ更新チェックをするコマンドが付属しています!!

```
$ get_pkginfo
local package: fuse-2.9.4-x86_64-P1
new   package: fuse-2.9.4-x86_64-P2
URL: http://repository.plamolinux.org/pub/linux/Plamo/Plamo-6.x/x86_64/plamo/05_ext/fuse-2.9.4-x86_64-P2.txz
```

こんな風に手元にインストールされているパッケージが更新されていると表示してくれるコマンドがありますし、

```
$ get_pkginfo -d
local package: fuse-2.9.4-x86_64-P1
new   package: fuse-2.9.4-x86_64-P2
URL: http://repository.plamolinux.org/pub/linux/Plamo/Plamo-6.x/x86_64/plamo/05_ext/fuse-2.9.4-x86_64-P2.txz
downloading: fuse-2.9.4-x86_64-P2.txz
[     222704 /     222704 ]
```

こんな風にするとダウンロードもしてくれます。おまけに

```

$ get_pkginfo -i -d 
local package: fuse-2.9.4-x86_64-P1
new   package: fuse-2.9.4-x86_64-P2
URL: http://repository.plamolinux.org/pub/linux/Plamo/Plamo-6.x/x86_64/plamo/05_ext/fuse-2.9.4-x86_64-P2.txz
downloading: diskext
[      20902 /      20902 ]
downloading: ediskext
[      17787 /      17787 ]
downloading: fuse-2.9.4-x86_64-P2.txz
[     222704 /     222704 ]
Install fuse? [y/N] y
installing: fuse-2.9.4-x86_64-P2.txz
invoking: sudo /sbin/updatepkg -f fuse-2.9.4-x86_64-P2.txz
    :(略)
```

ってな感じでインストールまでできます。

まあ、新たにインストールしたいパッケージをダウンロードしてきてインストールとかする仕組みは公式にはありませんので、その辺りは昔のままですが。

get_pkginfo コマンドについては、こじまさんの gihyo.jp での連載

* [玩式草子─ソフトウェアとたわむれる日々 第66回　Plamo-5.3.1とget_pkginfoスクリプト](http://gihyo.jp/lifestyle/serial/01/ganshiki-soushi/0066)
* [玩式草子─ソフトウェアとたわむれる日々 第67回　Plamo-5.3.1とget_pkginfoスクリプト［その2］](http://gihyo.jp/lifestyle/serial/01/ganshiki-soushi/0067)
* [玩式草子─ソフトウェアとたわむれる日々 第67回　Plamo-5.3.1とget_pkginfoスクリプト［その3］](http://gihyo.jp/lifestyle/serial/01/ganshiki-soushi/0068)

に詳しいのでぜひどうぞ。

## アーキテクチャ

Plamo Linux のメンテナはそれなりの人数いますが、今アクティブに活動しているメンバーとなるともしかしたら片手で足りるかもしれません。

でも！

アーキテクチャは 32bit の i686、64bit の x86_64、そして最近開発が始まった arm があります。arm は Raspberry Pi 向けですね。

筆者はもっぱら x86_64 を使っています。

## デスクトップ環境

Plamo といえば AfterStep の Plamo ロゴ(?)入りデスクトップ画面を思い浮かべる方が多いようです。もちろん、AfterStep パッケージも残っています。

でも、イマドキのデスクトップ環境ももちろんあります。メンテナ個人の趣味（というより個人のデスクトップ環境）にあわせて、

* KDE
* Xfce
* MATE

と揃っております。私は Xfce を（公式パッケージを自分で作って）使ってますよ。特に不便はありません。

画面キャプチャ載せるの面倒なので、その辺りは以下の記事をどうぞ。

* [玩式草子─ソフトウェアとたわむれる日々 第75回　急に出ましたPlamo-6.0](http://gihyo.jp/lifestyle/serial/01/ganshiki-soushi/0075)

## パッケージ作成スクリプト

こだわりの初老丸なら、ディストリビューションのパッケージ作成時に指定されている configure オプションにご不満がある場合もあるのではないでしょうか。

もしくは、このパッケージ、最新バージョンが使いたいのにディストリビューションのパッケージは古いままやん、なんてことも多いのではないでしょうか。

そういう場合こそ Plamo Linux です。

パッケージは基本、

```
$ ./configure --prefix=/usr (その他オプション)
$ make
$ make install DESTDIR=(work)
$ cd (work) ; makepkg package.txz
```

みたいに作られており、ディストリビューション採用のパッケージシステムのお作法なんて覚える必要はありません。

そして Plamo のパッケージを作った際のスクリプトはパッケージ自身に含まれています。それは /usr/share/doc/(ソフトウェア名)-(version)/ 以下にあります。

例えば PHP 7.0.14 であれば `/usr/share/doc/php-7.0.14/PlamoBuild.php-7.0.14.gz` に保存されています。

なんと！今の Plamo の最新 PHP パッケージは wordpress が動かないはずです。ありえーん、と思っても大丈夫。上記ビルドスクリプトは単なるシェルスクリプトですから、自分で編集して configure オプションを変えて `--with-mysqli=mysqlnd --enable-mysqlnd` みたいなオプションを追加して、

```
$ ./PlamoBuild.php-7.0.14 download
$ ./PlamoBuild.php-7.0.14
```

と実行すればオレオレパッケージが即出来上がります。

これでこだわりの初老丸パッケージの作成完了です。

公式に準備されていないパッケージでも大丈夫です。前述のようなビルドスクリプトを生成するためのメタスクリプトが準備されており（パッケージインストールはされていないのでgithubのplamolinux辺りから持ってくる必要はあります）、

```
$ wget http://example.com/download/example-1.0.0.tar.gz (ソースの取得)
$ tar xvf example-1.0.0.tar.gz
$ make_PlamoBuild_allin.sh example-1.0.0
```

とやると `PlamoBuild.example-1.0.0` という名前でビルドスクリプトが作成されますので、configure option を編集したり、必要な処理を追記したりして実行すればオレオレパッケージの出来上がりです。

これで installpkg や removepkg、パッケージ更新時には updatepkg といった Plamo 標準コマンドで一発インストール、アンインストール、更新が可能になります。

ソースから直接 `./configure && make && make install` とやってしまうと、更新時にインストールしたファイルのありかに苦労したりするし、シンプルな管理しかしないとはいえパッケージ管理コマンド一発でそのあたりやってしまえるのは楽ですね。

ビルドスクリプトについてはこじまさんの gihyo.jp での連載

* [玩式草子─ソフトウェアとたわむれる日々 第86回　Plamo Linuxのビルドスクリプト再び](http://gihyo.jp/lifestyle/serial/01/ganshiki-soushi/0086)

に詳しいのでご覧ください。

## 仮想環境

Plamo 上で動かす仮想環境は KVM で動かす仮想マシンが libvirt とか virt-manager 経由で動かせたりしています。

が、ここはその話ではなく…

今 Plamo なんて動かすための PC 準備できへんわ〜、オレは Ubuntu だ！という方のために、お気楽に試せる Plamo 環境構築法をお教えしましょう!!

Ubuntu 16.04 の Server 版なら、インストールして即 `lxc launch images:plamo/6.x/amd64 myplamo` と実行すれば

```
ubuntu@xenial:~$ lxc --version
2.0.8
ubuntu@xenial:~$ lxc launch images:plamo/6.x/amd64 myplamo
Generating a client certificate. This may take a minute...
If this is your first time using LXD, you should also run: sudo lxd init
To start your first container, try: lxc launch ubuntu:16.04

Creating myplamo
Retrieving image: 69% 
```

って感じでインストールが始まります(Plamoイメージは若干サイズが大きいので少し時間かかります)。

で

```
Creating myplamo
Starting myplamo       
```

ってな感じで起動します。

```
ubuntu@xenial:~$ lxc list
+---------+---------+-------------------+------+------------+-----------+
|  NAME   |  STATE  |       IPV4        | IPV6 |    TYPE    | SNAPSHOTS |
+---------+---------+-------------------+------+------------+-----------+
| myplamo | RUNNING | 10.0.3.215 (eth0) |      | PERSISTENT | 0         |
+---------+---------+-------------------+------+------------+-----------+
```
(実際は lxd-bridge を設定したりしないとネットワークが起動してこなかったりします)

これはなんと!! Ubuntu 主導で開発されている **LXC/LXD のイメージサーバに Plamo Linux 用のイメージが存在する**から、こんなお気楽に Plamo イメージを指定して Plamo コンテナが起動できるのです!!毎日 Ubuntu ホスト上で Plamo イメージがビルドされています。

なんと、この tar.xz 形式のシンプルなパッケージのため、images.linuxcontainers.org で Ubuntu のイメージの次に作成が始まったのが Plamo イメージ!! (あまり意味のない自慢です)

![LXC/LXDの公開イメージサーバ](https://qiita-image-store.s3.amazonaws.com/0/27073/3f748f86-4036-9cfd-561f-38969f488495.png)
図: イメージサーバのリストに存在する plamo イメージ

デスクトップ版やクラウドで使う場合で LXD がインストールされていない場合でも

```
$ sudo apt-get install lxd
```

でLXDをインストールして使い始められますね。

え? オレは Ubuntu じゃないから、LXC/LXD なんて気軽にインストールできへんし試せへんわ〜、ですって?

そんな方でも大丈夫。LXDのオンライン試用環境があります。30分LXDコンテナが使えますよ!!

* [オンラインでの試用](https://linuxcontainers.org/ja/lxd/try-it/)

上記を訪れて、利用規約を読んで、同意しましたのボタンを押すと…

![Screenshot1.png](https://qiita-image-store.s3.amazonaws.com/0/27073/8841df31-159c-4b5f-85c4-22a5487803f1.png)
図：オンライン試用環境で Plamo コンテナ作成中の図

こんな風にブラウザ上で簡単に試せますね!!

コンテナができたら `lxc exec myplamo -- /bin/bash` で、もうあなたは Plamo コンテナ内にいます。

```
ubuntu@xenial:~$ lxc exec myplamo -- /bin/bash
root@LXC_NAME:~# lsb_release -d
Description:	Plamo Linux release 6.1
root@LXC_NAME:~# get_pkginfo 
** grub-2.02~beta2-x86_64-P13 should be a new package in 00_base category.
URL: http://repository.plamolinux.org/pub/linux/Plamo/Plamo-6.x/x86_64/plamo/00_base/grub-2.02~beta2-x86_64-P13.txz
```

是非体験してみてください!!

## コミュニティ活動

ここしばらく、たまに OSC なんかに出展しています。東京が過去 2 回、京都が前回の 1 回かな。

Plamo 6.0なんて、[OSCに出すからじゃあメジャーバージョン上げてリリースしよう](http://gihyo.jp/lifestyle/serial/01/ganshiki-soushi/0075)、みたいなノリでした。

* [玩式草子─ソフトウェアとたわむれる日々 第76回　Plamo Linux，OSCへ─「オープンソースカンファレンス2015 Tokyo/Fall」出展レポート](http://gihyo.jp/lifestyle/serial/01/ganshiki-soushi/0076)

Plamo 6.1 も OSC 2016 Tokyo/Spring にあわせてリリースされました。

次回の[OSC 2017 Tokyo/Spring](http://www.ospn.jp/osc2017-spring/)にも出展予定があるようですよ!!Plamo が動く実機の展示を行っていますので、是非お越しになってください。

## 初老丸がPlamoを使う理由

* 宗教的な理由からsystemdが使えない。<br/>初老としては起動スクリプトをごにょごにょいじって色々必要なデーモンを起動するもんでしょ。**そう、Plamoなら昔ながらのsysvinitです**
* インストール後は kernel 再構築がデフォルト<br/>別に Plamo 以外でもカーネルソース落としてきて再構築すればいいですよね。でもなんかやらないですね。Plamo ならカーネルソース落としてきて初老丸的には当たり前な作業の kernel make も気楽です。
* UTF-8なんてあかんやろ。やっぱり日本男児たるもの EUC-JP だ。<br/>今のソフトウェアはそんなとこは別に気にならなくて、Plamoでもユーザ作成する際にEUC-JP/UTF-8を選択しますよ。ただ、ちゃんと多言語対応プログラミングしてなくてEUC-JPだと不具合起こすソフトウェアが一部あります。一部はパッチ当ててちゃんと動くようにしてあるけど、手におえないのは放置です。例えば[firefox](https://bugzilla.mozilla.org/show_bug.cgi?id=1047223)(直らん)

# まとめ

Plamo Linux まだまだ元気ですよ!!

私なんかは仕事で使っているメインのデスクトップ環境が Plamo Linux です。つまり手元の環境を最新に保つためにパッケージ更新してるようなもんです。

LXC/LXD コンテナでも使えますし、ラズパイ版も開発中です。是非、最近の Plamo を体験してみてください!!