Gentooを考えてるんだけど、今まで見たスレッドでは、(ex-)Gentooユーザーの体験は大体以下のように分類できる。

  1. 最も堅牢なシステム。無駄がなく、ほとんど壊れない。実際、壊れたとしても大したことじゃない。なぜなら、修正はすぐそこにあるから。

  2. アップデート後の壊れやすさはほぼ常に存在する。システムをいじり続けて、すぐに人の顔を忘れることになる。神は死んだ。

じゃあ、これらのユーザーの間に何が違うんだ?堅牢なシステムを維持できるGentooユーザーには何か秘密があるのか?それとも、壊れる要素が少ない超ミニマルなシステムを使ってるだけなのか?

コメント (26)

_________________________________________________

全てのディストリビューションからのレビューの幅があるから、これはGentoo特有のことじゃない。どんなシステムを使っても、システムを壊す人はいる。逆に、ポテトバッテリーで動くトースターの上で最新のディストリを動かせる人もいる。

特別な秘密や特別なソースはない。人々がシステムをどう扱うか、そしてそれにどう反応するかの違いだ。問題を直す人もいれば、フォーラムで大声で文句を言う人もいる。


全てのディストリビューションからのレビューの幅があるから、これはGentoo特有のことじゃない。

そうだけど、Gentoo(他のディストロもだけど)はほぼ完全にカスタマイズできるやつだから、Ubuntuユーザーが似たような体験をするとは想像できない。


ほぼ完全にカスタマイズできるやつ

どのディストリも完全にカスタマイズできる。それがオープンソースのポイント。欲しいものを手に入れて、カスタマイズして、コンパイルして、使う。

本当の質問は、Gentooのユニークな部分を実際に使うかどうかだ。だって、その深い穴は、PewDiePieが自分のLinuxインストールをリシングするよりも深いから。


同じ体験じゃないけど、同じ結果。どんなUbuntuフォーラムに行っても、変な、回復が難しい問題や奇妙なバグにぶつかる人がいる。

逆に、過去15年間、Ubuntuが問題を起こしたことがないっていう人もいる。

_________________________________________________

Gentooは「自分の冒険を選ぶ」Linuxディストロみたいなもんだ。安定して責任を持って運用することもできるけど、実際にはその決断をしなきゃいけない。一方で、「最新のgit不安定パッケージをyoloインストール」みたいなことをしたら、必然的に壊れる。

Gentooは、自分のシステムを設定する方法や、自分で物を構築する方法を学びたいなら最高だ。もし「ただ動けばいい」システムを求めてるなら、そういう目的のために存在するディストロを使った方がいい。

Gentooを使って壊れるって文句言うのは、マニュアル車を運転してて、シフトミスでエンストしたって文句言うようなもんだ。マニュアル運転する人はそれを信じてるし、エンストしないし、マニュアルシフトから得られる追加のコントロールがある。A地点からB地点に行きたいだけの人は、シフトにイライラする。

車に関しては「A地点からB地点に行ければいい」派だけど、システムに関してはその追加のコントロールを楽しんでる。20年間Gentooを使ってきたおかげで、Debianの安定サーバーのセットアップをずっと理解できるようになった。


マニュアル運転しててGentooだけを使ってる者として、的確な比較だと思う。


Gentooを使って壊れるって文句言うのは […]

システムの初期設定に時間をかけるのが平気な人にとって、その後のメンテナンスは今のArchよりも多くなると思う?

システムの設定に時間と労力をかけるのは全然平気なんだ。その後は?頭痛を引き起こさずに動いてほしいだけ。


Gentooはいじるスイッチが多いから、当然自分の足を撃つチャンスも増える。それがトレードオフだ:システムを自由にいじれるってことは、壊す自由もあるってこと。

君が間違った質問をしてる印象を受ける。古典的なxy問題のケースだ。少し引いて考えてみよう:なんでGentooについて聞いてるの?何を達成したいの?

私の経験では:

  • ゲーミングマシンが欲しいなら、UbuntuやBazzite、SteamOSみたいなディストロを使え。
  • サーバーが欲しいなら、DebianやRedHat、AlmaLinuxを使え。
  • ミニマルインストールから自分のシステムを組み立てたいなら、Archを使え。
  • もっとDIYで自分で全てをコンパイルしたいなら、Gentooを選べ。
  • さらにDIYしたいなら、LinuxFromScratchを選べ。

私の知る限り、GentooはLinuxFromScratchを除いて最もDIYなディストロだ(LinuxFromScratchは、物を組み立てる方法を教えるPDFに過ぎない)。

その後のメンテナンスは今のArchよりも多くなると思う?

スイッチが多いほど自由も増えるけど、何かが間違うチャンスも増える。それはメンテナンスが必要になる可能性が高くなるってこと。

私の経験では、GentooとArchは昔はもっと似てたけど、Archが使いやすくなった(デフォルトインストーラーがCLIで手動でGrubを設定する必要がなくなった)から、今は違う。

頭痛を引き起こさずに動いてほしいだけ。

じゃあ、Ubuntu/Kubuntu/Xubuntuを使えばいいじゃん。なんでGentooやArchみたいなものを気にするの?安定したものが欲しいなら、ローリングリリースじゃなくて安定したディストロを選べ。

ちなみに、私の本業はソフトウェア開発者で、Linux用のソフトウェアを書いてる。自宅のマシンのデイリードライバーはKubuntuで、私のニーズには完璧に合ってる。それは、物事を自分のやりたいように動かす方法(できればdockerサンドボックスで)を知ってるからで、これはGentooを使って学んだことだ。私のNASと個人サーバーはDebian stableを使ってる。サーバーはロック安定してほしいから。

過去にGentooを使ってたけど、最高だった。数年間使って学んだことは膨大で、二十年前の最初のDevOpsの仕事で成功したのも、Gentooを使って学んだことのおかげだ。サーバーのメンテナンスとGentooボックスのメンテナンスがどれだけ似ているかに驚くかもしれない。それは私がした投資で、時間をかけることを知っていたし、手を汚す必要があることも理解していた。盲目的にこれらのことを学びたいとは思ってなかった。君の質問からは、そういう投資をしたいわけじゃないように聞こえる。

私が考えるのは、Gentooに入るのは、非常に特定のニーズがある場合(特異なハードウェアで、正しくコンパイルする必要がある?)か、自分を学ばせるための挑戦としてだ。

もちろん、これは私の意見に過ぎない。/u/thomas-rousseauに聞いてみれば、彼はマニュアル運転でGentooを使ってる本物のバッドアスだから。彼の視点は私とは全然違うかもしれない。

でも、何よりもまず一つの質問に答えなきゃいけない:君の目標は何?なんでGentooを考えてるの?この質問に答えれば、どのディストロを選ぶべきかは明確になる。


いや、ここは的確だ。俺はただ神経質で、全てのデバイスを完全にコントロールしたいだけなんだ。


システムの初期設定に時間をかけるのが平気な人にとって、その後のメンテナンスは今のArchよりも多くなると思う?

何をするかによる、それがGentooのポイントだから。

ただ、Gentooはそのメンテナンスを客観的にArchよりも簡単にしてくれる。パッケージマネージャーが既知の非互換性について教えてくれるから、他のローリングリリースディストロのようにRSSフィードやメーリングリストを監視する必要がないし、多くの場合、そういうことが起こっても何もしなくて済む。なぜなら、Gentooはほとんどの状況で一般的なケースに特化しているから(だから、通常は問題が起こらない)。

_________________________________________________

10年間使ってて壊れたことない。安定版を使ってれば問題ないはず。


安定版を使ってれば問題ないはず

それはピンキーの約束?

_________________________________________________

全ては自分次第だ。ほとんどの他のディストロとは違って、Gentooはシステムに何を持っているか、どうするかに対して超意見が強いわけじゃない。基本的な推奨USEフラグを有効にして、ほとんど安定したパッケージに留まって、何もクレイジーなことをしなければ、ほとんどそのまま動き続ける。だけど、いじりすぎると本当に複雑な問題を自分で作り出すことができる。

_________________________________________________

Gentooは選択肢と自由を提供する。

ローリング、安定、バイナリ、systemd、gnomeワークステーションを運用することもできて、驚くようなことはあまりない。

または、*9999ライブgitビルドをriscv muslシステム全体でbcachefsとs6で運用することもできて、その途中でいくつかの血の滴を経験するかもしれない。

Gentooは決してシンプルでもミニマルでもない。理解する希望がないほど巨大で複雑な獣だ。でも、うまく動くから理解する必要はない。

_________________________________________________

じゃあ、これらのユーザーの間に何が違うんだ?堅牢なシステムを維持できるGentooユーザーには何か秘密があるのか?

堅牢なシステムを持ってる人は、以前に壊れた経験があって、それを修正する方法を学んだ人たちだ。

Archを使ってるから「超優秀」だと思ってた人たちもいたけど、実際は何も知らなかったってことが分かった(笑)。

_________________________________________________

Gentooを25年以上使ってるけど、#2は俺の経験じゃない。時間が経つにつれて良くなってる。要するに、どの極端を選ぶか(ここに投稿した偏った意見は現実を反映してない)だ。

