リンク:

コメント (57)

_________________________________________________

NixOSって、普通の人が理解できるドキュメントやっとあるの?前に試したときは、基本的なことをやり方を教えてくれなくて、再現性が素晴らしいってことばっかり言ってて興味失ったんだよね。


NixOSって、普通の人が理解できるドキュメントやっとあるの?

ないよ 😂


それが俺の体験だったのは1、2年前の話だ。


Guix試してみな、Nixみたいだけど、クソじゃない言語で書かれてて、ちゃんとしたドキュメントがあるから。

_________________________________________________

なんで他のディストロはイメージベースのアトミックディストロに移行してるのに、独自の宣言型ディストロを作らないの?

それには宣言型パッケージ管理も作らなきゃいけないから。今のところ、伝統的なパッケージ管理にかなり投資されてるからね。

宣言型ってどれくらい厳密に考えてるかにもよるけど、RedHatのKickstartは十分宣言型だと思う?

_________________________________________________

個人的には、サイドエフェクトを避けるために、別の$HOMEを使ってdistroboxを使ってる。
たぶん、ほぼすべてのLinuxで使えるよ。

_________________________________________________

オープンソースプロジェクトについて悪いこと言いたくないけど、使ってみた感じ、Nixはホットメッセージだ。

プロとしては、異なるプロジェクトで働くチームの中で、どうやって使えるのか全く理解できない。ほとんどの利点がないのに、ソフトウェアのデプロイや管理に大きな複雑さと摩擦を加えるだけだと思う。

NixOSを日常的に使うなんて、Nixとその宣言型構文をいじくり回したり、新しいソフトウェアをNixと一緒に動くように修正したりするのが生活の大部分になると思う。それは俺にとってすごく魅力的じゃない。

Nixに入ったときは、特定のソフトウェアのバージョンをインストールして、同じソフトウェアの複数のバージョンをまともに管理できるって期待してたんだ。だから、asdf-vmやlinuxbrew、pythonのごちゃごちゃしたパッケージ管理やサンドボックスツールを置き換えられると思ってた。


Fedora AtomicやSilverblue、OpenSUSEから出てくる他の似たようなもののイメージベースのアプローチのポイントと主な利点は、OSの管理と再現性を簡素化することだ。

コンテナやFlatpakの使用は、伝統的なLinuxディストリビューションやUnix環境の制限を克服し、「アプリケーション」や「サービス」と「OS」の間に分離を作ることで、異なるグループの人々によってそれぞれ管理・維持できるようにするためのものだ。


Fedora CoreOSみたいに。大企業の専用データセンターで何千ものVMを管理しなきゃならないとき、CoreOSはこれを大幅に簡素化する。

「Cattle」OS用に設計されていて、古くても、いつインストールしたか、どれだけ頻繁に更新されても、常に同じ状態になる。最新に保つために何もする必要がない。

Ignition(cloudinitみたいなもんだけど、もっといい)を使って基本的なネットワーク設定をしたり、管理者用のsshキーやアカウントを追加したり、VMに好きなコンテナをデプロイしたり、Kubernetesのような大規模なオーケストレーションソリューションに統合したりできる。すべてが動作すれば、手間いらずでインタラクションなし。

その上で動作するソフトウェアは、数十の独立したグループによって維持できる。彼らがMacOSの上でVagrantを使いたいか、何千行ものperlやbashコードで「開発環境」をセットアップするための古いRedhatを動かしている「開発VM」を使いたいか、何でもいい。

彼らはアプリケーションを好きなようにセットアップでき、好きな言語を使い、好きな依存関係を使い、好きなベースOSを使える。基本的な企業ポリシーに従ってログ、メトリクス、ヘルスステータスを公開する方法さえ守れば、CoreOSやKubernetesのコンテナにデプロイできる。

セキュリティチームが、コンテナ内のソフトウェアが最新で、既知の脆弱性を引き起こさないようにするために使えるさまざまなツールがある。

もしそれが、マイクロサービスや「クラウド」なんて信じない人たちによって作られた奇妙で難解なもので、すべてを単一のモノリシックアプリケーションにしたいなら、CoreOSをベアメタルにインストールして、彼らにマシンの全リソースを使わせることもできるし、それでも他の方法と非常に似た方法で管理できる。

