Debianに関する世界観1(Debian GNU/Linux)です。
コミュニティベースのディストリビューション。開発とメンテナンスは有志のボランティアによる。
メンテナンスしているパッケージが多く、ほとんどの場合パッケージからソフトウェアをインストール出来る。
リリースされたバージョンをきちんとメンテナンスする。コマンド一発でアップデートでき、致命的なバグやセキュリティホールだけを最低限更新しているため、システムが壊れることが少ない。
技術レベルが高く、安定している。パッケージ管理システム(Apt/Deb/Dpkg)がRPMよりも高度で、何より使いやすい。
製品としての品質は高く、デスクトップも軽いし、バグも少なく、自宅サーバなどの用途に適している。だが、細かいところでありえない構成をしているところがある。(以下に挙げるuimやApacheなど。)
Debianから派生したUbuntuというディストリビューションは、初心者向けでデスクトップ用途に人気がある。Debianと基本システムは共通しているので、Debianが分かればUbuntuも分かる。
十分に品質が高くならなければリリースされないため、安定板ソフトウェアのバージョンが古いままになってしまったり、なかなか新しいバージョンがリリースされないことが多い。Ubuntuなどに比べてソフトウェアのバージョンが低く、ソフトウェアの機能水準としては低いことがある。「未だにuim使っているの?」など。
Red Hat系がデファクトスタンダードになってしまったことの影響から、独自色が強い。「Apacheの設定ファイル、わけ分からん」など。
インストールや設定などは、パッケージ管理システムがあるとは言え、初心者向けではない。だが、そういう時はDebianから派生したUbuntuがとても初心者にも使いやすいものとなっている。
Debian公式のマニュアルを読みましょう。
Debianは、本当に正しく動く必要がある時に使います。
Debianは、システム管理に熟練した管理者が、本当に動かなければならないシステムに使えば良いと思います。
企業の開発しているCentOSの方が安心できるとか、そういう意見もあるでしょう。CentOSという選択肢は捨てがたいですが、CentOSの問題は、Red Hatだけが開発しているものを再ビルドしているだけです。
自ら貢献し、世界に「自ら書いたコードを共有したい」と考えているプログラマ志望の学生などにもDebianはおすすめです。
ですが、「普通のやり方とは違うやり方を行う必要があるディストリビューション」でもあるため、ビジネスなどで商売のためのサポートが必要なら、Red Hatという選択になります。
Debianは、古き良きディストリビューションであるため、「昔のRed Hat Linuxの頃の無料文化が好き」だった人間にもおすすめです。
また、僕のように、「Arch Linuxのやり方を超頑張って学ぶ気力は無いが、システムを自分で構築する自由度は欲しい」といった方にもおすすめです。Debianはカスタマイズ性が高く、柔軟にシステムを構成することができます。
Debianは対応パッケージ数が多く、またさまざまなCPUアーキテクチャにも対応しており、「自分は本気で開発できる」と思っている方には、もっとも一番適したディストリビューションかもしれません。
Debianの安定版のリリースバージョンでは、リポジトリからパッケージを更新する際、致命的なバグやセキュリティホールの修正しか、基本的にアップデートはかかりません。
そのため、使い方が変わったりすることが少なく、安定したソフトウェアのバージョンを使い続けられるので、安心して使えます。
もちろん、Debianの新しいバージョンがリリースした時は、新しいバージョンへのアップグレードが推奨されます。もし、古いバージョンを使い続けていた場合、3年間の通常サポートとLTSの2年間の延長サポートがあります。
新しいDebianのバージョンを更新した場合は、さまざまなシステムの変更がかかるため、更新には注意と準備が必要ですが、多くの場合はそのままアップグレードできます。
なので、Arch Linuxのようなローリングリリース(パッケージのバージョンがどんどん最新に更新される)のディストリビューションと異なり、とても安心して使うことができます。
また、Debianはとても安定したディストリビューションです。FedoraのようなRed Hatの開発版を兼ねるディストリビューションと異なり、安定したソフトウェアのバージョンを使います。確かにUbuntuよりも上級者向けで、初心者向けではないかもしれませんが、ごてごてしたUbuntuよりもシステム全体が軽く安定しており、上級者にとってはメインマシンとしても使いやすいディストリビューションです。
Debianのもうひとつの特徴が、完全にコミュニティベースであることです。
FedoraやUbuntuのような「ひとつの企業の息がかかったディストリビューション」とは異なり、完全にコミュニティだけで開発しています。
確かに、Red HatやUbuntuよりもクセのあるところはありますが、それでも、コミュニティが開発しているため、たとえばどこかの会社の社員にならなくても、一級市民の開発者として、Debianのデベロッパやパッケージメンテナとしてコミュニティに参加することができます。
Debian開発者になる場合、先に述べた安定版ではなく、開発版(sid)にディストリビューションを更新します。リリースバージョンごとにコードネーム(映画トイ・ストーリーのキャラクターから名付けられる)が決められるリリース版と異なり、開発版のコードネームは常にsidです。この開発版において、新しいソフトウェアバージョンに対応し、不具合などの起きた問題をみんなで解決し、ソフトウェアの更新やリプレース、新技術への対応やシステム全体の更新を行うことで、Debianの開発は行われます。
sidではLinuxカーネルも最新版に更新され、システムソフトウェアやアプリケーションもどんどん新しい「動くかどうか分からないバージョン」が導入されるため、システムがいつ起動しなくなってもおかしくはなく、通常の用途に使うメインマシンをsidにすることは推奨されません。
実際のところ、Debianは、ほかの多くのLinuxディストリビューションのベースになっています。
たとえば、UbuntuやLinux Mintは、自分たちだけでそのディストリビューションのすべてを作っていません。Debianをベースとし、Debianのパッケージを使いながら、いくらかのパッケージをカスタマイズして、独自の派生版ディストリビューションを作っています。
なので、Debianを直接的に使うDebianユーザーではなくても、UbuntuやLinux Mintを使っているなら、その人は間接的にDebianの開発者の恩恵を受けています。
このようなことは、オープンソースの精神を守るLinuxとDebianだから可能なことです。
UbuntuやLinux Mintを参照のこと。
Aptを参照のこと。
Deb/Dpkgを参照のこと。
ifupdownを参照のこと。
DashはDebian Almquist shellの略で、sh互換のシェル。Bashよりも4倍高速で使うリソースも少ないながらsh互換である、という高性能なシェルである。
Debian(Ubuntuも含む)では、少し前から/bin/shはbashではなくdashである。bashの一部機能は動かないが、shを実行する時にはbashの機能は使っていないだろうという思惑から、ノンインタラクティブなシェルにはdashを使うことでDebianは高いパフォーマンスを実現している。
ただし、普通の対話的なシェルではbashが今でも標準である。
誰も言わないが当たり前のことのようにみんなが受け入れていることとして、「Debianは違いすぎる」というのが言える。
特に、Debianは使いやすさを犠牲にして、「正しさ」の方を取る。リリースが出来ないなら、無理やりリリースせずにきちんとリリースできるようになってからリリースされるせいで、スケジュール通りにリリースされないことの方が多い。また、インプットエンジンにuimを使うなど、「おいおい、本気かよ、ありえないだろ」といったリリースを本当にやるところがある。
だが、Debianのやっていることは、セキュリティや信頼性の点から考えて、筋が通っている。Debian流の設定方法も、きちんと考えられている。「Debianのやり方についていける人間」だけが使うディストリビューションだ。
そもそも、Red HatやCanonicalのような「株やアピールだけで儲けているLinux利用企業」は嫌いな人間が多い。Linuxにとってマイナスではないが、好き好まれているわけではない。本当に出来るプログラマは、Debianをサーバーに使う。それも、Debianのプロジェクト貢献者(開発者・パッケージメンテナ)の今まで築き上げてきた、信頼と実績の故であろう。
Debianは儲けないが、その代り組織やプロジェクトの運営に民主的な制度を採用している。これが悪い、という人間も多い。Debianのやり方では、何一つ前に進まない。そこが、Debian派生のUbuntuなどが好まれる理由だろう。UbuntuはDebianから大量に開発者を引き抜くなど、批判されることもたくさんしていて、waylandに対するMRIなど、ありえないプロジェクトをどんどん作っているが、とにかくLinuxやオープンソースを「良い方向」に向かわせている。Debianが母なら、Ubuntuは指導者となる青年である。そのように考えると、むしろ、Debianの貢献度の高さも知ることができるだろう。
Debianは「Debian フリーソフトウェアガイドライン」を裁定し、また「Debian 社会契約」を裁定することで、「確実にフリーなライセンスでソフトウェアを提供する」ということを約束している。単純なフリーソフトウェアのライセンスというだけではなく、差別のない平等なども定めている。Debianはそういうところがきちんとしている。Red Hatのようないつなくなるか分からない営利企業とは違う。
Debianは、使うと、なぜか軽い。特に、UbuntuのGNOMEやLinux MintのMATEと比べると、DebianのGNOMEやMATEは本当に軽い。特にLinux MintのMATEと比べて、DebianのMATEは比較にならないほど、とても軽く動く。
これは、Debianの開発者たちのレベルの高さがうかがえる。本当にバグがなく、安定しているのである。
RHELのような、軍事や超重要企業、政府のようなレベルでの、セキュリティや信頼性は無いかもしれないが、それでもなお、この安定性はRed HatやUbuntu系のディストリビューションと比べて、とても大きな優位性である。
だが、先に書いたように、Debianには「正しすぎるポリシー」があり、パッケージの選定を完全におかしくしていたり、あるいはバージョンが古くていつまでも最新のバージョンに追従していなかったりする。
不安定版のsidを使えば良い、Ubuntuなんかよりsidの方が安定している、などと言った意見もあるが、UbuntuやMintなどの「新しさを楽しむ」ディストリビューションとは、完全にすみわけができている。Debianは、Linuxディストリビューションの中で、唯一まともに使える。僕も、Fedoraで新しいソフトウェアや技術を試す以外の用途で、色んなディストリビューションを試しにインストールする以外の用途であれば、Debianを使うだろう。
Debianの問題はパッケージが古いことで、「まだこんな前のパッケージなの?ありえない」というパッケージリリースをやっているが、本当は最近はFlatpakのような新しい仕組みが増えて、Debianでも一部のパッケージだけ新しくしたりすることができるように(まだ完全ではないが)なってきている。僕もDebianのFlatpakは詳しく知らないので、ネットの情報に頼ってほしい。
Debianの問題としてもう一つ言えるのは、Red Hat系と仕組みが違うことだが、これはUbuntuなどがあるように、Debianの方式も少しずつ広まってきているから問題にはならないだろう。ある意味、「面白味がない」のであればsidを使えば良い。Debianはそもそも、sidを使って自分でパッケージやソフトウェアを開発することが主な用途である。だが、サーバー、特にWebサーバーやその他のさまざまなサーバーに使うのであればDebianである。商用サポートをしてくれる会社があまり多く存在しないことが、商用サービスの開発のためにDebianを選ぶプロのプログラマとして、ネックになる点かもしれない。特に、Debianは古いバージョンになると本当に古くなる。安定したロングタイムのサポートがないのは痛い。
実際のところ、Debianの開発者やメンテナは真面目そのものです。
たとえば、ライブラリに複数のバージョンを用意して、必要なバージョンを導入するようにしたり、パッケージのメンテナは読むべききちんとした文書を全て用意するなど、手がこんでいます。
DebianからLinuxを始めると、そうした真面目で面白いことがたくさんありますが、真面目すぎてつまらなくなるでしょう。逆に、Gentooは面白い点がたくさんありますが、ふざけた点などもあり、やっているとシステムが使い物にならなくなるでしょう。
Debianは真面目で、Gentooは面白くて、あるいはArchを使う、といった感じで上手く回っているのが最近のコミュニティ系ディストリビューションでしょう。また、Gentooは最近、もう古くなってきています。Gentooはsystemdを拒否しますが、そのうちそうした理由で無くなって、おそらくDebianとArchだけが残るでしょう。Archはシンプルですがそんなに巨大なプロジェクトではないため、最終的にDebianに戻らざるを得ません。
最近はflathubなどの新しい仕組みもあるため、「システムはDebianで、アプリケーションはflathubで」という人が増えています。巨大プロジェクトでなくても、Debianベースの面白いディストリビューション(たとえばMX Linuxなど)を使って、アプリケーションは全部flatpakで揃える人も多いのです。Linuxは最近そうした普通のOSになっています。
Debianの問題とは、パッケージが古すぎることです。
たとえば、Linuxカーネルは現在バージョンが5.xになっていますが、Debian 10では未だに4.xのカーネルを使っています。
僕は、趣味用のマシンにDebianを入れて使っていましたが、以前は起動していたGNOME端末がある時点で起動しなくなりました。
/var/log/syslogを見ても、ネットで検索しても、原因は分かりませんでした。
また、不可解なことに、僕はGNOMEよりもKDEに興味があったため、KDEを導入してみたところ、Konsoleも起動しません。
Ctrl + Alt + ファンクションキーで表示される仮想コンソールでログインしようとしても、rootログインはできますが、ユーザーログインをしようとすると、ログインした段階で画面が元に戻り、コンソールでもログインできません。
結局、問題は、GNOMEでもKDEでもなく、カーネルにあるのではないかと推測しました。カーネルが4.xの古いバージョンを使っていることが問題ではないかと(確証は得られないが)思います。
このように、Linuxを使う上では、いつか何かの原因でシステムが壊れてしまうことがあります。このような時はシステムロガーの吐くログやネットの検索などで原因を突き止めますが、きちんと解決することは保証されていません。
マイナーなディストリビューションを使って遊ぶのも面白いでしょうが、Ubuntuなどのメジャーなディストリビューションを使った方が、情報は得られやすいでしょう。
最近はWaylandやSnappyなどの新しい技術がありますが、Debianは今でもXorgです(後日注記:これは間違い。Debian 10では、GNOMEのデフォルトはWaylandを使っている)。僕は一部のアプリを使いたいためにSnappyをDebianに導入しましたが、時代は既にDebianの全盛期ではないように思います。
後日注記:カーネルが問題だと思うので、Debianは安定版では古いカーネルを使っていることもあり、僕はDebianそのものをsid(開発版)にアップグレードすることにしました。どうなるかはまだ分かりません。開発版は安定版よりも不安定なのでぶっ壊れるかもしれませんが、むしろDebianを安定版で使っていると「面白い要素が何もない」ため、また開発版に少し興味があるため、sidでどうなるかを試したかったのです。
後日注記:残念ながら、sidにしても端末は起動しませんでした。逆に、maldetectすら起動しなくなりました。残念ですが、Ubuntuでも入れようかと思います。
後日注記:原因が(たぶん)分かった。僕はマルウェア対策としてmaldetectを導入していたが、この設定ファイルconf.maldetでquarantine_suspend_user=1にしていた。これはマルウェアを検出したユーザーのアカウントを停止させるオプション。僕はこのオプションを1にした上でサンプルウイルスを検出させたため、ユーザーのアカウントが停止させられてログインできなくなったのだと思う。
maldetectも参照のこと。
実際のところ、Linuxやオープンソースソフトウェアの開発者はsidを使っている人が多いと思います。
sidは、Debianの開発版につけられたコードネームです。
sidを使うと、Linuxカーネルのようなコアコンポーネントから、GNOMEなどの重要アプリケーションまで、すべて最新版あるいは開発版がインストールされます。
問題の解決は難しくなるでしょうが、面白い環境になります。「Linuxの開発者になれるための環境が整う」という意味では優れた環境となるでしょう。
Debianの各リリースバージョンには、映画トイ・ストーリーに出てくるおもちゃのキャラクターの名前が付けられることになっている。
そして、開発版には無条件で「sid」(トイ・ストーリーに登場する悪ガキのキャラクター)が付けられる。
なぜ、トイ・ストーリーなのか、僕は知らないため憶測で書くことになるが、おそらく、「Debianは子供のおもちゃのようなものだから」だと思う。
Debian GNU/Linuxというディストリビューションは、子供のおもちゃを目指している。プロジェクトのみんなは子供のおもちゃを頑張って作っている。だから、子供のおもちゃの名前を付けるのである。そして子供のおもちゃをみんな壊してしまう悪ガキが、不安定版である開発版のことを意味する。すなわち、みんなでsidになっておもちゃを壊しまくるのである。
単なるコード・ネームではあるものの、aptの設定ファイルにリリース版のバージョンを指定する時はコード・ネームを使うことがあるので、それぞれのリリースバージョンのコード・ネームを覚えておくことは、Debianユーザーにおいて必須の豆知識である。
また、僕が思うに、最近は「プロジェクトが子供のおもちゃを作っている」というよりも、「プロジェクトそのものが子供のおもちゃになっている」ということが言えると思う。すなわち、Debianというプロジェクトそのものが子供のおもちゃになっている。だから、「みんなで子供のおもちゃをやっている」とも言えるような状況になりつつある。
2024.05.11
Debianからsystemdを取り除くことを目的としたディストリビューション。
systemdも参照のこと。
Debianパッケージ
Debian