Linuxでdotnet sdkがno sdks were foundになるときの対応

この記事は公開から1年以上経過しています。

Linux(Ubuntu)にapt(Microsoftフィード)で.NET 7.0 SDKをインストールしてdotnet --infoを表示しても

.NET SDKs installed:
no sdks were found.

のようにSDKが認識されない状態となってしまっていたため、そのときの解決策についての備忘録。


対応

  1. 以下のコマンドで.NET 7.0 SDKを一旦削除する。

    sudo apt remove dotnet-sdk-7.0

    上記でうまく行かない場合は以下のコマンドで.NET SDK/Runtime関連のパッケージを全削除する方法もあります。

    sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'

    パッケージを削除すると他のパッケージの依存関係が壊れてプログラムが起動しなくなったり、システム自体が起動しなくなる場合もあります。
    削除対象パッケージや表示されるメッセージを十分確認して慎重に作業してください(At your own risk!)。

  2. Microsoftフィードのパッケージリストとインストールされた関連ファイルを削除する。

    sudo dpkg --purge packages-microsoft-prod
  3. Ubuntuのバージョンに一致するパッケージリポジトリを再設定する。

    declare repo_version=$(if command -v lsb_release &> /dev/null; then lsb_release -r -s; else grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"'; fi)
    
    wget https://packages.microsoft.com/config/ubuntu/$repo_version/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    
    sudo dpkg -i packages-microsoft-prod.deb
    
    rm packages-microsoft-prod.deb
    
  4. .NET 7.0 SDKを再インストールする。

    sudo apt update
    sudo apt install dotnet-sdk-7.0

上記手順完了後に再度dotnet --infoコマンドを実行すると、インストールされたSDKバージョンが表示されるようになっていると思います。

ちなみに私自身はこの記事を書いた後でMicrosoftリポジトリのパッケージをやめ、公式リポジトリのパッケージを使用するように変更しました。
(パッケージ混在で競合が起きている感じがしたので…)


参考ウェブサイトなど

  • stackoverflow
    dotnet sdk is installed but not recognized – Linux Ubuntu/popOS 22.04

  • Microsoft Learn
    Ubuntu に .NET SDK または .NET ランタイムをインストールする

  • Microsoft Learn
    Linux 上で見つからないファイルに関連する .NET エラーのトラブルシューティング

以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする