Haiku OSで.NET、いける? 現状と挑戦の記録

みなさん、こんにちは。

本日も、昨日に引き続き Haiku OS の可能性についての記事です。昨日はデータ処理をビジュアルプログラミングで効率化するNode-REDをご紹介しました。

 

今回は「Haiku OSでの.NET環境構築」に挑戦した記録をお届けしたいと思います。

ところで、当サイトに初めていらっしゃった方は、「Haiku OSって何?」という方の方が多いかもしれませんね。そんな時は、先に以下の記事をお読みいただいた方が理解が進むと思います。

 

Haiku OSには、開発環境としてJavaとNode.jsが既にパッケージとして用意されています。しかし、もしあの強力な.NET環境が使えたら、どんな可能性が広がるだろう…? 私のようなIoT開発に興味がある技術者にとっては、ワクワクするテーマです。

特に、複雑なビジネスロジックを実装する場面では、C#を使った.NET環境の生産性の高さは他の追随を許さないと個人的には感じています。非同期処理なんかは、JavaScript環境よりもずっと快適に進められるんですよね。

 


 

Haiku OSに.NETは存在するのか?

 

さて、Haiku OSで.NETを使いたい!と思っても、まず頭に浮かぶのは「HaikuDepotにパッケージはあるのか?」ということですよね。私も最初そう思いました。しかし、HaikuDepotをいくら探しても、それらしきパッケージは見当たりません。

「ああ、やっぱり無理か…」と諦めかけたその時、少し調べてみたら、なんと「dotnet-builds」というプロジェクトがGitHubに存在していることを発見したんです!

trungnt2910/dotnet-builds

これには驚きました。まさかHaiku OSで.NETが動く可能性があったとは!

このdotnet-buildsをインストールすると、以下の3つの環境が手に入るとのことです。

  • dotnet/runtime
  • dotnet/sdk
  • dotnet/msbuild

素晴らしい!これでHaiku OSでもC#のコードが書けるようになる!と期待に胸を膨らませたのですが、GitHubリポジトリ内のドキュメントをよく読んでみると、いくつか注意点があるようです。

  • ASP.NETとNativeAOTは現時点ではサポートされていません。
    • Webアプリケーションや、超高速なネイティブアプリケーションの開発はまだ難しいようです。
  • Haiku OSのr1beta5にはインストールできません。
    • pipe2が不足しているため、.NETの起動時にエラーが出てしまいます。
  • Haiku OSのnightlyビルド(開発版)なら対応しています。
    • なるほど、これが一番重要なポイントですね!

つまり、Haiku OSのnightlyビルドを使えば、.NETをインストールできるというわけです。よし、それでは早速インストールして、Haiku OSで.NETを試してみましょう!

 


 

Haiku OSのnightlyビルドに切り替え

 

まずはHaiku OSのリポジトリをnightlyビルドに切り替える作業から始めます。

  1. HaikuDepotを開きます。
  2. 「リポジトリの管理」へ進みます。
  3. 既存のリポジトリをすべて無効化します。
  4. 以下のリポジトリを追加して有効化します。
    • https://eu.hpkg.haiku-os.org/haiku/master/x86_64/currenthttps://eu.hpkg.haiku-os.org/haikuports/master/x86_64/current
    注意点: x86_64の部分は、Haiku OSをインストールしたアーキテクチャに合わせてください。
  5. HaikuDepotに戻り、「更新のチェック」を実行します。
  6. 更新パッケージが表示されたら「いますぐ更新」をクリックします。
  7. 処理が完了したら、Haiku OSを再起動します。

これでHaiku OSがnightlyビルドに切り替わりました。システムが最新の状態になったことを確認してください。

 


 

dotnet-buildsの依存パッケージをインストール

 

.NETをインストールする前に、いくつかの依存パッケージをインストールしておく必要があります。ターミナルを開いて、以下のコマンドを実行してください。

pkgman install -y gmp krb5 libiconv llvm12_libunwind mpfr
pkgman install -y jq

これらのパッケージは、.NETの動作に必要なライブラリやツールです。

 


 

いざ、インストールスクリプトを実行!

 

依存パッケージの準備ができたら、いよいよdotnet-buildsのインストールスクリプトを実行します。

