Dinuxとは、、、

DreamHope with intelfikeがお贈りする、
Developer専用の、
Distribution of Linux !!



●Dinux誕生の経緯

UbuntuにUnityが搭載されてからアプリ開発効率が下がってしまった!!
これが、Dinux誕生の最大の理由です。

「なら、Mintでいいんじゃ?」と仰られる方もお見えになるでしょう。
それでも、Mintでは駄目だったのです。(2012年時点⇒今はMintでもある程度OKだと判断しています)
セキュリティの姿勢などが主な理由です。
開発者の立場としては使えない場面が多々あり、やはりUbuntuかな?と。。。

Ubuntuは、LinuxとしてRedHatと同等以上にセキュリティパッチの提供が早く魅力的です。
その点CentOS等はセキュリティパッチの提供がかなり遅いので、サーバ自身と四六時中向き合っているサーバ管理が仕事ならともかく、開発に集中したい場面では使い辛いと言わざるを得ません。
Ubuntuは選択しているパッケージの種類も、セキュリティの姿勢も、ハードウェア対応も、サポートも良いのですが、Unityがとてつもなく使い辛いことが難点でした。
使い辛いだけならまだしも、プログラムの切り替えに常に2ステップ以上かかってしまうため、とてつもなく開発効率が下がってしまうのです。
また、更にそのストレスで開発効率がグンと落ちて、Unityが気になって気になって開発どころではなくなってしまうのです。

それなら、以前のようにGNOME2に戻せば(≧∇≦)bイイ!!!
メモリも256MBあれば充分に余るし、動きも機敏になる。(※256MBは32bit版Dinuxの場合で、64bit版16.04では670MB〜1.3GB程度かかりましたorz)
つまり、軽くて早い開発マシン用OSになる。
ついでに、コンパイラ等の開発ツールやGitにDocker、ddrescure、GIMP、InkScapeも入れちゃえ!!
スマホ対応Webアプリを開発しようと思うと、FirefoxよりもChromium(Chrome)のほうがいいし、日本語入力は圧倒的にMozcがいい!
サーバ類は選択して自由に入れられたほうがいいし、デーモンも自分で削除追加すればいい!!
ということで、Ubuntuを使いたいが、UnityやLinux Mintは使いたくないため、Dinux誕生となったのです!(2012年4月)


●Dinux14開発時の葛藤

Dinux12はとても快適でした。
起動はSSD併用なら1秒起動という劇的なスピード感に軽快な操作性。
メモリは256MB、ストレージは4GB、CPUはデュアルコア2GHzで超快適な開発環境を実現してくれていました。
けれど、Server版にDesktop版、Note版とVersionを多く作り過ぎたことが問題でした。
私自身が8台ほどのDinuxを常時管理しているため、「このDinuxはどのVersionなのか?」という具合に複数管理時に不都合が出ていたのです。
また、Ubuntu12.04ベースのDinux12では、iPodのマウントができないという問題点もありました。
そうして、Ubuntu14.04ベースの1種類のDinux14を誕生させる気になったのです。

ところが、Dinux14ではコアとなるベースOS(デスクトップ環境)をどれにするのか相当悩まされました。
まずは、32bitか64bitかについて、結構悩みました。
Ubuntuでの推奨は64bitのamd64になっていましたが、2GB以下のメモリしかない場合は32bitのi386を使えとも言っていました。
仮想環境での利用やXPマシンの後継として利用されることを前提とするとメモリが512MB程度の環境もあり得ることになります。
ということで、32bitのi386ベースに決定しました。

また、開発用途で考えるとやはり作業効率の悪いノーマルUbuntuのUnityは有り得ません。
Gubuntuは素のままでは使えませんが、改良しやすい利点があるものの、かなり重めです。
Kubuntuは使い勝手は良いのですが、やはりかなり重めです。
Lubuntuはウルトラ級の超ド軽量だけれど、LXDEは使い勝手やデフォルトソフトウェア群が若干特殊です。
Xubuntuは超軽量で、XfceはGNOME2派生なので使い勝手も問題ありません。
なので、ほぼXubuntuに決めていたのですが、サポート期間がノーマル5年に対し、Xubuntuは3年に短縮されているのです。
LTSは長期サポート版ですので、サーバ用途では基本になります。
そう考えると、3年サポートのXubuntuで決定しきれませんでした。

