Core: Unable to install .NET 5 RC2, .NET Core 2.1, .NET Core 3.1 on Ubuntu 20.10

Created on 14 Oct 2020  路  10Comments  路  Source: dotnet/core

While trying to install 5.0 RC 2 on Ubuntu 20.10 I am running into this error. Can someone help me resolve this issue

I am following the steps mentioned in our release notes for this.

*** Unpacking dotnet-5.0.0-rc.2-deb.tar.gz ...

dotnet_packages/
dotnet_packages/dotnet-runtime-deps-5.0.0-rc.2.20475.5-x64.deb
dotnet_packages/dotnet-targeting-pack-5.0.0-rc.2.20475.5-x64.deb
dotnet_packages/dotnet-sdk-5.0.100-rc.2.20479.15-x64.deb
dotnet_packages/aspnetcore-targeting-pack-5.0.0-rc.2.20475.17.deb
dotnet_packages/dotnet-apphost-pack-5.0.0-rc.2.20475.5-x64.deb
dotnet_packages/dotnet-hostfxr-5.0.0-rc.2.20475.5-x64.deb
dotnet_packages/netstandard-targeting-pack-2.1_2.1.0-1_amd64.deb
dotnet_packages/dotnet-host-5.0.0-rc.2.20475.5-x64.deb
dotnet_packages/aspnetcore-runtime-5.0.0-rc.2.20475.17-x64.deb
dotnet_packages/dotnet-runtime-5.0.0-rc.2.20475.5-x64.deb


Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'aspnetcore-runtime-5.0' instead of '/root/dotnet_install/dotnet_packages/aspnetcore-runtime-5.0.0-rc.2.20475.17-x64.deb'
Note, selecting 'aspnetcore-targeting-pack-5.0' instead of '/root/dotnet_install/dotnet_packages/aspnetcore-targeting-pack-5.0.0-rc.2.20475.17.deb'
Note, selecting 'dotnet-apphost-pack-5.0' instead of '/root/dotnet_install/dotnet_packages/dotnet-apphost-pack-5.0.0-rc.2.20475.5-x64.deb'
Note, selecting 'dotnet-host' instead of '/root/dotnet_install/dotnet_packages/dotnet-host-5.0.0-rc.2.20475.5-x64.deb'
Note, selecting 'dotnet-hostfxr-5.0' instead of '/root/dotnet_install/dotnet_packages/dotnet-hostfxr-5.0.0-rc.2.20475.5-x64.deb'
Note, selecting 'dotnet-runtime-5.0' instead of '/root/dotnet_install/dotnet_packages/dotnet-runtime-5.0.0-rc.2.20475.5-x64.deb'
Note, selecting 'dotnet-runtime-deps-5.0' instead of '/root/dotnet_install/dotnet_packages/dotnet-runtime-deps-5.0.0-rc.2.20475.5-x64.deb'
Note, selecting 'dotnet-sdk-5.0' instead of '/root/dotnet_install/dotnet_packages/dotnet-sdk-5.0.100-rc.2.20479.15-x64.deb'
Note, selecting 'dotnet-targeting-pack-5.0' instead of '/root/dotnet_install/dotnet_packages/dotnet-targeting-pack-5.0.0-rc.2.20475.5-x64.deb'
Note, selecting 'netstandard-targeting-pack-2.1' instead of '/root/dotnet_install/dotnet_packages/netstandard-targeting-pack-2.1_2.1.0-1_amd64.deb'
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-runtime-deps-5.0 : Depends: libicu but it is not installable or
                                    libicu66 but it is not installable or
                                    libicu65 but it is not installable or
                                    libicu63 but it is not installable or
                                    libicu60 but it is not installable or
                                    libicu57 but it is not installable or
                                    libicu55 but it is not installable or
                                    libicu52 but it is not installable
E: Unable to correct problems, you have held broken packages.

Most helpful comment

