この記事はDebian/Ubuntu Advent Calendar 2017の2日目の記事です。
DebianとUbuntuはそれぞれ一部に共通したソースパッケージを持ちながら、結果として なかなか異なるディストリビューションとして様々なユーザーに利用されています、 この記事ではそれぞれの単純な優劣を論じませんが、違いを取り上げてみようと思います。
ちなみに筆者は家のデスクトップはDebian、ラップトップと職場のPCはUbuntu(Xubuntu)にしています。
Debianのアーカイブに含まれるソフトウェアはいくつかのセクションがあります。
- main(9割以上はここに属します)
- cotrib
- non-free
の3つです。
mainはライセンスがDFSG に完全に準拠するソフトウェア、
contribはDFSGに準拠するが
何かがnon-freeに依存するなどの状態に置かれているソフトウェア、
non-freeはDFSGに準拠しないが、Debianがバイナリやソースを再配布することは可能なソフトウェアが置かれます(1)。
Debianとは異なり、Ubuntuのパッケージのセクションは
ソフトウェアのライセンスとUbuntuの開発元であるCanonicalのサポートがあるかによって分類されます(2)。
参考:行っとけ! Ubuntu道場! ― 第3回 リポジトリにも種類がある!:
http://ascii.jp/elem/000/000/441/441502/index-3.html
- | Canonicalがサポートをする | コミュニティサポートがあることがある |
---|---|---|
オープンソース | main | universe |
オープンソースではない | restricted | multiverse |
この中でDebianとの興味深い関わりがある箇所は universeセクションです。
なぜならこのセクションに含まれるソフトウェアは基本的にDebian sidに置かれている パッケージをUbuntu上でそのままリビルドしただけだからです(そのためUbuntuに何かソフトウェアを追加したい場合 Debianに貢献するのは良い方法の1つです)、
そのためuniverseのソフトウェアに対して、Launchpad(Ubuntuの開発プラットフォームサイト)でバグ報告が行われた場合、
Debianの側で修正が行われ、その修正をダウンストリームであるUbuntuが取り込むという形で修正されることがあります。
一方、Canonicalがサポートするとされているmainセクションに含まれる
ソフトウェアは独自にパッチを当てたりするなどの修正をすることも多いようです。
そのためアップストリームであるDebianより、早く対応が行われることもあります。
以前目にした面白いケースとしては、ejectの脆弱性(CVE-2017-6964)をUbuntuが他にディストリビューションより
先駆けて修正パッケージをリリースしていました。
https://launchpad.net/ubuntu/+source/eject/+changelog
またCanonicalがパッケージに変更を入れている場合、
ソフトウェアのパッケージバージョンのサフィックスにubuntuの文字列が
挿入されています。
そのためパッケージバージョンを見ただけで、Ubuntuの側で
独自パッチ(Debianと比較して)が入っているのかなどの推測をすることが可能です。
(1): Debian 社会契約によればmainセクション以外は付加サービスであり、正確にはDebian システムの一部ではないと
されています。 https://www.debian.org/social_contract.ja.html
(2): multiverseをコミュニティがサポートすることは現実的に可能なのかという疑問点はあります。
Webページからセクションを見る方法について解説します。
Debianの場合
https://packages.debian.org/ja/ からパッケージ名で検索を
行ってください。
mainセクションで無い場合、赤字で表記がでます。
Ubuntuの場合
Launchpadから同様にパッケージ名で検索を行ってください。
例としてvimとneovimのページへのリンクを貼ります。
https://launchpad.net/ubuntu/+source/vim
https://launchpad.net/ubuntu/+source/neovim
Ubuntuではvimはmainセクション、neovimはuniverseセクションに入っているようです。
つまりvimはCanonicalが保守しているが、neovimはそうではなくDebianから持ってきたソースパッケージをそのままリビルドしているだけなのではないかとあたりをつけられます。
これはneovimがフォークした比較的新しいソフトウェアだからだと思われます。
DebianとUbuntuはかなり異なるリリースプロセスを持ちます。
Debianはおおよそ2年ごとに新しい安定版をリリースし、しばらくの間(おおよそ5年)サポートがされます。
またtestingやsid(still in developent: 常に開発中)、といったバージョンが常に存在します。
これらは最終的にstableの下地として使われます。
一方、UbuntuはDebianと比べると半年ごとという頻繁な安定版リリースをしています。
ほとんどの安定版リリースは9ヶ月間の短いサポートがされています、ただし2年ごとにでるLTS版(直近では16.04)
は5年間のサポートがされるということになっています。
どちらも長期サポートがされる版はおおよそ2年ごとにリリースされることになっていますが、 Debianの直近(stretch)は2017年6月、Ubuntu(16.04)は2016年4月です。
つまり1年ごとに交互に両者は長期サポート版をリリースしています、
リリースプロセスの過程で通常パッケージにはフリーズがかかりますが、
UbuntuのLTSが開発される時期とDebianでパッケージの中身が固定されている(フリーズされている)時期は
完全に噛み合っていないようにみえます、
つまりUbuntuはLTSであってもuniverseセクションのソフトウェアは
きちんと動作が問題ないとされるパッケージが入っているとは限りません(3)。
例を一つ挙げると、Ubuntu 16.04で当時Debianでパッケージング作業中だったGitLabを、 試しにaptから導入しようとすると、インストールすらできずに途中でエラーが発生して、動作が終了します。
このような問題が発生する考えられる一つの原因として、UbuntuではuniverseセクションのパッケージでRC(リリースクリティカル)バグ(4)の発生が報告されたときに、リリースから取り除くようなシステムを持っていないのではないからではないかと思われます。(5)
Debianでは安定リリース版はtestingというバージョンをリリースプロセスの終盤でフリーズして、 そこから作られます。パッケージにクリティカルな問題が発生した場合 ほとんどのケースで強制的にパッケージはtestingから取り除かれます。問題はsidにアップロードして報告された事項が解決されるとtestingに再度組み込まれます。 問題が修正されなかった場合、前の安定版やsidには入っているのに最新の安定版には入っていないパッケージがでてくることもありえますが、そこは痛しかゆしです。
(3): とはいえほとんどのソフトウェアは問題ないと思いますし、パッケージのフリーズ自体と安定した動作をするかどうかはまた別なのですが。
(4): RCバグでよくあるのはFTBFS(Failed to build from source)です。
(5): これは推測なので実はそこらへんをきちんとしているシステムが動いていた場合、ごめんなさい。
アドベントカレンダーがDebianとUbuntuの両方を対象にしていたため、両者を比較する記事を 書いてみました。
Ubuntuは頻繁に新しいリリースが出るため、随時乗り換えていけばソフトウェアの新しいバージョンが 使えますし、それなりにテストされていてデスクトップ環境のデフォルト設定もいろいろされているのが 大きな魅力です。
しかしたまに手が回りきっていないのかなーと思うところも見つかりますし、頻繁にアップデートするのは やめておきたい時もあります、そういうときはDebianを使ったりしています。 ユースケースに合わせて、これらに限らず色々なディストリビューションを試してみるとよいと思います。
間違った記述をしているところがあった場合(というかありそう)、修正・訂正・加筆いたしますので 筆者(twitter: @tSU_RooT Mail:tsu.root@gmail.com Gistのコメント欄のいずれか) まで連絡をいただければ幸いです。
Written by Haruki TSURUMOTO. Unless otherwise noted,
the text of this article is released under a "CC0 1.0 Universal Public Domain Dedication"
https://creativecommons.org/publicdomain/zero/1.0/