これらすべては、NixOSや他のOSアプローチでできないわけじゃないけど、Fedora CoreOSのやり方は、正しくやるのがずっと簡単だ。


他の人気のあるLinux OSと同じように、時々Nixを試してみるつもりだ。

まだGuixは試してない。

人々がそれを使い続け、貢献し続ける限り、NixOS、Guix、他のものに成功を祈ってる。いつか最高のものになるかもしれないし、誰にもわからない。

_________________________________________________

自分でイメージを作るのがublueを使う方がいいし、学習曲線もかなり低いし、同じくらいの能力がある。NixOSの意味がわからない。


NixOSはディストロとしては理解できないけど、ソフトウェア開発のために開発/本番環境を構築するのには素晴らしい。


それには同意するけど、dockerコンテナの方が便利だって言えるかも(少なくともドキュメントは良い)。でも、権限の問題を扱わなくて済むのはいいかもね。


そうだね、そういうことだと思う。

イメージの維持にはどれくらいの労力がかかるのか気になってた。イメージが完全に再現できない状況で壊れることってある?


イメージの設定次第だと思う。アプリケーションのカスタム設定を使ってて、それらが更新されて設定が壊れたら、そのイメージは「壊れる」けど、それが問題なら自動更新を止めることもできる。

ほとんどのイメージは、ublue-osイメージの上に薄いレイヤーがあるだけだし。


カスタムublueイメージを始めるのにおすすめの場所はある?


デフォルトのもの、例えばbazziteやbluefinを使うのがいいと思う。
それから、

GitHub - ublue-os/image-template: Build your own custom Universal Blue Image!

GitHub - ublue-os/image-template: Build your own custom Universal Blue Image!

Build your own custom Universal Blue Image! Contribute to ublue-os/image-template development by creating an account on GitHub.


それに、すべてがどう機能するかを学んだら、bluebuildを使うことに移行すればいい。
The easiest way to build your own desktop Linux images.

The easiest way to build your own desktop Linux images.

The BlueBuild project creates accessible tools for you to create, configure & build custom images of atomic Fedora distributions.

bluebuildから始めることもできるけど、まずは上流に慣れるのがいいと思う。


リビルドにはどれくらいかかる?

NixOSでは1分以上かからないよね。


ローカルではリビルドしないけど、GitHubのサーバーでは約5-10分かかる。その大部分はビルドサーバーの準備にかかるけど(ローカルでビルドするオプションはbluebuildで利用可能)。


Ublueテンプレートを使えば、justfileと「just build」コマンドでローカルでビルドできる。SCPを使ってrootfulイメージストレージにコピーすることもできるけど、クソだし超遅いから、dockerコンテナレジストリを立ち上げる必要がある。

ローカルで変更をテストしたりデバッグしたりするのはすごくいい。GitHubよりずっと早い。


sysextsみたいなツールが、各アップデートのためにイメージをビルドする必要があることに対して利点を提供するかもしれないと思ってる。しばらく使ってるけど、アプリケーションのアップデートをOSとは別に管理できる。


別のCI/CDパイプラインを維持するのがどうして良いのか、正直な質問だ。個人的な使用について考えたこともある。


個人的にはそれが好き。家の熱と電力使用を減らせるし、パフォーマンスやセキュリティの問題を心配しなくて済む。
でも、bluebuildを使ってるから、ローカルでイメージをビルドすることもできる(その場合、ローカルでホストされると思う)。その時点で、基本的にはNixだけどdocker/ymlの中にある。


自分でイメージを作るのがublueを使う方がいい

絶対に違う。

学習曲線がかなり低い

あんまり変わらない。習慣の問題だよ。WindowsはGNU/Linuxより学習曲線が急だけど、誰でも少しは知ってるから簡単だって考えられてる。

同じくらいの能力がある。

絶対に違う、またね。

NixOSの意味がわからない

君がシステム管理者じゃないから、複雑なインフラやそれをクリーンで最新に保つために必要なことを気にしないからだ。それが現代のITがひどい理由でもあるし、ZFSを適切にマスターできない人が多いのも同じ理由だ。これは単なる事実で、主にIT教育と社会における存在の欠如によるものだ。商業的に関心を持っている人たちは、現状を利益のために好んでいる。


ほとんどのシステム管理者はDockerに慣れてるし、使うのも学ぶのも簡単だ。
Nixに関して、bluebuildが持ってない能力は思いつかない。