This is the expected behavior with the current delay-heavy release process (https://github.com/dotnet/runtime/issues/35672) so I don't think "broken" is the right word. Packages that support Ubuntu 20.10 are not available, but if you manually acquire that old libicu66 package, you can then use the .NET packages that support Ubuntu 20.04 on Ubuntu 20.10.

Using equivs takes more lines to do, but it means you don't end up potentially using an old version of ICU, or having two versions of ICU installed. It looks like this before or after setting up the Microsoft packages repo:

sudo apt install -y equivs \
&& echo "Package: libicu" > libicu \
&& equivs-build libicu \
&& sudo apt install -y ./libicu_1.0_all.deb libicu67

Then sudo apt-get install -y dotnet-sdk-3.1 works.

@rbhanda, @NikolaMilosavljevic, and @leecow should probably decide which workaround seems ok to put up as docs.

All 10 comments

This is an ordinary failure that is resolved by adding support for the distro. I imagine https://github.com/dotnet/core/issues/5017 tracks this? (But it's missing an explicit checkbox?)

Ubuntu 20.10 has libicu67.

/cc @NikolaMilosavljevic @dleeapho

Correct, the upshot is that we'll need updated runtime-deps for 2.1, 3.1 and 5.0.

.NET 5 can be install n 20.10 using the install script
For 2.1 and 3.1 installation, in order to satisfy deb package dependency, please run
wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu66_66.1-2ubuntu2_amd64.deb
dpkg -i libicu66_66.1-2ubuntu2_amd64.deb

.NET 5 can be install n 20.10 using the install script

Note that the install script has been changed to include the workaround of installing libicu66 from the downloaded deb. This means you may end up with both libicu66 and libicu67 installed on your machine. I don't think this makes .NET behave worse, but it may be unexpected and confusing if you go to clean up later.

I believe a cleaner workaround is to use equivs to make a "fake" libicu package to satisfy the bad dotnet-runtime-deps dependency. Then just make sure libicu67 is installed, and .NET will use that.

What should the messaging in the docs be related to this? Add section for 20.10 and note that the package manager is currently broken and to use the manual install and pre?post? running the script, get the dependency with

wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu66_66.1-2ubuntu2_amd64.deb
dpkg -i libicu66_66.1-2ubuntu2_amd64.deb

??

This is the expected behavior with the current delay-heavy release process (https://github.com/dotnet/runtime/issues/35672) so I don't think "broken" is the right word. Packages that support Ubuntu 20.10 are not available, but if you manually acquire that old libicu66 package, you can then use the .NET packages that support Ubuntu 20.04 on Ubuntu 20.10.

Using equivs takes more lines to do, but it means you don't end up potentially using an old version of ICU, or having two versions of ICU installed. It looks like this before or after setting up the Microsoft packages repo:

sudo apt install -y equivs \
&& echo "Package: libicu" > libicu \
&& equivs-build libicu \
&& sudo apt install -y ./libicu_1.0_all.deb libicu67

Then sudo apt-get install -y dotnet-sdk-3.1 works.

@rbhanda, @NikolaMilosavljevic, and @leecow should probably decide which workaround seems ok to put up as docs.

use the manual install and pre?post? running the script, get the dependency

With the manual install you don't need the out-of-distro libicu66 via wget, you can just use the distro-provided libicu67. This is part of normal dependency setup so I don't think it needs to be any more detailed than usual.

Package repo installs are better than manual installs, so it would be nice to see an official workaround letting you install from the repo rather than only pointing to manual. (If either of the workarounds seem acceptable to the folks I pinged.)

Not quite, only some versions. https://github.com/dotnet/core/issues/5017#issuecomment-729208437:

New packages were pushed for 5.0 and 3.1 to support Ubuntu 20.10, but not 2.1.

(dotnet-sdk-2.1 still fails to install because dotnet-runtime-deps-2.1 isn't compatible with Ubuntu 20.10. [...])

  • [x] dotnet 5.0
  • [x] dotnet-sdk 3.1
  • [ ] dotnet-sdk 2.1
Was this page helpful?
0 / 5 - 0 ratings