みなさん、こんにちは。
今年のゴールデンウィークは、カレンダーの並びもよく、かなり長いお休みが取れた方も多いのではないでしょうか? まとまった時間が取れる連休は、普段なかなか手を付けられない技術的なお試しをするのに絶好のチャンスですよね。
というわけで私は、随分と放置状態になってしまっていた「Haiku OSでの.NET環境構築」を再開してみました!
前回の記事では、Haiku OSのnightlyビルドに.NET 9をインストールするところまでは進んだものの、カスタムパッケージ(NuGet)の追加で躓き、プログラムのビルドにも失敗するという、ちょっと悔しい結果で終わっていました。
あれから時が経ち、どうやら最新のプロジェクトではすでに.NET 10(!)に対応しているようなのですが、今回は何よりも「動くこと」、つまり安定性を最重視して、あえて「.NET 8」をターゲットにリベンジを試みてみました。
結果から言うと……今回は大成功です! 忘備録を兼ねて、具体的な手順を共有します。
.NET 8をピンポイントでインストールする
今回のリベンジにあたり、Haiku OS も最新のナイトリービルドをダウンロードしてセットアップしました。Haiku OS のバージョンは hrev59677 です。

作業の前に、前回同様、必要なパッケージをインストールしてください。
pkgman install -y git gmp krb5 libiconv llvm12_libunwind mpfr
pkgman install -y jq
現在(2026年5月)、開発元のtrungnt2910さんのインストールスクリプトをそのまま実行すると、最新の.NET 10がインストールされてしまいます。今回は安定した.NET 8環境が欲しいため、スクリプトを少し書き換えてバージョンを固定します。
まずは、GitHubからリポジトリをクローンします。
git clone https://github.com/trungnt2910/dotnet-builds.git
cd dotnet-builds
次に、使い慣れたテキストエディタ(今回はnanoを使用)で、インストールスクリプトを開きます。
nano dotnet-install.sh
51行目あたりにある、チャンネル(バージョン)を判定している箇所を探してください。以下のように、デフォルトが8.0になるように修正します。
【修正前】
if [ -z "$CHANNEL" ]; then
CHANNEL="10.0"
fi
【修正後】
if [ -z "$CHANNEL" ]; then
CHANNEL="8.0"
fi
修正して保存したら、スクリプトを実行します。インストール先は前回同様、non-packaged以下を指定します。
./dotnet-install.sh --install-dir /boot/home/config/non-packaged/lib/dotnet
これで、/boot/home/config/non-packaged/lib/dotnet 以下に無事.NET 8環境がインストールされます。
環境変数(パス)を通す
インストールが終わったら、システムがコマンドを認識できるようにパスを通しましょう。
nano /boot/home/config/settings/profile
ファイルの末尾に、以下の2行を追加します。(ファイルがなければ新規作成してください)
export DOTNET_ROOT=/boot/home/config/non-packaged/lib/dotnet
export PATH=$DOTNET_ROOT:$PATH
保存したら、設定を反映させるためにターミナルを一度再起動します。 その後、運命のバージョン確認コマンドを実行してみましょう!
dotnet --version
8.0.421-servicing.26230.1
ここで、しっかり .NET 8 のバージョンが表示されれば第一段階はクリアです!
前回挫折した「カスタムNuGetソースの追加」に挑戦
前回はnugetコマンドが見つからずに諦めてしまったパッケージソースの追加ですが、今回は仕様が変わったのか、dotnet nuget コマンド経由でしっかり設定することができました。
Haiku向けのスペシャルな.NETパッケージを利用するために、trungnt2910さんのGitHub Packagesをソースに追加します。これにはGitHubの「パーソナルアクセストークン(classic)」が必要です。
【事前準備:GitHubでのトークン生成】
- GitHubの Settings > Developer settings > Personal access tokens > Tokens (classic) に進みます。
- 新しいトークンを生成します。この際、権限(Scopes)として
read:packagesに必ずチェックを入れてください。
- 生成されたトークンをコピーしておきます。
準備ができたら、ターミナルで以下のコマンドを実行します。
dotnet nuget add source --username your_github_username --password your_github_token --store-password-in-clear-text --name dotnet_haiku_nuget "https://nuget.pkg.github.com/trungnt2910/index.json"
※ your_github_username はご自身のGitHubユーザー名に、your_github_token は先ほどコピーしたトークンに置き換えてください。
これで無事にパッケージソースが追加されました! 今後、Haiku向けの特定のパッケージを追加したい場合は、以下のコマンドでソースを指定してインストールできます。
dotnet add package PackageName --source dotnet_haiku_nuget
ちなみに、現時点でどんなパッケージが提供されているかは、以下のURLから確認できます。
ついにその時が!Hello Worldの実行
環境は整いました。いよいよ、前回エラーで砕け散った hello world プログラムのビルドと実行に挑戦です。
trungnt2910さんのリポジトリの手順通りに、新規プロジェクトを作成して実行してみます。
mkdir helloworld
cd helloworld
dotnet new console
dotnet run
画面をじっと見つめていると……
hello world
出ました!!! エラーを吐くことなく、綺麗に「hello world」の文字がターミナルに出力されました! 前回の無念を晴らす、大成功の瞬間です。Haiku OSの上でC#が、.NETが確かに動いています!

実用への階段を上り始めたHaikuOS×.NET
今回リベンジを果たしてみて、Haiku OSにおける.NET環境は着実に前進していると肌で感じました。
もちろん、現状では公開されているパッケージ数も限られているため、開発できるプログラムにはどうしても制限があります。しかし、前回のように「そもそもビルドすら通らない」という状態から、「カスタムソースを追加してHello Worldが動く」という段階まで来られたのは非常に大きな進歩です。
今後のアップデートでさらに多くのパッケージが対応し、エコシステムが広がっていくのが今からとても楽しみですね。
Haiku OSという軽量で尖ったOSの上で、C#の強力な生産性や非同期処理が活かせるようになれば、面白いツールやアプリが作れるようになるはずです。「自分も試してみたよ!」「こんなアプリが動いた!」という方がいれば、ぜひコミュニティやSNS等で情報を共有して、Haiku OS×.NETの輪を広げていきましょう!
本日も最後までお読みいただき、ありがとうございました。
それでは、よいHaiku OSライフを!