ほとんどのPFYはそうだし、それが人気の理由だ。単なる観察と模倣だ。使うのが簡単だとは全く思わないし、学ぶのも簡単じゃない。ただ広まってるから、他の何かと対峙することなく遭遇するだけ。

Nixに関して、bluebuildが持ってない能力は思いつかない

NixOSでは、インフラが単なるテキストファイルのリポジトリだ。再デプロイ、最新の状態を保つ、進化、実験、これらのテキストファイルを変えるだけでできる。それが全体のポイントだ。デスクトップが壊れた?新しいのを買って、簡単なNixファイルと1つのコマンドで作ったカスタムISOをブートすればいい。そうすれば、何のアクションもなく新しいデスクトップが構築されて、データの復元の準備が整う。すべてがそこにある、Firefoxのシステム全体の設定も含めて。重複したリソースでディスクスペースを無駄にすることもないし、1つ以上のソフトウェアで使われる共有インスタンスを使うことでメモリを無駄にすることもない。はるかに一貫性があって最新の(repologyの統計を見て)システムで、再現可能で壊れない(常に以前のバージョンに戻れるから)など。

他のモデルと相対的に競合するのは、IPSとZFSに統合されたbeadmを持つIllumOSだったが、SUNの後は基本的に死んでいる。


信じられないかもしれないけど、
Bluebuildでは、インフラ/デスクトップが単なるテキストファイルのリポジトリだ。再デプロイ、最新の状態を保つ、進化、実験、これらのテキストファイルを変えるだけでできる。それが全体のポイントだ。デスクトップが壊れた?新しいのを買って、1つのコマンドで作ったカスタムISOをブートすればいい。そうすれば、何のアクションもなく新しいデスクトップが構築されて、データの復元の準備が整う。すべてがそこにある、Firefoxのシステム全体の設定も含めて。
Bluebuildはユーザーレベルの設定も提供していて、flatpaksもイメージに含めることができる。ディスクスペースについてはあまりコメントしないけど、再ロール可能な状態を持つためにディスクスペースを使ってるから、そこにそれがないことで理論的にそのスペースを節約できるかもしれない。はるかに一貫性があって最新の(repologyの統計を見て)システムで、再現可能で再ロール可能なシステム、それがアトミックディストリビューションと呼ばれるものだ。


まだflatpaksが最新だって見たことない。ほとんどが古くて脆弱で、使えるように穴を開けてる。ディスクスペースとRAMを無駄にするだけだ。

選んだツールに制限されてる。stratisの代わりにzfsを使うことを拒否する人たちのように、その制限を認識しない。


最近、flathubのほとんどのflatpaksは開発者によってメンテナンスされてるよ?何が古いって言ってるの?

穴を開けることについては、他のパッケージタイプにはそもそもサンドボックスがない。穴の開いた箱は、何もないよりはまだマシだ。


単に放置されてるだけだと思う。最新のタグ付きリリースと自動同期されてないし、依存関係も最新じゃない。

システム全体をパッケージできないパッケージシステムを作るのは単純に馬鹿げてる。FLOSSの利点を利用せず、バグを見つけてパッチを提案するのは、平均的なユーザーのバグレポートよりもはるかに優れている。

_________________________________________________

おそらく、広まることができないニッチを埋めているから?普通の人には、宣言型ディストリビューションは何の利点ももたらさない。

「あなたのOSは、この神秘的な呪文のような設定ファイルで記述されたものになる。」うん、それは受け入れられないだろう。ほとんどの人はリポジトリモデルを理解するのに苦労していて、異なるものを混ぜ合わせたりしてる。

だから、イミュータブルが新しい輝きなんだ。未来を想像してみて。 「ここにあなたの壊れないシステムがあります。壊すことはできません。あなたはただ「おもちゃ」をその上に重ねるだけです。」


君が言ったことのほとんどには同意するけど、一つだけ反論する。

「ここにあなたの壊れないシステムがあります。壊すことはできません。あなたはただ「おもちゃ」をその上に重ねるだけです。」

うーん

WindowsやMacみたいだし、それらは壊れないわけじゃない。そんなシステムが良いとは思わない。カスタムイメージを構築して配布できるとしても。カスタムKaliイメージを簡単に構築して配布できるけど、Kaliが未来だとは誰も言ってない。