_________________________________________________

#1が欲しいなら、Debianをインストールしろ。退屈で、物事を終わらせろ。

#2が欲しいなら、Archをインストールしろ。自慢できる権利がたくさんある。


元Archユーザーだけど、Archは自慢じゃないと思う…

Gentooの方が自慢する価値があると思うけど、16コアと64GBのRAMのマシンで自慢することじゃない。ネットブックで自慢すること、PowerPCマシンで自慢すること、Playstation 2で自慢すること、486で自慢すること、m68kで自慢することだ。それでもインストールについて自慢することはない。自慢するのは使いやすさだ。ネットブックをゼロディストラクションのクリエイティブライティングデバイスとして使ったり、メインマシンにSSHで接続したりすることだ。

_________________________________________________

最近それについてネガティブな投稿をした者として、全てはやること、やり方、どれだけの時間を投資するかにかかってる。Gentooを短期間使ってるけど、好きだけど、設定するのは確かに多くの作業だ。

_________________________________________________

Gentooのようなシステムでは、各インストールがその個々のインストールに非常に特化している。

だから、人々の体験が大きく異なるのは珍しくない。

典型的な現代のLinuxインストールのような複雑なものでは、非常に多くの変数やオプション、選択肢があり、その多くは悪く文書化されているため、インストールを行う単一の個人がすべての決定を情報に基づいて行うのは不可能だ。

つまり、典型的なインストールの多くは、直感や最良の推測に基づいている。

インストールするもの、コンパイルフラグ、異なるオプションの選択だけでなく、インストールの順序、元のインストールがいつだったか、更新の頻度、その他の要素がシステムの安定性に影響を与える。

これはこのタイプのOSの性質だ。

_________________________________________________

Gentooは実際のディストリビューションではない。メタディストリビューションで、ステージ3ビルド後の動作するコンパイラツールチェーンを持つシステムだ。コミュニケーション用のシェルと、ハードウェアが正常に機能するためのLinuxカーネルもある。それから、自分のディストリビューションを構築できる。

数年間Gentooを使って、ガイドを作ったり、オンラインのGentooコミュニティで人々を助けたりしてきた。

Gentooは素晴らしいシステムで、カスタマイズを可能にする。難しい、面倒な作業を簡単にする多くのツールを提供している。

しかし、Gentooは簡単に壊れることもある。壊れやすさはGentoo自体が直接引き起こすわけではない。

壊れるのは、コンパイラが非常に複雑だからだ。異なるソフトウェアのビルドプロセスは大きく異なることがあり、それぞれに独自の問題がある。

ビルド時の機能フラグ、コンパイラフラグ、リンカーフラグなどの追加の複雑さもある。

だから、Gentooは簡単に壊れることがある。君が欲しいツールが動かない可能性が高い。こういった問題は、プロダクションツールチェーンで解決できる。たとえば、Debianチームはこれらの問題を自分たちで解決したり、システムで動作することを保証するために最も安全な方法でプログラムをビルドしたりする。彼らは時間をかけ、物事が準備できてからリリースする。Gentooでは、その責任を負うことになる。ソフトウェアのバージョンが壊れている場合、何が間違ったのかを理解する必要がある。

時には、ebuildファイルを修正する必要がある。これはGentooシステムでソフトウェアをビルドするために使われるオーケストレーションスクリプトだ。

時には、ソフトウェアのビルド方法を変更する必要がある。これは異なるライブラリ、コンパイラ、機能フラグ、コンパイラフラグを試すことを意味することがある。

時には、ソフトウェアをビルドする際にビルド順序を変更する必要がある。これにより、依存関係に関連する問題、ライブラリ間のABI不整合などに対処する必要がある。これには、特定の順序でパッケージをアンマージしてマージする必要がある。

時には、関連パッケージのアップストリームディスカッションを検索して、ビルド時またはランタイムのバグに関する情報を探す必要がある。彼らが解決策を提供している場合は、その変更を取り入れるべきだ。

時には、ソフトウェアを手動でパッチする必要がある。ビルド時またはランタイムの失敗を修正するためにオンラインでパッチを見つけることもある。

時には、例外、USEフラグ、バージョンマスキングのためにコンパイラ関連の環境を追加する必要がある。これらの組み合わせが必要なこともある。

カーネル設定を変更すると、問題はLinuxカーネルの設定やビルド方法に関連しているかもしれない。ほとんどのGentooユーザーがそうするように。

このリストは広範囲だが、完全ではない。他にも理由があるかもしれない。私は上記の全てを経験してきたし、今もしている。

多くの人が、彼らが直面したさまざまな問題について私に連絡してきた。

