「NixOS」の版間の差分
削除された内容 追加された内容
編集の要約なし |
編集の要約なし |
||
| (4人の利用者による、間の28版が非表示) | |||
1行目:
{{Infobox OS
| name = NixOS
| title =
| logo = {{Wikidata logo}}
| logo size = 220px
| logo caption = NixOS のロゴ
| logo alt = NixOS のロゴ。NixOSは黒文字のアルファベット。左端には「Y」に似たロゴが6つあり、濃い緑色が3つ、薄い緑色が3つ交互に円を組んでいます。
| screenshot = NixOS 21.11 GNOME main menu - English.png
| screenshot_size = 300px
| screenshot_alt = 英語版NixOS 21.11 GNOMEのメインメニューを表示しており、横8個、縦が3個のアイコンが並んでいます。
| caption = 英語版NixOS 21.11 GNOMEのメインメニューです。
| developer=NixOS contributors<br>NixOS Foundation<ref>{{cite web |url=https://nixos.org/community/ |title=Community - nixos.org |access-date=2022-09-23 |archive-url=https://archive.today/20220923195051/https://nixos.org/community/ |archive-date=2022-09-23 |url-status=live}}</ref><ref>{{cite web |url=https://github.com/NixOS/nixos-foundation |title=NixOS/nixos-foundation - Github |website=[[GitHub]] |access-date=2022-09-23 |archive-url=https://archive.today/20220923194605/https://github.com/NixOS/nixos-foundation |archive-date=2022-09-23 |url-status=live}}</ref>
| working state = 開発中(活動中)
| source model = [[オープンソース]]
| supported platforms = [[i686]], [[x86-64]], [[ARM architecture|AArch64]]
| family = [[Linux]] ([[Unix系]])
| released = 0.1 / {{Start date and age|2003|06|03|df=yes}}
| latest release version = {{Wikidata|property|preferred|references|P348|P548=Q2804309}}
| latest release date = {{Start date and age2|{{Wikidata2|qualifier|single|raw|P348|P548=Q2804309|P577}}}}
| latest preview version = {{Wikidata|property|preferred|references|P348|P548=Q51930650}}
| latest preview date = {{Start date and age|{{Wikidata|qualifier|single|P348|P548=Q51930650|P577}}}}
| kernel type = [[モノリシックカーネル|モノリシック]]([[Linuxカーネル]])
| ui = ?
| license = [[MIT License|MIT]]
<ref>{{cite web|url=https://github.com/NixOS/nixpkgs/blob/master/nixos/COPYING |title=nixpkgs/COPYING at master · NixOS/nixpkgs · GitHub |publisher=Github.com |access-date=2015-09-19}}</ref>
<ref group="note" name="other licenses"/>
| marketing target = 汎用( General purpose )
| programmed in = Nix言語<ref group="note" name="other programming languages"/>
| language = 日本語・英語など
| language count = 2以上
| language footnote = 日本語環境はインストール時に設定可能。なお、日本語入力関連は自力で構築する。
| package manager = [[Nix (パッケージ管理システム)|Nix]]
| website = {{URL|1=https://nixos.org/}}
| support_status = サポート中です。
}}
'''NixOS''' は、[[Nix (パッケージ管理システム)|Nixパッケージマネージャー]]をベースとした[[FOSS|自由かつオープンソース]]のLinuxディストリビューションである。NixOS はシステムの更新をアトミックに行い<ref>{{Cite web |url=https://www.howtogeek.com/what-is-an-immutable-linux-distro/ |title=What Is an Immutable Linux Distro, and Should You Use One? |date=6 December 2023 |access-date=2023-12-07 |archive-url=https://archive.today/20231207004143/https://www.howtogeek.com/what-is-an-immutable-linux-distro/ |archive-date=2023-12-07 |publisher=HowToGeek.com |url-status=live}}</ref> 、[[宣言型プログラミング|宣言的]]に環境構築を行えるシステムにより高い再現性と移植性を担保している。<ref>{{Cite web |url=http://distrowatch.com/table.php?distribution=nixos |title=DistroWatch.com: NixOS |publisher=Distrowatch.com |access-date=2015-09-19}}</ref>
NixOSはNixパッケージマネージャーを通じて[https://github.com/NixOS/nixpkgs NixPkgs]を主とした複数のパッケージリポジトリを利用できる。パッケージ構成および設定は特別に設計された[[遅延評価]]を行う[[関数型プログラミング]]言語である[[Nix (パッケージ管理システム)|Nix言語]]を通じて定義される。
== 歴史 ==
Nixは2003年、エルコ・ドルストラ(Eelco Dolstra)率いる研究プロジェクトとして立ち上げられた。信頼性の高い[[デプロイ]]手段の探求を目的としたこの研究の成果は、ドルストラの博士論文 ''The Purely Functional Software Deployment Model'' にまとめられ、宣言的かつ純粋関数的に扱う、全く新しいソフトウェア構成へのアプローチを提示した。ユトレヒト大学のエルコ・フィッセルにより監修されたDolstraの研究は、Nixの理論的基礎を築いた<ref name="original-paper">{{Cite book |first=Eelco |last=Dolstra |title=Software Configuration Management |chapter=Integrating Software Construction and Software Deployment |series=Lecture Notes in Computer Science |volume=2649 |pages=102–117 |year=2003 |doi=10.1007/3-540-39195-9_8 |isbn=978-3-540-14036-8 |chapter-url=https://nixos.org/~eelco/pubs/iscsd-scm11-final.pdf |archive-url=https://web.archive.org/web/20190421081837/https://nixos.org/~eelco/pubs/iscsd-scm11-final.pdf |url-status=dead |archive-date=2019-04-21}}</ref>。
2006年、アルミン・ヘメル(Armjin Hemel)はNixの思想をLinuxディストリビューションに統合する試みを行い、NixOSのプロトタイプ実装が同氏の修士論文の一部として初めて公開された。<ref>{{Cite web |author=Dolstra |first=Eelco |title=Purely Functional System Configuration Management |url=https://www.usenix.org/legacy/event/hotos07/tech/full_papers/dolstra/dolstra_html/ |access-date=2024-03-04 |website=www.usenix.org}}</ref>
2015年、純粋関数的なソフトウェアデプロイモデルを実装するプロジェクトの支援、ならびにNixOSとそのエコシステムの開発への継続的な支援を提供する目的で、NixOS Foundation が[[オランダ]]にて設立された。<ref>{{Cite web |url=http://nixos.org/nixos/foundation.html |title=Stichting NixOS Foundation |publisher=Nixos.org |access-date=2015-09-19}}</ref>
== Wikiの沿革 ==
コミュニティによる最初の NixOS wiki は2010年から2011年頃に立ち上げられた。ドキュメントの一元化
2015年11月、ロク・ガルバス(Rok
2016年中旬、モデレーション不足によってwikiはスパムボットで溢れかえった状態となり、同年8月
2024年1月、新
== バージョン歴史 ==
118 ⟶ 154行目:
|-
|}
NixOS は一年に二回、それぞれ5月末と11月末に安定版のリリースを行っている。<ref>{{Cite web |url=https://nixos.org/governance.html |title=Governance |publisher=Nixos.org |archive-url=https://web.archive.org/web/20200816224244/https://nixos.org/governance.html |access-date=2020-08-28 |archive-date=2020-08-16}}</ref><ref>{{Cite web |url=https://github.com/NixOS/rfcs/blob/master/rfcs/0080-nixos-release-schedule.md |title=Nix RFCS (Request for Comments) |website=[[GitHub]] |date=17 December 2021 |access-date=2024-12-31}}</ref><ref>{{Cite web |url=https://nixos.org/blog/announcements |title=Release Announcements |publisher=Nixos.org |access-date=2023-12-09}}</ref>
== 機能 ==
124 ⟶ 160行目:
=== 宣言的な構成 ===
NixOSでは、カーネルからアプリケーション、システムパッケージ、設定ファイルに至るまで
NixOSのシステムは、グローバルな設定ファイル(通常<code>/etc/nixos</code>に存在する)に、
{
boot.loader.grub.device = "/dev/sda";
132 ⟶ 168行目:
services.sshd.enable = true;
}
</syntaxhighlight>設定ファイルを変更した後、<code>nixos-rebuild</code>コマンドを使用してシステム構成を(設定ファイルに基づいて)更新できる。
=== アトミックで信頼性の高いアップデート ===
Nix言語の[[関数型プログラミング|純粋関数]]的な特性により、システム
NixOSはシステム構成の管理にトランザクション的なアプローチを
===
システム更新の結果が望ましいものではなかった場合、<code>nixos-rebuild switch --rollback</code>コマンドを利用して古いバージョンの構成にロールバックできる。すべてのシステム構成のバージョンはブート時のメニューに表示され、例えば新しい構成バージョンのシステムが起動できない場合、古い構成バージョンに切り替えて起動することができる。
=== システム構成の再現性<ref>{{Citation|title=NixOS Manual - Rolling Back Configuration Changes|url=https://nixos.org/manual/nixos/stable/#sec-rollback|publisher=Nixos.org}}</ref> ===
NixOSの宣言的な構成方法により、システム設定を容易に別のマシンで再現することができる。設定ファイルを別のマシンにコピーし、更新コマンドを実行するだけで、(ユーザーデータなどNixパッケージマネージャによって管理されていない部分を除いて)全く同じシステム構成(カーネル、アプリケーション、システムサービスなどを含む)を再現できる。
=== ソースコードビルドとバイナリキャッシュの併用 ===
===
Nixパッケージマネージャーは、実行中のシステムがシステムの論理と一致していることを保証する。言い換えれば、パッケージの操作が行われた際、関連するすべてのパッケージも再ビルドされる。例えばカーネルを変更したとすると、関連するカーネルモジュールがすべて再ビルドされる。同様に、ライブラリがアップグレードされると、そのライブラリに(静的にリンクされているパッケージをも含めて)関連する全てのパッケージが、新しいバージョンのライブラリを使うように再ビルドされる。
=== ユーザー間におけるパッケージ管理 ===
NixOSでは、個別のユーザーがパッケージをインストールするのに特権を必要としない。全システム共通のプロファイル以外に、ユーザー別にそれぞれ独自のプロファイルが割り当てられているため、たとえ同じパッケージの違うバージョンを複数のユーザーがインストールしていたとしても、これらのパッケージは共存できる。複数のユーザーが同じバージョンの同パッケージをインストールしようとすると、パッケージのダウンロードおよびビルドは一回だけ行われる。
Nixはこの操作が安全であることを保証している。なぜなら、システム設定によって明示的に信頼されたユーザーだけが derivationの生成結果を制御できるビルドパラメーター(ビルドサンドボックスに不純物を追加したり、信頼されていないSubstituterー追加のNixストアーを利用するなど)の使用を許可されているからである。そのようなパラメーターが含まれていない場合、ユーザーはビルドにシステムより信頼されたsubstituter、もしくは暗黙的に信用されるローカルのサンドボックス化されたビルド環境のみ使用できる。
== 実装 ==
NixOS
インストールされたパッケージは、ビルド過程に入力されたすべての情報に基づいて一意なハッシュ値を与えられる。ビルド手順を変更すると異なるハッシュ値が生成され、異なったパッケージとしてNixストアにインストールされる。この仕組みは設定ファイルの管理にも使用され、設定の更新が過去の設定履歴を上書きしないための措置として導入されている。
== 反響 ==
2015年にDistroWatch WeeklyでNixOS 15.09をレビューしたジェシー・スミス(Jesse Smith)はこう書いている:
{{quote|NixOSは、システムの変更をいわば「世代」ごとに分けることで、パッケージアップグレードの際の心配をなくしているところがとても気に入っています。エンドユーザーからすると、NixOSの動作は他のLinuxディストリビューションとそう変わりません。NixOSは初心者向けではありませんし、汎用のオペレーティングシステムとして使われることも意図されていないと思いますが、Nixという非常に興味深い技術を検証するためのプレイグラウンドとしては充分に機能しています。この技術はさらなる探索とより多くのディストリビューションによる採用に値すると考えています。}}
2022年に書かれた''Full Circle''紙の NixOS 21.11 "Porcupine"レビュー記事はこう結んでいる:
{{quote|NixOS Gnome 21.11からは、律儀かつ克明、エレガントな印象を受けた。あなたがGnomeデスクトップのファンなら、気に入るものがたくさん見つかるだろう。このディストリビューションの欠点は、アップデートなどを含むパッケージ管理の学習曲線が険しいことだ。どのディストリビューションから来たとしても、Nixをうまく扱えるようになるまでには、学ぶことがたくさんあるはずだ。<ref>{{cite web|url= https://dl.fullcirclemagazine.org/issue186_en.pdf|title= Review - NixOS|access-date= 28 October 2022|last= Hunt|first= Adam|work= {{日本語版にない記事リンク|Full Circle Magazine|en|Full Circle Magazine}}|date= 28 October 2022|archive-url= https://web.archive.org/web/20221028212552/https://dl.fullcirclemagazine.org/issue186_en.pdf|archive-date= 28 October 2022|url-status= live}}</ref>}}
The Register のリーアム・プルーヴン(Liam Proven)による NixOS 22.11「Raccoon」のレビュー:
{{quote|ほんの2、3年前のNixOSの評価と比較すると、インストールして動作させるのは非常に簡単であることがわかった。このことは、ツールが順調に成熟し、特定の水準に達したことを示唆しているが、初めて使う立場からすると、比較できる事前の基準線がない。これは伝統的なディストリビューションでは決してなく、伝統的なUnixですらないが、うまく動作している上、独特の魅力を私たちは見出した。
<ref>{{cite web|url= https://www.theregister.com/2022/12/13/nixos_2211_raccoon/|accessdate=2024-12-31|title=NixOS 22.11 'Raccoon': Like a proof of concept you can do things with OSes
|last=Proven|first=Liam}}</ref>}}
[[DistroWatch]] のジェシー・スミスによるNixOS 23.11 「Tapir 」のレビュー:
{{quote|NixOSは、私が使っている間にどんなエラーにも遭遇しなかったという点で、稀有な逸品と言えましょう。動作は安定しており、私のハードウェアとうまく動作し、実行中は一つたりとも問題に遭遇しませんでした。あなたがシステム管理者で、複数のマシンに同一のディストリビューション環境をデプロイ(またはメンテナンス)したいのであれば、NixOSは試してみるだけの価値があると思います。<ref>{{cite web|url= https://distrowatch.com/weekly.php?issue=20240401#nixos|accessdate=2024-12-31|title=NixOS 23.11
|last=Smith|first=Jesse}}</ref>}}
== 関連項目 ==
* [[GNU Guix|GNU Guix System]] – [[GNU Guix]]をベースに構築された[[オペレーティングシステム]]。Nixにインスパイアされている。
== 脚注 ==
===注釈===
{{Reflist|group="note"|refs=<ref name="other licenses">NixOSに含まれているソフトウェアの中には異なるライセンスを持つものもある。例えば、[[Linuxカーネル]]は[[GNU GPL]]v2でライセンスされている。(2025年一月時点)</ref>
<ref name="other programming languages">NixOSは複数の言語で書かれている。(2025年一月時点)</ref>}}
===出典===
{{Reflist|30em}}
==
* {{Official website|https://nixos.org/}} {{En icon}}
* [https://wiki.nixos.org
* [https://wiki.nixos.org/wiki/NixOS_Wiki/ja NixOS Wiki] {{Ja icon}}
{{Linux-distro}}{{Linux}}
[[Category:2003年のソフトウェア]]
[[Category:OSのセキュリティ技術]]
[[Category:ソースベースのLinuxディストリビューション]]
[[Category:未査読の翻訳があるページ]]
| |||