4

I have two Ubuntu 22.04 systems with Dotnet 6.0. The one that has been continuously upgraded from older versions of Ubuntu runs my Dotnet Core 3.1 app without any trouble -- because it still has the old runtime (and libssl1.1) that are no longer available for 22.04.

The one running in WSL (i.e., Ubuntu under Windows) has the dotnet6.0 package, libssl1.1 downloaded from packages.ubuntu.com/focus, and aspnetcore-runtime-3.1 from microsoft .

But dotnet --info:

.NET SDK (reflecting any global.json):
 Version:   6.0.108
 Commit:    4e3a463d2b

Runtime Environment: OS Name: ubuntu OS Version: 22.04 OS Platform: Linux RID: ubuntu.22.04-x64 Base Path: /usr/lib/dotnet/dotnet6-6.0.108/sdk/6.0.108/

global.json file: Not found

Host: Version: 6.0.8 Architecture: x64 Commit: 55fb7ef977

.NET SDKs installed: 6.0.108 [/usr/lib/dotnet/dotnet6-6.0.108/sdk]

.NET runtimes installed: Microsoft.AspNetCore.App 6.0.8 [/usr/lib/dotnet/dotnet6-6.0.108/shared/Microsoft.AspNetCore.App] Microsoft.NETCore.App 6.0.8 [/usr/lib/dotnet/dotnet6-6.0.108/shared/Microsoft.NETCore.App]

Even though the runtime shows at /usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.28/

Auspex
  • 1,158

3 Answers3

6

I couldn't get 3.1 working on ubuntu 22 using any package repos. With the microsoft package repo I could find the package but it couldn't get the dependencies:

sudo apt-get install dotnet-sdk-3.1
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies. dotnet-sdk-3.1 : Depends: dotnet-targeting-pack-3.1 (>= 3.1.0) but it is not installable Depends: netstandard-targeting-pack-2.1 (>= 2.1.0) Depends: aspnetcore-targeting-pack-3.1 (>= 3.1.10) but it is not installable E: Unable to correct problems, you have held broken packages

I think it's because 3.1 is now unsupported.

What seemed to work was uninstalling all my dotnet packages

sudo apt remove dotnet*

and then getting the binaries direct from https://dotnet.microsoft.com/en-us/download/dotnet/3.1

When you click the link for your architecture it gives you the following instructions:

install by running this from ~/Downloads (or wherever you have the tar.gz)

mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-3.1.426-linux-x64.tar.gz -C $HOME/dotnet

then add the following lines to your bash startup file (.profile/.bashrc/whatever)

export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

you'll then need to resource your profile in any open terminals and dotnet run should do it's thing again

JonnyRaa
  • 160
4

**EDIT: Probably obsolete: See Johny Raa's answer: **

It turns out the Ubuntu choices for SDK and runtime location are incompatible with Microsoft's. So, it's nice to have the dotnet6 package to pull in all the packages, but the ones you want are actually Microsoft's! The key is to first create an apt preferences file:

derbro@L21PS773:~$ cat /etc/apt/preferences.d/dotnet.pref
Package: dotnet* aspnet* netstandard*
Pin: release o=Ubuntu,l=Ubuntu
Pin-Priority: -10

(which my working system already had based on instructions for making Dotnet 6.0 work, at Why don't any of these methods work for installing .Net Core SDK & runtime on 22.04 (Jammy Jellyfish)?. I actually didn't have a problem getting Dotnet 6 to work on this WSL installation, I just couldn't make it find the 3.1 runtime)

Now, install the 3.1 runtime or SDK per MS instructions:

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y aspnetcore-runtime-3.1
#or
sudo apt-get install -y dotnet-sdk-3.1

(if either fail to install because you're missing libssl1.1, you'll have to get that from https://packages.ubuntu.com/focal/libssl1.1 and install with dpkg --install)

Then upgrade your MS sources:

wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update

and install (or reinstall) dotnet 6

sudo apt install dotnet-sdk-6.0
Auspex
  • 1,158
-1

In the file /etc/ssl/openssl.cnf, comment this line:

#openssl_conf = openssl_init

So, try to install the sdk 3.1:

sudo wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo rm packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y dotnet-sdk-3.1

And now, go to the terminal and type this comand:

dotnet --info

if everything is fine, you will see the path of instalation of dotnet 3.1

Paulo
  • 99
  • 2