Gentooのメンテナンスは難しく、メンテナはあまりいない。だから、物事は非常に迅速に修正されることはなく、公式リポジトリはこの状況を改善するために利用可能なパッケージの数を減らした。多くのパッケージを適切に維持するのは難しいからだ。

Gentooは自由を意味する。自由には責任が伴う。

コンパイルに時間がかかるというミームは真実ではない。カスタマイズは楽しい。自分が何をしているか分かっていれば、Gentooは素晴らしいツールになり得る。例えば、今のところ他のシステムを使うことはできない。なぜなら、私がやっていることをすることができないからだ。しかし、私はハードウェア、ソフトウェア開発、コンピュータ全般に非常に興味があり、マシンの低レベルなことに時間をかけるのが好きだ。だから、全ての人に合うわけではない。

「初期インストール」についての他のコメントも見たけど、Archと比較してたね。

Archでは、初期インストールが全てだ。その後は非常にシンプルだ(シンプルで直接的であることがポイント)。Pacmanを使って最新のバイナリを取得し、低レベルのOS関連の標準Linuxデフォルトを利用する。Archは非常に人気があるから、多くのAURパッケージが維持されている。

Gentooはデフォルトで「インストール済み」だ。カーネルをダウンロードしてブートローダーを設定すれば、直接ブートできる。Gentooでは、初期インストールの後に全てが始まる。コンパイラ、リンカー、Cライブラリ、C++ライブラリ、ビルド時の機能フラグ、コンパイラフラグ、リンカーフラグ、特定のパッケージ用の特定の環境、バージョン(古い、安定した、新しい、gitアップストリーム)、initシステム、字句解析器、シェルなど、何でも設定できる。

このように、ArchとGentooは正反対だ。Gentooでは、インストール後に全てが始まる(問題も含めて)。

_________________________________________________

2006年に約半年間Gentooを使ってた。あの頃のインストールドキュメントは素晴らしくて、コマンドラインやLinux全般について多くを学んだ。

でも、自分で全てのソフトウェアをコンパイルする利点は過大評価されてる。微小なパフォーマンス向上は、各アップデートのコンパイルにかかる時間の無駄を補うものではない。柔軟性は紙の上では良さそうだけど、実際には無効にしたUSEフラグが使いたい機能に関わってたり、特定のフラグ間での競合があったりすることが判明する。

Gentooは(だった)良い学習体験で、特定のユースケースには合うかもしれない。一般的なオペレーティングシステムとしては、特にデスクトップでは、間違ったものを最適化するように設計されていて、時間の無駄になる。


微小なパフォーマンス向上

それは真実だけど、長い間深刻な売り込みポイントではなかった。

各アップデートのコンパイルにかかる時間の無駄

何を意味してるの?確かに、更新には(相対的に)長い時間がかかるけど、システム全体を今すぐ最新にしたい(または大きなパッケージやまだインストールされていない大きな依存関係のあるパッケージをインストールしたい)わけじゃないなら、システムの他の部分に最小限の影響を与えながらバックグラウンドで更新を実行できる。

無効にしたUSEフラグが使いたい機能に関わってたり MFWで-waylandをグローバルに設定したのにWaylandを使ってる :( もっと真剣に言うと、デフォルトは通常かなり理にかなってるし、特定の要件がない限り、各USEフラグが何をするかを理解するのはそれほど難しくない(調整したい場合)。

特定のフラグ間での競合があったり

これが問題になる実際の例はある?ほとんどの競合は通常のディストロでも発生するだろう。ただし、いくつかのディストロは、互換性のないソフトウェアをインストールさせて、競合を解決する必要があることを教えてくれない。

間違ったものを最適化するように設計されていて

何を最適化しようとしてると思う?

時間の無駄になる。

CPUの時間の無駄だとは聞いたことがある。それ以外は、はい、通常のディストロよりも少し多くの作業になるけど、何をしたいか分かっていて、glibからmuslに毎日切り替えようとしないだけの自己制御があれば、必ずしも/大きな/量ではない。

_________________________________________________

個人的には、LinuxとGNUコンパイラコレクションを実際に学びたいなら、これが最良の方法だと思う。Linux From Scratchは手動の方向に行き過ぎていて、パッケージベースのディストロは逆に行き過ぎている。美しいハッピーミディアムだ。


LFSには完全にすべてをガイドするハンドブックがあるから、結局はただの仲介者になるだけだ。

_________________________________________________

先週、ノートパソコンにインストールしようとしたけど、1時間の苦痛の末に敗北した。でも、再挑戦するつもり。クールだし、ウィキもすごく役立った!