ならば、Linux Mint MATEはどうなのか。
Linux Mintが2014年段階でとても良くなってきたことは知っていました。
けれど、セキュリティ面での不安は拭えません。
では、Arch Linuxはどうなのか。
小回りは効くけれど、面倒なイメージはつきまといます。
散々悩んだ結果、やはりベースOSはノーマルUbuntuに決め、Dinux14の開発に望みました。
Dinux14を作り始め、結局Linux MintベースのVersionも作ってしまいました。
Ubuntu14.04は日本語入力周りのiBus等の設定がかなり改悪されており、使いづらかったからです。(16.04では元に戻りました)
それでも、やはりLinux MintベースのDinux14もしっくりこず、完成したものの、結局私個人としてはDinux12を使い続けていました。


●Dinux16開発時の葛藤

2016年3月に大きな問題が発生しました。
それは、32bitLinux版Chromium(Chrome)が2016年3月でサポート切れになるという問題です。
Dinux12のサポート期間は2017年の4月なのですが、その1年近く前段階で32bitLinux版Chromium(Chrome)がサポート切れになってしまうのです。
2016年3月時点で、Dinux12としては後1年のサポート期間があり、Dinux14としては後3年のサポート期間があるものの、32bit版Linuxは限界に来てしまいました。
そこで、64bit版LinuxをベースとしたDinux16の開発を余儀なくされました。

Dinux14開発時の葛藤のように、ベースOS(デスクトップ環境)をどれにするのかで悩まされました。
けれど、少なくとも64bit版は決定していました。
「もう、Debianでもいいかもしれない」とも思いましたが、Debian創始者のイアン・マードックさんも亡くなられたし、Ubuntuのセキュリティアップデートの早さには変えられないものがあり、UbuntuベースもしくはLinux Mintベースがやはり理想的なのかな?とは考えていました。
そこで、色々調べているうちに、「Ubuntu MATE」なる存在を確認しました。
「Ubuntu MATE」はUbuntu派生ディストリビューションで、更にこのUbuntu16.04から純正フレーバーとなるというのです。

気になったので、徹底的に調べてみると、Ubuntu14.04のときから登場したディストリビューションで、根本的な考え方や揃えているパッケージ群が、Dinux12やDinux14とほぼ同じだったのです!!
びっくりしました。
私と同じ不自由を覚え、私とほぼ同じ目標を持って、私の創ったDinuxとほぼ同等のディストリビューションがDinuxより2年遅れながら誕生していたのです。

「もしかしたら、もうDinuxは必要なくなるかも知れない!!」とまで感じました。
Ubuntu16.04が出てすぐに、Unity版とMATE版を試してみました。
Unity版は相変わらず最低でした。
けれど、MATE版は「あれ?こんなVersionのDinux創ったっけ?」と勘違いしてしまうほどDinux的でしっくりきました。

しばらく使うと、Dinuxと比較してMATE版に足りない部分は開発特化した部分であることはすぐに解りました。
そこを補うことがDinuxの役目であることも解りました。
そこで、Dinux16の開発を行う気持ちになりました。




●Dinux16完成

Dinux12から早4年。
2016年4月にDinux16が完成しました。
Dinux12と比較し、使い勝手は互角ですが、相当重くなってしまいました。
起動も1秒では不可能で、早くとも7〜10秒程度かかってしまいます。
Dinux12は256MBのメモリで充分でしたが、Dinux16では1.3GBは最低限必要です。
もしかしたら、Ubuntu MATEベースにするのではなく、Unityベースからの大改造を私自身が行えばメモリ使用量も押さえられたのかも知れません。
けれど、それではDinux化にかかる時間が3倍にも跳ね上がってしまいます。
また、私自身の年齢的なことも踏まえると余り無理はしたくありません。
幸いにも私の管理しているDinuxマシンの全てにおいて、4GB以下のメモリのマシンもありません。
もはやスマートフォンでさえ2GBのメモリを当たり前に搭載している時代なので、1.3GBは許容範囲と判断しました。
ApacheとTomcatの同時併用開発もできるようにしたので、開発用OSとしてはかなり使い勝手は良いと思います。