bash -c "$(curl -fsSL https://raw.githubusercontent.com/trungnt2910/dotnet-builds/HEAD/dotnet-install.sh)" -- --install-dir /boot/home/config/non-packaged/lib/dotnet

このコマンドは、GitHubからインストールスクリプトをダウンロードして実行し、/boot/home/config/non-packaged/lib/dotnet以下に.NET環境をインストールします。インストールには少し時間がかかるので、気長に待ちましょう。

 


 

パスを通す

 

インストールが完了したら、システムが.NETのコマンドを見つけられるようにパスを通す必要があります。

  1. /boot/home/config/settings/profileファイルを開きます。
    • もしこのファイルがなければ、新規作成してください。
  2. 以下の2行をファイルの最後に追加します。
export DOTNET_ROOT=/boot/home/config/non-packaged/lib/dotnet
export PATH=$DOTNET_ROOT:$PATH

これでパスが通りました。設定を反映させるには、一度ターミナルを閉じて再度開くか、source /boot/home/config/settings/profileコマンドを実行してください。

 


 

.NETのバージョン確認!

 

さあ、いよいよ動作確認です!ターミナルを開き、以下のコマンドを実行してみましょう。

dotnet --version

私の環境では、以下のように表示されました!

9.0.300-preview.0.25110.2

やりました!バージョンが正常に表示されました!これでHaiku OS上に.NET環境を手に入れることができました!

dotnet_info
dotnet –info を実行してみたところ

ちなみに、このインストールスクリプトでインストールされる.NETのバージョンは、開発元が現在メンテナンスしている最新バージョンになるようです。もし過去のバージョンをインストールしたい場合は、GitHubのコミット履歴から該当するバージョンのインストールスクリプトを探すことになります。私もためしに8.0をインストールしてみましたが、SDKで依存エラーが出てしまったので、あまりお勧めできないかもしれません。最新版を使うのが良さそうです。

 


 

カスタムNuGetソースの追加(未成功)

 

GitHubのREADMEには、Haiku OS用のスペシャルパッケージを使うためにカスタムNuGetソースを追加する方法も記載されていました。GitHubアカウントとセキュリティトークンが必要とのことです。

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_usernameyour_github_tokenを自分のものに置き換えて実行してみたのですが、残念ながらnugetコマンドが見つからないというエラーが出てしまいました。どうやらHaiku用のSDKには、現時点ではnugetコマンドが含まれていないようです。

ということで、カスタムNuGetソースの追加は現時点では諦めざるを得ませんでした。残念!

 


 

helloworldプログラムのビルドに挑戦(未成功)

 

最後に、定番のhelloworldプログラムのビルドに挑戦してみました。これもGitHubのREADME通りに進めます。

mkdir helloworld
cd helloworld
dotnet new console
dotnet run

結果は…こちらも残念ながらエラーが出てビルドできませんでした。

dotnet_error
ビルドコマンドが不足している?

具体的には、何らかの理由でコンパイルが正常に行われないようでした。詳細なエラーログを追う必要がありそうですが、今回はそこまで踏み込むことはできませんでした。

 


 

結論 – 現状のHaiku OS向け.NETはまだ発展途上

 

今回のHaiku OSでの.NET環境構築の挑戦の結果、以下のことが分かりました。

  • Haiku OSのnightlyビルドであれば、.NETのランタイムはインストールできる。
  • dotnet --versionコマンドも正常に動作し、ランタイムとしては使える可能性はある。
  • しかし、SDKを使ったNuGetパッケージの管理や、簡単なC#プログラムのビルドは現状では困難。

現時点では、Haiku OS用の.NET環境はまだ不安定であり、実用的な開発環境として利用するには至らない、というのが正直な感想です。

ですが、このdotnet-buildsリポジトリは不定期に更新され続けています。今回の挑戦で、Haiku OSで.NETが動く可能性そのものは確認できました。これは大きな一歩だと思います。

今後、また状況が変わって、Haiku OSで本格的な.NET開発ができるようになったら、その時は改めて記事にしたいと思います。Haiku OSと.NETの未来に期待しつつ、今回の挑戦記録を終わりにします。

Haiku OSで何か面白いことができるという情報があれば、ぜひコメントに残していただけると嬉しいです!

 

本日も最後までお読みいただきありがとうございました。

それでは、よいHaiku OSライフを!

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール