Open richlander opened 2 years ago
Should we add these to https://docs.microsoft.com/en-us/dotnet/core/install/linux-package-mixup ?
Should we add these to https://docs.microsoft.com/en-us/dotnet/core/install/linux-package-mixup ?
A set of modifications for the page was here too: https://github.com/dotnet/docs/issues/30457#issuecomment-1209280875
https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu#2204 should be updated too.
Can you elaborate @bastare?
Tried the steps but to no avail. Ubuntu 22.04
$ dn --info
global.json file:
Not found
Host:
Version: 6.0.8
Architecture: x64
Commit: 55fb7ef977
.NET SDKs installed:
No SDKs were found.
.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]
Download .NET:
https://aka.ms/dotnet-download
Learn about .NET Runtimes and SDKs:
https://aka.ms/dotnet/runtimes-sdk-info
This is specific to package version 6.0.8+. Downgrading to 6.0.7 resulted in the SDK showing.
Did folks who are having this problem follow the instructions? If so, did you go with scenario 1 or 2?
Thanks so much, I've been trying to fix the error for hours, Scenario 1 did it for me.
Edit: I was using Ubuntu Jammy.
I updated the scenarios to make them clearer. We now have two "Clean machine" scenarios and two "Mixed-state" scenarios. I've kept the numbering the same.
BTW: We are very sorry that this situation occurred. We should have predicted that it would but sadly did not. That's on us. We've learned that mix-and-matching package feeds with the same package names that install to different locations is a recipe for what we're seeing here. Again, we're sorry about that and won't repeat it.
Why is there this sudden change of installation steps? Is this going to be the one used moving forward?
What do we do if we want powershell installed from PMC but to install SDK from jammy repo?
Also removing and re-installing dotnet and aspnetcore did not fix the issue for me either.
Did folks who are having this problem follow the instructions? If so, did you go with scenario 1 or 2?
After some trial and error, found this github issue and went with "Clean machine scenario 2: Use .NET 6 Package via PMC" as this allows using the latest dotnet 6 sdk version. These instructions worked well.
How can I get dotnet 5 SDK installed on 22.04 ? Its not supported using packages. does this mean i cant use the native packages if i want to use SDK 5 & 6 ?
In our company we're using a mirror with the same starting url for both feeds - PMC and Ubuntu sources.
Hence pinning won't work by setting
Pin: release mirror.company.com
Instead the following configuration works for me:
Package: *
Pin: release o=microsoft-ubuntu-jammy-prod jammy, n=jammy, a=jammy, c=main
Pin-Priority: 1001
Just in case anybody has a similar issue...
@mickdelaney Only .NET 6+ is supported on Ubuntu 22.04. That's unrelated to this discussion. See: https://github.com/dotnet/core/issues/7038#issuecomment-1110377345
.NET 6 is our first release to support OpenSSL v3. Ubuntu 22.04 only includes OpenSSL v3. As a result .NET 5 cannot function. You can install OpenSSL v1.x yourself if needed. We don't support that. Same thing with .NET Core 3.1. Also, .NET 5 is EOL.
Why is there this sudden change of installation steps? Is this going to be the one used moving forward?
We've been working with Canonical to make .NET available in the official feeds. That landed last week. We're making an official announcement tomorrow to better describe the change. This is a case where technical and marketing dates didn't match, sadly. We tried our best to resolve this situation by posting this issue with these instructions within a couple hours of realizing what had happened. We've updated the instructions a few times based on feedback and better understanding the mechanics to help users adapt to the new packages.
Tried the steps but to no avail. Ubuntu 22.04
$ dn --info global.json file: Not found Host: Version: 6.0.8 Architecture: x64 Commit: 55fb7ef977 .NET SDKs installed: No SDKs were found. .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] Download .NET: https://aka.ms/dotnet-download Learn about .NET Runtimes and SDKs: https://aka.ms/dotnet/runtimes-sdk-info
@khteh which exact scenario steps were attempted? We have steps for 2 clean
and 2 mixed
scenarios.
What do we do if we want powershell installed from PMC but to install SDK from jammy repo?
Also removing and re-installing dotnet and aspnetcore did not fix the issue for me either.
@ar0311 which exact scenario steps were attempted? We have steps for 2 clean
and 2 mixed
scenarios.
What do we do if we want powershell installed from PMC but to install SDK from jammy repo?
For this scenario, the following would work:
/etc/apt/preferences
) with the following contents:Package: *
Pin: origin "packages.microsoft.com"
Pin-Priority: 400
Follow steps for installing Powershell on Ubuntu from https://docs.microsoft.com/en-us/powershell/scripting/install/install-ubuntu?view=powershell-7.2
Install .NET SDK - it would be obtained from Jammy repos.
Tried the steps but to no avail. Ubuntu 22.04
$ dn --info global.json file: Not found Host: Version: 6.0.8 Architecture: x64 Commit: 55fb7ef977 .NET SDKs installed: No SDKs were found. .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] Download .NET: https://aka.ms/dotnet-download Learn about .NET Runtimes and SDKs: https://aka.ms/dotnet/runtimes-sdk-info
I had the same issue and I tried the Mixed state scenario 2 and it works
The official Jammy .NET package is not fit for purpose and conflicts with software like Discord.
This used to work absolutely fine with the PMC packages. Whilst I'm supportive of making .NET more widely available like this, and easier to install, this seems like a step backwards.
I'm now having to work-around this by messing with /etc/apt/preferences
- not a great developer experience.
There is a Canonical bug tracking this: https://bugs.launchpad.net/ubuntu/+source/dotnet6/+bug/1984450
In case this helps anyone, I had to add a step to mixed-state scenario 2. I was not able to install the PMC packages until I purged and reinstalled the PMC repository like this:
sudo dpkg --purge packages-microsoft-prod
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
You can verify that the repository is working by running apt-cache policy dotnet-sdk-6.0
. You should see a whole bunch of entries from packages.microsoft.com
. If you only see entries from archive.ubuntu.com
, then the repository is broken and dotnet will be installed from canonical repositories even if you pinned the packages in apt preferences file.
.NET SDK version from Jammy package repo is outdated. The current version is 6.0.108 instead of 6.0.400
Hi @sakno,
unfortunately, 6.0.4xx cannot be built from source for Ubuntu (nor for Linux distros in general) because it's not supported:
Hi @sakno,
unfortunately, 6.0.4xx cannot be built from source for Ubuntu (nor for Linux distros in general) because it's not supported:
* https://github.com/dotnet/source-build#support * https://bugs.launchpad.net/ubuntu/+source/dotnet6/+bug/1984451/comments/4
OMG, switching back to packages.microsoft.com
OMG, switching back to packages.microsoft.com
Could you share more information about what missing features in 6.0.1xx motivate the switch?
@omajid , sure. The latest version of SDK has some updates on Roslyn compiler. I found that my code can be compiled on the earlier versions but not on the latest. For instance,
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
public struct C {
private int value;
private Span<byte> Span => MemoryMarshal.AsBytes(MemoryMarshal.CreateSpan(ref value, 1));
}
Thus, the latest Roslyn update introduces incompatible changes at the source level.
Oh. I thought you meant the opposite...
Ubuntu has the older 6.0.1xx SDK (with older Roslyn), compared to packages.microsoft.com. If I am reading your concerns correctly, you want to avoid packages.microsoft.com?
@omajid , no, I can't use it because as a maintainer of OSS project I need to be sure that everyone who cloned the repo is able to build the project locally (and remotely on Azure DevOps). So, everything that can be compiled on 6.0.4x can be compiled on 6.0.1x but not vice versa.
When will support for Arm64 .NET 6 come to the Ubuntu package? It's not available when I try to install it. This website says it's only for amd64 (aka x86_64), but Microsoft's download page also provides binaries for Arm32 and Arm64 Linux. Please add the Arm64 architecture version to the Ubuntu package.
Is Microsoft released package for .net 7 sdk on 22.04?
When will support for Arm64 .NET 6 come to the Ubuntu package? It's not available when I try to install it. This website says it's only for amd64 (aka x86_64), but Microsoft's download page also provides binaries for Arm32 and Arm64 Linux. Please add the Arm64 architecture version to the Ubuntu package.
We're working on it.
@lonix1 I have used dotnet-install.sh to install dotnet sdk 6.0.400 and runtime in home/.dotnet folder, it worked alongside existing version (6.0.108) installed in the system with package manager. I'm not sure, if it is possible to remove the version from package manager, and use dotnet-install.sh to install latest version into systems' folders for all users.
Upgraded to ubuntu 22 and hit this problem. I want the latest version, from the MS repo, not an older version from canonical. I've tried every approach but none worked (for me).
Does someone have a complete working script that installs from the MS repo?
I removed all the packages and went for manual install using the dotnet-install.she also, works for me
Thanks guys. What eventually worked for me was this approach. It uses apt pinning.
Hello, I'm confused over whether to install the dotnet-sdk-6.0 or dotnet6 package. I followed "Mixed state scenario 1: Use native Jammy packages after installing a previous .NET release from PMC" and installed dotnet-sdk-6.0 and all is well (I have an sdk and runtime listed in dotnet --info), but throughout this thread it often states to install package dotnet6, which do I want?
I just installed (on Ubuntu 22.04), following this:
sudo apt install dotnet6
then when I
dotnet --list-sdks
Nothing shows up.
Then when I attempt to build a package, I get
> dotnet build
The command could not be loaded, possibly because:
* You intended to execute a .NET application
The application build does not exist.
* You intended to execute a .NET SDK command
No .NET SDKs were found.
However, the install log says other wise...
Am I missing something?
@FilBot3 Thanks for the install log. It shows this bit:
Setting up aspnetcore-runtime-6.0 (6.0.108-0ubuntu1~22.04.1) ...
Setting up dotnet-sdk-6.0 (6.0.400-1) ...
The first package here is from the Ubuntu repositories. The second is from packages.microsoft.com. You are in a mixed state and that's why things don't work. See "Mixed state scenario 1" or "Mixed state scenario 2" from the top post in this issue and follow that advice.
Ah,yeah. Removing the microsoft-prod deb source and updating helped.
sudo apt remove dotnet\*
sudo rm /etc/apt/sources.iist.d/microsoft-prod.list
sudo apt update
sudo apt install -y dotnet6
However, I may have a similar issue on Fedora next...
Yup, same thing on Fedora.
sudo rm /etc/yum.repos.d/microsoft-prod.repo
sudo dnf remove dotnet\*
sudo dnf install dotnet-sdk-6.0
I am fixed now.
Tried the steps but to no avail. Ubuntu 22.04
$ dn --info global.json file: Not found Host: Version: 6.0.8 Architecture: x64 Commit: 55fb7ef977 .NET SDKs installed: No SDKs were found. .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] Download .NET: https://aka.ms/dotnet-download Learn about .NET Runtimes and SDKs: https://aka.ms/dotnet/runtimes-sdk-info
I resolve the same problem by installing runtimes first then SDK. I run "sudo apt install aspnetcore-runtime-6.0" first, then run "sudo apt install dotnet6".
Tried the steps but to no avail. Ubuntu 22.04
$ dn --info global.json file: Not found Host: Version: 6.0.8 Architecture: x64 Commit: 55fb7ef977 .NET SDKs installed: No SDKs were found. .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] Download .NET: https://aka.ms/dotnet-download Learn about .NET Runtimes and SDKs: https://aka.ms/dotnet/runtimes-sdk-info
I resolve the same problem by installing runtimes first then SDK. I run "sudo apt install aspnetcore-runtime-6.0" first, then run "sudo apt install dotnet6".
Did you uninstall the previous installations of dotnet you had? Did you also remove any mention of the microsoft-prod.repo or source for Ubuntu?
Yes,I uninstall all the things you mention before I did this. But if I install dotnet6 first I would confront the same problem no matter I do the clean up or not. So just install runtime first work for me for this particular issue.
Ah,yeah. Removing the microsoft-prod deb source and updating helped.
sudo apt remove dotnet\* sudo rm /etc/apt/sources.iist.d/microsoft-prod.list sudo apt update sudo apt install -y dotnet6
However, I may have a similar issue on Fedora next...
How to install libmsquic if packages.microsoft.com/keys/microsoft.asc is removed? https://learn.microsoft.com/en-us/windows-server/administration/linux-package-repository-for-microsoft-software
@khteh -- These related instructions (linked from the top) for PowerShell might help: https://github.com/dotnet/core/issues/7713.
I have dotnet
in an older previous Ubuntu, and then I updated to Ubuntu Jammy 22.04
. After this, dotnet --list-sdks
no longer return anything. So I have to fix it by:
sudo apt remove dotnet*
sudo apt remove aspnetcore*
sudo rm /etc/apt/sources.list.d/microsoft-prod.list*
sudo apt update
sudo apt install dotnet6
And it is fixed now.
Will you ever support SDK 6.0.401 via Jammy feed? I like the simplicity of Jammy feed, but I also need latest SDK.
Installing .NET 6 on Ubuntu 22.04 (Jammy)
We announced support for .NET 6 on Ubuntu 22.04 with our May 2022 Updates. At that time, the supported installation methods were manual installation via a tarball or a
.deb
package via packages.microsoft.com (PMC). .NET 6 is now available natively via Jammy feeds, which can cause conflicts with PMC feeds. You need to apply the following guidance to install .NET 6 reliably and correctly on Ubuntu 22.04+.More information will be shared shortly on .NET 6 being available natively in the
jammy-updates
feed. In general, we recommend that you use the native packages from this feed since it is much easier and simpler.You can use one of the following scenarios:
Related:
Clean machine scenario 1: Use .NET 6 Package via Jammy feed
The easiest approach is to use the .NET 6 package available in Jammy feeds. In this scenario, just install
dotnet6
and don't register the PMC feed.You can do that via the following commands:
You can see this demonstrated with Docker:
Note: This build of .NET 6 is for the
6.0.1xx
band.6.0.4xx
builds are available via PMC. That difference matters most to Windows users. Both builds are supported.Clean machine scenario 2: Use .NET 6 Package via PMC
You can install .NET 6 on Ubuntu 22.04 from
packages.microsoft.com
using the following steps:Configure apt preferences, to prioritize PMC repository, by creating the following file:
/etc/apt/preferences
To create the file:
with contents:
Update your APT information:
sudo apt update
Install .NET SDK 6.0:
sudo apt install dotnet-sdk-6.0
Mixed state scenario 1: Use native Jammy packages after installing a previous .NET release from PMC
You may want to switch to using the .NET 6 package available in Jammy after installing .NET 6 from PMC.
Do the following:
sudo apt remove --purge dotnet*
sudo apt remove --purge aspnetcore*
sudo rm /etc/apt/sources.list.d/microsoft-prod.list
sudo apt update
sudo apt install dotnet-sdk-6.0
Mixed state scenario 2: Use PMC packages after installing native Jammy packages
You may want to switch to using
packages.microsoft.com
packages after installing native packages, potentially because you want to use6.0.4xx
builds.Do the following:
sudo apt remove --purge dotnet*
sudo apt remove --purge aspnetcore*
sudo apt install dotnet-sdk-6.0
How to identify which packages you'd installed
We'll install .NET 6 with both feeds, from a clean state, and then point the various ways you can identify which feed you installed the package from.
First, let's install the native Jammy packages using the "Clean machine scenario 1" guidance.
Notice that we've installed .NET SDK
6.0.108
, installed to/usr/lib/dotnet/
, and that thedotnet6
package is being installed fromhttp://archive.ubuntu.com/ubuntu jammy-updates/universe
. That's expected for the native packages.Let's try the same thing with PMC, but with the "Clean machine scenario 2" guidance.
Notice that we've installed .NET SDK
6.0.400
, installed to/usr/share/dotnet/
, and that thedotnet6
package is being installed fromhttps://packages.microsoft.com/ubuntu/22.04/prod jammy/main
. That's expected for PMC packages.We can also tell if the Microsoft PMC feed is registered:
If you are using native packages, that file won't and shouldn't be present.