●Dinux16Wの制作と完成
2017年4月。 Dinux16の完成から1年が経ち、知らぬ間に「Chromeとffmpeg」のリポジトリの変更やApacheの設定等が(私の知らぬ間に)大幅に変更されていました。
このままでは、今までのDinux16では問題が発生してしまいます。
また、Dockerがようやく成熟してきたことも感じていました。
それ以上にintelfike氏と話すうちにDinuxにDockerとgolangを加えたいと考えるようになってきました。
そこで、リポジトリの修正やApacheの設定変更に加え、DockerとgolangとATOMを追加し「DreamHope with intelfike」制作の「Dinux16W」が完成しました。
なお、Dockerおよびgolangの追加にはintelfike氏に多大なご支援をいただきましたことをここに感謝申し上げます。




●Dinux16Wの適用手順

Dinux16Wは「64bit版Ubuntu MATE 16.04 LTS」をインストールした直後に実行する想定で作っています。
後に「64bit版Ubuntu 16.04 LTS(Unityベース)」からでも実行できるように改変しました。 アップデートも自動でやっていますので、マシンやストレージ・ネットワークの状態によって変わりますが、12分〜60分くらいかかるようです。
Dinux化の推奨手順は下記の通りとなります。
 ① 「64bit版Ubuntu MATE 16.04」をインストールしてください。(ダウンロードURLは下記参照)
   ※くれぐれも「MATE」版であることをご確認ください。
 ② このサイトにアクセスし、Dinux16W.zipをダウンロードしてください。(ダウンロードURLは下記参照)
 ③ ダウンロード後、「ダウンロードディレクトリ」にあるDinux16W.zipを「/home/ユーザ名/」(ダウンロードディレクトリの一つ上の階層)のディレクトリに移動させてください。
   ※これを行わないと、ディレクトリ名の改変で、「Downloadディレクトリ」とは別に「ダウンロードディレクトリ」が残ってしまいます。
 ④ Dinux16W.zipを解凍してください。
 ⑤ 解凍された「Dinux16W」ディレクトリ内にある「Dinux.sh」を実行して下さい。
   ※Caja(ファイルマネージャ)からダブルクリックで実行する場合には、「端末内で実行する」を選択して下さい。
 ⑥ Dinuxを実行中にいくつか入力項目がありますので、適宜入力して下さい。
   ※Dinuxの実行終了後、自動で再起動されます。
 ⑦ Dinux化が終了すれば、もう必要ないので「Dinux16W.zip」ファイルと「Dinux16W」ディレクトリは削除してください。