記録として、NixOSが主流になることはないと思うけど、パッケージマネージャーやdev-shell、もしかしたらhome managerは、少なくとも開発者の間では主流になるかもしれない。


イミュータブルシステムの核心が読み取り専用のベースOSイメージだって知ってるよね?ユーザーはそれを変更できない。ユーザーはオーバーレイを使って変更することしかできない。

アップデートはアトミックだ。ベースイメージが新しいもので置き換えられるか、古いものがアクティブのままだ。そんなシステムを壊す方法はあるかもしれないけど、コアイメージはディストリビューションによって決まる。凍結された既知の使用可能状態が、イミュータブルシステムの具体的な基盤になる。


イミュータブルディストリビューションがどう機能するか、Kaliの例とどう違うかは知ってるよ。

ユーザーは必ず方法を見つける。約束する。

でも、技術的でないユーザーには、他の多くの選択肢よりも良いかもしれない。


自然は常により大きな馬鹿を生み出すけど、ほとんどの人には十分役立つだろう。ほとんどの人が必要なのは、少しだけパーソナライズできるキオスクだ。

_________________________________________________

NixOS、すべてのパッケージを一覧表示するのに速い方法がない。


それに関してはウェブサイトがあるんじゃない?


あるよ、ここ。NixOSには批判すべき点がたくさんあるけど、パッケージを一覧表示することはその一つじゃない。


設定を不明瞭な型なし言語で書くのは、< censored by u/AutoModerator> だからだよ。Nixファイルを扱うより、自分の宣言型APTマネージャーを書いた方がいい。

_________________________________________________

主にそれが難しいからだと思う。SpackはいつかOSになることを目指している別のパッケージマネージャーだけど、10年以上の多くの努力の後、やっとv1.0を公開したばかりで、OSをブートストラップするにはまだ長い道のりがある。

サポートを得るのも難しい分野だ。Linux系の人たちの多くはNixを支持していて、Nixコミュニティは競争に対して積極的に敵対的だ。Slackにトロールが現れて、SpackはNixがすべてをやっているからリポジトリを削除すべきだって言うのを何度見たか、信じられない。


そうだね、敵対的なのは良くない。人々が何かを作りたいなら、作らせてあげればいい。

_________________________________________________

そんなのいらない。必要なのはaptだけ。

_________________________________________________

彼らは新しいユニバーサルディストリビューションを作ろうとしてる。自分たちの方が良くできると思ってるから。

それは分断と呼ばれるもので、今の大きな問題だ。その他のソフトウェアプロジェクトでも同じ。


NixOSは20年以上の歴史があって、すべてのディストリビューションの中で最も包括的なソフトウェアリポジトリを持ってる。


人々はこれをいつも言ってる。2年前に今の会社に入ったときにNixOSを使わざるを得なかったけど、Nixに必要な人気のあるパッケージがないか、すごく古いことが何回あったか数えきれない。Ubuntuを使ってDistroboxでそれを手に入れてる。

正確に何が起こっているのかは見てないけど、nixpkgsのパッケージ数が大幅に膨れ上がってるのは確かだ。


もう一度そのトピックを見直してみて。


FlatpaksはNixOSの14年後に登場したけど、誰が分断を引き起こしたの?


それは分断じゃなくて、選択肢で、良いことだ。


非常にアン・リナクシーな意見だね。

_________________________________________________

宣言型Linuxディストリビューション(NixOSやGuixなど)の議論/使用が増えているように見える

私が見た限りではそうじゃない。Ubuntuが王様。Debianでも、Debianベースのディストリビューションでも。RPMベースのものは、IMO、ローカルリポジトリが壊れたことがあるから、すごくクソだ。

_________________________________________________

本当にそれがないことを嬉しく思う。NixOSは地獄だ。RasPiのSDイメージを「ソースから」ビルドしたいだけなのに、デバッグが悪夢だった。

  • ドキュメントが悪夢:探すと、2、3のソースしか見つからない。
  • nixpkgsは大きい。ローカルシステムにダウンロードしてブラウズするのにかなり時間がかかる。彼らのオンライン検索はsearch.nixos.orgでいいけど、あまり情報を教えてくれないし、ブロック内のすべてのオプションを「親にジャンプ」することもできない。
  • パフォーマンス。そう、Pi3やPi4は革新的なパフォーマンスじゃないけど、単一のリビルドに時間がかかる。DNSサーバーを変更するだけで10-15分かかる。
  • ああ、オンライン専用!インターネットなしでリビルドするのは運が必要。小さな変更でもサーバーにアクセスする必要がある。そしてそれが失敗すると、全プロセスが崩壊するかもしれない。時にはうまくいくけど、ほとんどの場合は諦める。

アイデア自体は本当に素晴らしいと思う。だけど、これは良好で安定したインターネット、機能的で純粋なプログラミングに対するハードコアなマインドセット、そして…たくさんの時間が必要なディストリビューションだ。

私が見つけた代替はOpenWRTのUCIだ。あれは素晴らしい。デバイスの/etc/configとopkgリストをバックアップするだけで済む。残念ながら、OpenWRTだけがUCIを使っているようだ。

_________________________________________________

NixOSはクールで、すごく楽しんでるけど、普通のユーザーには決して向かない。

nixパッケージマネージャーは、普通の開発者やシステム管理者が使うことになるかもしれない。

NixOSは普通のユーザーには向かないし、普通の開発者にも向かないかもしれない。

ドキュメントがもっと初心者向けだったとしても(実際、ドキュメントは存在していて、情報も豊富だけど、フォーマットが圧倒的で、ほとんどの人がクリックして読まない)、そうなるとは思えない。

ほとんどの人は、自分のコンピュータがほとんど再現不可能な状態であることに満足していて、それを避けるために何らかの前提条件を満たす必要があるなら、何もしたくないからだ。

_________________________________________________

スキルの問題を抱えている人たちのせいだ。

_________________________________________________

宣言型ディストロは、OSに組み込まれたIaC(Infrastructure as Code)で、非常に価値があるけど、その価値を理解するにはシステム管理者である必要がある。ZFSと同じように:デジタル資産を適切に理解し、管理することができないと、その価値を理解することはできない。多くの人、特に開発者の中には、Andrew Mortonの「Rampant Layer Violation」のように、システムctl star unitが、オペレーションを何も知らない開発者が考えることだと思っている人が多い。正しいのはsystemctl unit startだ。ほとんどの人は効率的で堅実であることを重視せず、群衆が行くところに行くことを好む。だから、夏の真っ只中に非常に南の地域に休暇を取る人たちがいるのに、冬に行かず、毎年気候が暑いと文句を言うのだ。

_________________________________________________

NixOSは、ドライバーのインストールが簡単で、私の理解ではすべての種類のパッケージで動作するが、特にサードパーティプログラムのインストール方法を制限することで、Linuxを標準化しようとする企業が望むほどの堅牢さはない。理論的には標準化は良いことだが、ユーザーがインストールしたドライバーで簡単にトラブルシューティングできるというアイデアを実際に破壊してしまう。


NixOSは、ドライバーのインストールが簡単で、私の理解ではすべての種類のパッケージで動作する

これは真実ではない。なぜなら、Nixは100%の再現性を要求するため、すべてのパッケージがデフォルトで再現可能なビルドをサポートしているわけではなく、NixOS特有のパッチが必要になるからだ。(ただし、これは徐々に改善されつつある。)

また、NixOSパッケージを作成するのは、他のディストロよりも多くの理由で難しい。


それは残念だね。主にコンテナ化されたプログラムのバージョンで動作するイミュータブルディストリビューションよりも、少し良いだけのように聞こえる。

編集:NixOSがデフォルトでdistroboxを搭載していないか、誰かが言っていたのをぼんやりと覚えている。簡単な検索でここにたどり着いた。

Distrobox - NixOS Wiki

Distrobox offers you to use any linux distribution inside your terminal as a simple wrapper for Podman, Docker or Lilipod.

distroshelf - MyNixOS

distroshelf - MyNixOS

Nix package distroshelf declared in nixpkgs. GUI for Distrobox Containers.

これはオプションなのか?


リポジトリにあるパッケージに過ぎない。


他のディストロからのパッケージをdistrobox経由で使えることは、ネイティブNixパッケージを作成することには無関係だ。


もしそれがNix OSが標準で提供していて、イミュータブルディストリビューションがサポートできないか、サポートを拒否した場合(それはフラットパック、スナップ、Appimageにソフトウェアを制限してシステムをより安全で制御されたものにするという考えに反するから)、それは差別化の属性になるだろう。