●Dinux16Wの利用方法

 ①Apache2について
   Apache2においては、「Dinux利用者が一人のケース」と「Dinux利用者が複数のケース」の2種類のケースを想定し、2種類のインストール方法を提供しています。
     ・「Dinux利用者が一人のケース」においては、「/home/ユーザ名/www.lamp/」にWebページを置いてください。
      ブラウザ側では、「http://localhost/」または「http://IPアドレス/」、「https://localhost/」、「https://IPアドレス/」でアクセスすることでそのページを閲覧することが可能です。(自己認証型SSL対応)
     ・「Dinux利用者が複数のケース」においては、それぞれのユーザの「/home/ユーザ名/www.lamp/」にWebページを置いてください。
      ブラウザ側では、「http://localhost/~ユーザ名/」または「http://IPアドレス/~ユーザ名/」でアクセスすることでそれぞれのページを閲覧することが可能です。
    PHP(.php)やPython(.py)、C言語(.cgi)などでのサーバサイドプログラム(Web開発)も「www.lamp」ディレクトリにそのスクリプトやプログラムを置けば動作します。

 ②Tomcatについて
   Servlet、JSPともに動作します。    Tomcatにおいては「Dinux利用者が一人のケース」しか想定していません。
   ServletやJSP自体がレンタルサーバのような複数利用者での提供がなされていないように、とても不向きなのでDinuxにおいても一人の利用者のケースのみの提供にしてあります。
   「/home/ユーザ名/www.tomcat/」にWebページを置いてください。
   ブラウザ側では、「http://localhost:8080」または「http://IPアドレス:8080」でアクセスすることでそのページを閲覧することが可能です。

 ③golangについて
   golangは下記2種類の方法で提供していますので、好みの利用スタイルに従って選択して下さい。
    ・Ubuntu用に構成されたgolang(Version 1.6)をインストール
      ※セキュリティパッチやアップデートを自動で実行してくれます。
      ※安定した環境での開発を希望される場合はこちらを選択してください。
    ・golang1.4.xのソースコードをダウンロードしgccでコンパイルし、最新版golangのソースコードをダウンロードしgolang1.4.xでコンパイル
      ※ver 1.7.xや1.8.xの新機能を利用することができますが、セキュリティパッチやアップデートは手動で行う必要性があります。
      ※最新版の新機能を利用したい場合はこちらを選択してください。

 ④C言語について
   C言語はgccでコンパイルできるようになっています。
   ローカルプログラムとしても、WebCGIプログラム(サーバサイドCGIプログラム)としても動作可能です。
   設定次第で簡単にFastCGI等にも対応可能です。

 ⑤PHPについて
   PHPはローカルスクリプトとしても、Webモジュール型スクリプト(サーバサイドスクリプト)としても、WebCGIスクリプト(サーバサイドCGIスクリプト)としても動作可能です。

 ⑥Pythonについて
   Pythonはローカルスクリプトとしても、WebCGIスクリプト(サーバサイドCGIスクリプト)としても動作可能です。

 ⑦ATOMについて
   ATOMにおいては、日本語入力の実現とメニュー等の日本語化は実現しておりませんので各自で設定してください。




●Dinux16Wの開発環境

 ①bash開発
 ②C/C++開発
 ③LAMP(Perl)開発
 ④LAMP(Python)開発
  Python2用MySQLドライバは、python-mysql-connector(Python2用MySQLドライバ テストコード
  Python3用MySQLドライバは、python3-mysql-connector(Python3用MySQLドライバ テストコード
  ※テストコードは「password」を実行環境のMySQLの「root」ユーザのパスワードに変更して下さい
 ⑤LAMP(PHP)開発
 ⑥ローカルPython開発
 ⑦Go開発(2種類の開発環境が用意されています)
 ⑧Tomcat(servlet/JSP)開発
 ⑨Docker開発
 ※全てGitを利用することが可能です




●Dinux16Wの主なツール類

 ATOM
 GIMP
 Inkscape
 Synaptic
 Docker CE
 Git
 ffmpeg
 ddrescue
 testdisk
 Wireshark




●ダウンロード

 ①「64bit版Ubuntu MATE 16.04」のダウンロード
  ダウンロードサイト:https://ubuntu-mate.org/
  64bit版Ubuntu MATE 16.04 LTS

   ②Dinux16W.zipのダウンロード(2017/06/08)
  ダウンロードサイト:http://dinux.net/
  Dinux16W.zip




●リンク
 ①intelfike氏の運営するWebサイト
  リンクサイト:intelf.link




●開発後書

今後、継続的にUbuntu MATEが登場してくれるのなら、私にとっては朗報です。
また、Canonicalが今後Unity開発の打ち切りを宣言したことも嬉しい限りです。
その理由は、Dinux開発工期が圧倒的に短くなるからです。
OSの改変はとても時間がかかります。
今回も数十回にも及ぶディストリビューションのインストールテストや、数百回にも及ぶUbuntu MATEインストール初期状態からのDinuxの実行をテストし、その結果の評価を繰り返しました。
一般的なアプリケーション開発なら数秒から数分でエラーメッセージが出てデバッグ開始ができるのですが、一度の実行で30分程度はかかるDinux開発はそうはいきません。
やはり、今年のゴールデンウィークもDinuxで潰れました。
今や数百人(数十人!?)程度しか使われていない超小規模なディストリビューション(?)ですが、今年のゴールデンウィーク分程度くらいは、お役に立てれば幸いです。
何らかの問題点やご要望、ご意見などありましたら、DreamHope(dreamhope.net@gmail.com)までご連絡ください。




©2012-2017 DreamHope